2025年傀儡进程学习

傀儡进程学习0x00 前言 最近做了一道 18 年 swpuctf 的题 分析了一个病毒 正巧都用到了傀儡进程 就想着把傀儡进程学习一下 本文权当个人的学习总结了一些网上的文章 如有错误 还请路过的大佬斧正 0x01 SWPUCTF GAME 进入 main 函数 先获取当前目录 再拼上 GAME EXE 进入 sub 4011D0 首先寻找资源 做准备工作

大家好,我是讯享网,很高兴认识大家。

0x00 前言

最近做了一道18年swpuctf的题,分析了一个病毒,正巧都用到了傀儡进程,就想着把傀儡进程学习一下。本文权当个人的学习总结了一些网上的文章,如有错误,还请路过的大佬斧正。

0x01 SWPUCTF -- GAME

进入main函数


讯享网

先获取当前目录,再拼上GAME.EXE

进入sub_4011D0

首先寻找资源,做准备工作,进入sub_4012C0

1)检测PE结构

2) CreateProcessA 创建进程

3)GetThreadContext 得到进程上下文信息,用于下文计算基地址

4)sub_4016F0

到ntdll.dll里找到NtUnmapViewOfSection函数

5)VirtualAllocEx 跨进程,在目标进程申请空间

6)写入文件

7)SetThreadContext 恢复现场

8) 运行傀儡进程

我们来找找注入的程序

把GAME.EXE载入到010editor里,搜索"MZ"

dump出来,就是刚刚注入到傀儡进程的程序了。

我们把它命名为 game2.exe

载到IDA里分析

发现是D3D绘制

之后的解题与本文关系不大,这里直接把官方的WP搬运来了https://www.anquanke.com/post/id/#h3-16

通过字符串[Enter]可以跟踪到获取输入以及返回上一层的地

这里用了’ – ’符来分割string,然后保存到vector中。并且判断vector中string的个数是否是4以及每一个string的长度是否是4

接着传入前面两部分进行一次加密,可以根据常量识别出这是DES算法,这里把DES的subkeys进行了一次移位,并且修改了sbox3开头的5个字节,然后把结尾结果减去0x10,之后再进行一个简单的方程check。解方程可以得到另外两部分是个常量。

DES部分可以网上找个标准的DES把这几部分改一下就能解出FLAG:HOPE-UCAN-GOOD-GAME

小结

本题的sub_4012C0,就是在进行傀儡进程的编写,有必要仔细的说说傀儡进程

0x02 傀儡进程

文章: https://blog.csdn.net/darcy_123/article/details/

首先使用CreateProcess传入CREATE_SUSPENDED

创建一个挂起的进程,以下称为傀儡进程,然后使用GetThreadContext读取傀儡进程的上下文信息,通过DWORD

指针指向CONTEXT的EBX,DWORD + 8 字节可以读取到傀儡进程的基地址,然后计算傀儡进程的镜像大小

然后把自己的数据读入到傀儡进程内,设置CONTEXT上下文入口点信息EAX,并恢复进程主线程

上文已经写得很详细了,个人觉得重要的点

1)在CreateProcess时,注意环境问题 lpCurrentDirectory

BOOL CreateProcessA( LPCSTR lpApplicationName, LPSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCSTR lpCurrentDirectory, LPSTARTUPINFOA lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation );

讯享网

2) 计算基地址

context.Ebx + 8 = 基地址,因此从context.Ebx + 8的地址读取4字节的内容并转化为DWORD类型,即是进程加载的基地址。

3) VirtualAllocEx时的权限问题

4)VirtualAllocEx重定位的问题

一般情况下,在写入傀儡进程对应的文件按照申请空间的首地址作为基地址进行“重定位”,这样才能保证傀儡进程的正常运行。为了避免这一步操作,可以以傀儡进程PE文件头部的建议加载基地址作为VirtualAllocEx的lpAddress参数,申请与之对应的内存空间,然后以此地址作为基地址将傀儡进程写入目标程序,就不会存在重定位问题。关于“重定位”的原理可以自行网络查找相关资料

我们来看看实际上病毒用到的傀儡进程

0x03 病毒分析

1.virusTotal

https://www.virustotal.com/gui/file/32db88982a0d0f92804c4c53ffde23b35a9d362e037353cb6b44c5/details

MD5   ba46b18f05ab2b24df26e343dd32946b
SHA-1   34f07e131d4f147af96d262eeec6f0b1a4
SHA-256   32db88982a0d0f92804c4c53ffde23b35a9d362e037353cb6b44c5
Vhash   bf09954b6ff12217cd0df0f93c7488e4
SSDEEP   24576:yij8jlUoiuFhypnWmUOJ4H0zMY/lspoBbRzRrT9MUF5jawb:yDhUoMFUcvo6FlrT2wb
File type   RAR
Magic   RAR archive data, v1d, os: Win32
File size   893.13 KB ( bytes)

环境win7 x64

是一个.rar文件

在虚拟机里改后缀为.rar

解压:

可以简单的发现一个伪装成文件夹的.exe

2.对18XXXXXXXXXXXX.exe分析

查壳

没有

然后GUI,有界面的程序

用LoadPE去看一下区段,资源等信息

看一下重定位

和资源

小讯
上一篇 2025-03-11 09:04
下一篇 2025-03-17 19:19

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/48873.html