远程木马创建傀儡进程分析

举报
拈花倾城 发表于 2022/01/14 13:27:59 2022/01/14
【摘要】 远程木马创建傀儡进程分析

@TOC
点击链接,下载本实验项目以及相关工具,提取码:8189
一、实验目的

该样本具有一定的免杀性,分析该样本都用了什么技术,能达到免杀效果,所以本次实验目的如下:

(1)分析该样本运行流程

(2)提取该样本的关键技术,研究免杀原理。

二、实验描述

分析样本,MD5是997CF4517EE348EA771FD05F489C07FE,分析该样本的运行流程,我们需要调试傀儡进程,修复dump出来的傀儡进程,手工脱UPX壳,修复导入表。

三、实验目标

  1. 先将样本放到火绒剑里运行一下,了解样本A大概执行流程

  2. dump出的傀儡进程为B程序,修复后的傀儡进程为C程序

  3. 傀儡进程带有UPX壳,手工脱UPX壳,并修复导入表为D程序

  4. 分析修复后的傀儡有个加载资源的操作,该部分数据是PE格式,dump出来另存为E程序,发现是.net带有混淆的代码,需要反混淆操作

  5. 调试反混淆后的程序,分析发现其为远控木马,下载相应服务器端,研究该木马的功能。

四、实验环境

主机终端:win7 32位

资源:

Visual Studio 2013

010editor.exe

火绒剑.exe

OllyDbg.exe

样本

dnSpy.exe

de4dot.exe

pchunter.exe

NanoCore RAT Cracked.zip

五、实验原理

1、本样本逃过层层安全产品最终能落地到客户终端,由于其具有一定的免杀性,研究后发现关键技术是通过创建傀儡进程的形式实现启动恶意代码,也就是说恶意代码部分蜷缩在原程序中,通过创建傀儡进程的形式将恶意代码加载到内存中并运行。我们看下创建傀儡进程的方法:

(1) 通过CreateProcess以CREATE_SUSPENDED方式创建一个进程。

(2) GetThreadContext获取挂起进程CONTEXT。

(3) ZwUnmapViewOfSection卸载挂起进程内存空间数据;

(4) VirtualAlloc分配内存空间;

(5) WriteProcessMemory将恶意代码写入分配的内存;

(6) SetThreadContext设置挂起进程状态;

(7) ResumeThread唤醒进程运行

2、傀儡进程dump出来后需要进行修复,我们dump出来是程序拉伸后的状态,需要把文件偏移改为内存偏移

3、本程序涉及到UPX脱壳,手工脱壳后需要修改导入表,因为导入表在壳子里,我们把壳子脱掉了,导表表就没有了,需要将壳子程序的导入表赋值到脱壳后的程序中。

六、实验步骤

1. 火绒剑里运行一下,了解样本行为,发现该样本创建傀儡进程B

将样本托拽到火绒剑运行,排除掉一些不关心的动作,比如打开注册表,获取键值等操作。
在这里插入图片描述

发现两个问题,原程序创建了傀儡进程B,傀儡进程B将自己复制了一份命名为tcpmgr.exe并通过修改注册表启动项实现持久化。

在这里插入图片描述

2. Dump出傀儡进程B

关闭火绒剑,打开pchunter,点击“进程”,将所有grp-ps.exe进程停掉

在这里插入图片描述

用OD打开程序,Ctrl+G 输入ResumeThread,双击该API函数,F2下断,运行程序在唤醒进程前将程序断下来

在这里插入图片描述

在样本运行的时候会多次被断下,但只有一次断下来的情况是我们需要的。我们打开火绒剑,清空所有项,在OD中点击红色右箭头让程序运行起来。火绒剑和OD同时调试,找到ResumeThread唤醒傀儡进程的那次操作。

在这里插入图片描述

对照看火绒剑的日志,发现第六次断下就可以用pchunter工具dump傀儡进程了

在这里插入图片描述

打开Pchunter工具,dump出傀儡进程,如果pchunter工具没有目标进程,可以进行刷新

在这里插入图片描述

找到傀儡进程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gmUNZUAe-1628232006788)(file:///C:\Users\LIPENG~1\AppData\Local\Temp\ksohtml16580\wps8.jpg)]

点击傀儡进程,右键,依次选择“查看-查看进程内存”

在这里插入图片描述

选择具有可读可写可执行的模块,点击Dump,将傀儡进程B存放于桌面

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xrtd7CrS-1628232006790)(file:///C:\Users\LIPENG~1\AppData\Local\Temp\ksohtml16580\wps10.jpg)]

3. 用lordPE工具打开傀儡进程B进行修复,修复后的程序为C

LordPE工具打开傀儡进程B,点击“区段”

在这里插入图片描述

修复前

在这里插入图片描述

分别选中需要修改的行,右键“编辑区段”

在这里插入图片描述

由于dump出来的是傀儡进程的在内存中的拉伸状态,我们需要将其文件偏移改为内存偏移,编辑后如下:

在这里插入图片描述

退出lordPE工具,将修复后的傀儡进程B重命名为C

4. 复后的傀儡进程C有UPX,手工脱UPX壳,存为程序D

用PEiD打开修复后的傀儡进程C,发现有UPX壳。

在这里插入图片描述

(2)接下来就是手脱UPX壳,手脱UPX壳的方法有很多,大家可以网上找下相关资料,本实验用的是ESP定律法(到此步可以关闭所有打开的工具了)

OD打开修复傀儡进程C,单步执行1次,在esp处右键“数据窗口跟随”

在这里插入图片描述

设置断点

在这里插入图片描述

让程序运行起来,断下来后,观察程序有个大的jmp,在jmp语句按回车健,跳转过去
在这里插入图片描述

找到入口后,用OD插件,将程序dump出来

在这里插入图片描述

脱壳,将入口地址填到“入口地址修正为”的地方,点击获取EIP为OEP,重建输入表的选项是默认的不用动,点击脱壳,存到桌面为D.exe

在这里插入图片描述

将其用火绒剑打开,修复后的程序可以正常运行,关闭掉所有工具,pchunter停掉进程

在这里插入图片描述

在这里插入图片描述

5. IDA结合OD对D程序进行分析,发现了D**.exe****有加载资源的操作,加载进的内容是一个PE格式数据**

IDA打开D.exe观察imports表,有个函数LoadResource比较敏感,双击该API函数名称

在这里插入图片描述

查看引用该API函数地地方,ctrl+x,双击第一条语句跳转过去

在这里插入图片描述

在IDA中进程代码分析,发现该程序有个加载资源的操作,他加载什么到内存了,记录地址“0x00440085”[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yhi4rdhY-1628232006799)(file:///C:\Users\LIPENG~1\AppData\Local\Temp\ksohtml16580\wps25.jpg)]

图 25 IDA 分析代码

用OD打开D.exe程序,在“0x00440085”下断,让程序跑起来

在这里插入图片描述

程序断下来后,单步执行,eax记录了加载资源的地址,右键数据窗口跟随发现是一个PE格式的文件,我们需要对齐进行分析
在这里插入图片描述

6. 我们需要对上面PE格式数据进行分析,发现为远控木马客户端

该PE文件在D.exe源程序中,可以用010edit进行拷贝,Ctrl+G,起始地址为47058,那么我们拷贝多少呢?我们需要virtuallAlloc下断看看开辟空间大小。

先在virtualAlloc地方F2下断,让程序重新跑起来,待程序断下来后记录开辟空间大小为32A00

在这里插入图片描述

继续执行程序,直到在LoadResource处断下

在这里插入图片描述

此处单步执行,看资源地址为“0x00447058”

在这里插入图片描述

010editor打开D.exe程序,ctrl+shift+A,输入开始地址和大小

在这里插入图片描述

选择“edit-copy as-copy as hext text”,拷贝数据

在这里插入图片描述

新建一个16进制格式的文件

在这里插入图片描述

将上步复制的数据粘贴进去
在这里插入图片描述

将文件另存为E.exe

在这里插入图片描述

将E.exe用火绒剑打开,检查是可以正常运行的

在这里插入图片描述

7.分析E.exe程序功能

将该程序用PEid打开,使用C#编写
在这里插入图片描述

使用dnSpy调试E.exe程序,发现被混淆了,而且发现该程序为Nano Client客户端,是一个远控程序,找到对应版本的服务器端,为了便于后续测试。

在这里插入图片描述

使用de4dot工具进行反混淆。

在这里插入图片描述

dnSpy调试反混淆后的程序 E-cleaned.exe,先删除之前加载的程序

在这里插入图片描述

打开E-cleaned.exe

在这里插入图片描述

在IP地址和端口设置的函数地方下断点,大家可以对这个程序进行分析

在这里插入图片描述

8.根据程序行为修改服务端程序的ip和端口

用火绒剑检测到该程序有个外联191.101.22.13:4110,

在这里插入图片描述

修改本机地址为“191.101.22.13”,启动并设置服务器端的NanoCore,设置监听4110端口,发现客户端马上就上线了。修改本机IP

在这里插入图片描述

启动服务端,进行端口设置

在这里插入图片描述

查看客户端

在这里插入图片描述

研究该木马功能

在这里插入图片描述

程序大概的运行程序如下

1、该程序通过创建傀儡进程的方法进行了免杀

2、傀儡进程dump出来后需要进行修复

3、修复后的程序需要手动脱UPX壳

4、对脱壳后程序进行分析,发现具有加载资源的操作,该资源数据是PE格式

5、将这部分数据拷贝出来分析,发现其为远控木马的客户端,C#编写

6、调试该C#程序,先进行反混淆操作,简单分析该程序

7、修改本机地址为客户端外联的IP,下载远控木马服务器端,修改监听端口,客户端上线,发现该远控木马具有开关机等常规远控软件功能。

希望大家可以有所收货!!!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。