笔者在研究如何对目标系统,进行属性特征信息提取时,大佬指点到本工具,简单研究一下。

介绍

“ Karta”是IDA的python插件,其功能是在已经编译过的二进制文件中搜索是否使用了开源的代码。该插件是为了匹配大体积二进制文件中的开放源代码库的开源代码(通常是查找固件)。对于每天处理固件的人来说,反复的执行net-snmp显然是在浪费时间。所以需要一个工具来识别二进制文件所使用的开源,并在IDA中自动匹配。

这个插件的初衷是加快匹配的过程。用几个小时去匹配一个包含300个函数的库是很低效的一件事,更何况实际工作过程中逆向的工程会远大于此,比如超过100,000个函数的体积。当然,结合逆向工程行业的一些经验教训,我们解决了这个问题,并取得了比预期更好的结果。

事实证明,出于性能原因而部署的启发式方法对匹配结果也有很大的影响。该插件产生的误报率非常低,而准确性很高。这对于匹配中小型二进制文件也很有用。

因此,我们认为Karta可以成为研究人员的重要工具。[1]

本文,仅仅是用于记录帮助第一次使用该工具,如果有后续实验进展,会写到别的文章里。

安装

到该插件官方开源项目中下载源代码

这个时候我们需要注意我们的Python版本和IDA版本情况(建议使用Python 3 & IDA >= 7.4,毕竟是未来趋势)

附上可用IDA Pro 7.5绿色版本(from 52pojie)

笔者以上述要求为例:

解压源代码后执行

1
python setup.py install

注意以上过程中,具体情况按照开源代码的readme和lz的要求说明来完成。

使用

该开源插件与其他常用IDA插件不同,需要通过在IDA加载二进制文件后,引入我们需要使用的py脚本来对二进制文件进行分析。

测试

笔者使用实验中的测试二进制文件,IDA加载后

image-20210420151136441

引入脚本

image-20210420151222359

我们选择常用脚本karta_identifier.py,位于开源代码解压位置Karta-master\src

静待脚本运行,查看检测效果,该插件会在分析的二进制文件所在目录下产生log文件和分析结果txt文件

image-20210420151651382

image-20210420151840586

可以看到对于该二进制文件检测出了zlib和OpenSSL,完成测试。

摸索

以上摸索,除参考文章外,还有开源代码自身中Karta-master\docs目录下的md文件有一定程度的解释说明。

建议对该插件有兴趣可以研究一下它的工作原理和产生知识库的方式。

参考文章

IDA 辅助工具Karta——二进制文件中搜索开源代码(本篇也是翻译文章)

Karta在GitHub的开源代码