
APTC-35, 스파이 캠페인에 암호화폐 채굴기와 Tor C2 결합
폴란드를 겨냥한 Donot Team 캠페인에서 UPX 패킹된 단일 바이너리 안에 채굴 기능과 Tor 익명 C2가 공존하는 것이 확인됐다. 47/77 탐지율의 trojan.dekimine 샘플은 svchost.exe로 위장하고 독일 상업 호스팅 인프라를 C2 후보 노드로 활용하며, 국가 연계 스파이 행위자의 도구 운용 방식에 새로운 의문을 제기한다.
UPX 패킹에 Tor C2까지 — 스파이 그룹이 채굴기를 품은 이유
UPX로 압축된 7,149KB짜리 Win32 실행 파일 하나가 폴란드를 겨냥한 스파이 캠페인의 전면에 서 있다. 이 바이너리는 %APPDATA%\pwo6\svchost.exe라는 경로에 자신을 심어 정상적인 Windows 서비스 호스트 프로세스로 위장하고(T1036), UPX1 섹션 엔트로피 7.98이라는 수치가 보여주듯 강한 패킹으로 정적 분석을 차단한다(T1027). 그런데 이 페이로드의 정체를 들여다보면 단순한 스파이웨어가 아니다 — Florian Roth의 pua_cryptocoin_miner 룰셋에 속하는 YARA 룰 CoinMiner_Strings가 발화하고, 샌드박스 실행 중에는 Proofpoint Emerging Threats의 IDS 룰 ET TOR Known Tor Relay/Router (Not Exit) Node Traffic group 240과 ET POLICY TLS possible TOR SSL traffic이 동시에 트리거된다. 국가 연계 스파이 그룹으로 분류된 APTC-35(Donot Team)의 캠페인에서 암호화폐 채굴 기능과 Tor 익명 C2가 한 바이너리 안에 공존하는 이 조합은, 이 행위자의 도구 운용 방식에 대해 지금까지 공개된 분석이 포착하지 못한 긴장을 드러낸다.
CTX Team은 이 캠페인을 심각도 22, 신뢰도 85로 분류된 위협 클러스터(CTXqdbmb47qpd)로 등록했다. 캠페인 내 파일 IOC는 총 58개이나, 그 중 VirusTotal 메타데이터를 보유한 것은 단 2개에 불과하다.
바이너리 해부: 위장·패킹·채굴이 한 파일에 쌓인 구조
0492c19f21fae3e2718a78444f2811d6b3524bdecc16a8dcbfe8b0e16df7a38e로 식별되는 이 파일은 VirusTotal에서 47/77 탐지율을 기록하며 trojan.dekimine으로 분류된다. 파일 크기 7,149KB는 UPX 압축 이전의 원본 코드 볼륨이 상당함을 시사하며, PE 타임스탬프는 2013년 3월 23일로 기록돼 있다 — 다만 PE 타임스탬프는 조작이 용이하므로 빌드 시점의 직접적 근거로 삼기는 어렵다.
빌드 프로비넌스 측면에서 가장 눈에 띄는 것은 섹션 구성이다. UPX0 섹션의 엔트로피는 0.0으로 비어 있는 반면, 실제 압축 코드가 담긴 UPX1 섹션은 엔트로피 7.98에 크기 70,144바이트를 기록한다. .rsrc 섹션도 엔트로피 7.53으로 높은 편이며, PEiD와 F-PROT 두 패커 탐지기가 모두 이 바이너리를 UPX 패킹으로 판정한다. YARA 룰 UPX(CAPEv2 룰셋, kevoreilly)가 발화하는 것도 이와 일치한다. imphash 01b1c9ea1a29292053e19bce0321e74c는 현재 캠페인 내 다른 파일과의 빌드 파이프라인 연결을 확인하는 데 활용할 수 있는 지문이지만, 나머지 56개 파일의 메타데이터가 확보되지 않아 교차 검증은 불가능한 상태다.
위장 전략은 단순하지만 효과적이다. 바이너리의 meaningful_name은 %APPDATA%\pwo6\svchost.exe로, Windows 시스템 프로세스인 svchost.exe의 이름을 그대로 차용해 프로세스 목록 기반 탐지를 교란한다. 샌드박스 실행 과정에서 관측된 대체 경로들 — C:\Users\user\AppData\Local\Temp\xzgqogif.exe, C:\Users\user\AppData\Local\Temp\dbcuwznm.exe — 은 2차 페이로드 드롭 시 무작위화된 파일명을 사용하는 패턴을 보여준다. 이름만 보면 정상 시스템 프로세스이고, 경로만 보면 임시 디렉토리의 무작위 파일이다. 두 가지 위장 레이어가 동시에 작동하는 셈이다.
탐지 분포도 주목할 만하다. 47개 엔진이 악성으로 판정하는 가운데, CrowdStrike, SentinelOne, AhnLab-V3, Avira, F-Secure, Elastic 등 주요 엔드포인트 보안 제품들이 여전히 이 파일을 탐지하지 못하고 있다. 커뮤니티 투표는 악성 2표, 무해 0표로, 탐지 공백이 있는 엔진들의 사용자 환경에서는 이 파일이 별다른 경보 없이 실행될 수 있음을 시사한다. 코드 서명은 없다 — 이 캠페인의 58개 파일 중 서명된 것은 단 하나도 없으며, 이는 합법적 인증서를 통한 화이트리스트 우회 전략을 채택하지 않았음을 의미한다.
실행 전 장벽: 분석 환경을 걸러내는 이중 검문
페이로드가 본격적인 악성 행위를 시작하기 전, 바이너리는 자신이 실행되는 환경이 실제 피해자 시스템인지 아니면 분석용 샌드박스인지를 먼저 판별하려 시도한다. 이 판별 로직은 두 가지 태그로 구체화된다: detect-debug-environment와 direct-cpu-clock-access.
detect-debug-environment 태그는 디버거 또는 분석 도구의 존재를 감지하는 코드가 있음을 나타낸다(T1622). 이와 함께 direct-cpu-clock-access 태그는 CPU 클록을 직접 읽어 실행 시간을 측정하는 타이밍 기반 안티-VM 기법을 가리킨다(T1497.002). 가상화 환경에서는 CPU 타이밍 측정값이 물리 하드웨어와 다르게 나타나는 경우가 많아, 이 값을 기준으로 샌드박스 실행 여부를 추론하는 방식이다. 두 기법이 함께 사용된다는 것은 단일 검문 방식이 아닌, 서로 다른 탐지 원리를 조합한 이중 검문 구조임을 의미한다.
캠페인 MITRE 목록에는 T1497, T1497.002, T1622 외에도 T1562.001(보안 도구 비활성화), T1564.001(숨겨진 파일·디렉토리), T1564.004(NTFS 대체 데이터 스트림)가 포함돼 있다. 이들이 모두 이 단일 바이너리에서 관측된 것인지, 아니면 캠페인 내 다른 미확인 파일들에서 비롯된 것인지는 현 단계 증거로는 구분하기 어렵다. 48개의 VT 미확인 파일들이 이 기법들의 실제 담지자일 가능성을 배제할 수 없다.
Sigma 룰 매칭 결과도 이 바이너리의 방어 회피 역량을 뒷받침한다. SOC Prime Threat Detection Marketplace에서 high 심각도 1건, GitHub Sigma 통합 룰셋에서 high 4건·medium 3건·low 2건이 매치됐다. 총 16개의 Sigma 룰이 발화했다는 것은 이 바이너리의 행위 패턴이 다수의 알려진 위협 행위 시그니처와 겹친다는 의미이며, 역으로 말하면 행위 기반 탐지 레이어가 작동하는 환경에서는 이 파일의 활동이 상당한 노이즈를 발생시킬 수 있다.
Tor를 통한 C2와 독일 상업 호스팅 노드
환경 검문을 통과한 페이로드가 외부와 통신하는 방식은 이 캠페인의 운영 보안 수준을 가늠하는 핵심 지표다. 샌드박스 실행 중 발화한 IDS 룰은 두 가지 사실을 동시에 알려준다: 바이너리가 Tor 네트워크를 통해 C2 트래픽을 라우팅하며, 그 과정에서 TLS를 사용한다는 것이다.
Proofpoint Emerging Threats의 ET TOR Known Tor Relay/Router (Not Exit) Node Traffic group 240 룰은 알려진 Tor 릴레이/라우터 노드와의 통신을 탐지한다. 이와 함께 ET POLICY TLS possible TOR SSL traffic 룰이 동시에 트리거됐다는 것은 TLS 레이어 위에서 Tor 트래픽이 흐르고 있음을 의미한다(T1090). 여기에 Snort 룰셋의 (port_scan) TCP filtered portsweep 경보까지 발생했는데, 이는 C2 통신과 별개로 호스트 또는 네트워크 탐색 행위(T1046)가 병행됐음을 시사한다.
이 캠페인에서 유일한 네트워크 IOC는 IP 주소 212.112.245.170이다. 이 IP는 AS 15598(NorthC Deutschland GmbH)에 속하며, 네트워크 블록 212.112.224.0/19 내에 위치한다. RIPE NCC WHOIS에 따르면 해당 /24 블록(212.112.245.0 - 212.112.245.255)은 IPX Server GmbH(Am Tower 5, 90475 Nuremberg, Germany)에 할당돼 있으며, 이 할당은 2005년 5월 27일 등록됐다. 뉘른베르크에 소재한 상업용 코로케이션 제공업체다.
그러나 이 IP를 C2 엔드포인트로 단정하기에는 독립적 근거가 빈약하다. VirusTotal에서 1/91이라는 극히 낮은 탐지율을 기록하며, 커뮤니티 평판 점수는 0(중립)이다. 악성 투표도 무해 투표도 없다. 이 IP가 C2 역할을 한다는 연결은 캠페인 메타데이터 연관성에서 비롯된 것이지, IP 자체의 독립적인 악성 신호에서 확인된 것이 아니다. CTX Team은 이 IP에 대한 C2 귀속을 현재 단계에서 작업 가설로 취급하며, 추가적인 네트워크 텔레메트리 없이는 확정적 결론을 내리기 어렵다고 판단한다.
유럽 상업 호스팅 인프라를 C2 노드로 활용하는 패턴은 지리적 의심을 줄이고 AS 레벨 차단을 회피하는 데 유리하다는 점에서 운영 보안상 합리적 선택으로 해석할 수 있다 — 다만 현 단계 증거로는 비교 인프라 정보가 없어 단정이 어렵다. 이 캠페인에는 도메인 IOC, URL IOC, TLS 인증서 시리얼이 전혀 관측되지 않았다. 도메인 계층 없이 bare IP를 직접 C2 후보로 사용하는 구성은 인증서·등록 기록을 남기지 않아 인프라 추적을 어렵게 한다. 독일 호스팅 IP가 현재로서는 유일한 네트워크 지문이다.
지속성 확보와 채굴 페이로드의 공존
방어 회피와 C2 채널 확보 이후, 바이너리는 시스템 내 발판을 굳히는 작업에 착수한다. 샌드박스 실행에서 관측된 태그 executes-dropped-file, calls-wmi, persistence는 이 단계의 행위를 직접 기술한다. 바이너리는 xzgqogif.exe와 dbcuwznm.exe를 TEMP 경로에 드롭하고 실행하며, WMI를 호출해 지속성을 설정한다(T1547.001). 드롭된 파일명의 무작위성은 정적 시그니처 탐지를 어렵게 만들기 위한 의도적 설계로 보인다.
이 지속성 메커니즘과 함께 작동하는 것이 암호화폐 채굴 기능이다. YARA 룰 CoinMiner_Strings(Florian Roth의 pua_cryptocoin_miner 룰셋)가 이 바이너리에서 발화한다 — 이 룰은 실행 파일 내 채굴 풀 프로토콜 문자열을 탐지하도록 설계돼 있다. direct-cpu-clock-access 태그와 runtime-modules 태그는 CPU 자원을 직접 활용하는 런타임 모듈이 존재함을 시사하며, VirusTotal의 popular_category에 miner가 포함된 것도 이를 뒷받침한다(T1496). Dr.Web vxCube 샌드박스는 이 바이너리를 MALWARE로 단정 판정했다.
흥미로운 것은 direct-cpu-clock-access 태그가 두 가지 역할을 동시에 수행한다는 점이다. 앞서 언급했듯 이 태그는 타이밍 기반 안티-VM 기법의 지표이기도 하지만, 채굴 작업에서 CPU 클록을 직접 읽는 행위와도 겹친다. 단일 태그가 방어 회피와 채굴 기능 양쪽에 걸쳐 있다는 것은 이 바이너리의 다중 역할 설계를 반영한다.
캠페인 MITRE 목록에는 T1056(입력 캡처), T1056.001(키로깅), T1486(데이터 암호화), T1485(데이터 파괴) 같은 기법들도 포함돼 있다. 이것들이 0492c19f 바이너리에서 직접 관측된 것인지, 아니면 48개의 미확인 파일들에서 비롯된 것인지는 현 단계 증거로는 판단하기 어렵다. 만약 미확인 파일들이 키로거나 데이터 파괴 도구를 포함한다면, 이 캠페인의 실제 역량 프로파일은 지금 보이는 것보다 훨씬 광범위할 수 있다.
캠페인 내 이상 신호: 제로 탐지 텍스트 파일의 존재
캠페인 파일 목록에는 trojan.dekimine 바이너리 외에 또 하나의 주목할 만한 이상값이 존재한다. SHA256 f02285fb90ed8c81531fe78cf4e2abb68a62be73ee7d317623e2c3e3aefdfff2로 식별되는 이 파일은 크기 0KB의 ASCII 텍스트 파일로, 75개 엔진 모두에서 탐지되지 않았으며 Zenbox 샌드박스는 신뢰도 99%로 CLEAN 판정을 내렸다.
이 파일의 경로들 — /tmp/d0bx2z3x, /tmp/t56yjw8f, /tmp/etq1z99f, /tmp/b8i630yw — 은 Linux 임시 디렉토리 패턴이며, 태그는 idle, text, long-sleeps다. APT 귀속 캠페인 세트에 크기 0의 무해한 텍스트 파일이 포함된 이유는 현 단계 증거로는 설명하기 어렵다. 드로퍼 스테이징 아티팩트, 디코이 파일, 또는 캠페인 집합에 잘못 포함된 오탐일 가능성이 모두 열려 있다. 이 파일은 2015년 1월 11일 처음 관측됐고 422회 제출됐으며 7개의 고유 소스에서 유입됐다는 점에서, 단순한 오탐보다는 어떤 운영 맥락에서 반복적으로 생성되는 파일일 가능성도 있다 — 그러나 현 단계에서 단정적 결론은 어렵다.
이 이상값은 캠페인 전반의 증거 기반이 얇다는 점을 환기시킨다. 58개 파일 IOC 중 메타데이터가 확보된 것은 2개뿐이며, 나머지 48개는 파일 타입·탐지 결과·태그 정보가 전무하다. imphash 역시 0492c19f 하나에서만 확인된다. 빌드 파이프라인 클러스터링이나 서명 기반 귀속은 현 단계에서 신뢰할 수 있는 분석 방법이 아니다. CTX Team이 이 캠페인의 증거 신뢰도를 25/100으로 평가한 것은 이 현실을 반영한다.
스파이 그룹이 채굴기를 운용한다는 것의 의미
APTC-35는 Donot Team, SectorE02, APT-C-35 등의 별칭으로 추적되는 행위자로, 캠페인 메타데이터는 스파이 활동을 유일한 동기로 기록하고 있으며 표적 지역으로 폴란드를 명시한다. 이 행위자의 과거 캠페인이나 작전 역사에 대한 구체적 인용은 현 단계에서 적절하지 않다.
확인되는 사실은 이것이다: 스파이 동기로 귀속된 행위자의 캠페인에서, 채굴 풀 프로토콜 문자열을 내장하고 Tor 익명 C2를 사용하며 WMI 기반 지속성을 설정하는 바이너리가 관측됐다. 이 조합이 시사하는 해석은 크게 두 갈래다.
첫 번째는 다중 임무 도구 가설이다 — 정보 수집과 자원 탈취(T1496)를 단일 페이로드에서 동시에 수행하는 설계. Tor C2 채널의 존재는 이 해석에 무게를 더한다. 순수하게 금전적 동기를 가진 채굴 악성코드 운영자가 Tor 익명화라는 추가 운영 보안 레이어를 적용하는 경우는 상대적으로 드물다 — 채굴 수익은 블록체인 지갑 주소로 직접 귀속되므로 C2 익명화의 실익이 크지 않기 때문이다. Tor C2를 채굴기에 결합했다는 사실은 이 페이로드가 채굴 외의 목적 — 정찰, 추가 페이로드 수신, 또는 피해자 식별 — 을 위한 통신 채널도 유지하고 있을 가능성을 암시한다.
두 번째는 도구 재사용 가설이다 — 범죄 생태계에서 공유되거나 조달된 채굴 컴포넌트가 스파이 캠페인의 페이로드 세트에 포함됐을 가능성. 이 경우 채굴 기능은 의도적 설계가 아니라 도구 공급망의 산물일 수 있다. 그러나 현 단계 증거로는 두 가설 중 어느 쪽도 확정할 수 없다.
48개의 미확인 파일 해시가 이 분석의 가장 큰 공백이다. 만약 이 파일들이 별도의 임플란트, 로더, 또는 키로거를 포함한다면 — 캠페인 MITRE 목록의 T1056.001(키로깅)이 이 가능성을 열어둔다 — 현재 보이는 단일 채굴 바이너리는 더 복잡한 공격 체계의 일부에 불과할 수 있다. 반대로 48개 파일이 모두 동일한 바이너리의 변종이거나 관련 없는 파일들이라면, 이 캠페인의 실제 규모는 지금 관측된 것과 크게 다르지 않을 수 있다. 어느 쪽이든 현 단계 증거로는 이 질문에 답하기 어렵다.
독일 상업 호스팅 인프라(AS 15598)를 C2 후보 노드로 사용하는 패턴은 — 만약 이 귀속이 맞다면 — 지리적 위치와 AS 평판을 활용한 인프라 세탁의 전형적 형태다. 합법적인 유럽 코로케이션 제공업체의 IP는 지역 기반 차단 정책을 우회하고 네트워크 레벨 귀속을 복잡하게 만드는 데 유리하다. 그러나 이 IP에 대한 독립적 악성 신호가 극히 미약하다는 사실은, 이 인프라 선택이 의도적 전략인지 아니면 단순한 우연의 일치인지를 현 단계 증거로는 판단하기 어렵게 만든다.
결국 이 캠페인이 제기하는 핵심 질문은 행위자 정체성이나 인프라 귀속이 아니다. 국가 연계 스파이 행위자의 도구 세트 안에서 채굴 기능이 어떤 역할을 하는가 — 이것이 전략적 설계인가, 전술적 편의인가, 아니면 생태계 오염인가. 48개의 미확인 해시가 분석되기 전까지, 이 질문은 열린 채로 남는다.