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