PHOREAL 恶意软件以东南亚金融业为目标

Elastic Security 发现了 PHOREAL 恶意软件,该软件正以东南亚的金融机构为目标,尤其是越南金融领域的机构。

阅读时长 17 分钟活动
PHOREAL Malware Targets the Southeast Asian Financial Sector

序言

Elastic Security 已经识别出一个正在进行的活动,该活动使用 PHOREAL/RIZZO 后门攻击一家越南金融服务机构。虽然此恶意软件已使用一段时间,但这是我们首次观察到它以内存加载的方式作为一种防御规避和活动保护技术。在分析我们自己的观察结果和先前报告的信息后,我们将此活动组(恶意软件 + 技术 + 受害者分析)追踪为 REF4322。

威胁是什么?

PHOREAL/RIZZO 是一个后门,允许初始受害者分析和后续利用后操作,以危害组织数据的机密性。其他研究报告称,它仅被 APT32(又名 SeaLotus、OceanLotus、APT-C-00、Group G0050)使用。

影响是什么?

APT32 主要以在东南亚(尤其是越南)具有政治或经济利益的受害者为目标。

Elastic 正在采取什么行动?

Elastic Security 详细介绍了如何分类这些威胁警报之一,提取了用于端点和网络筛选的可观测对象,并生成了新的恶意软件签名,用于在部署的 Elastic Agent 舰队中识别和缓解威胁。

调查详情

在进行威胁发现和监控操作时,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) 通过查询 content: {8bff558bec56e83f3e0000e8343e000050e8143e000085c0752a8b750856e821} 在 VirusTotal 中搜索支点。我们识别出相对较少的结果,但其中包括以下条目,该条目于 2021 年 7 月首次提交。

在研究 VirusTotal 的结果时,我们可以看到威胁研究员 Felix Bilstein (@fxb_b) 编写了一个众包 YARA 规则,将此识别为 PHOREAL 后门。转到 CONTENT 选项卡,我们可以将警报中的某些字符串与先前报告给 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 内存保护提供的预防措施(在启用了内存保护的客户环境中)。在我们的案例中,此规则的部署还允许使用我们在使用 Elastic Stack 收集 Cobalt Strike Beacon文章中详述的相同机制收集恶意线程。

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

MARE 识别的域 (thelivemusicgroup[.]com) 目前解析为 103.75.117[.]250,该域由 Oneprovider[.]com 所有,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 似乎是在遭到入侵后部署的,这限制了我们确定初始访问向量的能力。2017 年的 Mandiant 报告表明,PHOREAL 可能会以“建立立足点”的能力进行部署,以便进行受害者分类和后续利用后工具。

分析

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

对手评估理由

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

结论

YARA 规则

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

用于检测 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
}

防御建议

可以利用以下步骤来改善网络的保护态势

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

参考

本文档中引用了以下研究

可观测对象

指标类型参考备注
thelivemusicgroup[.]com域名恶意软件中加密的 C2 域
103.75.117[.]250ipv4-addrthelivemusicgroup[.]com 的解析 IP
ec5d5e18804e5d8118c459f5b6f3ca96047d629a50d1a0571dee0ac8d5a4ce33SHA256tscon32.dllPHOREAL dll

工件

工件也可以通过下载以 ECS 和 STIX 格式的组合 zip 包获取。