一款勒索病毒的详细分析
大小:2,132,992 字节
MD5:671ec2f2b246113f65a0afd1c53c5c3b
壳:UPX 0.89.6 - 1.02 / 1.05 - 2.90
编写语言:易语言
开机自启
修改浏览器信息
禁用UAC
进程检测
加密文件
发送数据到指定邮箱
采用UPX加壳,通过ESP定律脱壳
脱壳后: 从入口特征判断为VC++6.0编译[易语言]
程序插入了大量花指令
用OD插件E Junk Code 轻松去除
去除花指令后
从病毒的行为判断所调用的API,在所调用的API下断点,然后通过栈回溯找到关键函数。
程序所用到的API:
病毒运行后会隐藏自身文件(SetFileAttributes)
修改注册表信息(RegOpenKey、RegSetValue)
遍历文件(FindFirstFile)等等SetFileAttributes设置断点,然后查看调用堆栈,回溯到关键函数
函数功能:设置程序开机启动、隐藏程序文件、修改浏览器信息、禁用UAC、生成解密KEY(30位随机值)、创建加密线程.
加密所有文件后,会在Temp目录下生成Victim.tmp文件,程序运行后会判断Temp目录下是否有Victim.tmp文件,没有则创建加密线程,如果已经存在Victim.tmp文件,则直接加载勒索窗口.
创建线程后,程序执行消息循环,然后系统会调用线程回调函数
函数功能:遍历全盘文件,加密指定后缀文件
*.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
加密完成后
函数功能:把用户的IP、CPU信息、屏幕截图、系统信息、解密信息发送到指定邮箱
InternetOpen设置断点,通过回溯找到关键函数
发送的数据格式
函数功能:程序加载时,会创建一个定时器,每隔一秒调用一次进程检测的函数,通过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,
更多干货等着你~