⼀个邮件钓鱼⽊马的分析(⼀)
已发表于本⼈专栏:
最近收到⼀个钓鱼⽊马邮件,内容形式如下:
邮件⾥有个链接,当点开链接后会下载⼀个doc⽂档,打开⽂档会发现有宏代码
经过⼀些列解密后悔执⾏shell执⾏宏命令,打印出这个信息出来后发现,原来执⾏了powershell命令
是从⽹络url中下载⼀些⽂件并且StartProcess,看来这才是真正的⽊马,下载的是⼀个exe,名字是随机的四个字符的exe名字。
下⾯就开始分析这个⽊马,⽤ollydbg加载⽊马,在Winmain函数⼊⼝点下断点:
F9飞⼀次,停在了⼊⼝,慢慢F8单步,⽊马直接到了0300149C的地址
F7继续进⼊函数:
进⼊函数不久⽊马⼀直两个代码间循环,⽆法继续往下⾛,
(1)循环起⽌1.
(2)循环往上跳
当我们F9的时候⼀直不能跳出循环,我们通过IDA查看发现他做了⼀个时间判断故意为了防⽌被分析做了⼀个时间开关,这个时间有点太⼤了。
我们直接修改EIP到循环外的地址,跳过这个循环。
继续往下⾛。
下⾯有Call VirtualProtect,⽽这个VirtualProtect把刚才分配的地址改写成PAGE_EXECUTE_READWRITE的属性,也就是变成⼀个可读写可执⾏的代码页。
createprocessa下⾯就到了⽊马对内置的加密代码的解密了,可以明显看到原始数据被加密了。
解密完后我们可以看到内存地址内容了,
到此这个函数就执⾏完毕,返回到⼊⼝函数位置后,下⾯有个cal [3011744]实际上是前⾯函数内解密分配的shellcode函数。
实际上是call 001AA618,进⼊函数
再次进⼊就进⼊真正的函数位置了
很明显字符串75 73 65 72 33 32⽤字节码写出来,作者做了⼀些免杀处理。
在shellcode遇到第⼀个函数这个函数call 001AA008,函数的功能是查⽊马的导⼊表到LoadLibraryA函数和GetProcAddress这两个函数地址
接下来就是通过LoadLibrary 和GetProcAddress函数动态获取⼀些API的地址,
⼀共要获取⼏⼗个函数的地址,这块我们跳过去,F9⼀路飞到地址001AB4EF
这个函数直接调⽤函数下⾯的地址,继续F8单步到001AB50F
继续F7进⼊001AB50F函数
在这⾥他会判断⽊马⽬录下有没有apfHQ⽂件,所以我们事先需要⽣成⼀个apfHQ⽂件在⽬录下,空⽂件也⾏,这个过程完毕后就进⼊
了01AA408函数。
继续往1AA408函数内部F7,会经过⼀些列的RegisterClassEx,CreateWinodws、GetMssage等窗⼝
函数后就进⼊了1AA108函数
继续F7进⼊1AA108函数,在进⼊函数不久,⽊马会去取⼀个内存数据,并且判断4550 “PE”这个标志位
接下来调⽤GetStartUpInfo,取得当前进程的启动信息
然后接续获得当前进程的命令⾏参数
然后调⽤CreateProcess 来把⾃⼰作为⼦进程创建起来,⽽且创建标志位是
CREATE_SUSPENDED
0×00000004
是以悬挂进程的⽅式创建⼦进程
然后继续通过GetThreadContext函数获得⼦进程的线程上下⽂
然后在⼦进程的0×400000的地址远程分配⼀个⼤⼩0xC00⼤⼩的内存,内存属性0×40,即读写可执⾏的属性内
存PAGE_EXECUTE_READWRITE 0×40
接下来⽊马就会使⽤ZwWriteVirtualMemory函数往⼦进程的0×400000地址写⼊⼤⼩0×400的数据,通过查看写⼊的数据发现是个PE头
下⾯就是PE头数据
然后⽊马会解析这个内存⾥的PE⽂件的各个节.text .data .rdata等等节段,通过ZwWriteVirtualMemory函数分别往⼦进程的相应内存⾥远程写⼊数据。
分别写完数据后,然后改写⼦进程PE加载器的⼦进程的执⾏加载的⾸地址为0×400000
然后使⽤SetThreadContext设置⼦进程的当前线程EIP指向0x408FE5
最后调⽤ResumeThread函数恢复⼦进程的线程继续执⾏
最后⽗进程退出,⼦进程开始⼲⼀些真正的盗取⾏为,到此我们可以知道⽊马是通过创建⼦⾃⾝⼦进程通
过GetThreadContext、ZwWriteVirtualMemory、SetThreadContext、ResumeThread,来实现hook⽅
法达到隐藏真实pe的⽬的来增加分析⼈员的分析难度,他的真实PE⽂件加密存贮在数据段中解密后如下:
现在的⽊马的隐蔽性越来越深,也经常使⽤多进程交互,真正的执⾏逻辑可能已经变换的不到来源,⽽过去常⽤的进程关系⾏为越来越难以检测了,这就要求安全⼈员更加深⼊地研究。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论