“有利于提高社会生产力的方式均是有价值的”
想节省一些时间,一直在偷懒的方向上前进。今天遇到一个需要分析下为啥沙箱跑不出行为的样本,文件名为“重点稽查名单-终端.exe”(文件md5为0d28182bc2bb179088afbdc376380592)。这个文件名如果是人一看过去肯定会觉得奇怪,怎么后缀是exe呢?确实需要谨慎一些,exe后缀名则表明是一个Windows环境下的可执行程序,显示已经非常可疑了。如果在此之前就已经见过一些类似命名风格的恶意文件,那么该文件的可疑度会变高。但为了严谨可能不一定能直接判断为恶意文件,我们还需要一些其他证据来佐证判断这个文件确实是恶意文件。
通过DIE检查工具可以发现该文件仍然是NSIS安装包类型文件,那么我们可以利用之前提过的方法手动提取内嵌的NSI安装脚本。
脚本提取完成后如下:
查看该脚本后,发现这仍然是之前银狐木马常用的执行方式(利用正常管控类工具后替换为自己的C2地址实现远控),不过整体脚本的细节上有了变化,表明现在的脚本比之前5月11日出现的文件有了一些更新。既然我们需要的信息在之前的文章里已经获取到部分了,那么我们只需要补充这次新出现的细节即可。到这里,其实就是按照正常的分析流程的动作一个个去查看脚本的执行逻辑,然后梳理出大概的执行流与比较重要的路径与命令。
如果按照上面的想法去实现这个动作,其实时间花费上需要至少10分钟,因为人需要对这段代码逻辑实现分析与上下文关联,最后是核查自己的分析是否存在错误或遗漏。因此,我们现在遇到了一个小难题,如何只花3分钟完成整个动作?关于为啥我会定义3分钟这个时间,准备想在后面的文章(心得类文章,非技术文章)里慢慢地解释一下。
得益于GenAI(生成式人工智能)的技术发展,我们在2022年11月可以接触到ChatGPT这类非常厉害的交互式分析能力,在一开始接触并使用后立马想到能不能改变一下原本工作中一些既定动作的速度或者效率?事情地发展确实如人所料,它确实能在一些方面帮助我们解决一些比较简单的重复类问题,从而节省时间。当然对于专业类知识的解答与分析,我们还需要依赖自己的技能与背景知识去做二次判定,不能一味地相信它给出的结果。
写到这里,我就把今天遇到的nsi安装脚本的分析工作让ChatGPT给我完成吧。首先是我们需要设定好我们的提示语,关于提示语其实是一种需要一些技巧的提问方式,这里就不详细展开了,有兴趣的读者可以自行搜索互联网上比较优秀的提问方法与技巧。由于我们这里的问题比较简单,所以直接向它提问也不影响它回答的效果。
当把整个安装脚本复制完成粘贴进输入框后,可以在后面附带提出相关的问题,例如这里我写的是“翻译一下这段安装脚本的作用,人类可读的方式。”。不出所料,它确实给出了整个的脚本内容的文字类解释,当读这些文字类解释时确实比单纯直接去分析脚本内容要更快一些,我们先完成阅读完整个文字类分析过程,做到心中有数,避免它返回错误的结果。
如果上述输出有一些错误,我们可以与其进行对话,不断地纠正它的回答,这样子就能完成我们获取比较粗糙且正确的文字类分析内容的要求。
这段NSIS(Nullsoft Scriptable Install System)脚本用于创建一个静默安装程序,它执行以下主要任务:
1. 设置压缩器:
* 使用zlib压缩。
2. 配置安装程序的基本信息:
* 输出文件名为 [NSIS].exe。
* 安装目录通过注册表项获取(静默安装)。
* 设置安装程序名称为 rjxizCwR 3.1.3。
* BrandingText为空白。
3. 定义语言字符串:
* 设置了38个语言字符串,主要用于错误提示、操作提示等。
4. 定义变量:
* 定义了4个变量 _0_ 到 _3_,用于存储临时数据。
5. 配置安装类型:
* 安装目录默认是 $COMMONFILES\System。
6. 定义主要功能函数:
* func_0 函数用于检查特定进程是否正在运行,并返回结果。
* 使用 nsProcess 插件查找进程。
7. 主安装部分(Section MainSection):
* 依次检查并处理以下进程:360tray.exe, HipsTray.exe, QQPCTray.exe, 360sd.exe。
* 如果发现任何进程正在运行,会弹出相应的信息框提示用户退出该进程。
* 关闭Wow64文件系统重定向,复制必要的文件到系统目录。
* 还原Wow64文件系统重定向状态。
* 将一系列文件复制到临时目录和系统目录。
8. 次要安装部分(Section 1):
* 创建临时目录并挂载一个WIM文件到该目录。
* 将挂载目录中的文件复制到安装目录。
* 使用7z解压特定文件到Windows目录和系统目录。
* 添加防火墙规则允许特定程序的进出。
* 执行一些程序并隐藏其窗口。
* 卸载挂载的WIM文件并保存更改。
9. 未使用的功能:
* Initialize_____Plugins函数用于初始化插件目录,但未在主脚本中使用。
这段脚本的作用主要是配置和执行一个静默安装过程,确保在安装前关闭某些安全软件进程,复制必要的文件到系统目录,并设置相关防火墙规则。
当以上的动作全都完成后,我们现在就可以进入正题了,我们可以让其帮我们美化下文字类的分析内容。例如我会这样提问“请将以上的所有内容经过整理,输出一份比较专业的恶意文件分析报告,要求是人类可读的方式。”
上述的输出不一定完全地符合一份分析报告的要求,但是我们需要的重要信息它分析整理的很好,我们只需要再稍稍优化一下便可以正式地复制粘贴到我们准备的报告模板中。到此,这部分动作就结束了,统计了下确实差不多只需三分钟左右就能理解到该安装脚本实现的逻辑与目的是什么。
再举一个小案例,昨天临近傍晚的时候有人反馈一个恶意文件,并要求判断是否为银狐木马。每次遇到这种事情的第一反应是我们最好不要提供比较正式的报告,因为提供比较正式的报告比较费时间(往往是不划算的,我们需要专注于我们自己手头的工作事项,尽量不要被插入项打扰),于是我和对方说我会提供一小段文字类结论,至于是不是银狐木马还得看最终分析的结果。
巧合的是这个文件几天前就被人上传了VirusTotal,于是想着能不能利用VirusTotal快速给出一些结论,事实是该文件免杀能力较好,一些主流且优秀的杀毒引擎均未能查杀标记出恶意文件。原因其实是该文件是使用Python编写并被打包成exe可执行文件,我们根据以往的经验知道Python类恶意文件的免杀能力普遍是不弱的。
VirusTotal提供的沙箱报告也并没有给出比较有用的判定信息,于是我只能手工对其分析,手工对其分析的步骤其实比较简单,我们利用相关的工具解包Python打包的可执行程序,然后反编译出对应的Python源码即可。
当我看到上述反编译输出的Python源码时,我是感觉是时候使用ChatGPT帮助我快速分析这段代码的逻辑了,立马将上述的内容复制提交给它,不一会给出了相关的分析结论。在阅读完输出的结论并确认没有问题后,我将其进行了精简并输出了一小段文字作为了最终结论。
【举报材料.exe】初步结论如下:
md5:aeb5fc26796ae70f5b5ef2fdd8380921
该样本是Python3.7打包的恶意文件,执行过程中会检测是否存在虚拟机、沙箱或者调试器环境,如果存在则直接退出进程。当不存在上述环境后,会读取当前目录下的favicon.ico文件,然后使用密钥“LL5z1VMOgoH8mR1fMBWsfexAPBhBIctiPfiVJj4BBJE=”解密该文件。最终使用pickle.loads()反序列化解密后的内容然后执行恶意代码。综上所有的信息与代码逻辑可以得出结论,该文件属于恶意文件。但由于缺失favicon.ico文件,无法获取后续的代码逻辑以及确定该文件最终回连的C2地址。综上所述,该文件基于现有的信息无法确认是否为银狐木马。
上述的整个过程用时差不多也是3分钟左右,而这个样本确实需要读取同目录下的favicon.ico文件才能正常执行恶意逻辑,如下。
平时只有晚上的时候才有时间整理思绪写东西,纯爱好写作与分享,如果觉得内容有用可以分享或者转发,不胜感激。有喜欢讨论或交流网络安全相关主题或恶意文件相关主题等不吹水的内容的读者可以加入交流群,该群无门槛免费永不收费,如遇到需要验证可以先联系我后邀请进群。