【BadRabbit】勒索病毒分析

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/D_K_01/article/details/80932666

前言

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
Resource

  • 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文件
    释放PE文件
    创建计划任务自启动
    计划任务1
    计划任务2
    计划任务3
  • 文件操作
    通过rundll32.exe加载infpub.dat
    infpub.dat
    释放勒索信息文件
    ReadMe
    ReadMe2
  • 注册表操作
    Reg
  • 进程操作
    执行cmd命令添加计划任务
    清除日志记录
    Schtasks
    wevtutil
  • 网络操作
    139445
    139445

第一次重启

C:\Windows\system32\cmd.exe /C "Start C:\Windows\dispci.exe -id 3104587589" && exit
通过计划任务中的命令启动dispci.exe

命令行窗口
dispci.exe
重复添加计划任务
计划任务
修改硬盘数据
修改硬盘数据

第二次重启

GG!
GG

0x02 API调用

样本

释放infpub.dat,通过rundll32.exe调用
样本

infpub.dat

释放cscc.dat,dispci.exe文件
cscc
dispci
添加计划任务
计划任务
修改注册表
reg
创建tmp文件,通过管道通信
tmp
秘钥
key
加密文件后缀名
ext
生成ReadMe.txt
ReadMe

dispci.exe

创建计划任务
task
MBR私钥
key
重启后输后确认私钥正确
OK
公钥
key
Base64编码后的key
Base64
重复创建计划任务
task

0x03 代码分析

代码流程

flow

样本

install_flash_player.exe
释放infpub.dat,通过rundll32.exe执行,
退出程序
flash

infpub.dat

C:\Windows\system32\rundll32.exe C:\Windows\infpub.dat,#1 15
rundll32.exe,调用1号导出函数,参数15

  • main函数
    main1
    man2

  • 提升权限
    privilege

  • 检查杀软
    遍历进程,根据哈希值检测杀软
    Anti

Hash表,来源自网络
Dr. WebMcAfee相关

Hash Process name
0x4A241C3E dwwatcher.exe
0x923CA517 McTray.exe
0x966D0415 dwarkdaemon.exe
0xAA331620 dwservice.exe
0xC8F10976 mfevtps.exe
0xE2517A14 dwengine.exe
0xE5A05A00 mcshield.exe
  • 申请堆空间,改为堆空间执行代码
    virtulalloc
    call_eax

  • 卸载infpub.dat,重新执行main函数
    free

  • 根据计算机名称和32.dll的Hash值创建互斥体
    mutex
  • 检测cscc.dat是否存在
    存在则结束进程
    不存在则释放资源文件
    cscc
  • 遍历进程,查找rundll32.exe
    权限低的话则提权
    rundll32
    rundll32_2
  • 添加计划任务dispci.exe
    task
  • 添加cscc.dat服务
    service
  • 添加服务失败的话,改为添加注册表
    reg
    reg
  • 添加关机计划任务
    shutdown
  • 局域网传播
    创建线程通过139/445端口传播
    139445
    139445
    139445
  • 释放tmp文件
    根据平台,释放tmp文件,创建线程管道通信
    tmp文件单独创建进程
    tmp
  • 连接远程主机
    net
    wmic远程执行
    wmic
  • 局域网弱口令传播
    net
    用户名
    name
    密码
    pwd
  • 生成随机字节
    random
    生成私钥
    key
  • 加密文件
    key
    encryp
    加密文件扩展名类型
    exten
    加密文件
    encryp2
    加密后的文件,结尾处有encrypted标识
    encryp
  • 生成ReadMe.txt
    ReadMe
  • 清理日志,关机
    shutdown

dispci.exe

  • main
    main
  • 连接驱动层
    cscc
    dcrypt
  • 多次创建计划任务
    task
  • 控制码通信
    IoCtr
    控制码
    CTLCODE
    CTLCODE
  • 加密MBR
    mbr
  • 关机
    shutdown

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扫描
test

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

End

猜你喜欢

转载自blog.csdn.net/D_K_01/article/details/80932666