新年伊始,所在公司运气值飙升,受到了 WMI 挖矿攻击,占 cpu75%,而且传播速度很快,大有泛滥之势。看进程都是混淆过的代码。以前都靠的杀毒软件,这次都不好用了,趋势完全没反应,360在被攻击时才有提示,但提示的是cmd.exe,而且只有部分机器装了360。

杀软指不上了,看来只能自己手动了,不过没有类似经验,真有点不知何从下手。好在有点powershell和wmi的功底
第一步,先解析了下混淆的代码,得到了代码下载的 ip 地址,赶紧在防火墙上把该地址禁用了。
第二步,杀软查不到病毒文件,计划任务也没有,服务和注册表也没有异常,参考了下网上的文章,估计是WMI,正好手里有SysinternalsSuite,用里面的autorun查了下,果然筛出一个异常的wmi。
第三步,参考网上文章,确定被创建的wmi类,以及注册的wmi事件,进行删除。经过一个周末的观察,该挖矿进程没有再出现,基本可以确定问题已经解决。

总结:

一. 使用powershell进行了编码混淆,无法从进程中查看具体执行的攻击代码,需要进行编码解析才可以看到真正的攻击代码。
二. 使用WMI(Windows Management Instrumentation)来达到无文件持久化目的。

具体说来:

  1. 所有攻击代码添加至wmi类,攻击时从wmi类属性中获取攻击代码
  2. 使用WMI事件消费者(WMI Event Consumer)定时来执行攻击代码。

用到的WMI类:EventFilter,FilterToConsumerBinding,CommandLineEventConsumer。
攻击者创建的类:Win32_Services(代码存储用)

FilterToConsumerBinding类将 EventFilter实例与CommandLineEventConsumer实例联系在一起。将各个类彼此关联起来,构造完整的程序执行循环。 FilterToConsumerBinding类会检查哪些Windows事件将通过 EventFilter来执行,也会检查 CommandLineEventConsumer中相应的代码。

本次攻击特点:

无文件,不修改注册表,不修改服务,不修改计划任务,使用系统原生工具,杀软免疫,运行时任务管理器只显示宿主进程,只在攻击时杀软才有提醒,但也仅提示宿主进程。

解决方法

powershell wmi结合,删除被修改的wmi类和创建的wmi event consumer

通过这次应对挖矿攻击,把wmi和powershell又深入的学习了下,收获不小。再次感受到了powershell的强大威力。

删除方法

Get-WmiObject -Namespace root\Subscription -Class __EventFilter -filter "Name= 'DSM Event Log Filter'" | Remove-WmiObject -Verbose

Get-WmiObject -Namespace root\Subscription -Class CommandLineEventConsumer -Filter "Name='DSM Event Log Consumer'" | Remove-WmiObject -Verbose

Get-WmiObject -Namespace root\Subscription -Class __FilterToConsumerBinding -Filter "__Path LIKE '%DSM Event Log Consumer%'" |Remove-WmiObject -Verbose

([WmiClass]'root\default:Win32_Services') | Remove-WmiObject -Verbose

Get-Process -Name "powershell" | Stop-Process

关键是要找到被创建的类名和事件,根据实际情况筛选,别删错了。然后再把运行中的powershell挖矿进程删掉就可以了。

参考:

www.anquanke.com/post/id/87976
www.anquanke.com/post/id/88851
www.anquanke.com/post/id/89362
www.360zhijia.com/360anquanke/292834.html
www.freebuf.com/column/149286.html