FILE공개
FILE

정품 서명 뒤에 숨은 MSSQL 백도어 — MuMuPlayer 트로이목마 해부

DigiCert가 발급한 유효한 Netease 코드 서명 인증서로 위장한 두 개의 MuMuPlayer 실행 파일이 교육·연구 기관을 표적으로 유포되고 있다. 76개 AV 엔진을 전부 통과한 이 파일들은 MSSQL 서버 인증을 무력화하는 Skip-2.0 백도어를 내장하고 있으며, 25개월간 잠복한 도메인과 세 대륙에 분산된 C2 인프라로 탐지를 구조적으로 회피한다.

2026년 6월 2일 12:47 (UTC+9)최근 관측2026년 6월 2일심각도74CTX Team행위자Spring DragonLotus BlossomIOC6

정품 서명이 숨긴 MSSQL 백도어 — Netease MuMuPlayer 트로이목마의 해부

DigiCert가 발급한 유효한 코드 서명 인증서로 서명된 두 개의 Netease MuMuPlayer 실행 파일이 교육·연구 기관을 표적으로 유포되고 있다. 두 파일 모두 VirusTotal의 76개 엔진에서 단 하나의 탐지도 기록하지 못했지만, ESET의 YARA 룰 skip20_sqllang_hook은 두 샘플 모두에서 발화했다 — 이 룰이 잡아내는 것은 Microsoft SQL Server의 인증 체계를 무력화하는 Skip-2.0 백도어의 핵심 훅 코드다. 합법적인 게임 에뮬레이터 컴포넌트 안에 APT급 데이터베이스 백도어를 은닉하고, 유효한 상용 코드 서명으로 모든 정적·동적 탐지 파이프라인을 통과하는 이 조합은 서명 악용 기법이 도달한 새로운 수준을 보여준다.

CTX Team은 이 캠페인을 심각도 74, 신뢰도 80으로 분류하고 교육·연구 섹터를 표적으로 하는 위협 클러스터로 공식 등록했다. 페이로드를 지탱하는 명령제어(C2) 인프라는 말레이시아·네덜란드·독일에 걸친 세 개의 자율 시스템(AS)에 분산돼 있으며, 각각 서로 다른 인증기관(CA)의 TLS 인증서를 사용해 단일 CA 지문으로의 피벗을 차단한다. 그 중 하나는 Akamai CDN 트래픽을 흉내 내도록 설계된 와일드카드 SAN을 제시하고, 또 다른 하나는 약 25개월간 잠복해 있다가 두 번째 페이로드가 등장하기 하루 전날 활성화된 도메인을 기반으로 한다.

서명은 유효하고 코드는 악성이다 — 두 페이로드의 정체

두 실행 파일의 외형은 완벽하게 합법적이다. MuMuNxMain.exe(SHA256: 4ccf2465d40e5e8678a7332d4c06ab4c3a2342e96eb2842b1f64aa01b35c8913)는 C:\Program Files\Netease\MuMuPlayer\nx_main\ 경로에 설치되는 MuMuPlayer의 주 실행 컴포넌트로, 2026년 4월 23일 VirusTotal에 처음 등장한 이후 30건의 제출이 27개의 서로 다른 출처에서 접수됐다. MuMuNxDevice.exe(SHA256: 239edb999666525ac5f53b620a512ea3f84abcdc9f2034c62373ccef5b9f3806)는 C:\Program Files\Netease\MuMuPlayer\nx_device\12.0\shell\ 경로에 위치하는 디바이스 에뮬레이션 컴포넌트로, 2026년 5월 23일 단 한 건의 제출만 기록됐다 — 분석 시점 기준으로 VirusTotal 노출 기간이 10일에 불과한 신선한 샘플이다.

두 파일의 가장 중요한 공통점은 서명 체인이다. 두 파일 모두 동일한 Netease Interactive Entertainment Pte. Ltd. 코드 서명 인증서(일련번호 05 CA AB D5 55 EE D7 70 D8 76 FD 20 CA 0B 9A FB, 유효 기간 2025년 9월 8일~2028년 12월 4일)를 공유하며, 이 인증서는 DigiCert Trusted G4 Code Signing RSA4096 SHA384 2021 CA1 체인을 통해 발급됐다. Windows는 이 서명 체인을 완전히 신뢰하며, Zenbox 샌드박스는 첫 번째 샘플(4ccf2465...)에 대해 99% 신뢰도의 CLEAN 판정을 내렸다. 두 파일 모두 76개 AV 엔진에서 탐지 0건을 기록했다.

그러나 두 파일에는 corruptoverlay 태그가 동시에 붙어 있다. 이 조합은 Authenticode 서명이 적용된 이후 파일 끝에 추가 데이터가 덧붙여졌음을 시사한다 — 서명 해시가 커버하지 않는 영역에 페이로드를 삽입하는 방식으로, 인증서 체인의 유효성을 유지하면서 악성 코드를 은닉하는 고전적인 서명 바이너리 트로이목마 기법이다(T1036.001). 다만 이 해석은 태그 조합으로부터의 추론이며, 실제 페이로드 삽입 메커니즘에 대한 단정적 결론은 현 단계에서 어렵다. AV 엔진들이 0/76의 탐지율을 기록한다는 사실은 이 corrupt 상태가 실제 서명 검증 실패를 유발하지 않음을 실증적으로 보여준다.

두 파일의 빌드 특성도 주목할 만하다. 두 파일 모두 PEiD 패커가 확인됐으며, PE 섹션 구조는 .text 섹션 엔트로피가 각각 5.61과 5.59로 측정됐다 — 강한 패킹이 적용된 수준은 아니지만, 두 파일의 크기가 각각 약 24.7MB와 30.4MB에 달한다는 점에서 상당한 양의 추가 데이터가 포함됐을 가능성을 배제하기 어렵다. imphash는 두 파일 간에 서로 다르게(5b4572bc2e114f5ac07291c28cfd3d38cd647613c569c4c82cbd3adb08488871) 기록됐지만, 공유 코드 서명 인증서 일련번호와 skip20_sqllang_hook YARA 룰 동시 발화가 두 파일을 동일 캠페인의 산물로 묶는 핵심 코호트 축이다.

Skip-2.0 — MSSQL 인증을 무력화하는 APT 전용 훅

두 파일 모두에서 발화한 YARA 룰 skip20_sqllang_hook은 ESET의 Mathieu Tartare가 작성한 공개 룰로, GitHub의 ESET malware-ioc 저장소에 게시돼 있다. 룰 설명은 명확하다: "각 바이트 패턴은 Skip-2.0이 훅하는 함수에 대응하며, $1_0 또는 $1_1이 매치되면 해당 sqllang.dll 버전이 인증 우회를 담당하는 훅의 표적임을 의미한다." 이 룰이 두 MuMuPlayer 컴포넌트에서 동시에 발화했다는 사실은, 두 파일 모두 Microsoft SQL Server의 핵심 모듈인 sqllang.dll을 훅해 인증 로직을 우회하는 Skip-2.0 코드를 내장하고 있음을 확인한다(T1055).

Skip-2.0의 작동 원리는 단순하지만 파괴적이다. sqllang.dll 내부의 인증 관련 함수에 훅을 삽입해, 공격자가 임의의 패스워드로 MSSQL 서버에 로그인할 수 있도록 만든다. 유효한 자격증명 없이도 데이터베이스에 완전한 접근 권한을 획득하는 이 능력은 단순한 정보 탈취를 넘어 데이터 조작, 계정 생성, 쿼리 실행 등 데이터베이스 레이어에서의 모든 작전을 가능하게 한다. 이 도구가 게임 에뮬레이터 컴포넌트 안에 은닉됐다는 점은 운영상의 선택으로 해석할 수 있다 — MuMuPlayer는 대학 연구실이나 게임 관련 연구 환경에서 흔히 설치되는 소프트웨어로, 해당 경로의 실행 파일이 보안 팀의 주의를 끌 가능성이 낮다.

두 번째 샘플(239edb99...)의 경우, 샌드박스 판정 데이터가 전혀 존재하지 않는다 — 분석 시점 기준으로 단 한 건의 제출만 기록된 신선한 샘플이기 때문이다. 따라서 이 파일의 실제 런타임 행위는 YARA 룰 매치 이상으로는 확인되지 않으며, 페이로드 설정이나 C2 통신 방식에 대한 주장은 현 단계에서 상당한 불확실성을 내포한다. 첫 번째 샘플이 Zenbox에서 CLEAN 판정을 받았다는 사실도 — 유효한 서명이 동적 분석 환경에서도 탐지를 억제한다는 것을 의미하므로 — 샌드박스 기반 행위 분석의 한계를 동시에 드러낸다.

이 캠페인에서 탐지의 유일한 확인된 벡터는 skip20_sqllang_hook YARA 룰이다. 76개 AV 엔진 전체가 두 샘플을 통과시킨 상황에서, 이 룰이 현재 데이터셋에서 확인된 유일한 탐지 수단이라는 사실은 서명 기반·행위 기반 탐지 파이프라인이 이 클래스의 트로이목마에 대해 구조적으로 취약함을 보여준다.

세 대륙, 세 개의 인증기관 — C2 인프라의 분산 설계

이 캠페인의 C2 레이어는 단일 인프라 의존성을 의도적으로 회피한 구조를 보인다. 세 개의 IP가 세 개의 서로 다른 자율 시스템에 분산돼 있으며, 각각 서로 다른 CA가 발급한 TLS 인증서를 사용한다 — Let's Encrypt, DigiCert, GoGetSSL이 각각 다른 노드를 담당한다. 방어자가 하나의 CA 지문을 피벗 포인트로 삼아 인프라 전체를 추적하는 것을 구조적으로 차단하는 설계다.

말레이시아 IP 202.188.238.219(ASN 4788, TM TECHNOLOGY SERVICES SDN. BHD.)는 이 인프라에서 가장 정교한 위장을 구현한다. 이 IP가 제시하는 TLS 인증서의 주체(subject)는 a248.e.akamai.net이며, SAN에는 *.akamaized.net, *.akamaihd.net 등 실제 Akamai Technologies의 CDN 도메인들이 포함돼 있다. DigiCert Global G3 TLS ECC SHA384 2020 CA1이 발급한 이 인증서는 Akamai의 정식 TLS 인증서다 — 말레이시아 ISP 대역의 IP가 이 인증서를 제시한다는 것이 이상 징후다. SNI 기반 네트워크 검사 장비는 TLS 핸드셰이크에서 *.akamaized.net을 보고 합법적인 Akamai CDN 트래픽으로 분류할 가능성이 높다(T1071.001). VirusTotal에서 91개 엔진 모두 이 IP를 탐지하지 못했다.

네덜란드 IP 213.174.146.97(ASN 39572, DataWeb Global Group B.V. / Advanced Hosters B.V.)은 라트비아 CA인 GoGetSSL이 발급한 와일드카드 인증서(*.ahacdn.me)를 제시한다. 저비용 DV(Domain Validation) CA를 통한 와일드카드 인증서 발급은 일회용 운영 인프라에서 자주 관찰되는 패턴이다. 이 인증서는 2026년 1월 29일부터 2027년 2월 28일까지 유효하며, VirusTotal 관측은 2026년 6월 2일로 두 번째 페이로드 등장 직후와 시기적으로 겹친다.

독일 IP 139.45.197.115(ASN 9002, RETN Limited)는 이 세트에서 구조적으로 이질적인 노드다. 관측된 TLS 인증서가 없고, 평판 점수는 -53이며, 91개 엔진 중 1개가 탐지하고 커뮤니티 투표에서 악성 2표를 받았다. WHOIS는 암스테르담 소재 networkclaim.com을 가리키지만, 이 IP가 캠페인 체인에서 수행하는 구체적 역할은 현재 가용한 데이터로는 직접 확인되지 않으며 약한 지표로 취급해야 한다.

25개월의 잠복 — 사전 배치된 도메인 인프라

DNS 레이어는 이 캠페인의 운영 계획성을 가장 선명하게 드러내는 지점이다. 도메인 2477april2024.com은 2024년 4월 2일 Danesco Names(등록기관 ID 1418)를 통해 등록됐다. WHOIS는 whoisprotectservice.net을 통해 완전히 마스킹돼 있으며, 네임서버는 Cloudflare(emma.ns.cloudflare.com / stan.ns.cloudflare.com)로 위임됐다. 등록 이후 이 도메인은 약 25개월간 아무런 활동 없이 잠복했다.

그리고 2026년 5월 22일, Let's Encrypt R12가 서브도메인 *.2477april2024.com에 대한 와일드카드 TLS 인증서(유효 기간 2026년 5월 22일~2026년 8월 20일, 89일)를 발급했다. 이 인증서가 발급된 다음 날인 2026년 5월 23일, 두 번째 MuMuPlayer 페이로드(MuMuNxDevice.exe, 239edb99...)가 VirusTotal에 처음 등장했다. 인증서 발급과 페이로드 배포 사이의 하루 간격은 사전 계획된 운영 타이밍을 강하게 시사한다.

운영에 실제로 사용된 서브도메인은 27997.2477april2024.com이다. 숫자로만 구성된 서브도메인 패턴과 완전히 마스킹된 WHOIS 등록은 사전 배치된 인프라를 운영 템포에 맞춰 활성화하는 방식과 일치한다. 이 도메인은 현재 88.208.22.1, 88.208.22.2, 88.208.22.3, 88.208.22.4의 네 개 A 레코드로 해석되며, 이 IP 블록은 현재 분석된 세 개의 C2 IP와는 별개의 인프라로 추가적인 열거가 필요하다. VirusTotal에서 91개 엔진 중 11개가 이 도메인을 탐지했다.

89일짜리 단명 인증서는 Let's Encrypt의 자동화된 갱신 체계를 활용한 것으로 보인다. 운영 기간 동안 인증서를 자동 갱신하면서 CA 지문의 연속성을 유지하되, 장기 인증서가 남기는 추적 가능한 흔적을 최소화하는 전략으로 해석할 수 있다. 25개월의 도메인 잠복 기간과 89일의 인증서 유효 기간이 대비를 이루는 이 구조는 — 장기 사전 배치와 단기 운영 주기를 결합한 형태로 — 즉흥적 인프라 재활용이 아닌 계획된 운영 설계의 특성을 보인다.

공격 사슬의 전개 — 초기 접근부터 데이터베이스 장악까지

공격의 진입점은 트로이목마화된 MuMuPlayer 소프트웨어 패키지의 배포다(T1195.002). 두 파일 모두 표준 MuMuPlayer 설치 경로에 위치하며 유효한 Netease DigiCert 서명을 갖추고 있어, 소프트웨어 공급망 또는 트로이목마화된 설치 패키지를 통한 배포가 가장 개연성 있는 초기 접근 경로다. 교육·연구 기관 환경에서 MuMuPlayer 같은 Android 에뮬레이터는 게임 연구나 모바일 앱 테스트 목적으로 설치되는 경우가 있어, 해당 경로의 실행 파일이 보안 팀의 이상 탐지를 유발할 가능성이 낮다.

방어 우회(T1553.002)는 Netease 코드 서명 인증서가 전담한다. 인증서 일련번호 05 CA AB D5 55 EE D7 70 D8 76 FD 20 CA 0B 9A FB로 서명된 두 파일은 76개 AV 엔진 전체를 통과했으며, Zenbox 샌드박스는 첫 번째 샘플에 대해 99% 신뢰도의 CLEAN 판정을 내렸다. 이는 유효한 상용 코드 서명이 정적 탐지뿐 아니라 동적 분석 환경에서도 탐지를 억제함을 보여준다. 두 번째 샘플은 샌드박스 판정 자체가 없어 런타임 행위에 대한 주장은 상당한 불확실성을 내포한다.

실행 단계에서 두 파일은 sqllang.dll 훅 삽입을 통해 MSSQL 서버 인증을 우회한다(T1055). skip20_sqllang_hook YARA 룰이 두 파일 모두에서 발화했다는 사실은 두 MuMuPlayer 컴포넌트가 동일한 Skip-2.0 변종을 탑재하고 있음을 확인한다. 이 훅이 활성화되면 공격자는 임의의 패스워드로 MSSQL 인스턴스에 접근할 수 있으며, 자격증명 기반의 접근 제어는 사실상 무력화된다.

C2 통신은 세 개의 지리적으로 분산된 IP를 통해 TLS로 암호화된다(T1071.001). 말레이시아 ISP IP는 Akamai CDN 인증서를 제시해 트래픽을 합법적인 CDN 흐름으로 위장하고, 네덜란드 호스팅 IP는 GoGetSSL 와일드카드 인증서로 직접 C2를 처리하며, DNS 레이어는 25개월 잠복 후 활성화된 27997.2477april2024.com이 담당한다. 각 노드가 서로 다른 CA, 서로 다른 AS, 서로 다른 지역에 위치해 있어 단일 지점의 차단이 캠페인 전체를 무력화하지 못하도록 설계됐다.

행위자 맥락과 캠페인이 시사하는 것

위협 피드는 이 캠페인을 Spring Dragon(Lotus Blossom, Billbug, Bronze Elgin, CTG-8171, Thrip, Dragonfish, Esile 등의 별칭으로 추적되는 행위자)에 귀속하며 스파이 목적의 행위자로 분류한다. 이 귀속은 중간 수준의 신뢰도(confidence: medium)로 기록돼 있으며, 교육·연구 섹터 표적화와 스파이 동기의 조합은 학술 기관의 연구 데이터, 지식재산, 또는 정부 인접 프로젝트에 접근 가능한 인력에 대한 정보 수집 목적과 일치한다. 이 행위자가 보유한 다수의 별칭은 여러 추적 기관에 걸친 귀속 경쟁과 진화하는 클러스터 정의를 반영한다. 이 캠페인에서 지정학적 트리거를 직접 입증하는 데이터는 현재 가용한 데이터셋에 존재하지 않는다.

이 캠페인이 드러내는 더 넓은 함의는 서명 악용 기법의 성숙도에 있다. 현재 유효한 상용 코드 서명 인증서를 광범위하게 배포된 소비자 애플리케이션에 적용해 APT급 데이터베이스 백도어를 은닉하고, 이를 통해 76개 AV 엔진과 샌드박스 분석을 동시에 통과하는 이 조합은 서명 기반 신뢰 모델의 근본적 한계를 노출한다. 특히 Netease 코드 서명 인증서(일련번호 05 CA AB D5 55 EE D7 70 D8 76 FD 20 CA 0B 9A FB)는 2028년 12월 4일까지 유효하다 — 인증서가 폐기되지 않는 한, 동일한 서명 체인으로 서명된 추가적인 트로이목마화된 MuMuPlayer 컴포넌트가 등장하더라도 폐기 기반 통제는 작동하지 않는다.

25개월의 도메인 사전 배치와 세 개 AS에 걸친 C2 분산은 기회주의적 인프라 재활용이 아닌 계획적 운영의 특성을 보인다. 이 운영 패턴은 탐지 회피를 단순히 페이로드 수준에서가 아니라 인프라 설계 수준에서 구현하는 성숙한 운영팀의 특성을 시사한다. 교육·연구 기관이 MSSQL 서버를 운영하는 환경에서 MuMuPlayer 같은 소비자 소프트웨어가 설치된 엔드포인트가 존재한다면, 이 캠페인이 노리는 공격 표면은 기술적 취약점이 아니라 소프트웨어 신뢰 체계 자체다. skip20_sqllang_hook YARA 룰이 현재 데이터셋에서 확인된 유일한 탐지 벡터라는 사실은, 이 클래스의 위협에 대한 탐지 생태계의 현재 상태를 있는 그대로 보여준다.

IOC6

파일

(2)

IP

(3)

도메인

(1)
Source: CTX Threat Intelligence