恶意软件中使用的各种散列算法
作者:Sec-Labs | 发布时间:
HashDB
HashDB 是一个社区来源的恶意软件中使用的哈希算法库。

如何使用HashDB
HashDB 可以用作独立的散列库,但它也提供给 OALabs 运行的 HashDB 查找服务 。 该服务允许分析师反转散列并检索散列的 API 名称和字符串值。
独立模块
HashDB 可以像任何标准 Python 模块一样被克隆并用于您的逆向工程脚本中。 下面是一些示例代码。
>>> import hashdb
>>> hashdb.list_algorithms()
['crc32']
>>> hashdb.algorithms.crc32.hash(b'test')
3632233996
哈希数据库查找服务
OALabs 运行免费的 HashDB 查找服务 ,可用于查询哈希表以查找 HashDb 库中列出的任何哈希。 哈希表中包括完整的 Windows API 集以及恶意软件中使用的许多常见字符串。 您甚至可以添加自己的字符串!
HashDB IDA 插件
HashDB 查找服务有一个 IDA Pro 插件,可用于直接从 IDA 自动执行哈希查找! 客户端可以在这里从 GitHub 下载 。
如何添加新Hash
HashDB 依靠社区支持来保持我们的哈希库最新! 我们的目标是让贡献者花费 不超过五分钟 添加一个新的哈希,从第一次提交到 PR。 为实现这一目标,我们提供以下简化流程。
-
确保哈希算法不存在……我们知道这看起来很愚蠢,但请仔细检查。
-
创建一个具有描述性名称的分支。
-
将新的 Python 文件添加到
/algorithms具有哈希算法名称的目录。 尝试使用算法的正式名称,或者如果它是唯一的,则使用它唯一的恶意软件的名称。 -
使用以下模板设置新的哈希算法。 所有字段均为必填字段且区分大小写。
#!/usr/bin/env python DESCRIPTION = "your hash description here" # Type can be either 'unsigned_int' (32bit) or 'unsigned_long' (64bit) TYPE = 'unsigned_int' # Test must match the exact has of the string 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789' TEST_1 = hash_of_string_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 def hash(data): # your hash code here - 仔细检查你的 Python 风格,我们在 Python 3.9 上使用 Flake8。 您可以从 git 存储库的根目录本地尝试以下 lint 命令。
pip install flake8 flake8 ./algorithms --count --exit-zero --max-complexity=15 --max-line-length=127 --statistics --show-source - 使用我们的测试套件在本地测试您的代码。 从 git 存储库的根目录在本地运行以下命令。 请注意,您必须将 pytest 作为模块而不是直接运行,否则它不会获取我们的测试目录。
pip install pytest python -m pytest - 发出拉取请求——您的新算法将自动排队等待测试,如果成功,它将被合并。
项目地址
标签:工具分享