如何让僵尸网络控制节点快速遁形

admin 2021年8月28日03:45:51评论74 views字数 1984阅读6分36秒阅读模式
点击上方蓝字可以订阅哦

前言

在僵尸网络(下称:botnet)整个架构中,控制节点(Command and Control(下称)C2)发挥着至关重要的作用,是整个botnet 大脑中枢也是黑客幕后操纵“据点”,在通常的追踪溯源过程中C2获取是必经之路。在的 botnet中,被控端木马都需要与控制节点进行网络通信,而控制节点的IP/Domain+Port通常会硬编码(明文/密文)在被控端木马里面。如何让C2快速遁形呢?样本自动化配置解密就是其中的一个思路!

所谓样本静态配置解密就是通过破解样本加密算法将样本的所有密文进行解密,但是其中最重要的密文就是病毒样本的C2密文。在反病毒和威胁情报领域中C2是威胁溯源的关键点,同时可以用于后期的通信黑名单,也可以进行端点监控。因此在样本静态配置解密中除了为后期的通信解密提供算法支持外,获取C2明文可算是其最终目标!

定位

(本次讲解,将以Kaspersky:Trojan.Win32.Reconyc.fuzv 家族样本 

92b91f578bbc2b8dc38605f9a9504b6b362dc1681e6708db5604fc3e72777a8d 为实例,贯穿整个静态配置解密讲解!)

准确给C2密文定位是静态配置解密的基本前提。首先我们要有一个认知:存放样本C2的密文基本都是一个全局变量。所以无论是MZ样本还是ELF样本,通过IDA分析样本时可以首先到.data区段搜寻可疑密文。如图2-1 .data区段可疑密文:

如何让僵尸网络控制节点快速遁形


图2-1 .data区段可疑密文


通过全局变量名称看显然不是C2密文(需要继续搜寻),但他们之间应该有很大关联,例如解密算法的使用,所以密文也肯有可能就在附近。因此,可以通过16进制工具将以上密文在样本进行定位,找出所有密文。如图2-2 关联密文:


如何让僵尸网络控制节点快速遁形


图2-2 关联密文


根据全局变量名称可以排除1、2密文,剩下只有3、4 的密文。通过IDA再次回溯密文调用代码。如图:2-3 密文调用代码


如何让僵尸网络控制节点快速遁形


图2-3 密文调用代码


算法破解


可以看出sub_40700A就是解密函数,而且4的密文首先调用解密,进入sub_40700A分析解密算法,如图:3-1 sub_40700A解密算法:


如何让僵尸网络控制节点快速遁形


图3-1 sub_40700A解密算法


这只是一个简单的xor算法,但前提是获取算法密钥(根据经验,在密钥使用方面,此算法和ServStart的算法有很大的相似之处)。获取密钥有3种方法:


1、IDA 堆栈回溯法。所谓的IDA堆栈回溯定位,找到栈的传值数据;


2、OD调试,断点定位法。在样本调试中找到解密算法运算点下断点,依次循环获取每次加密使用的密钥字符组成密钥字符串;


3、密文后续提取法。在通常情况下,存放密文的全局变量是确定大小范围且初始化为0,所以通常情况下,明文后面一般是以0填充,加上使用的是xor算法,因此密文后面的数据就是xor解密的密钥,也就可以通过此获取原始密钥(未确定密钥初始点和长度的循环密钥)。

本次将不走寻常路,使用第三种方法获取密钥!


一般xor加密都是通过密钥循环加密,所以密钥也是有一定的长度范围,因此需要确定密钥长度和密钥起始点。


密钥长度确定


通过hex(16进制)工具,来到密文的数据区域并定位到一个全局变量的最后16个字节的数据,如图3-2 数据标志:


如何让僵尸网络控制节点快速遁形


图3-2 数据标志


通过此数据(密钥)标志往上查找相同数据的出现点并计算两者之间的长度0x7E即密钥长度见图3-3 密钥长度:



如何让僵尸网络控制节点快速遁形


图3-3 密钥长度


密钥初始点确定


初始密钥肯定是在密文的第一个字节就参与加解密,但因为该全局变量的明文首字节并非0,所以需要找到第二(循环类推)个初始密钥的位置也就是首轮密钥使用结束位置。如图3-4 第二轮密钥初始点:


如何让僵尸网络控制节点快速遁形


图3-4 第二轮密钥初始点


在通过已知的密钥长度获取真实的密钥,如图3-5 密钥提取:


如何让僵尸网络控制节点快速遁形 


图3-5 密钥提取


算法实现


通过IDA分析出的算法和密钥,通过python脚本实现,如图:3-5 解密算法:


如何让僵尸网络控制节点快速遁形 


图:3-6 解密算法


自动化配置解密


自动化话配置解密剩下部分也就是密文的自动化定位。在前期的IDA分析已经确定密文在于.data区段,所以只需要实现将样本的.data区段数据提取然后进一步定位解密即可!


通过多样本的对比,确定C2密文是固定在.data区段数据的0x01ec-0x02ec(见图4-1 C2密文定位)。因此只需要获取.data区段数据的0x01ec-0x02ec进行解密即可(见图4-2 自动化配置解密结果)。


如何让僵尸网络控制节点快速遁形


图4-1 C2密文定位


如何让僵尸网络控制节点快速遁形


图4-2 自动化配置解密结果

总结

总结在整个静态配置解密过程中,只需要“三步走”:可疑C2的搜索定位,解密算法破解、准确获取C2原始密文并调用解密算法破解。三步走完(最好添加样本家族识别模块,不然明文C2容易造成误解析)实现全自动话也就是提取也就是几行枚举样本的代码罢了!

如何让僵尸网络控制节点快速遁形


本文始发于微信公众号(零组攻防实验室):如何让僵尸网络控制节点快速遁形

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年8月28日03:45:51
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   如何让僵尸网络控制节点快速遁形http://cn-sec.com/archives/356159.html

发表评论

匿名网友 填写信息