April 7, 2022

FUD Aegis Crypter

主要记录一下恶意加载器,也算是Scr1pt师傅带我的第一次入门,笔记拖更很久,上周连休三天感觉还可以又有些无聊。–4.11

FUD Aegis Crypter

恶意加载器,主要是保护了所加载内容!

一个2016年的病毒加载器,雀氏有点老,不过当成我入门的一个分析属实不错

关于病毒签名,这个软件的存根已经被很多恶意软件所使用,所以会被立即检测,如果想做个自己的,最好的是构建自己的存根 自定义存根

很多时候,在打包一个恶意软件时,会得到一小段代码叫做存根,和加密后的恶意代码部分,通过那段存根,才解密恶意代码部分(好像SMC)

简单讲几个选项

  1. StubPath是指向存根,103KB的存根(自带的),如果使用这个基本都被检测出来

  2. Resource Data就在把Encrypt Section放到Resource Section

  3. EOF DATA就是把Encrypt Section附加到文件

image-20220411091603183

Dump Aegis_Packed

现在的目标是dump出经Aegis加载的calc

VirtualAlloc断点

在没加什么保护器的情况下

我们设置一个断点 在创建进程的API上,也就是VirtualAlloc,在这个API返回时,会将新分配的内存地址存储在EAX

于是在他返回时查看EAX所指向的内存地址

通过 Ctrl + G 找到VirtualAlloc

image-20220411100124864

跟随jmp跳转可以找到VirtualAlloc函数返回的地方

image-20220411100208206

First Dum and Second Dump

第一次断点打断,直接跟随到地址(由于是刚分配的所以这个内存区域还是空的)

image-20220411100657124

F9一下发现已经创建了一个虚拟进程

image-20220411100800561

我们可以dump出来看一下,是否是我们的calc

右键在内部布局转到

image-20220411101009013

再dump出文件,注意不要点到其他的内存区域,要不然dump出来的不一样

image-20220411101057045

我们可以通过010来比较两个文件,虽然有少许字节不同,或者有多的空字节填充,但我们不用hash来比较文件

文件是大致相同的,所以这并不是我们要找的calc

再跟着dump一次会发现依然不是真正的calc

Third Dump

这次dump出来发现就是calc

image-20220411102643949

Summary

  1. 前两次dump并不是真正的calc,是用来解密的,进程注入的暂存代码 ( 所以把前两次dump出来做放进ida做下逆向工程分析一下就会知道原理)
  2. 这种自我注入代码的程序一般都打VirtualAlloc就好了,因为最后都会调用这个API(除非是CreateProcess或者多线程
DASCTF X SU
🍬
HFCTF2022
🍪

About this Post

This post is written by P.Z, licensed under CC BY-NC 4.0.