APT28分析之X-agent样本分析

2019-08-10 约 135 字 预计阅读 1 分钟

声明:本文 【APT28分析之X-agent样本分析】 由作者 番茄炖番茄 于 2019-08-10 10:01:00 首发 先知社区 曾经 浏览数 171 次

感谢 番茄炖番茄 的辛苦付出!

最近在研究APT攻击,我选择研究APT的方法通过一个APT组织入手,我选择的是APT28这个组织,APT28组织是一个与俄罗斯政府组织的高级攻击团伙,我将分析该组织的攻击样本、攻击方法、攻击目的来研究一个APT组织。本次分析的是该团伙使用的X-agent样本,所有资料均来自互联网。
X-agent作为APT28的旗舰木马,已经有多个平台的版本,该木马通常作为第二阶段木马,拥有完整的功能模块,由于ESET已经获取到源码,但是我并没有找到,只能通过逆向的方式分析此款木马。

样本静态信息
文件名称 spoolhost.exe
SHA-256 dfba21b4b7e1e6ebd162010c880c82c9b04d797893311c19faab97431bf25927
创建时间 2013-05-21 14:01:00
文件大小 145 KB (148,805 字节)

概述
该文件在被下载执行后,会主动释放ose00000.exe、83D2CDE2-8311-40CB-B51D-EBE20FA803D1.dll两个文件,dll文件时旗舰X-agent木马,ose00000.exe主要时设置dll文件的持久化,DLL文件作为X-agent木马,共有AgentKernel、modKey 、modFS、modProcRet模块,可以进行键盘记录,屏幕截图等操作。网络连接在POST和URL中带有先被RC4加密,后被base64(非标准)编码的硬编码key

样本分析
首先经过一段反分析,如果时间超过正常机器速度,则认为被调式,直接退出。

样本首先通过获取系统环境变量,释放一个DLL文件,
C:\WINDOWS\83D2CDE2-8311-40CB-B51D-EBE20FA803D1.dll
并通过rundll32.exe执行dll中的init导出函数


83D2CDE2-8311-40CB-B51D-EBE20FA803D1.dll文件分析
样本静态信息
文件名称 83D2CDE2-8311-40CB-B51D-EBE20FA803D1.dll
SHA-256 5f6b2a0d1d966fc4f1ed292b46240767f4acb06c13512b0061b434ae2a692fa1
创建时间 2013-05-21 13:53:21
文件大小 107 KB (109,568 字节)
样本分析
样本首先获取临时文件路径,并做参数启动线程


首先看到的是X-agent 木马的AgentKernel模块,该模块是核心模块负责与C&C进行通信


首先获取硬盘信息


之后进行
LocalAgentWinHttpProxySender
AgentModuleRemoteKeyLogger
ModuleFileSystem
ProcessRetranslatorModule
模块的配置工作


之后开始启动主线程,和通过线程启动一些其他模块
网络连接分析
先通过连接adobeincorp.com来判断网络是否联通,联通之后分别发送POST跟get请求,还在里面发现了两个备份的C&C地址94.23.254.109跟216.244.65.34


URL数据加密方法解析

POST跟GET请求间隔15分钟进行发送,在发送前会,首先会计算出一串字符传,来看一下这串字符串是如何计算出来的


首先会出先一个key,这个key是硬编码到文件中后面连接获取的硬盘序列号


之后将上面组装的key跟硬盘序列号的0x18自己进行RC4加密,加密密钥是随机的4个字节


RC4加密算法


之后,又生成随机字符串,并进行异或,加在前面,这样形成了一个0x20字节的数据,这个数据组成位4字节随机+4字节RC4密钥+密文(密文包括硬编码key与硬板序列号)


Base64算法,不是标准算法,使用的可打印字符如下,改变了最后两个字符


Base64算法,最终将上面的0x20的字节编码成base64字符


之后将固定的硬编码字符相连接组成URL


Post数据包数据包解析
可以看到Post数据包的原始数据,使用的加密方法还是通URL加密方法一样,用RC4方法进行加密,然后用base64进行编码,具体的例子见上一节
0到19字节 key硬编码字节,用于验证
20到21字节 0100 表示AgentKernel模块,这是是这个模块发送
22到39字节表示里面包含的各个模块,用字符#相隔开
0100 表示AgentKernel模块
0110 表示modKey 模块
0111 表示modFS模块
0113 表示modProcRet模块

Get请求
Get请求会在Post数据包发送15分钟之后进行发送,发送URL,整体的数据与加密方式如上然后等待获取命令


样本在尝试连接网络会开启多个线程,现在开始分析各个线程
写入临时文件模块配置
在临时文件夹写入一个文件zdg6EF885E2.tmp


文件内容如下,开头的四个字节为字符串大小
4到7字节 0x5c997933 表示获取的硬盘信息
8到9字节 0x0001 表示AgentKernel 的ID 必备
后面是一个模块配置通过 # 相jiange
0100 表示AgentKernel模块
0110 表示modKey 模块
0111 表示modFS模块
0113 表示modProcRet模块


获取硬盘信息


构建ID


等待邮槽信息进行屏幕截图
等待获取邮槽信息


匹配指令SCREEN进行屏幕截图


监控系统窗口,进行键盘记录或者截屏
监控当前windows系统最前的窗口


进行键盘记录


发送命令进行截图


文件操作
写入文件


查找文件,进行执行删除等操作


ose0000.exe文件分析
此文件主要进行设置dll木马的持久化操作

关键词:[‘安全技术’, ‘二进制安全’]


author

旭达网络

旭达网络技术博客,曾记录各种技术问题,一贴搞定.
本文采用知识共享署名 4.0 国际许可协议进行许可。

We notice you're using an adblocker. If you like our webite please keep us running by whitelisting this site in your ad blocker. We’re serving quality, related ads only. Thank you!

I've whitelisted your website.

Not now