恶意软件中使用的各种散列算法

作者:Sec-Labs | 发布时间:

HashDB

HashDB 是一个社区来源的恶意软件中使用的哈希算法库。

2272f2f602183810

 

如何使用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。 为实现这一目标,我们提供以下简化流程。

  1. 确保哈希算法不存在……我们知道这看起来很愚蠢,但请仔细检查。

  2. 创建一个具有描述性名称的分支。

  3. 将新的 Python 文件添加到 /algorithms具有哈希算法名称的目录。 尝试使用算法的正式名称,或者如果它是唯一的,则使用它唯一的恶意软件的名称。

  4. 使用以下模板设置新的哈希算法。 所有字段均为必填字段且区分大小写。

    #!/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
  5. 仔细检查你的 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
  6. 使用我们的测试套件在本地测试您的代码。 从 git 存储库的根目录在本地运行以下命令。 请注意,您必须将 pytest 作为模块而不是直接运行,否则它不会获取我们的测试目录。
    pip install pytest
    python -m pytest
  7. 发出拉取请求——您的新算法将自动排队等待测试,如果成功,它将被合并。

项目地址

https://github.com/OALabs/hashdb

标签:工具分享