Cisco Talos가 상용 AI 사업자 네 곳에 다음 행동을 물어 투표에서 이긴 동작을 실행하는 윈도우 임플란트 분석 결과를 공개했다. 연구진은 이 악성코드를 CLOSEDQUORUM이라 부르며, 화요일 공개한 보고서에서 대규모 언어 모델을 전술적 명령·제어에 쓴 윈도우 임플란트로는 알려진 범위에서 처음 공개 문서화된 사례라고 밝혔다.
바이너리는 CGO를 켜고 Go로 컴파일한 16.4MB 크기의 64비트 실행 파일이다. CGO 덕분에 C 코드를 섞어 윈도우 시스템 콜을 직접 호출한다. 일단 실행되면 사람의 추가 지시가 필요 없고, 공격자가 운영하는 서버에도 접속하지 않는다.
핵심 요약
- CLOSEDQUORUM은 DeepSeek, Qwen, Mistral, Google Gemini를 차례로 호출한 뒤 표를 가장 많이 받은 행동을 실행한다.
- 표가 갈리면 DeepSeek, Qwen, Mistral, Gemini 순으로 결정되는데, 이는 투표 집계 루프를 짠 방식에서 흘러나온 편향이다.
- Talos는 실제 유포 정황을 찾지 못했다. 공개 배포본은 API 키와 웹훅이 모두 더미 값이라 작동하지 않는다.
투표는 실제로 어떻게 돌아가나
Talos가 ModelOrchestrator라 이름 붙인 구성 요소가 각 사업자를 하나씩 호출한다. 모아 온 응답은 다수결로 하나의 행동에 수렴한다. 모델이 내린 판단마다 카운터가 올라가고, 값이 가장 큰 쪽이 이긴다. 사업자를 넷이나 쓰는 이유 하나는 가용성이다. 한 모델이 응답을 거부하거나 시간을 초과하거나 형식이 깨진 결과를 돌려줘도 쓸 만한 답을 얻을 확률이 올라간다.
동점 처리는 설계 의도라기보다 구현의 부산물이다. 최댓값을 찾는 루프가 엄격 비교를 쓰면서 응답을 제출 순서대로 훑기 때문에, 최고 득표에 먼저 도달한 모델이 그 자리를 지킨다. DeepSeek을 가장 먼저 호출하는 만큼 표가 정확히 갈릴 때마다 DeepSeek이 캐스팅보트를 쥔다. 사업자가 모두 실패하면 대체값은 어떤 기능 핸들러와도 연결되지 않고, 임플란트는 그대로 대기했다가 다시 시도한다.
모델이 고를 수 있는 선택지
패널이 마음대로 판단하지는 못한다. 바이너리에서 추출한 시스템 프롬프트는 각 모델에 "고급 악성코드 전략가"라는 역할을 지정하고 실행 가능한 결정만 내놓으라고 지시한다. 응답은 steal, inject, persist, move 네 가지로 제한한 JSON 스키마를 따라야 한다. 역직렬화에 실패한 응답은 버린다.
선택지는 코드와 그대로 맞물린다. steal은 루틴 세 개를 한꺼번에 돌린다. 윈도우 자격 증명을 얻으려 LSASS 메모리를 덤프하고, Chrome·Edge·Firefox에 저장된 비밀번호를 빼내며, MetaMask·Exodus·Ethereum의 지갑 데이터를 추출한다. inject는 셸코드를 만든 뒤 프로세스 할로잉이나 Early Bird APC 인젝션으로 갈라진다. persist는 감염 호스트에 발판을 심는다. move는 배포본에 핸들러가 아예 없다.
이 모든 동작에 앞서 임플란트는 호스트명, CPU 개수, OS 아키텍처, 윈도우 버전, 관리자 권한 여부를 수집해 모든 프롬프트에 그 맥락을 끼워 넣는다. 결과는 Discord 웹훅을 타고 운영자에게 흘러가며, 모델이 밝힌 판단 근거와 표적 프로세스·선택한 회피 기법 같은 항목도 함께 넘어간다.
Talos가 이를 노동 대체로 규정한 이유
보고서의 논지는 이렇다. 지금까지 AI가 공격 작전에 미친 영향은 속도와 규모로만 측정됐고, 작업을 지휘하는 주체는 여전히 사람이었다. Talos 분석가 Ryan Fetterman은 공격의 한 단계를 통째로 모델에 넘기면 문제의 성격 자체가 달라진다고 지적한다. 잠들지 않는 시스템은 운영자의 집중력이나 근무 시간에 묶이지 않기 때문이다.
Talos는 인프라를 놓고도 현실적인 결론을 끌어낸다. 전통적인 명령·제어에는 방어자가 차단하고 공개하고 추적할 수 있는 도메인과 리스너가 필요하다. 정상 애플리케이션 수천 개가 쓰는 엔드포인트로 판단을 우회시키면 그 손잡이가 사라진다. The Register가 전한 대로 Fetterman이 권하는 탐지 전략은 도메인이 아니라 행위에 기댄다. Gemini나 Discord와 통신하는 소프트웨어는 흔하지만, 그러면서 동시에 LSASS를 읽거나 일시 중단된 프로세스에 코드를 주입하는 소프트웨어는 거의 없다.
지금 이 위협은 얼마나 현실적인가
구조가 주는 인상보다는 덜 현실적이다. 적어도 지금은 그렇다. Talos는 정적 분석으로 판단 루프를 확인했지만 처음부터 끝까지 실행되는 장면은 관찰하지 못했다. 공개 배포본이 자격 증명을 전부 더미 값으로 초기화해 두기 때문이다. 연구팀은 개발자가 구매자마다 해당 운영자의 키와 웹훅을 박아 넣은 전용 바이너리를 따로 컴파일해 준다고 판단했다. 오케스트레이션 계층을 차별점으로 내세운 서비스형 자격 증명 모델인 셈이다. 바이너리에 남은 흔적은 개발자를 2025년까지 거슬러 올라가는 카딩 포럼 게시물과 연결한다.
Talos는 보고서와 함께 AI 결합형 악성코드를 추적·분류하는 오픈소스 도구 CAIRN을 공개하며, CLOSEDQUORUM이 이 도구로 얻은 첫 성과이자 연속 발표의 시작이라고 밝혔다. 이런 양상은 공격자가 에이전트로 악성코드를 스캐너에 걸리지 않을 때까지 고쳐 쓴 앞선 사례와도 겹친다. 다만 이번에는 모델이 도구를 만드는 데 거드는 것이 아니라 도구를 직접 운용한다.
FAQ — 자주 묻는 질문
CLOSEDQUORUM이 실제 공격에 쓰인 적이 있나?
없다. Cisco Talos는 실제 유포 사례를 확인하지 못했다고 밝혔고, 공개 배포된 바이너리는 API 키와 Discord 웹훅이 모두 더미 값인 껍데기 템플릿이다. 자율 판단 루프의 근거는 바이너리 정적 분석과 개발 빌드에서 나왔다.
왜 DeepSeek이 캐스팅보트를 쥐나?
의도적인 선호가 아니라 코드가 낳은 부작용이다. 승리한 판단을 찾는 함수가 응답을 제출 순서대로 훑으면서 초과 비교를 쓰기 때문에, 최고 득표에 먼저 도달한 모델이 그 자리를 유지한다. 호출 순서는 DeepSeek, Qwen, Mistral, Gemini다.
AI 사업자 도메인을 막으면 방어할 수 있나?
Talos는 그 방식에 기대지 말라고 권한다. 정상 소프트웨어도 이들 사업자와 일상적으로 통신하는 만큼, 차단은 업무에 지장을 주면서도 완전하지 않다. 권장되는 접근은 행위의 조합을 보는 것이다. 예상 밖의 실행 파일에서 나오는 AI API 트래픽, 짧은 시간에 여러 사업자로 향하는 요청, LSASS 접근이나 프로세스 인젝션, 같은 호스트에서 나가는 Discord 웹훅 트래픽을 함께 살핀다.






