主要记录一下恶意加载器,也算是Scr1pt师傅带我的第一次入门,笔记拖更很久,上周连休三天感觉还可以又有些无聊。–4.11
FUD Aegis Crypter
恶意加载器,主要是保护了所加载内容!
一个2016年的病毒加载器,雀氏有点老,不过当成我入门的一个分析属实不错
关于病毒签名,这个软件的存根已经被很多恶意软件所使用,所以会被立即检测,如果想做个自己的,最好的是构建自己的存根 自定义存根
很多时候,在打包一个恶意软件时,会得到一小段代码叫做存根,和加密后的恶意代码部分,通过那段存根,才解密恶意代码部分(好像SMC)
简单讲几个选项
想StubPath是指向存根,103KB的存根(自带的),如果使用这个基本都被检测出来
Resource Data就在把Encrypt Section放到Resource Section
EOF DATA就是把Encrypt Section附加到文件
Dump Aegis_Packed
现在的目标是dump出经Aegis加载的calc
VirtualAlloc断点
在没加什么保护器的情况下
我们设置一个断点 在创建进程的API上,也就是VirtualAlloc,在这个API返回时,会将新分配的内存地址存储在EAX上
于是在他返回时查看EAX所指向的内存地址
通过 Ctrl + G 找到VirtualAlloc
跟随jmp跳转可以找到VirtualAlloc函数返回的地方
First Dum and Second Dump
第一次断点打断,直接跟随到地址(由于是刚分配的所以这个内存区域还是空的)
F9一下发现已经创建了一个虚拟进程
我们可以dump出来看一下,是否是我们的calc
右键在内部布局转到
再dump出文件,注意不要点到其他的内存区域,要不然dump出来的不一样
我们可以通过010来比较两个文件,虽然有少许字节不同,或者有多的空字节填充,但我们不用hash来比较文件
文件是大致相同的,所以这并不是我们要找的calc
再跟着dump一次会发现依然不是真正的calc
Third Dump
这次dump出来发现就是calc
Summary
- 前两次dump并不是真正的calc,是用来解密的,进程注入的暂存代码 ( 所以把前两次dump出来做放进ida做下逆向工程分析一下就会知道原理)
- 这种自我注入代码的程序一般都打VirtualAlloc就好了,因为最后都会调用这个API(除非是CreateProcess或者多线程)
About this Post
This post is written by P.Z, licensed under CC BY-NC 4.0.