前言
Sidekick 2.0 包含一组强大的功能,可帮助您完成各种任务。今天,我们将应用其中的几个功能来对名为 Amadey 的恶意软件样本中的字符串进行反混淆。
Amadey在其Malpedia条目中解释道,它是一个僵尸网络,它会定期将有关系统和已安装的 AV 软件的信息发送到其 C2 服务器,并轮询以接收来自它的命令。它的主要功能是可以为所有或特定目标的受恶意软件感染的计算机加载其他有效负载(称为“任务”)。这个特定的恶意软件样本采用了一种混淆技术,将二进制文件引用的字符串存储为加密字符串,然后在运行时解密。这使得分析师更难以逆向工程和了解恶意软件正在做什么,同时也阻止了防病毒软件识别它。
查找解密函数
首先,我们需要在二进制文件中查找解密加密字符串的函数。(注意:此示例二进制文件已删除通常可帮助我们完成此任务的任何符号信息。)由于此任务需要迭代二进制文件中的代码并分析其内容,因此 Analysis Workbench 的自动化和推理功能使其最适合此任务。
在分析工作台中,我们输入一个简单的任务描述“查找对字符串执行解密的函数”:
Sidekick 会自动生成执行该任务的脚本。您会注意到此脚本中的几件事:
- Sidekick 选择创建一个LLMOperator来确定给定函数是否对字符串执行解密(第 2 行)。调用时,LLMOperator将使用大型语言模型来确定传递给它的函数(第 12 行)是否对字符串执行解密。
- Sidekick 确定需要遍历二进制文件中所有定义的函数才能完成请求(第 7 行)。
- Sidekick 选择通知我们其进展情况,以提供便利(第 9 行)
- Sidekick 选择将其结果输出到名为“解密函数”的索引中(第 5、16 行)
由于索引条目中的“描述”元数据没有为我们提供任何其他信息,因此让我们要求 Sidekick 编码助手为我们提供解密例程的实际描述:
接下来,让我们运行脚本并看看输出Decryption Functions索引中得到了什么:
几秒钟之内,我们已经有了一些要查看的条目。该功能sub_401290看起来很有前途,让我们来看看:
是的。这就是我们要找的解密函数。
将解密函数转换为 Python
让我们看看是否可以将其转换为 Python,以便我们可以轻松地在 Analysis Workbench 脚本中运行它。由于 Sidekick Assistant 专注于较小的函数集,因此特别适合此类任务,因此让我们让 Assistant 为我们将其转换为 Python:
这很简单!
解密字符串
现在我们已经确定了解密函数并将其转换为 Python,让我们实际使用它来解密传递给它的所有字符串。由于我们要在二进制文件中搜索多个位置,在这些位置对数据调用自定义 Python 代码,并输出这些结果供我们查看,因此 Analysis Workbench 是完成这项工作的完美工具。所以让我们编写另一个脚本。
在分析工作台中,我们将通过点击汉堡菜单并选择来创建一个新的空脚本New Script。
我们将为脚本添加一个标题,粘贴我们的 Python 解密函数,给它一个新名字,并要求 Sidekick 编码助手使用给定的 Python 解密函数解密传递给该函数的所有字符串sub_401290。
让我们看看我们得到了什么。
运行更新后的脚本后,我们没有得到任何结果。发生这种情况的原因是传递给的字符串sub_401290在二进制文件中没有为其定义字符串变量,因此bv.get_string_at不会返回任何内容。Binary Ninja 没有为它们创建字符串变量的原因是它们是加密字符串。这在逆向工程工具中非常常见,因为它们在分析包含加密字符串的二进制文件时看起来不像真正的字符串。因此,我们需要通过直接从二进制文件中读取其字节来创建字符串。我们不必自己尝试这样做,只需让 Sidekick 为我们创建一个执行此操作的函数即可。同时,我们还让 Sidekick 更新脚本,以便在解密字符串时将调用指令和解密的字符串都输出到索引。
运行此脚本修订版后,我们收到此错误:
错误并不好玩,所以让我们让 Sidekick 来处理它(因为它可以访问输出控制台中的内容):
现在让我们运行它!
成功!
在 Code Insight Map 中查看解密的字符串
由于我们将解密的字符串输出到索引中,因此我们可以使用 Sidekick 的 Code Insight Map 查看引用这些解密字符串的函数之间的关系,并帮助我们了解二进制文件对这些字符串执行的操作。我们还运行High-Level Functions脚本(默认包含在 Analysis Workbench 中)来生成此二进制文件中高级函数的索引。
让我们向下滚动以查看更多内容:
现在我们已经解密了这个二进制文件中引用的字符串,我们可以很快了解这个恶意软件的一些功能 – 一个僵尸网络,它定期将有关系统和已安装的 AV 软件的信息发送到其 C2 服务器,并轮询以接收来自它的命令。
1.本站内容仅供参考,不作为任何法律依据。用户在使用本站内容时,应自行判断其真实性、准确性和完整性,并承担相应风险。
2.本站部分内容来源于互联网,仅用于交流学习研究知识,若侵犯了您的合法权益,请及时邮件或站内私信与本站联系,我们将尽快予以处理。
3.本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
4.根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
5.本站是非经营性个人站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途
暂无评论内容