记一次新型变种QakBot木马分析
2022-4-30 17:59:0 Author: mp.weixin.qq.com(查看原文) 阅读量:30 收藏


本文为看雪论坛优秀文章
看雪论坛作者ID:blck四

1

背景

年初单位邮箱收到了一篇钓鱼邮件还有一个附件xlsb的文档,将宏命令提取出来,发现会从远程下载一个文件下载后将文件上传到杀毒网开始查杀,51个杀软也就10个左右报毒了,很明显是有点问题的。

2

病毒分析

通过前期的分析从文件中dump出一个可疑的PE文件,当然你可以用OD的工具去Load,写了一个加载程序,然后在下断LoadLiarbryA,加载成功后名为:hello.dll

入口处之前跟过发现存在很多花指令分析起来也挺耗时间,调用函数是来回跳来跳去,要么就是来回赋值做一些没用的操作,这里就不从头开始分析了,剑走偏锋直接从FindResourceA开始。
从资源段里加载一个可疑资源:
老三样:LoadResource、SizeofResource、LockResource

之后Virtualalloc分配内存00300000 和 00E70000

向申请的内存空间写入资源数据:
一路F8跟到解密后的数据:
dump出一份PE,然后用regsvr32.exe OD加载写入参数下断VirtualAllocEx。


将shellcode指令写入内存:
过程中还发现在系统函数使用过程不直接调用API函数,而是利用FS寄存器找到TEB的地址(TEB+0x30)->到PEB结构地址在PEB+0x0C地方指向PEB_LDR_DATA结构,PEB_LDR_DATA+0x1C的地方就是Dll地址获取kernel32.dll加载到内存的位置。
找到其导出表,定位导出的GetProcAddress函数,使用GetProcAddress函数获取地址,再保存然后再调用(一部分防止杀毒发现)。
看到这让我想起了一种傀儡进程的注入方式,那显然应该有创建进程或者是打开进程句柄的操作,bp CreateProcess。
Flags=CREATE_SUSPENDED 那么创建的该进程可被挂起,使用ZwUnmapViewOfSection卸载掉该进程内存镜像(长度为 SizeOfImage的内存)就得到了干净的内存,再将shellcode写入后重新恢复主线程运行,不落磁盘读写,从内存中启动一个程序。

不出意料恢复主线程执行后桌面程序会加载dll。
使用IDA分析:
大体不算太复杂的调用关系,但是函数较多:

还有一些乱七八糟的函数比较多,主要看看大概做了哪些事情,获取操作系统版本\名称\系统目录等信息。

获取磁盘类型:
创建命令管道:
那应该有C2服务器,IP地址在数据段应该是加密了,IDA没有分析出来,直接开启抓包加载该dll执行完后,发现有几个为美国的IP地址比较可疑。

加密的数据包:
通过威胁情报搜索后:

3

总结

分析完这个样本后之后我还通过威胁情报找到了历史版本的其他QakBot样本进行了分析,跟以往样本唯一不一样地方就是使用了傀儡进程的方式来注入,该技术也不算什么新鲜的技术。
后面我还分析360U盘查杀的注入方式,其实没有必要搞那么复杂,通过COM注册方式把桌面的注册表CLSID修改或者添加InprocServer32项目中创建一个名为InprocServer32的目录,然后写入两个值:

1、Dll的路径地址;

2、数值名称为ThreadingModel数值数据为Apartment。每次启动explorer.exe桌面应用的时候就会自动加载指定的Dll文件了。

看雪ID:blck四

https://bbs.pediy.com/user-home-748627.htm

*本文由看雪论坛 blck四 原创,转载请注明来自看雪社区

# 往期推荐

1.[VNCTF2022]InterestingPHP复现

2.分析一道简单安卓中级题

3.由浅入深理解Kerberos协议

4.虎符网络安全赛道 2022-pwn-vdq-WP解题分析

5.为IDA架设私人lumen服务器

6.分析一个安卓简单CrackMe

球分享

球点赞

球在看

点击“阅读原文”,了解更多!


文章来源: http://mp.weixin.qq.com/s?__biz=MjM5NTc2MDYxMw==&mid=2458440719&idx=1&sn=aa463b5f13bed1ccd75687682fd5b241&chksm=b18fe48586f86d93eef5f801990cbf73bf5b21978b7b6359e28cf1dcda9a2a8ea6e0f622d7ed#rd
如有侵权请联系:admin#unsafe.sh