서문
Elastic Security는 베트남의 한 금융 서비스 기관을 대상으로 PHOREAL/RIZZO 백도어를 사용하는 캠페인이 진행 중인 것을 확인했습니다. 이 멀웨어는 한동안 사용되어 왔지만, 방어 회피 및 캠페인 보호 기법으로 메모리에 로드되는 것이 관찰된 것은 이번이 처음입니다. 자체 관찰 및 이전에 보고된 정보를 분석한 결과, 이 활동 그룹(멀웨어+기술+피해자학)을 REF4322로 추적하고 있습니다.
위협은?
포리얼/리조는 초기 피해자 특성 분석과 익스플로잇 후 후속 작업을 통해 조직의 데이터 기밀을 침해할 수 있는 백도어입니다. 다른 연구에서도 APT32(일명 씨로터스, 오션로터스, APT-C-00, 그룹 G0050)가 독점적으로 사용하는 것으로 보고된 바 있습니다.
영향은?
APT32는 주로 동남아시아, 특히 베트남에 정치적 또는 경제적 이해관계가 있는 피해자를 표적으로 삼습니다.
Elastic은 이에 대해 무엇을 하고 있나요?
Elastic Security는 이러한 위협 경보 중 하나를 분류하고, 엔드포인트 및 네트워크 필터링을 위해 관찰 가능한 항목을 추출하고, 배포된 Elastic 에이전트 제품군 전체에서 위협을 식별하고 완화하기 위한 새로운 악성코드 서명을 생성하는 방법을 자세히 설명했습니다.
조사 세부 정보
위협 탐색 & 모니터링 작업을 수행하던 중, Elastic Security 연구원들은 Elastic Agent 엔드포인트 센서에서 생성된 shellcode_thread Windows 메모리 보호 경고 클러스터를 확인했습니다. 이러한 특정 경고는 모두 동일한 클러스터 내에서 발생했고, 특이하게도 control.exe 프로세스를 표적으로 삼았다는 점에서 흥미로웠습니다. Windows control.exe 프로세스는 사용자가 컴퓨터 설정을 보고 조정할 수 있는 유틸리티인 제어판 항목의 실행을 처리합니다.
일반적으로 셸코드_스레드 보호에 대한 오탐이 관찰되면 광범위한 사용자 기반에서 확인되며, 대부분의 경우 다양한 게임 치트 방지 또는 DRM(디지털 저작권 관리) 메커니즘에 기인합니다. 이 경우 단일 클러스터와 Microsoft 서명된 대상 프로세스는 비정형적인 것으로 추가 조사가 필요합니다.
Elastic Security의 메모리 보호에 대한 자세한 내용은 여기에서, 인메모리 공격에 대한 자세한 내용은 여기에서 확인할 수 있습니다.
알림의 이상값 특성에서 흥미를 느낀 저희는 추가 조사를 통해 위협을 검증하고 특성을 파악했습니다:
대상 프로세스는 서명된 Windows 바이너리입니다.
...
"process": {
"args": [
"control.exe",
"Firewall.cpl",
"{2D48D219-C306-4349-AE1F-09744DFFB5B9}"
],
"Ext": {
"code_signature": [
{
"trusted": true,
"subject_name": "Microsoft Windows",
"exists": true,
"status": "trusted"
}
],
"dll": [
...
서명되지 않은 로드된 .dll
...
"Ext": {
"mapped_address": 1945501696,
"mapped_size": 21135360
},
"path": "C:\\Windows\\SysWOW64\\tscon32.dll",
"code_signature": [
{
"exists": false
}
],
"name": "tscon32.dll",
"hash": {
"sha1": "007970b7a42852b55379ef4cffa4475865c69d48",
"sha256": "ec5d5e18804e5d8118c459f5b6f3ca96047d629a50d1a0571dee0ac8d5a4ce33",
"md5": "2b6da20e4fc1af2c5dd5c6f6191936d1"
}
},
...
알림 스레드에서 모듈 시작
...
"pe": {
"original_file_name": "CONTROL.EXE"
},
"name": "control.exe",
"pid": 5284,
"thread": {
"Ext": {
"start_address_module": "C:\\Windows\\SysWOW64\\tscon32.dll",
...
메모리 영역 메타데이터 알림
...
"memory_region": {`
"region_size": 73728,
"region_protection": "RWX",
"allocation_base": 81395712,
"bytes_allocation_offset": 0,
"allocation_type": "PRIVATE",
"memory_pe_detected": true,
"region_state": "COMMIT",
"strings": [
"QSSSSSSh ",
...
"bad cast",
"Local\\{5FBC3F53-A76D-4248-969A-31740CBC8AD6}",
"Netapi32.dll",
"NetWkstaGetInfo",
"NetApiBufferFree",
"\\\\.\\pipe\\{A06F176F-79F1-473E-AF44-9763E3CB34E5}",
"list<T> too long",
"{FD5F8447-657A-45C1-894B-D533926C9B66}.dll",
"DllEntry",
...
".?AVbad_alloc@std@@",
"C:\\Windows\\syswow64\\control.exe",
":z:zzzzzz7",
...
"InternalName",
"mobsync.exe",
"LegalCopyright",
...
피벗을 위한 스레드 데이터
...
"thread": {
"Ext": {
"start_address_bytes": "8bff558bece8e6430000e8db43000050e8bb43000085c0751fff7508e8c94300",
...
"start_address_bytes_disasm": "mov edi, edi\npush ebp\nmov ebp, esp\ncall 0x000043f0\ncall 0x000043ea\npush eax\ncall 0x000043d0\ntest eax, eax\njnz 0x00000038\npush dword ptr [ebp+0x08]"
},
...
예제 알림에서 먼저 스레드가 시작된 dll/모듈인 start_address_module을 식별합니다. C:\Windows\SysWOW64\tscon32.dll은 경고한 스레드의 start_address_module입니다. 또한 유일하게 서명되지 않은 dll이 로드되어 있으므로 집중적으로 작업하기에 좋은 곳입니다. 샘플에 대해 이전에 공개된 정보를 확인하기 위해 VirusTotal에서 해시값을 확인할 때 아무런 결과가 표시되지 않았습니다.
좀 더 자세히 살펴보면 알림 스레드의 첫 번째 32 바이트인 start_address_bytes를 살펴봤습니다. 시작_주소_바이트(8bff558bece8e6430000e8db43000050e8bb43000085c0751fff7508e8c94300)의 값을 사용하여 콘텐츠를 쿼리하여 VirusTotal에서 피벗을 검색할 수 있습니다: {8bff558bec56e83f3e0000e8343e000050e8143e000085c0752a8b750856e821}. 비교적 적은 수의 결과를 확인했지만, 2021년 7월에 처음 제출된 아래 항목이 포함되어 있습니다.
바이러스 토탈의 결과를 조사하는 과정에서 위협 연구자 펠릭스 빌스타인(@fxb_b)이 크라우드소싱된 YARA 규칙을 작성하여 이를 PHOREAL 백도어로 식별한 것을 확인할 수 있었습니다. 콘텐츠 탭으로 이동하면 알림의 일부 문자열을 이전에 VirusTotal에 보고된 내용과 비교할 수 있습니다.
위에서 식별한 고유 문자열과 시작_주소_바이트를 사용하여 아래와 같이 고유 문자열($a)과 시작_주소_바이트($b)를 16진수 값으로 변환하여 YARA 서명을 만들 수 있습니다.
변환된 YARA 문자열
strings:
\\ "\\.\pipe\{A06F176F-79F1-473E-AF44-9763E3CB34E5}" ascii wide
$a1 = { 5C 00 5C 00 2E 00 5C 00 70 00 69 00 70 00 65 00 5C 00 7B 00 41 00
30 00 36 00 46 00 31 00 37 00 36 00 46 00 2D 00 37 00 39 00 46 00
31 00 2D 00 34 00 37 00 33 00 45 00 2D 00 41 00 46 00 34 00 34 00
2D 00 39 00 37 00 36 00 33 00 45 00 33 00 43 00 42 00 33 00 34 00
45 00 35 00 7D 00 }
\\ "Local\{5FBC3F53-A76D-4248-969A-31740CBC8AD6}" ascii wide
$a2 = { 4C 00 6F 00 63 00 61 00 6C 00 5C 00 7B 00 35 00 46 00 42 00 43 00
33 00 46 00 35 00 33 00 2D 00 41 00 37 00 36 00 44 00 2D 00 34 00
32 00 34 00 38 00 2D 00 39 00 36 00 39 00 41 00 2D 00 33 00 31 00
37 00 34 00 30 00 43 00 42 00 43 00 38 00 41 00 44 00 36 00 7D 00 }
\\ "{FD5F8447-657A-45C1-894B-D533926C9B66}.dll" ascii
$a3 = { 7B 46 44 35 46 38 34 34 37 2D 36 35 37 41 2D 34 35 43 31 2D 38 39
34 42 2D 44 35 33 33 39 32 36 43 39 42 36 36 7D 2E 64 6C 6C }
\\ PHOREAL start_address_bytes sequence
\\ mov edi, edi; push ebp; mov ebp, esp; call 0x000043f0;
\\ call 0x000043ea; push eax; call 0x000043d0; test eax, eax;
\\ jnz 0x00000038; push dword ptr [ebp+0x08]
$str_addr = { 8B FF 55 8B EC 56 E8 3F 3E 00 00 E8 34 3E 00 00 50 E8 14 3E
00 00 85 C0 75 2A 8B 75 08 56 E8 21 }
condition:
2 of them
이 규칙은 Elastic 에이전트에 배포될 때 고객에게 PHOREAL을 식별하고 (메모리 보호가 켜져 있는 고객 환경에서는) shellcode_thread 메모리 보호를 통해 이미 제공된 백스톱 방지를 차단합니다. 저희의 경우 이 규칙을 배포함으로써 코발트 스트라이크 비콘 수집하기 문서에서 설명한 것과 동일한 메커니즘을 사용하여 악성 스레드를 수집할 수 있었습니다.
새로운 YARA 아티팩트가 배포된 직후, 메모리에서 캡처된 악성 스레드와 함께 새로운 malware_signature 경고를 받았습니다. 악성코드 분석 및 리버스 엔지니어링(MARE) 팀의 수동 바이너리 분류는 샘플과 과거 보고서의 구조와 기능을 비교하여 샘플이 포리얼/리조임을 빠르게 확인했습니다. 또한 2018년 CYLANCE OceanLotus 백서에 설명된 대로 RCDATA 리소스에서 RC4 암호화된 도메인을 추출할 수 있었습니다.
MARE가 식별한 도메인(thelivemusicgroup[.]com)은 현재 103.75.117[.]250으로 확인됩니다. Oneprovider[.]com이 소유하고 있습니다, 캐나다에 본사를 둔 전용 서버 호스팅 회사로 전 세계에 데이터 센터가 분산되어 있습니다.
https:// ipinfo.io/ 103.75.117[.]250에 대한 쿼리 결과
{
"ip": "103.75.117[.]250",
"city": "Hong Kong",
"region": "Central and Western",
"country": "HK",
"loc": "22.2783,114.1747",
"org": "AS133752 Leaseweb Asia Pacific pte. ltd.",
"timezone": "Asia/Hong_Kong",
"asn": {
"asn": "AS133752",
"name": "Leaseweb Asia Pacific pte. ltd.",
"domain": "leaseweb.com",
"route": "103.75.117[.]0/24",
"type": "hosting"
},
"company": {
"name": "Oneprovider.com - Hong Kong Infrastructure",
"domain": "oneprovider[.]com",
"type": "hosting"
},
"privacy": {
"vpn": false,
"proxy": false,
"tor": false,
"relay": false,
"hosting": true,
"service": ""
},
"abuse": {
"address": "1500 Ste-Rose LAVAL H7R 1S4 Laval Quebec, Canada",
"country": "CA",
"email": "[email protected]",
"name": "ONE PROVIDER",
"network": "103.75.117[.]0/24",
"phone": "+1 514 286-0253"
},
"domains": {
"ip": "103.75.117[.]250",
"total": 2,
"domains": [
"thelivemusicgroup[.]com",
"cdn-api-cn-1[.]com"
]
}
도메인에 대한 대부분의 흥미로운 정보는 비공개로 보호되지만 아래 그림의 "업데이트됨" 및 "생성됨" 날짜는 이 도메인이 악의적으로 사용된 기간을 제한하는 데 유용할 수 있습니다.
Elastic 에이전트는 침해 이후 배포된 것으로 보이며, 이로 인해 초기 액세스 경로를 파악하는 데 한계가 있었습니다. 2017년 맨디언트 보고서에 따르면 PHOREAL은 피해자 분류 및 악용 후 후속 조치를 위한 '거점 구축' 용도로 배포될 수 있다고 합니다.
분석
Elastic Security는 다이아몬드 모델을 활용하여 침입의 공격자와 피해자 간의 높은 수준의 관계를 설명합니다.
적대적 평가 정당화
관찰된 활동과 이전 보고를 바탕으로 높은 확신을 가지고 REF4322가 APT32/OceanLotus이며 이 사건의 배후에 있는 것으로 평가합니다. APT32는 특히 베트남에 관심이있는 동남아시아 정부 및 기업 또는 기타 국제 기업을 대상으로 부터 활동해 왔습니다. 2014 APT32는 현재 PHOREAL 백도어를 운영하는 것으로 확인된 유일한 그룹이며, 이번 피해자는 이전의 전형적인 특정 APT32 피해자들의 지역 및 산업별 프로필과 일치합니다.
결론
YARA 규칙
이 PHOREAL 활동을 식별하기 위해 YARA 규칙을 만들었습니다.
REF4322/APT32 인메모리 백도어 PHOREAL/Rizzo를 탐지하는 Yara 규칙
rule Windows_Trojan_PHOREAL {
meta:
Author = "Elastic Security"
creation_date = "2022-02-16"
last_modified = "2022-02-16"
os = "Windows"
arch = "x86"
category_type = "Trojan"
family = "PHOREAL"
threat_name = "Windows.Trojan.PHOREAL"
description = "Detects REF4322/APT32 in-memory backdoor PHOREAL/Rizzo."
reference_sample = "88f073552b30462a00d1d612b1638b0508e4ef02c15cf46203998091f0aef4de"
strings:
\\ "\\.\pipe\{A06F176F-79F1-473E-AF44-9763E3CB34E5}" ascii wide
$a1 = { 5C 00 5C 00 2E 00 5C 00 70 00 69 00 70 00 65 00 5C 00 7B 00 41 00
30 00 36 00 46 00 31 00 37 00 36 00 46 00 2D 00 37 00 39 00 46 00
31 00 2D 00 34 00 37 00 33 00 45 00 2D 00 41 00 46 00 34 00 34 00
2D 00 39 00 37 00 36 00 33 00 45 00 33 00 43 00 42 00 33 00 34 00
45 00 35 00 7D 00 }
\\ "Local\{5FBC3F53-A76D-4248-969A-31740CBC8AD6}" ascii wide
$a2 = { 4C 00 6F 00 63 00 61 00 6C 00 5C 00 7B 00 35 00 46 00 42 00 43 00
33 00 46 00 35 00 33 00 2D 00 41 00 37 00 36 00 44 00 2D 00 34 00
32 00 34 00 38 00 2D 00 39 00 36 00 39 00 41 00 2D 00 33 00 31 00
37 00 34 00 30 00 43 00 42 00 43 00 38 00 41 00 44 00 36 00 7D 00 }
\\ "{FD5F8447-657A-45C1-894B-D533926C9B66}.dll" ascii
$a3 = { 7B 46 44 35 46 38 34 34 37 2D 36 35 37 41 2D 34 35 43 31 2D 38 39
34 42 2D 44 35 33 33 39 32 36 43 39 42 36 36 7D 2E 64 6C 6C }
\\ PHOREAL start_address_bytes sequence
$str_addr = { 8B FF 55 8B EC 56 E8 3F 3E 00 00 E8 34 3E 00 00 50 E8 14 3E
00 00 85 C0 75 2A 8B 75 08 56 E8 21 }
condition:
2 of them
}
방어 권장 사항
다음 단계를 활용하여 네트워크의 보호 태세를 개선할 수 있습니다:
- Windows 엔드포인트에서 Elastic Security 메모리 보호 활성화
- 위에 포함된 YARA 서명을 활용하여 조직 내에 PHOREAL 활동이 존재하는지 확인하세요.
- 식별된 네트워크 IOC를 오가는 네트워크 트래픽을 모니터링 또는 차단하고 영향을 받는 시스템을 적절히 수정하세요.
참고 자료
문서 전체에서 다음과 같은 연구를 참조하였습니다.
- https://github.com/CyberMonitor/APT_CyberCriminal_Campagin_Collections/blob/master/2018/2018.10.17.OceanLotus_SpyRATs/SpyRATsofOceanLotusMalwareWhitePaper.pdf
- https://www.mandiant.com/resources/cyber-espionage-apt32
- https://www.secureworks.com/research/threat-profiles/tin-woodlawn
- https://attack.mitre.org/software/S0158/
- https://attack.mitre.org/groups/G0050/
Observables
표시기 | 유형 | 참조 | 참고 |
---|---|---|---|
thelivemusicgroup[.]com | 도메인 이름 | 멀웨어로 암호화된 C2 도메인 | |
103.75.117[.]250 | IPv4-addr | thelivemusicgroup[.]com의 확인된 IP | |
ec5d5e18804e5d8118c459f5b6f3ca96047d629a50d1a0571dee0ac8d5a4ce33 | SHA256 | tscon32.dll | PHOREAL dll |
아티팩트
아티팩트는 결합된 압축 번들로 ECS 및 STIX 형식으로도 다운로드할 수 있습니다.