如何快速破解识别APT28网络攻击流量

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介:

近期,欧洲多国大选开始,去年涉嫌网络攻击干预美国总统选举的APT28又开始活跃了。相继有德国、丹麦等国纷纷指责APT28的大肆入侵攻击行为。而就在最近的法国大选中,有安全专家分析称,APT28可能已经针对首轮投票胜出的纽埃尔·马克龙(Emmanuel Macron)开展了网络攻击活动。难道APT28又要用键盘来操控法国大选了吗?

在这里,让我们来看看安全公司Redsocks security如何通过网络流量来快速识别和破解APT28攻击行为。

一、分析简介

2016年底,Redsocks security发现了一个APT28使用的过期域名,原本Redsocks security希望通过sinkhole该域名对APT28进行一探究竟,却发现该域名使用了异常复杂的加密通信机制。尽管之前像ESET等其它安全公司认为APT28使用了RC4加密算法,但还未发现APT28具体使用的RC4算法和密钥属性。在这里,Redsocks security通过对APT28经常使用的X-Agent样本进行动态分析,破解其整体攻击入侵的网络流量行为。以下为分析中APT28经常使常用到的一例X-Agent木马程序样本文件:

APT28经常使常用到的一例X-Agent木马程序样本文件

Sinkhole (槽洞)攻击:通过引诱攻击者发起的流量通过一个已被控制接管的节点,一旦流量数据经过该控制节点,接管者就可以对其网络流量数据进行分析篡改,判断攻击者的攻击手法和入侵行为。

由于涉及到对APT28攻击行为的网络通信机制破解,所以分析过程包括以下几个方面:

  • 执行X-Agent木马和其释放的恶意程序
  • 对X-Agent木马进行网络行为观察
  • 破解APT28通信加密机制和算法

Redsocks security通过全网探测和url模式比对,发现了大量APT28使用的控制端和服务器,为破解调查破解APT28通信机制奠定了基础。

二、X-agent释放的恶意程序(dropper)

该样本恶意程序dropper包含两个步骤功能。首先,向Windows系统文件夹内释放一个ose00000.exe程序和一个恶意dll文件,该dll文件名通常来说是固定的,不会随着执行行为和目标系统而改变,如在此例中我们分析的83D2CDE2-8311-40CB-B51DEBE20FA803D1.dll,但极少情况下会随着木马功能而改变,如我们发现的其它释放样本文件xpool.dll;其次,通过释放的恶意dll文件调用系统shell32库中的ShellExecuteW方法函数,之后,以rundll32.exe进程身份和”C:\Windows\83D2CDE2-8311-40CB-B51DEBE20FA803D1.dll,init”参数完成对ShellExecuteW方法的进一步调用执行,在逆向分析中,我们可以从rundll32执行动作中观察到这一行为。另外,我们还发现了恶意进程会调用ZwMapViewOfSection方法对目标系统进行内核Hook以系统提权。最终,木马程序将会以rundll32.exe和ose00000.exe两个进程形成系统驻留。

三、X-agent的木马行为分析(rootkit)

83D2CDE2-8311-40CB-B51D-EBE20FA803D1.dll其实就是X-agent木马安装在系统内的rootkit,通过该rootkit实现键盘记录和远程控制。

1. X-agent架构

如下图所示,X-agent的程序结构相对复杂,在功能实现和通信机制方面都具有模块化的架构:

X-agent的程序结构

2. X-agent的程序执行

整个木马程序的执行从rundll32.exe进程加载dll文件调用初始化函数开始,首先它执行了获得目标系统磁盘序列号等信息的kernel32.GetVolumeInformationW方法调用,并初始化一些全局变量:

X-agent的程序执行

之后,初始化模块功能实现恶意功能执行,本例样本程序中包括3方面功能模块:

  • 在样本逆向代码中为modKey的键盘记录模块
  • 为modFS的文件系统控制模块
  • 为modProcRet的远程Shell控制模块

完成以上功能初始化后,攻击者结合CHOPSTICK后门为不同任务创建了不同的线程,当然了,攻击者也会针对不同的配置和系统构造不同的功能和内核控制模块AgentKernel:

控制模块AgentKernel

所有任务线程由功能和内核控制模块进行控制操作,并负责与远程C&C服务器进行通信,受害系统身份和支持运行的功能模块等信息将通过一个ID号为标识的数据包发送至攻击者C&C端。所有这些信息将被保存在临时文件夹下名为“edg6EF885E2.tmp”的文件中。

报告分析样本使用WinInet API并通过HTTP信道进行通信。与C&C端发送数据之前,恶意程序通信线程会通过测试“adobeincorp.com” 域名解析,检查与远程C&C服务器的网络连通性,如果解析失败,则转向两个硬编码IP进行直连。通信通道成功连通后,恶意程序就会通过内置的功能模块发送不同的URL请求信息和POST数据。然而,与C&C端的所有通信都是加密的。总之,X-agent木马在受害者系统中会执行以下一连串行为:

  • 调用KERNEL32.GetVolumeInformationW
  • 创建至少5个不同的任务线程
  • 向临时文件夹内edg6EF885E2.tmp文件读写数据
  • 调用socket.connect测试C&C端连通性
  • 加密与C&C端的URL和POST数据通信
  • 向C&C端发送get请求
  • 向C&C端发送post请求
  • 调用WININET Http APIs向C&C端对受害者系统发起控制信息

3. X-agent网络通信流量分析

为了破解APT28网络通信流量,我们首先得了解X-agent使用的通信模式。在我们分析X-agent样本中,其一前一后向远程C&C端发送了http get和post请求。除一串请求字符以外,其余http头信息都是固定的。X-agent发起的URL请求如下所示:


 
 
  1. /webhp?rel=psy&hl=7&ai=L2Bd93t_o-jl022K1Og4Bm9mSk8QO88K_3ZQZuKcoPwur-5Q7Y

其中,“/webhp?rel=psy&hl=7&ai=”和最后的“=”标记在所有的执行动作中都是一样的,而其余51个编码字符“L2Bd93t_o-jl022K1Og4Bm9mSk8QO88K_3ZQZuKcoPwur-5Q7Y”则包含了木马客户端的请求发起时间戳和ID标记;另外,木马程序发送的POST数据则附加在“=”之后,为71个字符的加密串,解密后如下所示:

蓝色部分为受害者系统标记ID,黄色部分为数据发送方模块ID,绿色部分为远程C&C端使用的由#符号分隔的一系列功能模块数据。以下为X-agent的HTTP通信实现结构:

X-agent的HTTP通信实现结构

X-agent的HTTP通信实现结构

四、X-agent的通信加密机制

X-agent会对所有get或post请求的有用数据进行加密,加密后的数据会被添加进一些额外的字节并被转化为BASE64编码,如下为X-agent的通信模式结构:

X-agent的通信模式结构

时间戳为包含系统时间的BASE64数据,之后,又添加生成了8字节的BASE64随机数据,而加密后的真实数据(cypher)则为16字节之后的信息,其中包含一些初始字节信息,如数据令牌(data token)和

受害系统ID等。而数据令牌(data token)中则包含了一个硬编码字符串“V4MGNxZWlvcmhjOG9yZQ”,以下为X-agent的消息结构流程分解:

X-agent的消息结构流程分解

最终,其BASE64数据基于RFC 4648和一个动态函数生成,并基于以下排列生成:


 
 
  1. ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_  

1. 加密模块

加密过程由两个参数调用,调用指针指向两个数据结构,包含以下两方面加密类实现数据:

  • 加密种子
  • 加密数据

其中,加密种子是硬编码方式固定的,初始函数通过立即寻址方式把其复制到数据段区域进行加密:

加密种子

之后,在代码中,4个随机字节被追加到种子之后成为54字节数据,这种结构形成了加密过程的关键所在。例如,从AgentKernel获取的默认初始请求为39字节,其中包括:受害系统ID、模块ID、支持模块信息,这些信息被封装为20个字节的数据令牌(data token)、4个字节的受害系统ID和2个字节的模块ID数据。其中数据令牌(data token)被远程C&C端用来进行加密校验。在使用了RC4算法创建密码之后,加密程序将会向其中添加8字节的随机值并把整体数据转化为兼容BASE64的URL,并向其中生成7字节的时间戳信息。整个过程如下:

  • 生成随机的4字节信息;
  • 使用RC4算法加密消息;
  • 向消息中添加8字节随机值;
  • 把消息转化为BASE64的URL;
  • 在消息中生成7字节的时间戳信息。

2. RC4算法

RC4是基于字节排列的流密码算法,在此我们不作重点讨论,以下为X-agent使用的RC4算法实现代码,其中算法涉及到的参数包含4字节的随机值、加密种子和明文数据:

RC4算法

RC4算法

五、如何破解X-agent数据

如前所述,X-agent加密过程的中的唯一随机性是把4随机字节附加到50字节的加密种子数据之后,由于 RC4算法是同步的流密码加密机制,必须使用同样的加密密钥key才能实现解密。所以,解铃还需第铃人,X-agent加密机制的破解必须使用相同的RC4算法和调用参数才能实现。最终转变生成的密码消息(cypher)除时间戳和随机字节之外,必须与其http请求对应的数据一致。当然了,可以利用暴力攻击方法枚举所有可能值(0到2的32次方-1)来破解RC4算法,如果其破解结果包含一个硬编码字符串“V4MGNxZWlvcmhjOG9yZQ”,则可以证明这就是APT28的网络通信行为,因为该字符串为APT28在网络通信中使用的数据令牌(data token)内容,并且这种破解操作可以在任何普通的个人电脑上快速实现完成,整个过程也就是几秒钟的事。具体技术分析参考Redsocks报告

作者:clouds
来源:51CTO

相关文章
|
6月前
|
缓存 网络协议 算法
【计算机网络-传输层】TCP可靠传输、TCP流量控制、拥塞控制
【计算机网络-传输层】TCP可靠传输、TCP流量控制、拥塞控制
|
1月前
|
移动开发 网络协议 测试技术
Mininet多数据中心网络拓扑流量带宽实验
Mininet多数据中心网络拓扑流量带宽实验
57 0
|
3月前
|
云安全 安全 物联网
惊叹:《黑神话:悟空》所在 Steam 发行平台遭网络狂袭,威胁流量猛增两万倍!
8月24日,热门游戏《黑神话:悟空》的玩家发现主要发行平台Steam无法登录,引发“#Steam崩了#”登上微博热搜。起初猜测是在线人数过多导致,但完美世界竞技平台公告表示系遭受DDoS攻击。奇安信Xlab实验室详细解析了此次攻击,发现攻击指令暴增两万多倍,涉及多个僵尸网络。此次攻击对Steam造成严重影响,但也凸显了网络安全的重要性。为保障游戏环境安全,需加强服务器防护并选择可靠的防御公司。德迅云安全提供高防服务器、DDoS高防IP和安全加速SCDN等服务,助力游戏企业提升安全性。
|
3月前
|
运维 监控
"网络工程师必备秘籍:4大招轻松破解M-LAG故障难题,你的网络还能更稳定!"
【8月更文挑战第19天】M-LAG技术通过多链路聚合提升网络可靠性和带宽。面对M-LAG故障,四步定位法助您迅速排障:1) 检查M-LAG成员状态确保链路活动;2) 验证链路聚合配置一致;3) 分析控制和平面与数据平面状态;4) 排除物理层故障如端口状态异常。结合网络监控和定期检查,保障M-LAG稳定运行。
84 0
|
3月前
|
监控 安全 Serverless
SAE 防火墙的震撼之举:默认拦截公网一切流量,开启网络安全的无敌模式!
【8月更文挑战第7天】在数字化时代,网络安全至关重要。SAE(Serverless Application Engine,无服务器应用引擎)的防火墙功能默认阻止所有公网流量,为应用与数据提供坚实保护。这像坚固城门,将潜在威胁拒之门外,减少恶意攻击风险。如同在混沌中建立秩序,划定网络安全边界。但依赖默认设置不足,需根据业务需求配置规则,如开放特定端口或IP范围。还需持续监控防火墙效果,通过分析访问日志等手段及时调整优化,确保最佳防护效果。
69 0
|
4月前
|
算法 网络协议 应用服务中间件
(五)网络编程之流量接入层设计:基于性能怪兽从零构建日均亿级吞吐量的网关架构!
在前篇关于《Nginx》的文章中曾经提到:单节点的Nginx在经过调优后,可承载5W左右的并发量,同时为确保Nginx的高可用,在文中也结合了Keepalived对其实现了程序宕机重启、主机下线从机顶替等功能。
|
4月前
|
算法 网络协议 Shell
掌握Linux网络:深入理解TC —— 你的流量控制利器
目前需要做一款关于Linux下对于某IP限制的一个工具(QOS),在网上寻找了许多关于TC的教程,大多数都是一些比较基础的教学,且多数都是对网口的一些限制,然后自己研究了一段时间,最后有一些小小的了解,故在此分享给大家。
720 0
|
人工智能 语音技术
网络视听规范化时代,视频AI破解直播违规难题
网络视听规范化时代,视频AI破解直播违规难题
152 1
|
6月前
|
网络协议 网络性能优化 SDN
【网络层】流量控制VS拥塞控制、路由器功能、SDN控制平面
【网络层】流量控制VS拥塞控制、路由器功能、SDN控制平面
111 0
|
6月前
|
Kubernetes 容器
k8s学习-CKS真题-网络策略拒绝流量
k8s学习-CKS真题-网络策略拒绝流量
76 0

热门文章

最新文章