北京看白癜风那个医院最好 https://disease.39.net/bjzkbdfyy/241210/d2ur2z4.html背景
今年2月份,俄乌冲突爆发后,在物理战场之外,以俄乌为主的多方势力在网络空间也展开了激烈较量。3月初,在社交平台上,研究人员公开了一个针对乌克兰的攻击样本(MD5:A9E1D5EFE5C5E09A)。随后,乌克兰CERT也发布通告,将该攻击样本归属于APT组织UNC,该组织疑似隶属于某东欧国家。
UNC组织是“Ghostwriter”活动背后的攻击者,该活动的重点攻击目标是乌克兰、立陶宛、拉脱维亚、波兰和德国的政府和私营部门实体,以及白俄罗斯持不同政见者、媒体实体和记者。“Ghostwriter”活动中,UNC使用高度针对性的鱼叉式网络钓鱼发起攻击,并使用看似合法的域名作为C2服务器。此次攻击中,攻击者通过邮件下发了一个Dropper,Dropper经过一系列释放过程后执行开源后门MicroBackdoor,该后门使用RSA+RC4混合加密方式和C2服务器进行通信。
样本下发
攻击者通过钓鱼邮件下发CHM格式的攻击文件,CHM文件是微软推出的基于HTML文件特性的帮助文件系统,双击攻击文件,会默认用Windows自带的hh.exe程序打开并执行内置的HTML代码。其中HTML代码分为JavaScript、vbs两部分,其中JavaScript负责展示诱饵图片,如下图所示:
Vbs代码则会释放一些系列文件来执行攻击,具体流程如下:
CHM攻击文件释放“ignit.vbs”样本和“desktop.ini”样本;
“ignit.vbs”样本释放三个文件:“core.dll”、“WindowsPrefetch.lnk”、“desktop.ini”;
“WindowsPrefetch.lnk”被释放到启动目录下,用于实现持久化;
“desktop.ini”调用“C:\Windows\Microsoft.NET\Framework\v4.0.\regasm.exe”加载“core.dll”;
“core.dll”文件执行后会再次释放一个DLL文件,该DLL文件是开源的后门程序MicroBackdoor。
通过后门程序MicroBackdoor和固定的域名“xbeta.online”、端口“”的C2服务器建立连接,期间会释放一个临时RSA证书文件“C:\Users\xxx\AppData\Local\Temp\Tmpxxxx.tmp”,用于后续加密通信使用。
加密通信流程分析
此次攻击的通信过程通过开源后门MicroBackdoor实现,样本内部存放了固定的域名“xbeta.online”和端口“”,客户端解析域名得到IP后根据IP、端口和C2服务器建立连接。通信过程使用的是TCP协议,使用RSA身份验证加密协商产生RC4随机会话密钥用于实际的数据加密通信。
整个通信过程分为两个阶段,第一阶段是验证过程,由客户端发起验证请求,和服务端进行身份验证并完成密钥的协商。第二阶段是命令交互阶段,客户端通过select函数持续等待服务端命令下发,收到命令后解密并执行。
3.1验证阶段
客户端根据IP和端口创建套接字并连接,准备向服务端进行验证通信。
由客户端先向服务器发出验证请求包,其中包含三个内容:客户端版本信息、RSA证书的SHA1摘要以及随机生成的RC4密钥。
客户端版本信息由客户端决定,为固定值;SHA1摘要是从RSA证书获取的中,该证书由服务器生成并内嵌在客户端中;RC4密钥会在每次会话随机生成,长度为位。
根据证书获取RSA公钥,然后将上述内容用零补齐到和RSA公钥相同长度(字节),使用RSA公钥加密后作为验证请求包发送给服务端。
服务端接收到验证请求包后,用RSA私钥进行解密,解密后会验证客户端版本和RSA证书的SHA1摘要是否正确。验证通过后,保存RC4密钥并计算RC4密钥的MD5值发送给客户端作为响应包。
客户端收到响应包后,计算RC4密钥的MD5值并和响应包的内容进行验证,验证通过后则验证通信阶段完毕,等待服务端下发命令。
3.2命令交互阶段
通信双方验证无误后,后续通信中全部使用协商好的RC4密钥进行加密。客户端通过select函数持续等待服务端命令。收到服务端发出的命令后,客户端使用RC4密钥进行解密,解析并识别命令,然后执行。执行后将结果上传给服务端时,也会使用RC4密钥加密后发送。
下图为MicroBackdoor支持的命令,包括获取本机信息,执行程序,反弹shell,上传下载文件等常规远控功能。
3.3流量数据分析
本次分析的样本未获取到实际的C2服务端私钥,不能进行数据的解密。
我们通过模拟木马通信过程,从中得到的流量各阶段数据如下。
在验证阶段虽然数据都进行了加密,但是流量长度固定,客户端发起的验证请求包为字节(RSA公钥长度),服务端返回的响应包长度为16字节(MD5长度)。
在命令交互阶段,由于命令长度不固定,且数据全部使用了RC4加密,所以无法获取有效特征。只有获取到服务端的RSA私钥后,才能对数据进行解密。
下图为服务端的RSA私钥文件和证书,RSA私钥文件和证书由攻击者自己生成。
依据证书中的公钥和私钥文件可以对加密数据进行解密。先使用上图RSA私钥对验证请求包的载荷进行解密,解密后输入如下。
使用解密后获取的RC4密钥对后续的命令交互过程进行解密,解密后可以发现命令为“id”。
分析小结
此次攻击采用TCP自定义加密通信,使用RSA身份验证加密协商产生RC4随机会话密钥用于实际的数据加密通信,全程加密通信。攻击产生的流量中,验证阶段有明显的流量长度特征,验证请求包和响应包为固定长度。从加密机制来看,获取到服务端私钥才能将流量进行解密。
同时,我们也可以看到越来越多的APT组织频繁利用TCP、UDP、HTTP等传输层和应用层协议进行自定义加密方式传输。除常规标准加密协议外,这一新趋势给流量检测也带来了新的更高挑战。