PHOREAL 恶意软件瞄准东南亚金融业

Elastic Security 发现了 PHOREAL 恶意软件,该恶意软件的目标是东南亚金融组织,特别是越南金融部门。

阅读时间:17 分钟营销活动
PHOREAL 恶意软件专门攻击东南亚金融部门

前言

Elastic Security 发现一项正在进行的活动针对的是越南金融服务机构,该活动利用了 PHOREAL/RIZZO 后门。 虽然这种恶意软件已经使用了一段时间,但这是我们第一次观察到它作为防御逃避和活动保护技术加载到内存中。 根据我们自己的观察和之前报告的信息的分析,我们将该活动组(恶意软件+技术+受害者研究)跟踪为 REF4322。

有何威胁?

PHOREAL/RIZZO 是一个后门,允许对受害者进行初步描述,并进行后续的后期利用操作,以破坏组织数据的机密性。 其他研究报告称,它被 APT32(又名 SeaLotus、OceanLotus、APT-C-00、Group G0050)独家使用。

有何影响?

APT32 主要针对东南亚(特别是越南)有政治或经济利益的受害者。

Elastic 对此采取了什么措施?

Elastic Security 详细说明了如何对这些威胁警报进行分类,提取用于端点和网络过滤的可观察数据,并生成新的恶意软件签名以识别和缓解已部署的 Elastic Agents 群中的威胁。

调查细节

在进行威胁发现和监控操作时,Elastic Security 研究人员发现了由 Elastic Agent 端点传感器生成的 shellcode_thread Windows 内存保护警报集群。 这些特定的警报很有趣,因为它们都发生在同一个集群内,并且不同寻常的是它们针对的是 control.exe 进程。 Windows control.exe 进程负责处理控制面板项的执行,这些控制面板项是允许用户查看和调整计算机设置的实用程序。

通常,当我们观察到 shellcode_thread 保护的误报时,它会在广泛的用户群中被识别,并且在许多情况下它归因于各种游戏反作弊或 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]"
 },
...

从示例警报中,我们首先识别 start_address_module,即线程开始的 dll/模块。 C:\Windows\SysWOW64\tscon32.dll 是我们已经警告的线程的start_address_module。 它也是唯一加载的未签名的 dll,因此是我们集中精力的好地方。 当我们在 VirusTotal 中检查哈希值以识别有关该样本的先前披露的信息时,我们没有看到任何结果。

深入挖掘后,我们查看了 start_address_bytes,它是我们的警报线程的第一个 32 字节。 我们可以使用start_address_bytes的值(8bff558bece8e6430000e8db43000050e8bb43000085c0751fff7508e8c94300)在VirusTotal中搜索枢轴,查询内容为:{8bff558bec56e83f3e0000e8343e000050e8143e000085c0752a8b750856e821}。 我们发现的结果相对较少,但其中包括 2021 年 7 月首次提交的以下条目

在研究 VirusTotal 的结果时,我们发现威胁研究员 Felix Bilstein( @fxb_b )编写了一个众包 YARA 规则,将其标识为PHOREAL后门。 转到“内容”选项卡,我们可以将警报中的某些字符串与之前报告给 VirusTotal 的内容进行比较。

使用我们上面识别的唯一字符串和 start_address_bytes,我们可以通过将唯一字符串 ($a) 和 start_address_bytes ($b) 转换为十六进制值来创建 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 Agent 时,它将向客户识别 PHOREAL,并通过 shellcode_thread 内存保护(在启用了内存保护的客户环境中)提供后备预防。 在我们的案例中,此规则的部署还允许使用我们在“收集 Cobalt Strike Beacons”文章中详述的相同机制来收集恶意线程。

在新的 YARA 工件部署后不久,我们就收到了新的 malware_signature 警报,其中含有从内存中捕获的恶意线程。 我们的恶意软件分析和逆向工程 (MARE) 团队通过手动二进制分类,通过比较我们的样本和过去报告的结构和功能,很快确认该样本是 PHOREAL/RIZZO。 此外,他们能够从RCDATA 资源中提取 RC4 加密域,如2018 年 CYLANCE OceanLotus 白皮书中所述。

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 Agent 似乎是在受到攻击后部署的,这限制了我们确定初始访问向量的能力。 Mandiant 在 2017 年发布的一份报告指出,PHOREAL 可能以“建立立足点”的方式部署,以便对受害者进行分类,并采用后续的后漏洞利用工具。

分析

Elastic Security 利用钻石模型来描述入侵对手和受害者之间的高级关系。

对手评估理由

根据观察到的活动和之前的报告,我们高度确信 REF4322 是APT32/OceanLotus和此次事件的幕后黑手。 APT32 自 2014 以来一直活跃,主要针对东南亚政府和企业或在越南有利益的其他国际企业。 APT32 是目前唯一被确定为操作 PHOREAL 后门的组织,我们的受害者与典型和特定的先前 APT32 受害者的地理和行业垂直概况相符。

结论

YARA 规则

我们已经创建了 YARA 规则来识别此 PHOREAL 活动。

Yara 规则检测 REF4322/APT32 内存后门 PHOREAL/Rizzo

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
}

防御建议

可以采取以下步骤来改善网络的保护态势:

  1. 在 Windows 终端节点上启用 Elastic Security 内存保护
  2. 利用上面包含的 YARA 签名来确定你的组织内是否存在 PHOREAL 活动
  3. 监控或阻止往返于已识别网络 IOC 的网络流量,并相应地修复受影响的系统。

参考资料

本文档引用了以下研究:

Observables

指标类型参考备注
thelivemusicgroup[.]com域名恶意软件中加密的 C2 域
103.75.117[.]250IPv4 地址thelivemusicgroup[.]com 的解析 IP
ec5d5e18804e5d8118c459f5b6f3ca96047d629a50d1a0571dee0ac8d5a4ce33SHA256tscon32.dllPHOREAL 动态链接库

工件

您还可以通过组合 zip 包下载ECS 和 STIX 格式的工件。