查看原文
其他

一款勒索病毒的详细分析

2017-10-26 Vamcy 看雪学院



0×01 程序信息



  • 大小:2,132,992 字节

  • MD5:671ec2f2b246113f65a0afd1c53c5c3b

  • 壳:UPX 0.89.6 - 1.02 / 1.05 - 2.90

  • 编写语言:易语言



0×02 程序行为


  • 开机自启

  • 修改浏览器信息

  • 禁用UAC

  • 进程检测

  • 加密文件

  • 发送数据到指定邮箱



0×03 运行截图




0×04 脱壳去花指令


  • 采用UPX加壳,通过ESP定律脱壳


  • 脱壳后: 从入口特征判断为VC++6.0编译[易语言]


  • 程序插入了大量花指令


  • 用OD插件E Junk Code 轻松去除


  • 去除花指令后



0×05 分析思路


  • 从病毒的行为判断所调用的API,在所调用的API下断点,然后通过栈回溯找到关键函数。

  • 程序所用到的API:
    病毒运行后会隐藏自身文件(SetFileAttributes)
    修改注册表信息(RegOpenKey、RegSetValue)
    遍历文件(FindFirstFile)等等

  • SetFileAttributes设置断点,然后查看调用堆栈,回溯到关键函数



0×06 关键函数分析


  • 函数功能:设置程序开机启动、隐藏程序文件、修改浏览器信息、禁用UAC、生成解密KEY(30位随机值)、创建加密线程.



  • 加密所有文件后,会在Temp目录下生成Victim.tmp文件,程序运行后会判断Temp目录下是否有Victim.tmp文件,没有则创建加密线程,如果已经存在Victim.tmp文件,则直接加载勒索窗口.


  • 创建线程后,程序执行消息循环,然后系统会调用线程回调函数



0×07 线程回调函数分析


  • 函数功能:遍历全盘文件,加密指定后缀文件
    *.zip.*.rar.*.7z.*.txt.*.doc.*.pptx.*.wps.*.jpg.*.jpeg.*.gif.*.bmp.*.png.*.swf.*.wav.*.mp3.*.mp4.*.avi.*.rmvb.*.xis.*.htm.*.html.*.e.*.ec.*.bak.*.docx.*.ico.*.rtf.*.xlsx.*.c.*.h.*.cpp.*.php.*.pps.*.pdf.*.fla.*.asm.*.dot.

  • 加密后会生成对应后缀的文件
    *.zip ----- *.XiaoBa1
    *.rar ----- *.XiaoBa2
    ……

  • 线程回调函数0x40F82B设置断点


  • 进入线程主函数0x4065D8



  • 加密完成后



0×08 勒索窗口事件分析


  • 函数功能:把用户的IP、CPU信息、屏幕截图、系统信息、解密信息发送到指定邮箱

  • InternetOpen设置断点,通过回溯找到关键函数





  • 发送的数据格式



0×09 进程检测函数追踪


  • 函数功能:程序加载时,会创建一个定时器,每隔一秒调用一次进程检测的函数,通过CreateToolHelp32Snapshot创建进程快照的方式遍历进程,检测到指定进程后,会尝试结束进程。

  • SetTimer设置断点


  • Timerproc为NULL,说明调用的是系统默认的回调函数OnTimer(),DispatchMessage设置条件断点[[esp+4]+4](esp+4 是MSG对象的地址 [esp+4]+4是消息类型)
    WM_TIMER == 0x113


  • 断下时的堆栈如下:


  • 然后在代码段设置访问中断


  • F9运行,直接到窗口回调函数


  • 进入窗口回调继续分析,注意堆栈数据,


  • 跟进0x4AEDED


  • 跟进0x4AEE31


  • 继续跟踪分析onTimer,最终调用进程检测函数


  • 函数检测的进程列表:
    taskmgr.exe
    OllyDbg.exe
    吾爱破解[LCG].exe
    MSASCuiL.exe
    RAVmon.exe
    RAVtimer.exe
    rav.exe
    360Tray.exe
    360Safe.exe
    ZhuDongFangYu.exe
    360sd.exe
    KSafeSvc.exe
    KSafeTray.exe
    kxetray.exe
    kxescore.exe
    QQPCTray.exe
    QQPCRTP.exe
    BaiduSdSvc.exe
    BaiduSdTray.exe
    BaiduAnTray.exe
    BaiduAnSvc.exe
    avp.exe
    egui.exe
    ekrn.exe
    MsMpEng.exe
    msseces.exe


0x0A加密函数分析:


  • 用CPU序列号生成一个大小为0xFF的Key表


  • 通过计算得到一个Key表索引,取Key值异或数据


  • IDA分析生成Key表函数


  • IDA分析加密数据函数


  • 因为加密只采用了异或运算,所以加密算法也是解密算法。

  • 文件还原代码





本文由看雪论坛 Vamcy 原创

转载请注明来自看雪社区

热门阅读


点击阅读原文/read,

更多干货等着你~


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存