用于 IDA Pro 的恶意软件字符串哈希查找插件。该插件连接到 OALABS 的 HashDB 查找服务。
哈希算法数据库是开源的,可以在 GitHub 此处 添加新算法。拉取请求大多是自动化的,只要我们的自动化测试通过,新算法就会在几分钟内可在 HashDB 中使用。
HashDB 可用于查找恶意软件中经过哈希处理的字符串。方法是在 IDA 反汇编视图中右键单击哈希常量,然后启动 HashDB Lookup 客户端。
在使用插件查找哈希之前,必须配置 HashDB 设置。设置窗口可以从插件菜单 Edit->Plugins->HashDB 启动。
点击 刷新算法 从 HashDB API 获取支持的哈希算法列表,然后选择您正在分析的恶意软件中使用的算法。
还有一个选项可以对每个哈希值启用 XOR,这是恶意软件作者常用的一种进一步混淆哈希的技术。
HashDB 查找服务的默认 API URL 是 https://hashdb.openanalysis.net/。如果您使用自己的内部服务器,可以将此 URL 更改为指向您的服务器。
当 HashDB 识别出新的哈希时,该哈希及其关联的字符串会作为枚举添加到 IDA 中。然后可以使用此枚举将 IDA 中的哈希常量转换为相应的枚举名称。枚举名称可在设置中配置,以防与现有枚举冲突。
插件设置配置完成后,您可以右键单击 IDA 反汇编或伪代码(Hex-Rays)窗口中的任何常量,并将其作为哈希进行查找。右键菜单还提供快速设置 XOR 值的方法(如果需要)。
如果哈希是某个模块的一部分,系统会提示您是否要导入该模块中的所有哈希。这是一种快速批量拉取哈希的方法。例如,如果识别出的哈希之一是来自 kernel32 模块的 Sleep,HashDB 可以拉取 kernel32 中所有哈希化的导出函数。
在解析哈希(或批量导入模块)后,HashDB 会扫描当前函数,并将所有匹配的常量转换为其枚举名称 — 覆盖操作数 0-2,并使用 32 位掩码回退来处理符号扩展值。反汇编和 Hex-Rays 视图会自动刷新。您已导入的模块会在会话中缓存,因此不会在每次遇到新哈希时重复提示导入 kernel32 等模块。
HashDB 还包含一个基本的算法搜索功能,尝试根据哈希值识别哈希算法。搜索将返回所有包含该哈希值的算法,由分析人员决定哪个(如果有)算法是正确的。 使用此功能时,右键单击哈希常量并选择 HashDB Hunt Algorithm。
所有包含此哈希的算法将显示在选择框中。可以直接在选择框中选择算法供 HashDB 使用。如果选择 取消,则不会选择任何算法。
某些恶意软件开发者不会单独(在代码中内联)解析 API 哈希,而是会在内存中创建一个导入哈希块。这些哈希随后在单个函数内全部解析,形成一个动态导入地址表,后续在代码中引用。在这些场景下,可以使用 HashDB Scan IAT 功能。
只需选择导入哈希块,右键单击并选择 HashDB Scan IAT。HashDB 将尝试解析选定范围内的每个整型(DWORD/QWORD)。
HashDB 需要 Python requests 模块。在 IDA 外部的 shell 中使用 pip install requests 安装。
然后可以通过以下两种方式之一安装插件:
hashdb.py 复制到您的 IDA plugins 目录。HashDB 插件针对IDA 7.5+(包括 IDA 9.0)和Python 3,不向后兼容。