灰鸽子2008生成木马详细分析
首先使用灰鸽子2008生成木马样本,ip地址为虚拟机地址192.168.115.129
![](https://img.haomeiwen.com/i5500936/1114d481c84f9680.png)
静态分析
对样本进行初步的静态分析:
基本信息
名称 | 内容 |
---|---|
文件名称 | Server.exe |
MD5 | ed558582817df8ba97f47e042af917c3 |
文件类型 | EXE |
壳或编译器信息 | COMPILER:Borland Delphi 6.0 - 7.0 |
PE文件分析,可以看到灰鸽子木马是用Delphi编写的32位程序
![](https://img.haomeiwen.com/i5500936/14791174de515ecc.png)
哈勃分析系统结果:
https://habo.qq.com/file/showdetail?pk=ADcGZ11pB2YIP1s5U2U%3D
![](https://img.haomeiwen.com/i5500936/0df907fabf63846d.png)
木马运行原理详细分析
进入木马的start函数,首先进入资源文件释放函数sub_49C7D4
![](https://img.haomeiwen.com/i5500936/b1be095de10d1147.png)
跟进函数sub_49C7D4后可以看到,显示加载加密后的资源文件,之后解密资源文件并按格式分开
![](https://img.haomeiwen.com/i5500936/1f53b2e795bc27b8.png)
OD动态分析,并且可以在resouce hacker里找到名为hacker的资源文件
![](https://img.haomeiwen.com/i5500936/9f75dadb6149bc57.png)
![](https://img.haomeiwen.com/i5500936/adbf587c6d448f2b.png)
资源成功加载后,将会进入解密函数对字符串进行解密,可以看到是具体的木马配置信息,包括IP地址,密码,木马释放目录等,之后程序对这些信息进行了分段处理
![](https://img.haomeiwen.com/i5500936/3e9dd1524cc9c031.png)
![](https://img.haomeiwen.com/i5500936/1062e46cd7afd11c.png)
![](https://img.haomeiwen.com/i5500936/bef91205187c3363.png)
解密出的木马配置如下所示:
堆栈 ss:[0018FF38]=01EC3A8C, (ASCII "\r\n192.168.115.129\r\n8b4ca58172880bbb\r\n$(WinDir)\Hacker.com.cn.exe\r\n50\r\n自动上线主机\r\n\r\n8000\r\n1\r\n0\r\n0\r")
获取程序名字,与IEXPLORE.EXE作比较:
![](https://img.haomeiwen.com/i5500936/a88c914f5023e53a.png)
获取程序当前路径与木马释放路径,作比较:
![](https://img.haomeiwen.com/i5500936/d8654df4a37c311c.png)
![](https://img.haomeiwen.com/i5500936/248b2bf2d8176802.png)
创建一个 MutexName = "Hacker.com.cn_MUTEX"的互斥锁,如果创建不成功,getlasterror返回值为183,程序退出。创建成功就继续执行
![](https://img.haomeiwen.com/i5500936/29d38ba0ec84e9ca.png)
在函数sub_49C0C0中,在木马释放的目录下搜索所有后缀为dat的文件
![](https://img.haomeiwen.com/i5500936/dc4c1a34f921a3e3.png)
获取操作系统运行时间
![](https://img.haomeiwen.com/i5500936/e120f98bcaaea083.png)
检查释放路径,木马程序是否已经存在,如果存在则程序退出
![](https://img.haomeiwen.com/i5500936/9b2ad160fc68b857.png)
如果木马不存在,复制自身到目标文件夹,也就是C:\Windows\Hacker.com.cn.exe
![](https://img.haomeiwen.com/i5500936/a66ab5fe8032d00d.png)
![](https://img.haomeiwen.com/i5500936/a12f68b75de84210.png)
执行完去打开C:\Windows\,发现果然复制了一个进来
![](https://img.haomeiwen.com/i5500936/f8d3d50349ab2b0a.png)
修改文件属性,只读隐藏
![](https://img.haomeiwen.com/i5500936/a0d50679f6caa48d.png)
![](https://img.haomeiwen.com/i5500936/e4aeca4dd1d602aa.png)
获取系统版本号,判断当前系统,去创建系统服务,服务名为GrayPigeon_Hacker.com.cn
![](https://img.haomeiwen.com/i5500936/ac94d6c253756af7.png)
![](https://img.haomeiwen.com/i5500936/f3b9907c32fe8e96.png)
执行完,到服务选项里可以看到木马创建的服务:
![](https://img.haomeiwen.com/i5500936/8efdeea925985fc1.png)
弹一个安装成功的窗,在创建木马的时候,我勾选了安装完提示的选项:
![](https://img.haomeiwen.com/i5500936/e9a1751ddd6c8e0e.png)
![](https://img.haomeiwen.com/i5500936/0e9015616f53feef.png)
至此木马程序已经添加到服务了,木马程序在这里就直接退出了,接下来到C:\Windows\Hacker.com.cn.exe这里,先将木马的服务停止掉,将文件的只读属性去掉后用OD调试,可以看到在这个判断处,木马会根据路径自动选择行为,直接跳转到之前程序退出地点的下方
![](https://img.haomeiwen.com/i5500936/daf32b745957b559.png)
准备启动服务
![](https://img.haomeiwen.com/i5500936/7ba80b285f080b18.png)
由于没法在windows服务中下断点,选择直接在OD中修改jz跳转到服务线程中
![](https://img.haomeiwen.com/i5500936/76d62b631bed380b.png)
在里面首先会找到C:\Program Files\Internet Explorer\IEXPLORE.EXE,判断文件是否存在:
![](https://img.haomeiwen.com/i5500936/4b2c2eed48efa09d.png)
之后解出一个PE文件(其实就是木马程序本身,这个版本的灰鸽子没有释放dll文件,全部功能都在一个exe里面),之后的网络操作应该都在其中执行,用loadPE把内存提取出来,再用foremost进行切割
![](https://img.haomeiwen.com/i5500936/87d0e091dd5a847b.png)
把PE文件加载到虚拟内存中,并且启动一个无窗口的浏览器进程,将PE文件注入到进程中,实际上是运行了PE文件的内容,浏览器只是为了遮人耳目
![](https://img.haomeiwen.com/i5500936/8bd1ac4fff74e950.png)
![](https://img.haomeiwen.com/i5500936/202d928f01c1a93e.png)
木马系统操作
获取系统目录(sub_49C4A4)
![](https://img.haomeiwen.com/i5500936/f09b33dea6a54291.png)
获得进程访问令牌的句柄(sub_49BC64)
![](https://img.haomeiwen.com/i5500936/3d433c445136eb4d.png)
自我删除(sub_4A1474)
![](https://img.haomeiwen.com/i5500936/8de2a4d764197539.png)
搜索文件(sub_4A1048)
![](https://img.haomeiwen.com/i5500936/1ae3af79ffe2eb0a.png)
枚举所有磁盘类型信息。(sub_4A0DA4)
![](https://img.haomeiwen.com/i5500936/2d71d589a9fa7b0e.png)
获取计算机名(sub_49FA18)
![](https://img.haomeiwen.com/i5500936/7716f2ea278f5c72.png)
获取窗口分辨率(sub_49FA60)
![](https://img.haomeiwen.com/i5500936/e2679748d1495d7f.png)
获得特定文件的时间信息。(sub_49FB3C)
![](https://img.haomeiwen.com/i5500936/0953cedc15bc4ce0.png)
分析时候发现有些地方没法调试,静态看不明白,于是从网上找到了灰鸽子的delphi源码,是分成客户端和服务端的,只需要分析server的源码即可,虽然没学过delphi,但是看得比伪代码舒服,代码里还有注释,对功能了解的更透彻,其他的系统操作:
- 枚举窗口,获取窗口名窗口类型等等信息,控制窗口的隐藏和显示。
- 删除文件。
- 启动服务,删除服务,更改服务,停止服务等等操作(由不同的命令控制)。
- 枚举网络共享,打开网络共享,删除网络共享(由不同的命令控制)。
- 设置指定文件的属性。
- 设置指定的注册表信息,删除注册表。
- 打开指定的文件。
- 重启机器。
木马网络连接
经过分析,灰鸽子木马使用的是反向链接,这种方式的好处就是受害者连网,只要能访问到控制者机器的ip或者域名,就能建立连接,连接的ip和端口都在上面进行分析了,通过des解密将密文变为明文,加载到配置信息中,所以比较容易找到攻击者的ip和域名信息
![](https://img.haomeiwen.com/i5500936/ea7a9c4a826d8640.png)
通过抓流量包可以看到,服务端TCP三次握手请求客户端确认:
![](https://img.haomeiwen.com/i5500936/a76272e87d4e9b6c.png)
主机上线之后,打开文件管理功能,服务端会传送一个加密的数据包给客户端解密查看,加密方式是每一位和8进行异或,加密数据如下:
![](https://img.haomeiwen.com/i5500936/60e10fbfac320a1c.png)
写一个脚本帮助解密,可以看到解密的数据和灰鸽子客户端的一致:
![](https://img.haomeiwen.com/i5500936/5692b3a52dc03213.png)
![](https://img.haomeiwen.com/i5500936/a5a0156e9b548727.png)
总结
![](https://img.haomeiwen.com/i5500936/fac9fbd26e7800dd.png)