永恒之蓝下载器blackball分析报告
简介
在为客户进行远程排查时,提取到名为blackball的Powershell恶意挖矿程序,经分析关联到一个长期活跃的样本家族,最早出现于2018年。此次的样本较历史版本增加了SMBv3漏洞扫描等模块(便于后续版本漏洞利用),为该家族的最新变种。
流程图
根据从感染主机上抓取到的PowerShell的命令行参数来着手分析,该命令行参数是从http[:]//t.tr2q.com/x.js下载执行x.js。如图:
下载到的x.js是经过多轮解混淆操作的PowerShell代码,其主要功能为通过WMI来收集主机信息并将收集到的数据上传至服务器,再从http[:]//t.tr2q.com/x.jsp下载执行x.jsp,如下图:
主要收集的信息有:
主机名 | GUID |
---|---|
MAC地址 | 操作系统版本 |
操作系统位数 | 时间 |
恶意样本主体框架
从服务器上下载下来的x.jsp文件便是该恶意样本的主体框架,主要行为包含:
- 收集操作系统信息
- 执行挖矿
- 横向传播
- 创建计划任务实现持久化
- 构造钓鱼邮件实施传播
收集操作系统信息
通过WMI再次收集大量操作系统信息,PowerShell代码如下图:
收集的信息有:
主机名 | UUID |
---|---|
MAC地址 | 操作系统版本 |
用户名 | 域信息 |
时间信息 | 显卡信息 |
内存大小 | 盘符信息 |
修改Defender配置,关闭实时监控;添加排除目录C:\;添加排除进程PowerShell进程。如图:
设置DNS服务器;并将获取到的信息拼接起来,后续当有下载访问时再将拼接好的信息发送至服务器,如图:
创建感染标记文件GkPiGedjuq8f91j.txt,并设置65529和65533端口转发,其中65529端口在后续横向传播时,作为感染标记。
同时关闭445端口和135端口防止后续其他挖矿程序入侵。
执行挖矿
首先,根据之前获取到的显卡信息,来判断感染主机的显卡类型,如图:
然后再根据经过判断的显卡类型,以及操作系统版本来下载执行不同的挖矿程序。
具体代码如图:
当为64位操作系统时,会从http[:]//d.ackng.com下载名为m6.bin的XMRig的CPU挖矿程序;
当含有英伟达或是AMD的显卡并且为64位操作系统时,会从http[:]//d.ackng.com下载m6g.bin的XMRig的GPU挖矿程序。
并且当感染主机的显卡为英伟达的显卡时,且操作系统版本为64位,会再下载XMRig CUDA插件来辅助挖矿。
通过动态加载的方式执行矿机主体程序,实现无文件挖矿。
横向传播
通过另起cmd进程,调用PowerShell执行构造好的指令,从http[:]//d.ackng.com下载执行if.bin文件,执行的PowerShell指令代码如图:
If.bin主要是进行横向传播的,其行为有:
- 感染可移动存储设备和网络驱动器
- 清理其他挖矿程序
- 使用PowerDump和Mimikatz获取感染主机的用户名密码
- SMB爆破
- 永恒之蓝及SMBv3漏洞利用
- MS-SQL Server 管理员账户暴力破解
感染可移动存储设备和网络驱动器
另起PowerShell进程执行感染可移动设备的C#代码,如图:
感染USB等可移动设备和网络驱动器,写入带有CVE-2017-8464漏洞的link文件,一旦其他主机点击(不需要打开.lnk文件)被感染后的可移动存储设备或网络驱动器,便会触发CVE-2017-8464漏洞导致远程代码执行,进而感染病毒。
.lnk文件的内容如下:
清理其他挖矿程序
清理操作主要为:关闭服务,删除计划任务,清除其他挖矿程序另起PowerShell进程执行Source4的PowerShell指令,如图:
首先,通过SC.exe关闭不必要的服务,再通过schtasks.exe删除不必要的计划任务,如图:
再通过WMi监控进程,根据进程的命令行参数和进程名,找出其他挖矿程序,结束对应进程,并将其文件删除,如图:
根据命令行参数,判断是否含有其他挖矿程序:
根据进程名判断是否含有其他挖矿程序,并且当Taskmgr.exe进程不存在时,便创建该进程:
同时还会监控建立TCP连接的端口是否为指定的值,当为指定值,也会将其进程结束。同样是为了清除其他挖矿进程,如图:
使用PowerDump和Mimikatz获取感染主机的用户名密码
通过网上开源的代码powerdump获取当前计算机所有用户秘密的hash值,并且还通过mimikatz获取到当前计算机所有用户的密码,当病毒作者的密码hash字典或密码字典中没有这些值时,便将其添加到字典中,如图:
用户名、密码hash及密码字典如图:
SMB爆破、永恒之蓝及SMBv3漏洞利用
构造目标主机IP
获取主机所能访问到的内网地址,并且还通过访问网址http[:]//api.ipify.org获取公网IP,并且随机化一个公网IP网段。然后将这些获取到的网段地址和0~255的主机号进行拼接,生成后续要进行爆破或漏洞利用的IP地址,代码如图:
根据获取到的IP网段进行端口扫描,查看该网段内哪些主机开放了445端口以及作为感染标记的65529端口,如图:
当扫描到开放445端口,并且没有开放65529端口的主机,视为目标主机,将依次进行如下攻击:
SMB弱口令爆破
通过弱口令对开放445端口的主机进行SMB爆破,来实现横向传播,代码如图:
当爆破成功,便下载执行7p.php来绕过UAC,然后再将run.bat文件释放到目标主机的自启动目录下,代码如图:
永恒之蓝(MS17-010)漏洞利用
首先扫描目标主机是否存在永恒之蓝的漏洞,当检查到存在该漏洞时,便执行指定的Exp。
SMB v3(CVE-2020-0796)漏洞扫描
验证当前主机是否存在CVE-2020-0796漏洞,并将存在漏洞的主机信息,发送到服务器上。如图:
MS-SQL Server 管理员账户暴力破解
先扫描当前网段哪些主机开放了1433端口和感染标记端口65529,当扫描到目标主机开放了1433端口并且没有开放65529端口,便对目标主机的SA账户进行爆破,当爆破成功便执行指令继续从服务器http[:]//t.tr2q.com上下载执行ms.jsp,来进行横向传播。
最后再将执行的结果,返回到服务器/log.json上,如图:
创建计划任务实现持久化
从http[:]//t.tr2q.com下载执行report.jsp文件,如图:
report.jsp依旧是经过多轮混淆的Powershell指令,其主要功能为创建计划任务来实现持久化。首先创建名为“blackball”的计划任务,该计划任务不实现任何功能代码,只是作为感染标记。如图:
在根据下图的三个域名,创建三个随机命名的计划任务。这些计划任务除域名不同外,内容基本一致。都是通过调用PowerShell来执行下载执行a.jsp。如图:
经验证,计划任务下载的文件a.jsp与整体框架x.jsp是一致的,因此计划任务的目的便是实现持久化。
构造钓鱼邮件实施传播
检测godmali3.txt是否存在,当文件不存在时下载if_mail.bin.
字符串形式保存要执行的第一段C#代码,用于突破会话隔离创建CMD进程
枚举当前会话ID
创建CMD进程,突破Session 0隔离
第二段要执行的C#代码,用于邮件发送
首先解出使用Base64加密的脚本字符串
该部分主要用于生成发送邮件的附件,附件包括a.rtf和1.js两个文件
通过两段数据拼接的形式生成a.rtf
仔细分析后发现此文档包含CVE-2017-8570漏洞,当未修复此漏洞的主机打开后会触发隐含的脚本文件4i8IDlz75m1dp3c.sct,下载恶意代码执行。并实现脚本的自删除,清除痕迹。
1.js采用社会工程学手段,将要执行的代码隐藏在最低端。使用记事本打开文本并静默执行powershell代码。可以让用户误以为是无意义的文本文件而实现代码执行
随后会进行邮件的构造
从邮件池中取出邮件的主题内容等
通过新冠肺炎等热门话题或诱导性文字引导用户打开附件
获取联系人信息并发送生成的钓鱼邮件。此前生成的RTF文件和JS脚本经处理后作为附件被添加,分别命名为readme.doc, readme.zip。
用户一旦打开附件就会成为新的受害者和不知情的传播者,如不能及时阻断将会通过钓鱼邮件的方式持续传播。
防护建议
安装如下补丁,防止漏洞利用:
CVE-2017-8464 LNK 远程代码执行漏洞补丁
MS17-010永恒之蓝漏洞补丁
CVE-2020-0796 SMB v3远程代码执行漏洞补丁
CVE-2017-8570 office远程代码执行漏洞补丁
设置复杂度较高的密码,杜绝同一密码多次使用,防止弱口令爆破和撞库:
数据库管理员账户密码
Windows账户
杜绝访问来源不明的邮件和使用不明的可移动设备
产品改进建议
对 PowerShell 进程命令行参数进行过滤,维护命令行规则库,对危险操作进行拦截。
通过 Hook Invoke-Expression 函数的方式实现对混淆命令行参数的识别,对最终执行的
Powershell 指令进行规则匹配。
加强对 PowerShell 高风险行为的监控。
溯源
IOC:
http[:]//t.tr2q.com
http[:]//d.ackng.com
http[:]//t.awcna.com
http[:]//t.amynx.com
总结
此次PowerShell样本可灵活地从服务器端获取更新的配置文件,结合各种黑客工具和漏洞利用模块,通过多种途径实现传播,给用户带来了极大的安全威胁。在此建议用户仔细检查邮件来源信息,不要被钓鱼信息迷惑。做好安全检查,不开放危险的端口,及时更新安全补丁。合理配置密码,不使用弱口令,避免遭遇弱口令爆破攻击。