针对一道CS面试题样本的详细分析
2024-4-28 07:51:53 Author: mp.weixin.qq.com(查看原文) 阅读量:4 收藏

安全分析与研究

专注于全球恶意软件的分析与研究

前言概述

原文首发出处:

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漏洞,就需要对相关的漏洞进行调试分析,如果是分析一些特定领域的攻击样本,还需要去学习相应领域的知识才行,比方分析一些工控类攻击样本,需要去了解和学习对应的工控平台系统原理,不同的攻击样本研究的重点不一样,使用的攻击手法和攻击技术也不一样,所以在样本分析的过程中可能还需要学习更多相关的知识点,平时可以多拿一些真实的攻击事件样本学习练手,从实战中提升自己的安全分析能力,平时就要多动手,多分析,不断积累,在分析的过程中遇到问题,再去学习,补充自己的相关知识点。

攻与防一直在升级,免杀对抗是安全研究一个永恒的话题,今年又会有什么新的免杀手法呢?到时大家如果有样本也可以联系打包发给我,又到了展示真实技术的时刻了,提前祝大家取得好成绩。


文章来源: https://mp.weixin.qq.com/s?__biz=MzA4ODEyODA3MQ==&mid=2247488159&idx=1&sn=96f13c6ac2ebd6f67249568628cf9722&chksm=902fbdb7a75834a1d5f23424a8f17bf04ce1cf6ecf8ccf1199f4265f24a6edf7fe68f289ecee&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh