社区应用 最新帖子 精华区 社区服务 会员列表 统计排行
  • 872阅读
  • 2回复

[分享]大灰狼RAT样本分析

楼层直达
z3960 
级别: 茶馆馆主
发帖
770593
飞翔币
207694
威望
215657
飞扬币
2511651
信誉值
8


样本为远控客户端,样本联网下载大灰狼远控dll,其导出函数DllFuUpgradrs注册自启服务、连接服务端,接收服务端指令来控制用户系统样本执行流程

[1. ]()样本概况



[1.1  ]()样本信息


File:菲律宾确诊新型肺炎病毒.exeSize: 217088bytesMD5: 30C13ED8030DDA8A578E822B60E3B24FSHA1: A54F9C32425AD9FDBA48938418508BA54582EDE6CRC32: 1B8896E5

[1.2  ]()测试环境及工具


运行平台:Windows 7 X64系统监控工具:火绒剑调试工具:IDA Pro、OD

[2. 沙箱监控]()


打开N62.dll文件(解密该文件)
释放自身到系统目录并启动
写入的注册表键值

[3. ]()逆向分析



[3.1 ]()菲律宾确诊新型肺炎病毒.exe分析


PE文件基本信息

3.1.1 入口函数


检查当前系统版本配置分辨率。 判断系统版本
设置屏幕分辨率

3.1.2 payload的下载与解密


检查payload文件是否存在:
文件不存在,则下载N62.dll:
文件存在则读取N62.dll,检查标识是否一致检查payload标识
动态调试下查看到payload打开位置:读取C:Program FilesAppPathN62.dll
检查payload存在且标识正确后,解密N62.dll,并加载它,遍历导出表寻找到payload的需要的导出函数地址:DllFuUpgradrs
动态调试dump解密后的N62.dll,下图可以看到解密后的PE文件魔数”MZ”。N62.dll解密完成

3.1.2.1 解密算法


解密函数
观察解密操作特征,得知加密算法为RC4算法,其为对称算法,通过简单的异或实现加解密。
RC4算法初始化函数
加解密函数

3.1.2.2 加载payload: N62.dll


通过读取PE文件关键字段:imagebase加载基址、sizeofimage加载在内存中的大小。根据基址和大小,在基址地址申请相应大小的空间,加载dll并修改内存属性为可执行。

3.1.2.3 获取并调用导出函数DllFuUpgradrs


解析导出表
实现手段:根据加载基址获取数据目录表,获取到数据表的第0项:导出表地址。遍历导出表得到需要的函数地址。
对比导出函数名称
简单验证地址非零后,样本直接调用DllFuUpgradrs函数,参数为一段密文与密钥。调用DllFuUpgradrs([密文],[key])
N62.dll 导出表
DllFuUpgradrs地址

[3.2 payload-N62.dll]()


Dump得到N62.dll,文件被加壳(upx壳)。N62.dll文件信息
N62.dll脱壳后信息

3.2.1 导出函数DllFuUpgradrs


动态调试查看函数调用时的寄存器、堆栈与内存信息:DllFuUpgradrs调用
函数DllFuUpgradrs行为基本描述:(1)     传入参数分别为密文和密钥(2)     解密密文,将得到的明文赋值给各个全局变量(3)     明文内容包括服务器信息,各类设置的参数(4)     复制自身到系统目录运行,并设置开机自启(5)     创建多个注册表键值(6)     连接服务端,并创建线程接收处理服务端指令(7)     主要远控功能包括:文件管理、屏幕监视、摄像头记录、音频记录、键盘记录、远程shell、系统管理。
解密并根据明文赋值
解密密文操作:异或
根据明文给各变量赋值
获取本进程路径
检查运行在系统目录
创建服务开机自启
DllFuUpgradrs查询注册表检查自身服务是否开启:检查服务
查询注册表
DllFuUpgradrs检查服务完成,开始连接服务端,并获取功能分发函数OnRecvive:连接服务端

3.2.2 连接服务端


样本与服务端通讯使用TCP socket,host与port均为前文解密的明文数据。Host: 91.193.102.149Port: 0x51Socket通信
连接完成,创建线程接收服务端数据,并处理对应指令:创建线程:recv & OnReceive

3.2.3 接收&处理指令线程


上节中,连接服务端完成后,则创建线程接收并处理服务端指令。
新线程基本操作:(1)接收服务端数据;(2)解密数据(rc4算法);(3)解析数据包获取指令;(4)分发功能执行OnReceive函数。具体见下图。
接收数据,并解密
解析获取指令,并执行功能分发函数

3.2.4 功能分发


功能分发函数OnRecvive地址如下:OnRecvive地址
OnRecvive地址在函数DllFuUpgradrs中,随服务端地址、服务端端口、创建的本地服务名称一同保存到结构体对象(类对象),作为参数提供给各种成员函数引用。获取功能分发函数地址
OnRecvive分发执行主要功能如下,包括:文件管理、屏幕监视、摄像头、键盘记录、录音、系统管理、远程shell等等。OnRecvive

3.2.4.1 文件管理


文件管理

3.2.4.2 屏幕监控


基本流程为:扫描光标资源保存,扫描屏幕并转化为位图,将数据发送。屏幕监视线程
屏幕监视初始化函数
发送图片数据

3.2.4.3 摄像头


压缩视频数据,并发送
XViD视频编码

3.2.4.4 键盘记录


拦截键盘消息
记录键位虚拟码
读取记录文件发送

3.2.4.5 录音


录音

3.2.4.6 Shell管理


远程运行cmd,并获取回显

3.2.4.7 系统管理


操作各项系统设置

[4. 网络行为]()



[4.1 ]()服务端主机信息


IP地址为91.193.102.149;Port端口为81(0x51)、9090(0x2382)。

[4.2 ]()上线方式


除C&C服务器接收消息,还额外有三种上线方式:其他3种上线方式
我不喜欢说话却每天说最多的话,我不喜欢笑却总笑个不停,身边的每个人都说我的生活好快乐,于是我也就认为自己真的快乐。可是为什么我会在一大群朋友中突然地就沉默,为什么在人群中看到个相似的背影就难过,看见秋天树木疯狂地掉叶子我就忘记了说话,看见天色渐晚路上暖黄色的灯火就忘记了自己原来的方向。
级别: 超级版主
发帖
837530
飞翔币
228834
威望
224673
飞扬币
2467694
信誉值
0

只看该作者 1 发表于: 2020-12-19
来看一下
级别: 超级版主
发帖
837530
飞翔币
228834
威望
224673
飞扬币
2467694
信誉值
0

只看该作者 2 发表于: 2020-12-19
不错,了解了