前言
2017年10月,BadRabbit勒索病毒席卷东欧及俄罗斯,病毒采用“水坑攻击”方式传播,通过入侵流量较大网站,植入脚本,引导受害者安装虚假flash安装程序,用户安装后,加密文件,加密硬盘主引导记录MBR,勒索比特币。
0x00 样本概况
样本信息
文件信息
文件: install_flash_player.exe
大小: 441899 bytes
文件版本:27,0,0,170
MD5: FBBDC39AF1139AEBBA4DA004475E8839
SHA1: DE5C8D858E6E41DA715DCA1C019DF0BFB92D32C0
CRC32: 5FA1C9A5
图标伪装成flash
安装程序
签名信息Symantec
释放文件信息
- infpub.dat
文件: infpub.dat
大小: 410760 bytes
MD5: 1D724F95C61F1055F0D02C2154BBCCD3
SHA1: 79116FE99F2B421C52EF64097F0F39B815B20907
CRC32: 8B774A89
资源文件
1/2,对应x86/x64平台tmp
文件
7/8,对应x86/x64平台cscc.dat
9,对应dispci.exe
- 379.tmp
名称随机,x86平台
文件: 379.tmp
大小: 53624 bytes
MD5: 37945C44A897AA42A66ADCAB68F560E0
SHA1: 16605A4A29A101208457C47EBFDE788487BE788D
CRC32: 8FDC2E3E
- dispci.exe
文件: dispci.exe
大小: 142848 bytes
文件版本:1.1.846.118
MD5: B14D8FAF7F0CBCFAD051CEFE5F39645F
SHA1: AFEEE8B4ACFF87BC469A6F0364A81AE5D60A2ADD
CRC32: 9485D4ED
- cscc.dat
磁盘加密驱动文件,x86平台
文件: cscc.dat
大小: 181448 bytes
文件版本:1.1.846.118
MD5: B4E6D97DAFD9224ED9A547D52C26CE02
SHA1: 59CD4907A438B8300A467CEE1C6FC31135757039
CRC32: D3104F74
测试环境及工具
环境:Win7 x86 虚拟机
工具:OD,IDA,API Monitor,火绒剑
0x01 行为分析
病毒会通过计划任务主动关机,
需要及时删除计划任务,
或提前设置组策略禁止自动关机
安装后行为
- 行为监控
释放PE文件
创建计划任务自启动
- 文件操作
通过rundll32.exe
加载infpub.dat
释放勒索信息文件
- 注册表操作
- 进程操作
执行cmd命令添加计划任务
清除日志记录
- 网络操作
第一次重启
C:\Windows\system32\cmd.exe /C "Start C:\Windows\dispci.exe -id 3104587589" && exit
通过计划任务中的命令启动dispci.exe
命令行窗口
重复添加计划任务
修改硬盘数据
第二次重启
GG!
![](/qrcode.jpg)
0x02 API调用
样本
释放infpub.dat
,通过rundll32.exe
调用
infpub.dat
释放cscc.dat
,dispci.exe
文件
添加计划任务
修改注册表
创建tmp文件,通过管道通信
秘钥
加密文件后缀名
生成ReadMe.txt
dispci.exe
创建计划任务
MBR私钥
重启后输后确认私钥正确
公钥
Base64编码后的key
重复创建计划任务
0x03 代码分析
代码流程
样本
install_flash_player.exe
释放infpub.dat
,通过rundll32.exe
执行,
退出程序
infpub.dat
C:\Windows\system32\rundll32.exe C:\Windows\infpub.dat,#1 15
rundll32.exe,调用1号导出函数,参数15
main函数
提升权限
检查杀软
遍历进程,根据哈希值检测杀软
Hash表,来源自网络
与Dr. Web
和McAfee
相关
Hash | Process name |
---|---|
0x4A241C3E | dwwatcher.exe |
0x923CA517 | McTray.exe |
0x966D0415 | dwarkdaemon.exe |
0xAA331620 | dwservice.exe |
0xC8F10976 | mfevtps.exe |
0xE2517A14 | dwengine.exe |
0xE5A05A00 | mcshield.exe |
申请堆空间,改为堆空间执行代码
卸载
infpub.dat
,重新执行main
函数
- 根据计算机名称和
32.dll
的Hash值创建互斥体
- 检测
cscc.dat
是否存在
存在则结束进程
不存在则释放资源文件
- 遍历进程,查找
rundll32.exe
权限低的话则提权
- 添加计划任务
dispci.exe
- 添加
cscc.dat
服务
- 添加服务失败的话,改为添加注册表
- 添加关机计划任务
- 局域网传播
创建线程通过139/445
端口传播
- 释放tmp文件
根据平台,释放tmp文件,创建线程管道通信
tmp文件单独创建进程
- 连接远程主机
wmic
远程执行
- 局域网弱口令传播
用户名
密码
- 生成随机字节
生成私钥
- 加密文件
加密文件扩展名类型
加密文件
加密后的文件,结尾处有encrypted
标识
- 生成
ReadMe.txt
- 清理日志,关机
dispci.exe
- main
- 连接驱动层
- 多次创建计划任务
- 控制码通信
控制码
- 加密MBR
- 关机
0x04 提取特征
通过yarGen
生成yara规则
/*
Tool: yarGen Rule Generator
Reference: https://github.com/Neo23x0/yarGen
*/
/* Rule Set ----------------------------------------------------------------- */
import "pe"
rule BadRabbit {
meta:
description = " - file BadRabbit.vir"
author = "DKni"
date = "2018-07-05"
MD5 = "fbbdc39af1139aebba4da004475e8839"
SHA256 = "630325cac09ac3fab908f903e3b00d0dadd5fdaa0875ed8496fcbb97a558d0da"
strings:
$s1 = "FlashUtil.exe" fullword wide
$s2 = "https://d.symcb.com/rpa06" fullword ascii
$s3 = "http://rb.symcb.com/rb.crt0" fullword ascii
$s4 = "(Symantec SHA256 TimeStamping Signer - G2" fullword ascii
$s5 = "(Symantec SHA256 TimeStamping Signer - G20" fullword ascii
$s6 = "C:\\Windows\\infpub.dat" fullword wide
$s7 = "http://rb.symcd.com0&" fullword ascii
$s8 = "http://s.symcd.com0" fullword ascii
$s9 = "http://rb.symcb.com/rb.crl0W" fullword ascii
$s10 = "infpub.dat" fullword wide
$s11 = ",Symantec Class 3 SHA256 Code Signing CA - G2" fullword ascii
$s12 = ",Symantec Class 3 SHA256 Code Signing CA - G20" fullword ascii
$s13 = "%ws C:\\Windows\\%ws,#1 %ws" fullword wide
$s14 = "1111111111111111111111111111111111111111111111111111111111111111111111111" ascii
$s15 = "))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))" fullword ascii
$s16 = " 1996-2017 Adobe Systems Incorporated" fullword wide
$s17 = "++++++++++++++++++1111111,,,,,,,,,,,,,,,,,,,,,,,,,,,," fullword ascii
$s18 = "F* ($,\"*&.!)'" fullword ascii
$s19 = " Player Installer/Uninstaller 27.0" fullword wide
$s20 = " Player Installer/Uninstaller 27.0 r0" fullword wide
condition:
( uint16(0) == 0x5a4d and
filesize < 1000KB and
pe.imphash() == "e3bda9df66f1f9b2b9b7b068518f2af1" and
( 8 of them )
) or ( all of them )
}
yara扫描
0x05 防范措施
重要资料多重备份
定期更新最新补丁
安装杀毒软件和防火墙
关闭139/445端口
禁用WMI服务
下载软件扫描后使用
0x06 经验收获
提升病毒调试能力
病毒堆空间运行原理
病毒局域网传播途径
mimikatz
diskcryptor
0x07 相关参考
坏兔子勒索病毒事件基本分析报告
BadRabbit勒索病毒分析报告
Petya勒索病毒的一次详细分析之旅
NotPetya pulls BadRabbit out of the hat
A Deeper Look at BadRabbit Shows Overlapping Similarities to NotPetya
对windows密码抓取神器mimikatz的逆向分析
github_diskcryptor