The-Adimension/REDACTS-legacy

GitHub: The-Adimension/REDACTS-legacy

针对 REDCap 临床研究平台的基线驱动取证安全扫描器,通过差异分析检测篡改、后门和 INFINITERED 恶意软件活动。

Stars: 2 | Forks: 0

## 免责声明 # REDACTS | **REDCap 任意代码威胁扫描** [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](LICENSE) [![Python](https://img.shields.io/badge/Python-3.11+-3776AB?logo=python&logoColor=white)](https://www.python.org/downloads/) [![Version](https://img.shields.io/badge/Version-2.0.0-green.svg)](CHANGELOG.md) [![Tests](https://img.shields.io/badge/Tests-321_passing-brightgreen?logo=pytest&logoColor=white)](tests/) [![SARIF](https://img.shields.io/badge/SARIF-v2.1.0-orange?logo=github&logoColor=white)](https://docs.oasis-open.org/sarif/sarif/v2.1.0/sarif-v2.1.0.html) [![MITRE ATT&CK](https://img.shields.io/badge/MITRE_ATT%26CK-20_Techniques-red?logo=shield&logoColor=white)](https://attack.mitre.org/) [![Platform](https://img.shields.io/badge/Platform-Windows%20%7C%20Linux%20%7C%20macOS-lightgrey)](#quick-start) [![Security Rules](https://img.shields.io/badge/Security_Rules-57-critical)](#security-rules) 一款专为 [REDCap](https://projectredcap.org) 安装环境量身定制的取证安全扫描器。REDACTS 执行基线驱动的差异分析,以检测篡改、后门和活跃威胁——其中包括 2026 年 2 月发现的 [INFINITERED](https://projectredcap.org/resources/blog/) 恶意软件活动。 ## 为什么会有 REDACTS REDCap 为全球数千家机构的临床研究提供支持。在 2026 年初,INFINITERED 活动表明,专门的攻击者正积极利用自定义漏洞攻击 REDCap 服务器,这些恶意影响甚至在系统升级后依然存在。手动执行 `grep` 命令和临时的校验和检查已经不足以应对这种威胁。 REDACTS 将取证工作流自动化:将您正在运行的安装程序与已知良好的参考副本进行比较,标记出每一处偏差,并生成随时可供审计的报告——所有这些操作都不会修改您的服务器。 ## 工作原理 REDACTS 通过命令行运行引导式的交互工作流。它会通过提示引导您完成每一步——无需复杂的标志参数。 ### 流水线阶段 1. **证据收集** — 加载您的 REDCap 文件(ZIP、7z、RAR、本地目录、HTTP 或 FTP/SFTP),构建 SHA-256 文件清单,并使用 Google Magika AI 对每个文件进行分类。 2. **基线差异对比** — 将目标与干净的参考副本进行比较。具有相同哈希值的文件将被跳过,仅将分析重点放在实际的偏差上。 3. **深度取证** — 运行 57 条安全规则、tree-sitter PHP AST 分析、17 个 IoC 指示器、34 个攻击向量评估以及敏感数据检测——范围仅限于被修改/新增的文件集。 4. **外部工具增强** — 调用 Semgrep、Trivy 和 YARA(均在首次运行时自动安装)。如果系统中有提供,还会可选地运行 PHP lint、Lizard 复杂度分析和 Radon 可维护性评分。 5. **DAST(动态分析)** — 通过 Playwright 驱动的浏览器测试,对运行在 Docker 中的活跃 REDCap 实例进行测试。测试身份验证边界、升级完整性和导出安全性。_需要 Docker 和 Node.js。_ 6. **报告生成** — 生成 HTML、JSON、Markdown 和 SARIF v2.1.0 输出。 ### 流水线图 ``` Reference ZIP ──┐ ├── Phase 1: Build SHA-256 manifests Target files ───┘ │ Phase 2: Structural diff (added / removed / matched) │ Phase 3: Hash comparison │ │ identical MODIFIED + ADDED (skip) │ Phase 4: Deep forensic scan │ ┌─────┴──────┐ │ 57 rules │ │ AST parse │ │ IoC match │ │ Semgrep │ │ Trivy │ │ YARA │ └─────┬──────┘ │ Reports (HTML/JSON/MD/SARIF) ``` ## INFINITERED 检测 [![INFINITERED](https://img.shields.io/badge/INFINITERED-Active_Threat-red?logo=bitwarden&logoColor=white)](#infinitered-detection) [![IoCs](https://img.shields.io/badge/IoCs-17_Indicators-orange)](#infinitered-detection) REDACTS 包含专门针对 INFINITERED 恶意软件活动的检测功能: | 规则 ID | 检测内容 | 严重级别 | |---------|----------------|----------| | `SEC060` | PHP 文件中的 `REDCAP-TOKEN` 标记字符串 | CRITICAL | | `SEC061` | `eval(gzinflate(base64_decode()))` 混淆链 | CRITICAL | | `SEC062` | `redcap.db` SQLite 持久化工件引用 | HIGH | | `IOC-INF-001` | `redcap.db` 文件存在(SQLite C2/持久化层) | CRITICAL | | `IOC-INF-002` | SQLite WAL/journal 附带文件(证明存在活跃的数据库写入) | CRITICAL | | `IOC-INF-003` | `hook_functions.php` 中注入的函数与已知 REDCap hooks 不匹配 | CRITICAL | | `IOC-INF-004` | `eval(gzinflate(base64_decode()))` 载荷投递模式 | CRITICAL | **基线验证器** 将这些文件分类为 CRITICAL 级别的完整性目标: - `Hooks.php` — "主要 INFINITERED 持久化目标" - `Upgrade.php` — "持久化入侵指标" - `Authentication.php` / `auth_functions.php` — "凭证窃取风险" - `.htaccess` — "检查 auto_prepend_file 持久化" - `.user.ini` — "PHP runtime 持久化" **升级劫持** — 11 条规则(`UPG001`、`UPG002`、`UPG003`、`UPG010`、`UPG011`、`UPG020`、`UPG021`、`UPG030`、`UPG031`、`UPG040`、`UPG050`)检测升级脚本中的持久化注入、文件删除绕过、跳过逻辑、混淆和配置篡改。 **MITRE ATT&CK 映射** — 发现结果被映射到 8 种战术下的 20 个技术 ID,包括 T1505.003 (Web Shell)、T1195 (Supply Chain Compromise)、T1546 (Event Triggered Execution) 和 T1027 (Obfuscated Files)。 ## 快速开始 ### 系统要求 | 需求 | 版本 | 用途 | 下载 | |-------------|---------|---------|----------| | [Python](https://www.python.org/downloads/) | 3.11+ | 核心 runtime | [python.org](https://www.python.org/downloads/) | | [Docker](https://docs.docker.com/get-docker/) | 任何最新版 | 仅用于 DAST 阶段 | [docs.docker.com](https://docs.docker.com/get-docker/) | | [Docker Compose](https://docs.docker.com/compose/install/) | v2+ | 仅用于 DAST 阶段 | [docs.docker.com](https://docs.docker.com/compose/install/) | | [Node.js](https://nodejs.org/) | 18+ | 仅用于 DAST 阶段 | [nodejs.org](https://nodejs.org/en/download/) | ### 安装 ``` # Clone repository git clone https://github.com/The-Adimension/REDACTS.git cd REDACTS # 创建 virtual environment python -m venv .venv source .venv/bin/activate # Linux/macOS .venv\Scripts\activate # Windows # 安装 Python dependencies pip install -r requirements.txt ``` 在首次运行时,如果 **Semgrep**、**Trivy** 和 **YARA** 尚未存在,REDACTS 将自动下载并安装它们。系统工具会缓存在 `~/.redacts/tools/` 目录中,并在虚拟环境重建后保留。您可以使用 `REDACTS_TOOLS_DIR` 环境变量覆盖此路径。 ### 运行扫描 REDACTS 使用交互式引导工作流: ``` python -m REDACTS ``` CLI 将会: 1. 显示带有版本信息的横幅 2. 检查并报告所有依赖项 3. 自动安装任何缺失的 Python 包 4. 提示您输入要扫描的 **target** REDCap 文件(ZIP 的路径、目录、URL 或 FTP 地址) 5. 提示您输入 **reference** REDCap 安装包(从 REDCap Consortium 下载的纯净副本) 6. 执行完整的扫描流水线并生成报告 使用 `python -m REDACTS --help` 获取使用说明。 ### 运行 DAST(动态分析) DAST 阶段需要 Docker 和 Node.js。它会启动一个容器化的 REDCap 实例(MariaDB + Apache/PHP),并对其运行 Playwright 浏览器测试。 ``` cd dast npm install docker compose -f docker-compose.dast.yml up -d npx playwright test ``` ### 运行测试 ``` python -m pytest tests/ -x -q ``` 测试套件包含 321 个测试。 ## 项目结构 ``` REDACTS/ ├── __main__.py # Interactive CLI entry point ├── __init__.py # Package metadata (v2.0.0) ├── audit/ │ └── pipeline.py # 4-phase baseline-driven audit pipeline ├── core/ │ ├── config.py # Typed configuration dataclasses │ ├── constants.py # Canonical version string │ ├── dependencies.py # Dependency checker and auto-installer │ ├── models.py # Unified finding model (SARIF/CVSS/CWE/MITRE) │ └── logging_setup.py # Logging configuration ├── dast/ │ ├── orchestrator.py # Docker Compose + Playwright orchestration │ ├── docker-compose.dast.yml # REDCap + MariaDB + Playwright stack │ ├── docker-compose.crawlmaze.yml # Google Crawl Maze benchmark stack │ ├── Dockerfile.playwright # Playwright test runner container │ ├── Dockerfile.crawlmaze # Crawl Maze container │ ├── playwright.config.ts # Playwright configuration │ ├── tests/ # 4 Playwright spec files (102 test cases) │ │ ├── admin-access.spec.ts # Auth boundary tests (10) │ │ ├── crawlmaze-coverage.spec.ts # Crawl Maze benchmark (76) │ │ ├── export-report.spec.ts # Data export security (6) │ │ └── upgrade-flow.spec.ts # Upgrade integrity tests (10) │ └── helpers/ # Shared test utilities │ ├── auth.ts # REDCap authentication helper │ ├── security-assertions.ts # Security check assertions │ ├── filesystem-snapshot.ts # File snapshot and diff │ └── network-monitor.ts # Network traffic monitoring ├── evidence/ │ ├── collector.py # Evidence package builder │ └── manifest.py # File manifest with SHA-256 hashing ├── forensics/ │ ├── baseline_validator.py # Structural diff + integrity checking │ ├── security_scanner.py # Security rule engine │ ├── security_rules.py # 57 PHP security rule definitions │ ├── tree_sitter_analyzer.py # PHP AST analysis via tree-sitter │ ├── upgrade_analyzer.py # 11 upgrade hijacking detection rules │ ├── file_analyzer.py # Hashing, entropy, Magika classification │ ├── magika_analyzer.py # Google Magika integration │ └── database_forensics.py # Database artifact analysis ├── integration/ │ └── repomix.py # Repomix codebase snapshot integration ├── investigation/ │ ├── investigator.py # 7-step investigation orchestrator │ ├── semgrep_adapter.py # Semgrep CLI adapter │ ├── trivy_adapter.py # Trivy CLI adapter │ └── external_tools.py # External tool runner ├── knowledge/ │ ├── attack_vectors.py # 34 attack vectors across 7 categories │ ├── ioc_database.py # 17 Indicators of Compromise │ ├── mitre_mapping.py # 20 MITRE ATT&CK technique mappings │ └── sensitive_data.py # PHI/PII/credential detection patterns ├── loaders/ │ ├── base.py # Loader protocol + auto-detection │ ├── zip_loader.py # ZIP, 7z, RAR, tar.gz, tar.bz2, tar.xz │ ├── local_loader.py # Local directory loading │ ├── http_loader.py # HTTP/HTTPS download │ └── ftp_loader.py # FTP/SFTP loading (via Paramiko) ├── orchestration/ │ └── tool_orchestrator.py # External tool coordination ├── reporting/ │ ├── forensic_report.py # Report generator with pluggable renderers │ ├── sarif_exporter.py # SARIF v2.1.0 exporter │ └── renderers/ # HTML, JSON, Markdown renderer plugins ├── sandbox/ │ └── isolation.py # Integrity checking utilities └── tests/ # 321 pytest tests ``` ## 输出格式 [![SARIF v2.1.0](https://img.shields.io/badge/SARIF-v2.1.0-orange?logo=github&logoColor=white)](https://docs.oasis-open.org/sarif/sarif/v2.1.0/sarif-v2.1.0.html) [![HTML](https://img.shields.io/badge/HTML-Report-E34F26?logo=html5&logoColor=white)](#output-formats) [![JSON](https://img.shields.io/badge/JSON-Report-000000?logo=json&logoColor=white)](#output-formats) [![Markdown](https://img.shields.io/badge/Markdown-Report-083fa1?logo=markdown&logoColor=white)](#output-formats) | 格式 | 用例 | |--------|----------| | **HTML** | 人工审查 — 深色主题,交互式 | | **JSON** | 机器消费,CI/CD 集成 | | **Markdown** | 文档编写,Pull Request 评论 | | **SARIF v2.1.0** | GitHub Code Scanning、SonarQube、DefectDojo、Azure DevOps | SARIF 输出符合 [OASIS SARIF v2.1.0 规范](https://docs.oasis-open.org/sarif/sarif/v2.1.0/sarif-v2.1.0.html)。 ## 依赖项和第三方归属 [![Dependencies](https://img.shields.io/badge/Dependencies-11_Packages-blue?logo=pypi&logoColor=white)](#python-packages-installed-via-pip) [![System Tools](https://img.shields.io/badge/System_Tools-2_Required-yellow)](#system-tools-auto-downloaded-on-first-run) [![Optional Tools](https://img.shields.io/badge/Optional_Tools-8_Available-lightgrey)](#optional-tools-not-auto-installed) REDACTS 依赖于以下开源工具和库。所有荣誉均属于其各自的作者和社区。 ### Python 包(通过 pip 安装) | 包 | 最低版本 | 许可证 | 用途 | 链接 | |---------|-------------|---------|---------|-------| | [chardet](https://github.com/chardet/chardet) | 5.0.0 | LGPL-2.1 | 字符编码检测 | [PyPI](https://pypi.org/project/chardet/) | | [magika](https://github.com/google/magika) | 0.6.0 | Apache-2.0 | Google 提供的基于 AI 的文件类型分类 | [PyPI](https://pypi.org/project/magika/) | | [paramiko](https://github.com/paramiko/paramiko) | 3.4.0 | LGPL-2.1 | 用于远程文件加载的 SSH/SFTP 传输 | [PyPI](https://pypi.org/project/paramiko/) | | [requests](https://github.com/psf/requests) | 2.31.0 | Apache-2.0 | 用于加载器和下载的 HTTP 客户端 | [PyPI](https://pypi.org/project/requests/) | | [py7zr](https://github.com/miurahr/py7zr) | 0.20.0 | LGPL-2.1+ | 7-Zip 存档解压 | [PyPI](https://pypi.org/project/py7zr/) | | [rarfile](https://github.com/markokr/rarfile) | 4.1 | ISC | RAR 存档解压 | [PyPI](https://pypi.org/project/rarfile/) | | [rich](https://github.com/Textualize/rich) | 13.0.0 | MIT | 终端格式化、进度条、表格 | [PyPI](https://pypi.org/project/rich/) | | [PyYAML](https://github.com/yaml/pyyaml) | 6.0 | MIT | YAML 配置文件解析 | [PyPI](https://pypi.org/project/PyYAML/) | | [tree-sitter](https://github.com/tree-sitter/py-tree-sitter) | 0.23.0 | MIT | 用于 AST 分析的增量解析系统 | [PyPI](https://pypi.org/project/tree-sitter/) | | [tree-sitter-php](https://github.com/tree-sitter/tree-sitter-php) | 0.23.0 | MIT | 用于 tree-sitter 的 PHP 语法 | [PyPI](https://pypi.org/project/tree-sitter-php/) | | [semgrep](https://github.com/semgrep/semgrep) | 1.0.0 | LGPL-2.1 | 用于 PHP 漏洞扫描的基于 AST 的静态分析 | [PyPI](https://pypi.org/project/semgrep/) · [semgrep.dev](https://semgrep.dev) | ### 系统工具(首次运行时自动下载) | 工具 | 必需 | 许可证 | 用途 | 下载 | |------|:--------:|---------|---------|----------| | [Trivy](https://github.com/aquasecurity/trivy) | 是 | Apache-2.0 | 文件系统漏洞和机密信息扫描 | [GitHub Releases](https://github.com/aquasecurity/trivy/releases) · [trivy.dev](https://trivy.dev) | | [YARA](https://github.com/VirusTotal/yara) | 是 | BSD-3-Clause | 基于模式的恶意软件签名匹配 | [GitHub Releases](https://github.com/VirusTotal/yara/releases) · [Docs](https://virustotal.github.io/yara/) | REDACTS 在首次运行时会将 Trivy 和 YARA 二进制文件自动下载到 `~/.redacts/tools/`。可以通过 `REDACTS_TOOLS_DIR` 环境变量进行覆盖。 ### 可选工具(不自动安装) | 工具 | 许可证 | 用途 | 安装 | |------|---------|---------|---------| | [Docker](https://www.docker.com) | Apache-2.0 | 用于 DAST 阶段的容器 runtime | [Get Docker](https://docs.docker.com/get-docker/) | | [Docker Composehttps://docs.docker.com/compose/) | Apache-2.0 | 用于 DAST 的多容器编排 | [Install Compose](https://docs.docker.com/compose/install/) | | [Node.js](https://nodejs.org) | MIT | DAST(Playwright)和 Repomix 必需 | [Download](https://nodejs.org/en/download/) | | [Playwright](https://playwright.dev) | Apache-2.0 | 用于 DAST 测试的浏览器自动化 | `npm install` (在 `dast/` 中) | | [Repomix](https://github.com/yamadashy/repomix) | MIT | 用于 LLM 分析的压缩代码库快照 | `npm install -g repomix` | | [PHP CLI](https://www.php.net) | PHP License | PHP lint 语法检查(增强分析) | [Download](https://www.php.net/downloads) | | [Lizard](https://github.com/terryyin/lizard) | MIT | 圈复杂度分析 | `pip install lizard` | | [Radon](https://github.com/rubik/radon) | MIT | 可维护性指数指标 | `pip install radon` | ## 调查步骤 当 REDACTS 对被修改/新增的文件集进行深度调查时,它会按顺序执行 7 个步骤: | # | 步骤 | 功能描述 | |---|------|-------------| | 1 | IoC 扫描 | 将文件与 17 个已知的失陷指标进行匹配 | | 2 | 配置完整性 | 检查 `database.php`、`.htaccess`、`.user.ini`、`hook_functions.php` | | 3 | 安全扫描 | 对每个文件应用 57 条 PHP 安全规则 | | 4 | 敏感数据 | 检测 PHI、PII、凭证、API 密钥 | | 5 | 外部工具 | 运行 Semgrep、Trivy、YARA、PHP lint、Lizard、Radon | | 6 | 攻击向量 | 评估暴露于 34 个已知攻击向量的风险 | | 7 | 风险计算 | 根据所有发现计算综合风险评分 | ## 安全规则 REDACTS 在 `forensics/security_rules.py` 中定义了 57 条安全规则: | 范围 | 数量 | 严重级别 | 类别 | |-------|:-----:|----------|----------| | SEC001–SEC004 | 4 | CRITICAL | Eval 注入、exec 执行、SQL 注入、硬编码凭证 | | SEC010–SEC014 | 5 | HIGH | 动态函数调用、XSS、echo 输出、文件读写 | | SEC020–SEC023 | 4 | MEDIUM | LDAP 注入、XXE、SSRF、开放重定向 | | SEC030–SEC031 | 2 | LOW | 弱加密、弱随机数生成 | | SEC040–SEC041 | 2 | INFO | 通用后门签名 | | SEC060–SEC069 | 10 | CRITICAL–MEDIUM | INFINITERED IoC、调试信息暴露、信息泄露 | | SEC070–SEC079 | 10 | CRITICAL–HIGH | REDCap 更新日志披露的 CVE 模式 | | SEC080–SEC099 | 20 | CRITICAL–MEDIUM | 持久化、配置篡改、供应链指标 | ## 许可证 Copyright 2024–2026 The Adimension / Shehab Anwer 采用 Apache License, Version 2.0 授权。完整文本请参见 [LICENSE](LICENSE)。 ## 联系方式 - **Email:** · - **GitHub:** [github.com/The-Adimension/REDACTS](https://github.com/The-Adimension/REDACTS)
标签:CISA项目, Cloudflare, DNS 反向解析, INFINITERED, MITM代理, MITRE ATT&CK, Python, REDCap, SARIF, 临床研究安全, 代码安全, 后门检测, 基线差异分析, 安全扫描, 数字取证, 无后门, 无线安全, 时序注入, 漏洞枚举, 特征检测, 篡改检测, 网络安全审计, 聊天机器人, 自动化脚本, 请求拦截, 逆向工具