孤客浮舟 发表于 2021-3-10 17:31

Thallium病毒分析


0x00 前言准备
病毒类别:Thallium
实验环境:win10
分析工具:火绒剑
IDA
x32dbg
die
procmon
在网上看到这样一个病毒样本,以新冠疫情为诱饵针对韩国的攻击,原文件是一个doc
https://img-blog.csdnimg.cn/img_convert/99661d5bd20b88e820ac1d6314d323ef.png
大概这样诱导用户点击,鉴于我的虚拟机没有装读文档类的软件,而且宏代码只是下载了一个文件,我们不去分析宏代码,直接分析下载的文件。

0x01 样本基本信息
doc样本信息:
https://img-blog.csdnimg.cn/img_convert/6c586b5a57746efc750e68a40c457c4b.png
下载的payload基本信息:
https://img-blog.csdnimg.cn/img_convert/0dd8477724e43b4fdadedb33a114ca22.png
病毒样本从微步云获取

0x02 行为分析
我们把获取到的payload后缀改成exe,打开火绒剑和procmon监视行为
1、将自身拷贝到系统文件夹下
https://img-blog.csdnimg.cn/img_convert/75c5b6790c51462a147e30059bf78854.png
2、网络请求行为
https://img-blog.csdnimg.cn/img_convert/c4ad124314d59352f1ede7508a3efc46.png

0x03 逆向分析
首先第一步是查壳
https://img-blog.csdnimg.cn/img_convert/e5816b5b3c9c78c51d484cd06b76d84a.png
没壳,32位,所以我们直接拉进ida
这是一个MFC写的程序,如果我们直接从winmain来看的话会看到一堆看不懂的函数(也可能是我没分析过MFC程序的原因吧)
https://img-blog.csdnimg.cn/img_convert/a45f208ad4196ecef05f3f34ea330583.png
一堆Afx开头的函数,是MFC的特征
我们去看看别的函数,有没有什么切入点。
我们仔细观察会发现,我们在一开始运行程序的时候,cmd弹窗是隔了一会才弹出来的,想到应该是sleep或者大循环,果然,我们找到了如下代码:
https://img-blog.csdnimg.cn/img_convert/0543f627c88801c3b9dfdcc418e206cb.png
我们注意一下第一个循环,是一个很大的循环,就是我们有延时的原因。
循环结束之后,先用VirtualProtect函数更改0x422548到0x42A548的内存属性为0x40,也就是可读可写可执行,完事之后调用401070,这块不能反汇编,我们看看汇编代码
https://img-blog.csdnimg.cn/img_convert/bf09ecc3b56d57d94952d5412f32edc3.png
不断地在jmp,看来这里是做了反调试,我们一点点的来看汇编代码。
首先注意这里
https://img-blog.csdnimg.cn/img_convert/43a4ff77af912e04c6742049482fb60d.png
把422548地址传给eax,这个地址是我们刚才更改内存属性的地址
https://img-blog.csdnimg.cn/img_convert/c594f670e17f68830cd9205d2b533aba.png
往下看,这里是把刚才的地址内容与4330c0的内容不断地在异或,看来这是一个解密函数
https://img-blog.csdnimg.cn/img_convert/2f9f643f9432d8dc88845986f2c55dcc.png
下面还在解密,第一次异或之后进行一个not运算,再与4330c1进行异或
https://img-blog.csdnimg.cn/img_convert/3f5c901641e4c8cfc1aac09d6b30ba56.png
最后把解密之后的结果放回原位
https://img-blog.csdnimg.cn/img_convert/909262aba441b14ab7d09887a941d5ea.png
会进行77E6h次这样的解密,这样解密之后,我们观察下面EnumChildWindows里EnumFunc的地址
https://img-blog.csdnimg.cn/img_convert/af90daa05b63d013517546763016a502.png
https://img-blog.csdnimg.cn/img_convert/bd806278c693e1ae5ada1e3c6812db90.png
就是在这个解密的范围之内的,所以我们可以动调跟过去看看解密之后在干什么。用x32dbg在427068处下断点跟过来。
https://img-blog.csdnimg.cn/img_convert/2bc42eee01553c3e3eda53122c39354b.png
我们简单的跟一跟看看能发现什么。
发现明显停顿
https://img-blog.csdnimg.cn/img_convert/3575d119268803b3f802b27869c8e5cd.png
果然,和之前一样的循环
https://img-blog.csdnimg.cn/img_convert/46befb9b4da18c849b27555247235197.png
注意eax,发现奇怪的字符串,猜测是解密字符串
https://img-blog.csdnimg.cn/img_convert/313ac9d182114cce1f21deb0ebcd693b.png
注意运行到这里的时候,有弹出了cmd进程框,可能是把我们的进程重新启动了一次。
https://img-blog.csdnimg.cn/img_convert/8a54776daf5fe016f46ec01dbb2c3da7.png
这一段观察寄存器可以知道是在动态加载API
这里我卡了好长时间,因为一直没找到解密之后的程序放在了哪里。后来通过定位重启进程那一块,终于找到了解密之后的程序哈哈哈
https://img-blog.csdnimg.cn/img_convert/381abfa54529552bdc882d7c5adea342.png
然后通NtResumeThread、ZwSetContexThread进行傀儡进程注入
https://img-blog.csdnimg.cn/img_convert/8b396f14867590d66e19572fad277e8e.png
https://img-blog.csdnimg.cn/img_convert/e6e8951923a2ecb96084b37cfe17ef49.png
https://img-blog.csdnimg.cn/img_convert/18f1aaf5fef2e5bdd5fe671ad04b75af.png
整体看起来这也是一个加载器,我们dump下俩这个程序,去分析解密之后的那个程序。
用ida打开这个程序,我们发现字符串都很奇怪,然后发现401900是个解密函数
https://img-blog.csdnimg.cn/img_convert/674ea2cd60768065c4d4d5439117facb.png
看一下交叉引用,很多地方都调用了这个解密函数
https://img-blog.csdnimg.cn/img_convert/8e65e725e63811e55477960f21512245.png
其中这个地方很值得我们注意
https://img-blog.csdnimg.cn/img_convert/9a557547f564c3702a686fa1b26d95e0.png
动调我们跟过来,看看解密之后的字符串是什么
https://img-blog.csdnimg.cn/img_convert/03f10dbfd11616da0237feec6279fc68.png
注意eax,这就是我们揭秘之后的字符串,可以看到,这是一个杀软的名称,往后看几个,解密出来的都是杀软的名称,所以猜想这应该是在判断程序有没有杀软。
我们看一下后面的程序
https://img-blog.csdnimg.cn/img_convert/c1bcac5638fcda601e650db91f72160b.png
如果没有10和11对应的杀软norton和sophos,那么进行下面的程序(咱也不知道为啥这么怕这俩杀软)
下面的程序是在创建一个文件,我们在行为分析的时候发现了他在系统文件夹下创建文件,动调跟过去看看是不是一样的。
https://img-blog.csdnimg.cn/img_convert/3e743c3270fcf99c334c98d030bc4a5f.png
对应的参数果然是一样的,接着向下看。
https://img-blog.csdnimg.cn/img_convert/97457a5e91d639ec31ba853b52b13bf4.png
往下跟发现了cmd的行为,看看这里执行了什么cmd的命令
https://img-blog.csdnimg.cn/img_convert/639e574cf8f4bfbb705b4df7cd647dac.png
是加到启动项的cmd,哦吼,发现了新的行为,有趣。
还剩最后一个大块401b40没分析,这里有很长的代码,慢慢来看。
https://img-blog.csdnimg.cn/img_convert/c2c0e97dd2a82e888d47722ffcb627f6.png
上来也是很多的字符串解密,我们来动调看看解密之后是什么字符串,有没有什么有用的信息
https://img-blog.csdnimg.cn/img_convert/6ce4e33969a4c5d92cab68af59102192.png
出现了!目标IP,尝试这访问了一下,进不去,看来应该是挂掉了。我们再看看他会返回什么给IP(可以留意一下中间解密出来的信息,有id,vs和版本号等等,也挺有趣的)
https://img-blog.csdnimg.cn/img_convert/45a50387adfcdf011366c71efa7cefa9.png
我们看到,这里有id,机器信息之类的一些东西,全部返回给了目标IP,然后下面就是一个用真循环,应该是等返回IP发命令,没什么好看的了,也可以看看401B40里解密的字符串,是一些关于post头的,大体上这个病毒分析完了。

0x04 总结
最后我们总结一下这个病毒运行的整体流程:
1、以doc文档的形式传播,执行宏代码后下载后续payload
2、payload解密程序段,创建傀儡进程运行最终的shellcode
3、在系统文件夹创建自身文件
4、加入自启动
5、获取机器信息发送给对应IP
over

frankB4 发表于 2021-3-11 10:30

这就是大佬吗ilil

whngomj 发表于 2021-3-11 09:35

谢谢分享

huiyuan52110 发表于 2021-3-11 12:02


谢谢分享牛

guangzisam 发表于 2021-3-11 14:58

好厉害。分析的真好

aonima 发表于 2021-3-11 18:50


学习了 增加知识

w507710214 发表于 2021-3-11 22:55

大佬牛逼

阿高mango 发表于 2021-3-12 09:38

学习了 增加知识

zhrmghgtw 发表于 2021-3-12 22:29

谢谢分享

呆若木鸡 发表于 2021-3-13 09:18

。。。看不太懂,慢慢研究
页: [1] 2
查看完整版本: Thallium病毒分析