Change 嘶吼专业版 、
本文要点
· Intezer安全团队于近日发现了一个新版本的WatchBog挖矿***,据推测从今年6月以来已累计破坏超过4,500台Linux机器。
· 此版WatchBog利用了数个新披露的漏洞,还添加了BlueKeep RDP协议漏洞扫描器模块,表明背后的***者正在收集易受***的系统列表,以便将来利用或出售给第三方牟利。
· 目前,所有安全供应商都未检测到此恶意软件。
· 在这篇文章中,我们为Windows和Linux用户提供了预防和响应建议,此外还提供了一个YARA签名,用于检测类似的威胁。
介绍
WatchBog于2018年11月出现在公众视野中,它利用已知的漏洞来破坏Linux服务器。阿里云对此曾做过记录。
WatchBog的上一份研究报告还停留在数月前,这段时间内,它又通过新的传播模块来升级注入程序,增加了对服务器的覆盖范围。而我们发现的此版WatchBog,还利用了数个近期公开的漏洞——包括Jira的CVE-2019-11581(就在漏洞公布后12天),Exim的CVE-2019-10149和Solr的CVE-2019-0192 ,同时还添加了一个BlueKeep扫描器。
BlueKeep,也称为CVE-2019-0708,是一个Windows内核漏洞,能让***者在脆弱的系统上获取RCE。从Windows 2000到Windows Server 2008,再到Windows 7,未补丁的Windows版本中均存在此漏洞。
目前还没有已知公开的PoC可用此漏洞来取得RCE,也没有在野外发现任何此类***。这个扫描器模块的出现表明***者正在收集系统列表,好用于未来的***之中,
Jira、Solr和BlueKeep的漏洞扫描模块都是在13天内添加的,说明WatchBog最近可能在加速新功能的整合,再次印证了“漏洞从曝光到被黑产的时间越来越短”。
图1.VirusTotal检测结果
把样本上传到Intezer的分析系统后,可以看出,在对文件进行逆向工程之前就已经显示出与WatchBog大量代码重叠了。
图2.Intezer分析系统显示结果
在研究样本中的新增加的模块时,我们发现了它设计上的一个缺陷,允许我们进行“中间人”***、分析二进制文件。下面对该模块进行分析。
技术分析
感染过程与阿里云之前记录的类似:***者在接触目标后运行初始部署脚本,脚本通过crontab设置持久性,并从Pastebin下载加密货币挖矿机。
值得注意的是脚本的末尾部分:
以WatchBog的经典套路,脚本会先从Pastebin下载一个base64编码的payload,以此下载组件并执行:
但此版中下载的不是另一个挖矿机,而是新的spreader模块。
乍看之下,下载的是一个简单的动态链接ELF可执行文件,但开始分析后就会发现发现它实际上是一个Cython编译的可执行文件。
图3.Cython编译的二进制文件
关于Cython,有文章曾描述说:
Cython是一个优化的静态编译器,它能将.py模块转换成高性能的C文件。生成的C文件可以毫不费力地编译到本机二进制库中,且编译完成后,没有办法将编译库反转回可读的Python源代码!
但是,此编译后的二进制文件还是透露了原始Python模块的一些线索:
初始化过程
此二进制文件一开始会在/tmp/.gooobb处创建一个文件,在该文件中将其进程标识符(pid)写为恶意软件执行的足迹。当此文件存在时,后续启动spreader将失败。
然后从Pastebin中检索其C2服务器:
此二进制文件中,还硬编码了洋葱(.onion)C2服务器地址作备用。
我们可以根据对Pastebin链接的访问次数来估计受感染的受害者数量:
如上所示,我们推算大约有4,500个端点受到感染。由于WatchBog在6月5日(这些链接在Pastebin的上传日期)之前也一直处于活动状态,实际感染数可能比这要多。
二进制文件将首先尝试连接到其中一个可用的静态C2服务器。
同时我们观察到,C2服务器的证书已过期。
通常,HTTPS客户端会检查与之交互的SSL证书,然而WatchBog并非如此。我们假设WatchBog客户端在使用HTTPS时没有验证证书,否则它将拒绝与C2通信。
这个漏洞允许我们用我们自己的证书设置一个透明的HTTPS代理,并发起一个“中间人”***来分析WatchBog SSL/TLS流量:
二进制文件之后会为受害者生成唯一密钥,并在此密钥下向C2发送初始消息。下面的图像是一个SSL / TLS解密流量中请求和响应的payload示例:
这些数据包被编码混淆过。在分析过程中,我们确定了使用的编码算法,并编写以下脚本解码payload:
final = ""
arr = input()
for a in arr:
stri = "begin 666 \n{0}\n \nend\n".format(a) \
.decode("uu").strip('\x00') \
.decode("hex") \
.decode("base64")
final += chr(int(stri))
print(final[::-1])
向C2发送的初始消息里,包含了受感染端的系统信息:
信息将被合并和散列,以构建CNC中托管的WatchBog API的路径。服务器回复“task”,让僵尸网络在目标列表上执行:
BlueKeep扫描器
此版WatchBog似乎已经集成了一个RDP扫描程序,能找到含有BlueKeep漏洞的Windows机器。此扫描程序是来自Github zithosum0x0的扫描程序的Python端口,我们是根据函数名称的相似性进行评估的:
然后扫描器将从CNC提供的IP列表中查找RDP服务器:
图4.WatchBog扫描RDP端口
RDP的默认Windows服务端口是TCP 3389,可以根据“Cookie: mstshash=”在数据包中轻松识别。
我们可以观察到字符串'watchbog'作为了RDP mstshash字段的用户名。
在RDP扫描的IP列表中,我们发现一些IP地址属于澳大利亚沃达丰(一家跨国性的移动电话营办商)和腾讯的基础设施。
扫描结束之后,WatchBog客户端会返回一个易受***的IP地址列表,列表经过RC4加密,以十六进制字符串编码:
图5.加密的IP地址
说明WatchBog背后的参与者可能正在收集含有此BlueKeep漏洞的Windows端点列表,要么供将来使用,要么出售给第三方牟利。
传播
此版WatchBog利用了以下五个CVE漏洞:
· CVE-2019-11581 (Jira)
· CVE-2019-10149 (Exim)
· CVE-2019-0192 (Solr)
· CVE-2018-1000861 (Jenkins)
· CVE-2019-7238 (Nexus Repository Manager 3)
图6.可用的“pwn”模块
此外,还有两个用于bruteforce CouchDB和Redis实例的模块,以及实现RCE的代码。
所有“pwn”模块都允许***者实现远程代码执行。
一旦发现相应漏洞,二进制文件就会调用正确的漏洞利用,并安装托管在Pastebin上的恶意bash脚本来进一步传播。
我们能够找到上传到HybridAnalysis的spreader模块的早期测试版本,包含了Solr CVE-2019-0192,以及ActiveMQ CVE-2016-3088的利用代码,以及一个在破解的Redis实例上获得代码执行的模块。
图7.Solr漏洞利用代码
结论
研究最近的WatchBog我们发现,它仍在高速发展中,现阶段WatchBog是通过整合新公布漏洞和改进感染过程来保持先进性。
需要强调的是,如果Python恶意软件是与Cython等引擎一起部署本地的,那么对它的分析就会变得更加困难,这点与其他Python原生框架(如pyinstaller)有所差别。
另外,Linux僵尸网络与BlueKeep扫描器的整合也可能表明WatchBog正在不同的平台上探索勒索的机会。
预防和反应
建议您将相关软件更新到最新版本:
· Windows用户参考Microsoft的客户指南,以缓解BlueKeep漏洞。
· 使用Exim、Jira、Solr、Jenkins或Nexus Repository Manager 3的Linux用户更新到最新版本。
· 使用Redis或CouchDB的Linux用户确保没有在受信任网络之外公开的开放端口。
· 疑似感染了WatchBog的Linux用户检查是否存在“/tmp/.tmplassstgggzzzqpppppp12233333”文件或“/tmp/.gooobb”文件。
我们还根据WatchBog的恶意代码创建了一个自定义YARA规则。
IOCs
b17829d758e8689143456240ebd79b420f963722707246f5dc9b085a411f7b5e
26ebeac4492616baf977903bb8deb7803bd5a22d8a005f02398c188b0375dfa4
cdf11a1fa7e551fe6be1f170ba9dedee80401396adf7e39ccde5df635c1117a9
https://9d842cb6.ngrok[.]io
https://7dc5fb4e.ngrok[.]io
https://z5r6anrjbcasuikp.onion[.]to
https://pastebin[.]com/raw/Dj3JTtnj
https://pastebin[.]com/raw/p3mGdbpq
https://pastebin[.]com/raw/UeynzXEr
https://pastebin[.]com/raw/MMCFQMH9
3.14.212[.]173
3.14.202[.]129
3.17.202[.]129
3.19.3[.]150
18.188.14[.]65