Jairoy2426/NULLHOUND

GitHub: Jairoy2426/NULLHOUND

一款基于 Python 和 Rich 构建的纯终端 Linux 漏洞扫描与安全配置审计工具,支持 CIS 基准对照及实时 CVE 查询。

Stars: 0 | Forks: 0

# 🛡️ NULLHOUND(自动化枚举与引导式智能扫描器) [![Python](https://img.shields.io/badge/Python-3.8%2B-blue.svg)](https://www.python.org/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![Platform: Linux](https://img.shields.io/badge/Platform-Linux-lightgrey.svg)](https://www.kernel.org/) **NULLHOUND** 是一款专业的、仅限终端使用的 Linux 漏洞扫描程序和安全配置审计工具,使用 Python 编写。它旨在执行本地化检查,涵盖系统配置、网络暴露、文件系统权限、用户访问模式、内核设置以及运行中的服务,并对照 CIS Benchmarks 等强化标准进行审计。 ### 💡 为什么开发此工具 我开发 **NULLHOUND** 是为了满足对 Linux 系统进行快速、并行且易于阅读的安全审计的需求。虽然像 Lynis 这样的工具非常出色,但我希望创建一个面向对象的 Python 实现,输出丰富、美观的终端界面和现代化的 HTML 报告,使安全态势评估既全面又具有视觉可访问性,显然我也想打造一个属于我自己的工具。 ## 📸 截图 ### 并行终端审计扫描 ![并行终端审计](https://raw.githubusercontent.com/Jairoy2426/NULLHOUND/main/docs/screenshots/terminal_audit.png) ### CIS Benchmark 合规性审计 ![CIS 合规性审计](https://raw.githubusercontent.com/Jairoy2426/NULLHOUND/main/docs/screenshots/compliance_report.png) ### 实时软件包 CVE 查询引擎 ![软件包 CVE 查询](https://raw.githubusercontent.com/Jairoy2426/NULLHOUND/main/docs/screenshots/cve_check.png) ### 独立 HTML 安全报告仪表板 ![HTML 安全报告仪表板](https://static.pigsec.cn/wp-content/uploads/repos/cas/93/93def1fd472c9a64b1dfbe910930fd7e1f9451b9eb29b53604f41b1952ac0ed8.png) ## 🚀 核心功能 * **100% 仅限终端且交互式**:利用 `rich` 实现面板、实时进度旋转图标、彩色表格和整洁的仪表板输出。 * **完全并行化**:线程执行模型可并行运行审计检查,并支持配置并发数。 * **稳健且异常安全**:处理缺失的二进制文件、权限拒绝错误和超时,且不会崩溃。 * **灵活的报告**:生成结构化的 **JSON**、纯文本可读的 **TXT** 以及高级独立 **HTML** 仪表板(内置深色模式)报告。 * **检查配置**:运行 `quick`、`standard` 或 `deep` 扫描,以控制检查深度和超时时间。 * **CIS 合规模式 (`--compliance cis`)**:将审计结果映射到互联网安全中心 (CIS) 控制措施,打印高保真合规矩阵。 * **实时软件包 CVE 查询 (`--cve-check`)**:自动扫描本地软件包并实时查询 OSV 和 NVD API,以检测漏洞 CVE。 * **适配 CI/CD Pipeline**:包含预定义的 GitHub Actions 工作流文件,可在标准 runner VM 中运行自动化安全审计并生成报告。 ## 🛠️ 安装与设置 ### 选项 1:软件包安装(推荐) 您可以将 NULLHOUND 作为本地软件包安装,它会自动将 `nullhound` 可执行文件链接到您的路径中: ``` git clone https://github.com/Jairoy2426/NULLHOUND.git cd NULLHOUND pip3 install . ``` 安装完成后,即可从任何位置执行该工具: ``` sudo nullhound ``` ### 选项 2:独立执行 1. **克隆或复制**仓库到您的目标 Linux 主机: git clone https://github.com/Jairoy2426/NULLHOUND.git cd NULLHOUND 2. 使用 pip **安装依赖项**: pip3 install -r requirements.txt 3. **将入口文件设为可执行**: chmod +x nullhound.py ## 📖 使用示例 由于某些安全审计命令(例如检查 `/etc/shadow`、解析网络接口绑定进程)需要 root 权限,因此强烈建议以 root 身份运行。 ### 1. 标准审计扫描(所有模块) 使用标准深度在主机上运行默认的审计套件: ``` sudo ./nullhound.py ``` ### 2. 高并发的指定模块 ### 3. 生成 HTML 和 JSON 安全报告 生成交互式、带有深色模式样式的 HTML 仪表板以及结构化的 JSON 输出: ``` sudo ./nullhound.py --output report.html sudo ./nullhound.py --output report.json ``` ### 4. 深度配置,静默且纯文本模式(适用于 CI/CD pipeline) 静默运行深度配置扫描,过滤掉低于 HIGH 严重级别的所有内容,禁用颜色代码,并将输出重定向到文件: ``` sudo ./nullhound.py --profile deep --severity high --quiet --no-color > audit_output.txt ``` ### 5. CIS 合规性审计 运行系统审计并将结果直接映射到 CIS Benchmark 控制措施: ``` sudo ./nullhound.py --compliance cis ``` ### 6. 实时软件包 CVE 验证 向 OSV 和 NVD 实时查询已安装软件包的易受攻击版本: ``` sudo ./nullhound.py --cve-check ``` ### 7. 在 Windows/WSL 终端上运行合规性审计并自动暂停 确保控制台在完成后保持打开状态: ``` python3 nullhound.py --compliance cis --pause ``` ## 📊 对照表:NULLHOUND vs Lynis vs OpenVAS | 功能 | **NULLHOUND** (自定义) | **Lynis** | **OpenVAS** | | :--- | :--- | :--- | :--- | | **审计重点** | 本地系统强化与配置审计 | 本地系统配置审计 | 远程网络漏洞扫描 | | **安装** | 单目录,简单的 pip 依赖 | Shell 脚本,软件包管理器 | 笨重的服务设置,数据库,Redis | | **执行速度** | 非常快(并行线程) | 快(顺序执行 Shell 脚本) | 慢(网络探测与端口扫描) | | **报告 UI** | 高保真交互式 HTML/控制台 | 纯文本日志和报告文件 | Web UI,PDF,XML 报告 | | **依赖项** | Python 3.8+,`rich`,`requests` | 无(posix shell) | GVM,Greenbone,外部数据库 | | **自定义** | 面向对象的 Python 模块 | Shell 函数 / 自定义测试 | NASL 脚本(语法复杂) | ## 🛠️ 如何扩展 NULLHOUND(添加新模块) NULLHOUND 的核心设计理念就是模块化。要添加新的扫描模块: 1. 在 `modules/` 下创建一个新文件(例如 `modules/my_module.py`)。 2. 继承 `BaseModule` 抽象基类,并实现所需的抽象属性和 `.run()` 方法: from typing import List from modules.base import BaseModule from core.finding import Finding class MyCustomModule(BaseModule): @property def name(self) -> str: return "custom" @property def description(self) -> str: return "Audits custom application security baselines" def run(self, profile: str = "standard") -> List[Finding]: findings = [] # Perform your checks here # Use self.create_finding(...) to build findings # Example check: # if is_vulnerable: # findings.append(self.create_finding( # id_="AEG-CST-001", # title="Custom Vulnerability Found", # severity="MEDIUM", # description="Detail about vulnerability.", # evidence="Raw configuration setting", # remediation="Step to fix the configuration", # references=["https://example.com/reference"] # )) return findings 3. 在 `modules/__init__.py` 中注册该模块: from .my_module import MyCustomModule ALL_MODULES = { # ... existing modules "custom": MyCustomModule } ## ⚖️ 道德使用免责声明 ## 📄 许可证 该项目基于 [MIT 许可证](LICENSE) 授权。
标签:Python, 内存取证对抗, 无后门, 逆向工具, 配置核查