安全分析与研究
专注于全球恶意软件的分析与研究
前言概述
原文首发出处:
https://xz.aliyun.com/t/14296
先知社区 作者:熊猫正正
听说马上又要开始攻防演练了(听说而已,不确定),此前每年攻防演练都会有发现一堆有意思的CS免杀木马样本,这些样本会使用各种免杀加载、反调试反分析对抗技术,研究起来挺有意思的。
群里有朋友求助一个面试题,样本使用python3.10编译的程序,如下所示:
分析之后发现有点意思,样本最后是一个CS样本,分享一下自己的整个分析过程,供大家学习参考,分析样本的过程中可能会遇到了各种各样的问题,可以多从几个方向和多用几个方法去思考如何解决问题。
详细分析
1.样本包含一个EXE和一个JSON文件,如下所示:
2.先打开1.json看看,发现是一堆加密的数据,不过可以看到里面包含两个特征字符串code和load,猜测可能会通过EXE程序解密出一个Loader和一个ShellCode代码,如下所示:
3.EXE程序是使用Python语言编写,利用PyInstaller编译的二进制程序,如下所示:
4.先使用pyinstxtractor反编译EXE程序,发现EXE程序使用的Python语言版本为3.10,如下所示:
5.使用pycdc工具看看能不能反编译还原pyc文件,发现只能还原部分代码,如下所示:
6.这里就遇到群里朋友遇到的问题了,pycdc无法将pyc文件完全还原为python脚本的情况,我们要怎么办?其实可以直接通过pycdas工具反汇编pyc文件,得到pyc文件的字节码代码,如下所示:
7.通过阅读字节码代码,我们大概可以猜测该EXE程序解密1.json文件的时候,使用了AES算法,但是我们如何知道AES的密钥呢?其实字节码代码中就已经写的很清楚了,如下所示:
上面的字节码通过LOAD_CONST和STORE_NAME指令,将字符串dfhkAsDFAjDShdfu赋值为AES解密算法的KEY。
8.然后再通过LOAD_NAME、LOAD_METHOD和CALL_METHOD调用aesdecypto模块的解密函数decrypt,解密1.json文件,再调用fromhex转化为HEX数据,如下所示:
9.我们来看aesdecypto模块代码是什么?通过pycdc反编译aesdecypto.pyc文件,如下所示:
10.很明显解密算法是使用AES算法,采用CBC模式,去填充PKCS7PADDING,数据块128位,KEY和IV相同,且都为16位,我直接通过http://tool.chacuo.net/cryptaes网站解密1.json文件中的code和loader数据,解密出来的code数据是一段ShellCode代码,如下所示:
11.load解密出来是一段Loader代码,分配内存空间,然后将shellcode代码移动加载到内存空间,再调用线程执行ShellCode代码,如下所示:
12.通过LOAD_METHOD、LOAD_NAME、CALL_METHOD和CALL_FUNCTION调用解密出来的Loader代码,同时将上面code解密出来的ShellCode的字节码做为参数传递进去,如下所示:
这样EXE程序的任务就完成了,主要是读取1.json文件内容,然后解密出里面的Loader程序和ShellCode代码,再通过Loader程序加载ShellCode代码在内存中执行。
13.下面我们再来看看ShellCode代码,如下所示:
14.该ShellCode代码的c2通信地址为119.29.82.40,如下所示:
15.HTTP请求链接后缀为/QlXH,如下所示:
16.循环执行HTTP请求,等待服务器返回,如下所示:
17.由于服务器已经关闭了,返回不了,我们通过威胁情报进行关联分析,通过这个IP在威胁情报平台进行查询,此前已经被标记为了CS木马,如下所示:
18.通过自动化分析脚本,可以匹配到对应的CS反向shell的ShellCode代码特征,如下所示:
到此该样本就分析完了,该面试题主要考查的难点就是通过工具无法完全反汇编pyc程序,需要人工分析python反汇编字节码,然后再通过字节码还原出代码逻辑。
总结结尾
样本分析没有一个固定的模式,针对不同类型的样本,不同攻击目的的样本,我们可能需要使用不同的分析方法,不同类型的样本,我们需要获取到的信息也不一样,同时样本中包含很多技术手段,各种反调试、反沙箱、反虚拟机、混淆、加壳、加密、自修改代码、Rootkit等底层技术,一些样本还会利用一些0day或Nday漏洞,就需要对相关的漏洞进行调试分析,如果是分析一些特定领域的攻击样本,还需要去学习相应领域的知识才行,比方分析一些工控类攻击样本,需要去了解和学习对应的工控平台系统原理,不同的攻击样本研究的重点不一样,使用的攻击手法和攻击技术也不一样,所以在样本分析的过程中可能还需要学习更多相关的知识点,平时可以多拿一些真实的攻击事件样本学习练手,从实战中提升自己的安全分析能力,平时就要多动手,多分析,不断积累,在分析的过程中遇到问题,再去学习,补充自己的相关知识点。
攻与防一直在升级,免杀对抗是安全研究一个永恒的话题,今年又会有什么新的免杀手法呢?到时大家如果有样本也可以联系打包发给我,又到了展示真实技术的时刻了,提前祝大家取得好成绩。