Binary diffing 技术可以用于恶意软件分析与家族归因,减少分析时间快速生成威胁情报。
AT&T Alien Labs 将 Diaphora 移植到 Radare2 上,创建了 r2diaphora 插件。
Binary diffing
Binary diffing 是在指令级别比较两个文件查找代码差异的技术。攻击者可以在不修改实际行为的前提下轻松地修改汇编代码,需要比“逐行比较”更好的方法。
现有一些 Binary diffing 工具如 Diaphora、BinDiff 和 DarunGrim 中,Alien Labs 认为 Diaphora 是其中最好的。
识别恶意软件
Diaphora 会分析二进制文件中的每个函数,从每个函数中提取一组特征。这些特征用于在函数间进行比较,将这些特征存储起来就可以构建恶意软件函数识别数据库。新传入的文件就可以和数据库中的进行比较,找到匹配项即可找到与之相似的样本。
匹配项足够多的话,就可以高置信认为样本是恶意软件,根据相似的样本也可以判断其家族归属。
移植 Diaphora 到 Radare2
Diaphora 是 IDA Pro 的插件,使用的条件是每个架构都需要购买 Hex-Rays 的许可证,而这些许可证十分昂贵。
因此 Alien Labs 选择将 Diaphora 到 Radare2 上,并且开源提供给社区。
r2diaphora
https://github.com/FernandoDoming/r2diaphora
Radare2 作为一个开源反汇编框架,支持多种 CPU 架构。其还附带了一个反编译器,此外还支持以插件的形式使用 Ghidra 反编译器。
radare2
https://github.com/radareorg/radare2
对 Diaphora 的移植工作包括使用 MySQL 替换 SQLite3 作为默认数据库。因为使用场景中需要支持并行写入/读取操作,而 SQLite 并不是为此而设计的,需要更适用的数据库引擎。
安装
由于 r2diaphora 依赖 Radare2 和 MySQL,Radare2 应该是本机安装,而 MySQL 可以远程访问。
依赖安装齐全后,可以使用 pip install r2diaphora
进行安装,接下来将会安装三个程序:r2diaphora
、r2diaphora-db
、r2diaphora-bulk
。
r2diaphora:主程序,用于分析和比较文件
r2diaphora-db:执行数据库管理和配置
r2diaphora-bulk:批量分析二进制文件
-h/--help
选项确认安装是否成功并获取更多信息。r2diaphora-db config -u -p -hs
输入连接数据库的凭据。最后,在需要使用 r2ghidra 反编译器的情况下,使用 r2pm -ci r2ghidra
来安装。测试
可以使用一些 IoT 样本来进行测试。
相同架构的 Sakura 样本
r2diaphora 562b4c9a40f9c88ab84ac4ffd0deacd219595ab83ed23a458c5f492594a3a7ef 770363f9fd334c3f3c4ba0e05a2a0d4701f56a629b09365dfe874b2a277f4416
不同架构的 Sakura 样本
r2diaphora 17c62e0cf77dc4341809afceb1c8395d67ca75b2a2c020bddf39cca629222161 6ce1739788b286cc539a9f24ef8c6488e11f42606189a7aa267742db90f7b18d
不同架构的 Sakura 样本与 Yakuza 样本
r2diaphora sakura/594a6b2c1e9beac3ad5f84458b71c1b7ec05ee0239808c9a63bc901040e413a3 yakuza/91392f5dbbfd4ad142956983208a484b91ac5e84c4f9a9fcb530a9b085644c93
可匹配的数量进一步减少,但是相似度基本保持稳定,因为 Sakura 与 Yakuza 都是基于 Gafgyt 源码修改而来的变种。
值得注意的是,processCmd
函数以较低的相似度匹配命中。该函数解析从 C&C 服务器接收到的命令,尽管处理命令的函数实现并不相同但函数中存在相同的常量,故而系统认为匹配命中。
结论
代码相似性分析工具十分有用,可用于识别/归因恶意软件。虽然并非完美无缺,但这种方法可以规避签名检测的许多缺点,可以结合使用建立更有效的检测方法。
IOC
132948bef56cc5b4d0e435f33e26632264d27ce7d61eba85cf3830fdf7cb8056
136dbd3cfa947f286b972af1e389b2a44138c0013aa8060d20c247b6bcfdd88c
17c62e0cf77dc4341809afceb1c8395d67ca75b2a2c020bddf39cca629222161
19e0f329b5d8689b14d901b9b65c8d4fb28016360f45b3dfcec17e8340e6411e
4cc11ffb3681ebced1f9d88e71b70a87e6d4498abca823245c118afead67b6a5
562b4c9a40f9c88ab84ac4ffd0deacd219595ab83ed23a458c5f492594a3a7ef
594a6b2c1e9beac3ad5f84458b71c1b7ec05ee0239808c9a63bc901040e413a3
5fec87479a8d2fa7f0ed7c8f6ba76eeea9e86c45123173d2230149a55dcd760d
603d14671f97d12db879cc1c7cd6abfa278bf46431ac73aeb6b3a4c4c2b16b9f
6b128a64a497eb123f03b77ef45e99e856282dc9620dc26ab38998627a8f3216
6ce1739788b286cc539a9f24ef8c6488e11f42606189a7aa267742db90f7b18d
770363f9fd334c3f3c4ba0e05a2a0d4701f56a629b09365dfe874b2a277f4416
7c8ba5f88b1c4689a64652f0b8f5e3922e83f9f73c7e165f3213de27c5fb4d05
8090c3a1a930849df42f7f796d42e0211344e709a5ac15c2b4aca8ca41de2cd3
94a279397b8c19ec7def169884a096d4f85ce0e21ff9df0be3ce264ef4565ea7
96bb3e5209e083544ea6a78bc6fc4ebc456e135a786d747718d936af3b063298
a079dfd60b55a7d74dd32d49a984bea43665b8b225beceae5b272944889217f6
b6c2f02b1bed62a6b845d5f13d9003f5aa3f6d0da3e62fa48d9822872453de10
cef15aa60dc2c09fe117e37e07399f0ef89dca9f930ce13ac1e29f8cf63d9a31
e984334bbdd1179aadbde949f7c1b0fb02b6c18cb4a56d146150853b18adfa79
2858982408bf1664b622e830ad83b871749608a7533e94672153ff90caa658a9
2b7262cae9e192fa7921f3ec02e0f924b32de3d418842fdad9a51603589a54c7
2faf7437c769abd92347d6f0a77f001523ec41c02d2bf12e3cebf5b950457ba3
4fc23e8409becb028997c2f0f2041e2dc853018b71e009e3d66f33876d5d4e99
6554d5edb401e2def2ef9fbb82b591351d3c8261ce0a20c431470f1c68fa3aea
8005db9431013f094a2114046679ab971e62a8776639d6c2903fcc5d2fe8065c
91392f5dbbfd4ad142956983208a484b91ac5e84c4f9a9fcb530a9b085644c93
b8aadb66183196868a9ff20bebd9c289fbfe2985fb409743bb0d0fea513e9caf
d4f223fc5944bc06e12c675f0664509eeab527abc03cdd8c2fbd43947cc6cbab
f64b5f6dd7f222b7568bba9e05caa52f9e4186f9ba4856c8bf1274f4c77c653c