[病毒分析]远程木马创建傀儡进程分析(上)

作者阿里云代理 文章分类 分类:linux图文教程 阅读次数 已被围观 609

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

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


一、实验目的

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

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

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

二、实验描述

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

三、实验目标


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


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


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


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


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


四、实验环境


主机终端: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

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

image.png

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

image.png

2. Dump出傀儡进程B

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

image.png

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

image.png

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

image.png

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

image.png

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

image.png

找到傀儡进程
image.png

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

image.png

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

image.png

本公司销售:阿里云、腾讯云、百度云、天翼云、金山大米云、金山企业云盘!可签订合同,开具发票。

我有话说: