微软的威胁情报中心发布了一个名为RIFT的新工具,以帮助恶意软件分析师识别隐藏在Rust二进制文件中的恶意代码。虽然Rust因其速度和内存安全性而越来越受欢迎,但这些相同的特质使用Rust编写的恶意软件更难分析。RIFT旨在消除这种复杂性,使工作更轻松。
RIFT静态分析仪概述(来源:微软)
为什么Rust恶意软件很难分析
为了展示挑战,微软进行了一次测试。他们用C++和Rust编写了一个简单的下载器。两者都做了同样的工作:下载数据并保存它。然后他们比较了二进制文件。C++版本的功能不到100个,其二进制文件不到20 KB。Rust版本有近10,000个功能,大小超过3 MB。
“用Rust编写的程序通常是静态链接的,将所有依赖项直接嵌入到可执行文件中。因此,二进制文件更大,具有大量功能,需要分析师首先区分第三方库代码和攻击者编写的逻辑,”微软研究人员解释说。
RIFT如何运作
RIFT有三部分:
- 静态分析仪:IDA Pro插件。它读取二进制文件来查找元数据:Rust编译器版本、依赖项、目标平台。它将此记录到JSON文件中。
- 生成器:Python脚本。它下载正确的编译器和库,创建FLIRT签名,并运行二进制分法。它使用货物、锈蚀、Hex-Rays工具和Diaphora。
- Diff Applier:另一个IDA Pro插件。它读取不同的结果或FLIRT签名,然后在IDA中应用注释,以便分析师可以轻松发现库功能。
“目前,这些插件仅为Ida Pro开发,并在Ida Pro>=9.0上进行测试。RIFT Generator在Windows 10上进行了64位测试,”研究人员指出。
RIFT内部的图案匹配
RIFT使用两种主要技术来帮助分析师在Rust二进制文件中发现库代码:FLIRT签名和二进制分区。FLIRT签名快速可靠。它们以高准确性匹配Rust库的已知函数,并且很少产生误报。然而,只有当恶意软件中的代码非常接近原始库代码时,它们才会起作用。
为了捕捉略有变化的函数,RIFT还使用二进制微分。此过程将编译的Rust库与恶意软件二进制文件进行比较,以找到相似之处。二进制分法比FLIRT签名更灵活,但完成需要更长的时间,有时需要几个小时。
RIFT从应用FLIRT签名开始。然后,它运行二进制差分来查找任何遗漏的东西。两个步骤结束后,该插件帮助分析师直接在IDA Pro中查看和标记结果,这样他们就可以专注于真正重要的代码。
现实世界的测试
微软在RALord勒索软件上尝试了RIFT。该工具提取编译器信息和依赖项,制作FLIRT签名,并应用它们。在IDA中,主要功能中的大多数库代码都被正确识别。这只剩下可疑代码需要检查。
他们还测试了一个名为SPICA的后门。他们同时使用了FLIRT和diffing。在FLIRT遗漏部分的情况下,填写差分。这有助于使分析更加顺利。
RIFT在GitHub上免费提供。
文章来源:helpnetsecurity
暂无评论内容