两种恶意软件加载器对比:从ClickFix传递到C2
Detection stack
- AIDR
- Alert
- ETL
- Query
摘要
威胁行为者越来越多地依靠ClickFix和TerminalFix技术来传递恶意软件加载程序,包括Lorem Ipsum Loader和Axolotl Loader。这些加载程序通常作为通过DLL旁加载、MSI安装程序和Node.js执行部署勒索软件的前身。攻击活动还包含高级反避技术,如ntdll解除挂钩和嵌入自定义DLL节中的加密有效载荷。
调查
研究人员分析了Lorem Ipsum和Axolotl Loader样本,以检查它们的交付链和技术特征。调查揭示了被篡改的MSI安装程序、多阶段的PowerShell脚本及一个独特的 .cpoc 用于资源存储的DLL节。比较分析还揭示了两种加载程序家族在C2通信、规避机制和持久性技术方面的差异。
缓解措施
组织应监控Sysmon遥测数据,以检测DLL旁加载和可疑的父子进程关系,包括PowerShell启动批处理文件。建议对MSI安装程序的执行强制执行严格控制,并检测用户可写目录中的未签名DLL文件。安全团队还应检查网络流量,寻找不寻常的User-Agents(如Firefox/143)和与活动感染相关的可疑C2注册模式。
响应
当检测到恶意活动时,隔离受影响的主机并对诸如C:WindowsTemp或C:UsersPublic等用户可写目录进行取证分析。使用随机化名称搜寻计划任务和注册表运行键。对已知C2域和IP地址进行DNS和代理日志的回溯搜索,以确定妥协的范围。
攻击流程
我们仍在更新这一部分。
检测
可能的持久性点 [ASEPs – 软件/NTUSER Hive](通过registry_event)
可能通过使用短脚本名执行(通过cmdline)
Schtasks指向可疑目录/二进制/脚本(通过cmdline)
可疑的Powershell字符串(通过powershell)
通过Powershell调用可疑的Windows API函数(通过powershell)
Public用户配置文件中的可疑文件(通过file_event)
可疑的计划任务(通过audit)
用于检测的IOCs (HashSha256):从ClickFix到C2:两种恶意软件加载程序的比较分析第二部分
用于检测的IOCs (HashSha256):从ClickFix到C2:两种恶意软件加载程序的比较分析第一部分
用于检测的IOCs (HashMd5):从ClickFix到C2:两种恶意软件加载程序的比较分析
用于检测的IOCs (SourceIP):从ClickFix到C2:两种恶意软件加载程序的比较分析
用于检测的IOCs (DestinationIP):从ClickFix到C2:两种恶意软件加载程序的比较分析
UUID命名的互斥体旁加载主机自我启动 [Windows进程创建]
通过letsdiskuss.com检测恶意请求和指挥控制模式 [Windows网络连接]
通过签名的Microsoft可执行文件进行DLL旁加载和注册表运行键持久性 [Windows Sysmon]
检测恶意的PowerShell和DLL活动 [Windows Powershell]
模拟执行
-
攻击叙述与命令: 一个对手已获得初始访问权限并尝试部署模块化恶意软件加载程序。为了规避简单的基于签名的杀毒软件,他们使用PowerShell调用自定义加载程序。加载程序使用特定的运行时库(
libgcc_s_seh-1.dll)并需要特定的标志(-AgentDll)在内存中初始化有效载荷。攻击者的目标是通过这些组件的PowerShell驱动执行链建立持久的C2连接。 -
回归测试脚本:
# 仿真脚本用于检测验证 # 此脚本模仿Sigma规则中定义的行为 $workingDir = $env:TEMP $dllName = "libgcc_s_seh-1.dll" $dllPath = Join-Path $workingDir $dllName Write-Host "[+] 正在为仿真创建虚拟DLL..." New-Item -Path $dllPath -ItemType File -Force | Out-Null Write-Host "[+] 正在执行PowerShell命令以触发selection1(命令行中的DLL名称)..." Start-Process powershell.exe -ArgumentList "-Command `& {Write-Output 'Loading $dllPath'}`" -NoNewWindow Write-Host "[+] 正在执行PowerShell命令以触发selection2(AgentDll标记)..." Start-Process powershell.exe -ArgumentList "-AgentDll -DepsDir C:Temp -Shim" -NoNewWindow Write-Host "[+] 仿真完成。" -
清理命令:
# 清理脚本 $workingDir = $env:TEMP $dllName = "libgcc_s_seh-1.dll" $dllPath = Join-Path $workingDir $dllName if (Test-Path $dllPath) { Remove-Item -Path $dllPath -Force Write-Host "[+] 已清理虚拟DLL。" } else { Write-Host "[!] 未找到DLL,无需清理。" }