vaibhav-711/AuraDFIR

GitHub: vaibhav-711/AuraDFIR

AuraDFIR 是一个基于 Elastic Stack 构建的自托管 Web 日志取证与应急响应工作台,帮助用户从海量访问日志中快速检测攻击、关联攻击时间线并回答「是否被入侵」的问题。

Stars: 4 | Forks: 0

# Aura DFIR **一个开源的 Web 服务器日志分析与应急响应平台,基于 Elastic Stack 构建。** ## 什么是 Aura DFIR? Aura DFIR 是一个自托管的调查工作台,专为那些曾经接过一个 4 GB 的 `access.log` 并被问到*"我们被黑了吗?"*的人而设计。你只需创建一个**案件**,上传原始的 Apache / Nginx / IIS 日志(或负载均衡器/代理日志——见下文),Aura DFIR 就会将它们索引到 Elasticsearch 中, 通过分层的**检测引擎**(攻击特征、暴力破解检测、 枚举、数据泄露异常值)对它们进行扫描,使用 **AbuseIPDB 信誉评分**丰富每个攻击者 IP 的信息, 并重建一个**可视化的、基于会话的攻击时间线**——侦察 → 利用 → 后渗透 → 数据泄露——你可以将其作为图表查看或导出到你的报告中。 它专为以下人群构建: - 负责处理 Web 服务器入侵事件的 **DFIR 分析师** - 对历史访问日志进行追溯狩猎的 **SOC 团队** - 想要超越 `grep` 但又不需要完整 SIEM 的 **系统管理员 / 开发者** - 学习 Web 攻击取证的学生与 **CTF 选手** 一切均在本地运行。除了你明确提交给 AbuseIPDB 的 IP 地址外,没有任何日志数据会离开你的 机器。 ### 重要提示:检测的实际工作原理(无 AI/ML) Aura DFIR **不**使用 AI、机器学习或 LLM 来决定什么是恶意的。每一项 发现都来自三种完全透明、确定性的方法之一: 1. **特征匹配** —— 约 25 类已知的恶意模式(SQL 注入、XSS、Webshell、 Log4Shell 等),以纯正则表达式编写。参见 `app/analysis/rules.py`。 2. **行为阈值** —— 作为 Elasticsearch 聚合运行的纯粹计数规则(例如"5 分钟内来自同一 IP 的 20+ 次登录失败 = 暴力破解","单个 IP 提供了 100 倍于中位数的 字节数 = 可能的数据泄露")。 3. **基础统计** —— 对每小时流量进行 z-score 异常检测(没有复杂的数学运算,只有 均值/标准差)。 这是一个深思熟虑的设计选择,而不是限制:每一项发现都可以追溯到 你在报告中可以指出的特定、可读的规则或数字——没有任何东西是你无法解释或辩护的黑盒判断。如果你想在这些发现之上实现 AI 辅助摘要, 它已在路线图中(见下文)作为可选的附加组件,而不是核心引擎的替代品。 ## 技术说明 | 层级 | 技术 | |---|---| | API + Web UI | Python 3.11+、FastAPI、Jinja2(服务端渲染,零构建步骤) | | 应用数据库 | 通过 SQLAlchemy 使用 SQLite(用户、会话、案件、API 密钥、IP 信誉缓存) | | 日志存储 / 搜索 | Elasticsearch 8.x(每个案件一个索引,ECS 风格的字段名) | | 可视化(可选) | 指向 `auradfir-*` 索引的 Kibana | | 认证 | 密码 (PBKDF2-SHA256) + 强制 TOTP 2FA (RFC 6238)、基于数据库的会话 | | 威胁情报 | AbuseIPDB v2 API,支持多密钥池、每日配额跟踪和本地信誉缓存 | ### 架构 ``` ┌────────────────────────────────────────────┐ raw logs ──parse──▶│ Ingest (combined / vhost / IIS W3C → ECS) │ └───────────────┬────────────────────────────┘ ▼ bulk ┌──────────────────────────────┐ │ Elasticsearch │◀── Kibana (optional) │ auradfir-case-logs │ │ auradfir-case-findings │ └───────┬──────────────┬───────┘ │ │ ┌─────────────▼───┐ ┌──────▼──────────────┐ │ Detection engine│ │ Timeline correlation │ │ sigs + aggs + │ │ sessionize, phase │ │ statistics │ │ tagging, export │ └─────────────┬───┘ └──────┬──────────────┘ ▼ ▼ ┌──────────────────────────────┐ ┌────────────┐ │ FastAPI web UI │────▶│ AbuseIPDB │ │ auth+2FA · cases · admin │ │ key pool │ └──────────────────────────────┘ └────────────┘ ``` ## 功能 1. **用户与会话管理** —— 管理员管理的用户、PBKDF2 密码哈希、带有过期时间的基于数据库的 会话 token、带有离线 QR 码配置的强制 TOTP 2FA、管理员 MFA 重置。 2. **案件管理** —— 带有严重性/状态/备注的案件;每个案件拥有自己的一对 ES 索引,因此证据绝不会交叉污染。 3. **日志摄取(ELK 后端)** —— 直接在浏览器中上传文件,或通过 CLI/exe 上传; 支持 Apache/Nginx 组合格式(+vhost)和 IIS W3C 格式的解析器,并规范化为 ECS 字段名。 4. **检测引擎** —— 三个层级(参见 [docs/ANALYSIS_AND_CORRELATION.md](docs/ANALYSIS_AND_CORRELATION.md)): **25 种特征分类**(SQLi、NoSQL、操作系统命令及模板注入、Shellshock、XSS、 LFI/路径遍历、RFI、SSRF、XXE、反序列化、Webshell、Log4Shell、Spring4Shell、Struts OGNL、CRLF、开放重定向、访问绕过、敏感文件访问、CVE/组件探测、 扫描器 UA 等)、行为聚合(暴力破解、404 枚举、数据泄露字节 异常值、危险的 HTTP 方法、罕见的 user-agent)以及 z-score 流量激增检测 —— 全部 基于规则,无 AI/ML。一个方言安全的规则列表同时驱动 ES 引擎和 Python 标记器,由 `tests/test_rules.py` 强制执行。 5. **可视化时间线关联** —— 将事件分组到攻击者会话中(IP + user-agent, 30 分钟间隔),用匹配的特征标记每个事件,将 会话分类为攻击阶段, 并渲染一个**泳道图**(每个攻击者 IP 一条泳道,条形按阶段着色)外加 攻击链和会话表格。也可导出为 JSON。 6. **统计模块** —— 每个案件的 Top-N(用户可选择 10/20/50/100/200)排名,包括源 IP、user-agent、URL、域名、引用来源、方法和状态代码,以及按字节数统计的 IP、 基数和随时间变化的流量图表。图表为**离线内联 SVG / CSS 条形图**(无需 CDN,可在气隙环境和 exe 中运行)。导出为**带有原生图表的 Excel (.xlsx)**或 JSON。 7. **参数(字段)分析** —— 声明服务器类型(Apache / Nginx / IIS,外加 AWS ALB / HAProxy / Squid 负载均衡器及代理),Aura DFIR 将从粘贴的文本、 上传的文件或案件的索引事件中生成一份**预期参数与实际存在参数的对比 表**(核心 / 建议 / 可选),并标记**差异**:缺少时区、 不一致/不可解析的时间戳、私有/环回客户端 IP(你记录的是 代理而不是客户端)、IIS 查询字符串日志记录被禁用、核心字段为空、格式错误 (低解析率)等。参见 [docs/PARAMETER_ANALYSIS.md](docs/PARAMETER_ANALYSIS.md)。 8. **AbuseIPDB 批量信誉查询** —— 根据 AbuseIPDB 检查案件中每个唯一的源 IP; 汇集多个 API 密钥并进行基于密钥的每日配额统计,在遇到 429 时自动轮换, 并带有 24 小时本地缓存,因此你绝不会浪费配额去重复检查同一个 IP。 9. **管理员仪表板** —— 管理用户(创建 / 禁用 / 重置 MFA)和 AbuseIPDB 密钥 (添加 / 禁用 / 删除,实时使用量与配额对比条,30 天使用历史)。 10. **单文件可执行程序** —— 一个经过混淆的、独立的 `AuraDFIR.exe`:双击即可 运行,无需安装 Python 或 pip。它甚至会为你管理 Elasticsearch(见下文)。 ## 设置 有两种方式可以运行 Aura DFIR。**如果你不是开发者,只是想试用它, 请使用选项 A。**选项 B 适用于熟悉终端并希望直接运行/修改 Python 源代码的人。 无论哪种方式,你都需要一个配套的软件:**Elasticsearch**,它是用于存储和搜索日志 数据的地方。你**不**需要 Docker,也**不**需要单独安装 Java (Elasticsearch 自带了 Java 环境)。 ### 选项 A —— 只想试用?(无需编码) 这是可执行程序(`AuraDFIR.exe`),由这同一份源代码构建而成。它是一个普通的 Windows 程序 —— 就像你下载并运行任何获取到的 `.exe` 文件一样。 1. **获取文件。** 从项目的 GitHub **Releases** 页面下载 `AuraDFIR.exe`(维护者 在那里构建并发布它 —— 你不需要自己构建任何东西)。把它放在 它自己的文件夹里,例如 `C:\AuraDFIR\`。 2. **创建你的管理员账户。** 打开该文件夹,按住 Shift 键,右键单击空白处,并 选择 **"Open PowerShell window here"**(在较新的 Windows 上:"Open in Terminal")。一个黑/蓝 窗口将会打开 —— 这就是你输入命令的地方。输入以下内容并按回车键: .\AuraDFIR.exe --create-admin admin 它会要求你输入两次密码(输入时什么都不会显示 —— 这对于 密码来说是正常的)。然后它会显示一个 QR 码图像文件。打开它,并使用手机上的验证器应用 (Google Authenticator、Microsoft Authenticator、Authy —— 这些都可以)扫描它。这 将设置强制的双重验证登录。 3. **启动程序。** 在同一个窗口中,输入: .\AuraDFIR.exe **当你第一次执行此操作时**,它会问一个关于 Elasticsearch 的一次性问题: 选择一项: * 已经安装了? 输入包含 bin\elasticsearch.bat 的文件夹 * 在别处运行? 输入其 URL (例如 http://localhost:9200) * 都没有? 直接按回车键下载并进行设置 如果你还没有 Elasticsearch,**只需按回车键**。它会自动下载并配置 (一次性下载,几百 MB —— 这需要互联网连接 并可能需要几分钟时间)。在以后的启动中,你**不会**再被问到这个问题 —— 它会被 记住,并且从现在起每次都会自动启动。 4. **使用它。** 你的网络浏览器会自动打开应用程序。使用第 2 步中的用户名/密码 登录,然后输入你的验证器应用中的 6 位代码。你将进入 仪表板。 5. **使用附带的样本进行尝试。** 点击 **Cases → New**,给它随便起个名字,然后创建 它。打开案件,并在 **"Ingest logs"** 框中,上传该存储库中自带的位于 `samples\sample_access.log` 的示例日志文件(它包含一个用于演示的逼真、安全、模拟的 攻击)。点击 **Upload & index**,然后点击 **▶ Run analysis engine**。 探索 **Findings**、**📊 Statistics**、**🔧 Parameters** 和 **🕓 Timeline** 页面。 6. **要停止它**,只需关闭那个 PowerShell 窗口(这也会停止 Elasticsearch)。要以后再次 启动,重新打开该文件夹并运行 `.\AuraDFIR.exe` —— 这次不会有任何设置问题。 这就是面向非技术用户的全部体验。下面的所有内容都是针对想要 直接运行或修改 Python 源代码的人。 ### 选项 B —— 从源代码运行(面向开发者) 你需要先安装 **Python 3.11 或更高版本**(如果没有,请从 python.org 获取; 在安装程序上,勾选 "Add Python to PATH")。 ``` # 1. Get the code git clone https://github.com//AuraDFIR.git cd AuraDFIR # 2. Create an isolated Python environment for this project ("virtual environment") # — this keeps Aura DFIR's dependencies separate from anything else on your machine. python -m venv .venv .\.venv\Scripts\Activate.ps1 # (Linux/macOS instead: source .venv/bin/activate) # Your terminal prompt should now start with "(.venv)" — that confirms it worked. # 3. Install the Python packages Aura DFIR needs pip install -r requirements.txt # 4. Copy the example settings file and open .env in a text editor to set SECRET_KEY # to any long random string (this protects login sessions — don't skip it). copy .env.example .env ``` 现在启动 Elasticsearch。保持此窗口打开 —— 在你使用应用程序时,它需要在后台 持续运行: ``` powershell -ExecutionPolicy Bypass -File scripts\setup_elasticsearch.ps1 ``` 第一次运行会下载 Elasticsearch(约 600 MB,仅限一次)并启动它。等到你看到 它提示已启动后再继续。(替代方案:如果你已经在某处运行了 Elasticsearch, 跳过这一步,只需在 `.env` 中设置 `ES_URL` 指向它 —— 参见 [docs/RUN_WITHOUT_DOCKER.md](docs/RUN_WITHOUT_DOCKER.md)。) 打开**第二个**终端窗口(同一个文件夹,同一个虚拟环境 —— 在这个新窗口中 也要重复第 2 步的 `Activate.ps1` 行),并运行: ``` python scripts\create_admin.py --username admin python -m uvicorn app.main:app --reload ``` 第一条命令创建你的登录名,并显示一个用于验证器应用扫描的 QR 码; 第二条命令启动 Web 服务器。在浏览器中打开 **http://127.0.0.1:8000**,登录,并输入 2FA 验证码。 ### 典型工作流(两种选项) 1. **Cases → New** —— 创建一个案件,记下其 ID(显示在 URL 中,例如 `/cases/1` → ID 为 `1`)。 2. 在案件的 "Ingest logs" 框中**上传日志文件**(或通过 CLI:见下文)。 3. 点击 **▶ Run analysis engine** 以生成调查结果。 4. 点击 **📊 Statistics** 和 **🕓 Timeline** 以可视化探索结果。 5. 在 **Admin → API Keys** 上,添加 AbuseIPDB API 密钥(在 abuseipdb.com 免费获取),并批量检查 案件中攻击者 IP 的信誉评分。 6. 使用 **🔧 Parameters** 检查你的日志格式是否缺少重要字段。 步骤 2–3 的命令行等效操作(对脚本或超大文件很有用): ``` python scripts/ingest_logs.py --case 1 --file /evidence/access.log python scripts/run_analysis.py --case 1 python scripts/build_timeline.py --case 1 --ip 203.0.113.7 --out timeline.json ``` ## 项目布局 ## 打包为独立可执行文件 仅当你是一名正在构建发布版本的管理员时才需要此操作 —— 普通用户应直接 从 Releases 下载 exe(上文的选项 A)。 ``` pip install -r requirements.txt -r requirements-build.txt python build/build.py # → dist/AuraDFIR.exe (obfuscated, single file) ``` 应用程序代码使用 PyArmor 进行混淆,然后 PyInstaller 将 CPython 和所有依赖项 打包到一个文件中。完整的详细信息及注意事项(防病毒软件的误报、代码签名)请参见 [docs/BUILD_EXE.md](docs/BUILD_EXE.md)。 ## 安全说明 / 投入生产前的安全加固 TODO - 在 `.env` 中设置强壮的 `SECRET_KEY`;在 TLS(反向代理)后提供服务。 - 在更改状态的表单上使用 CSRF token(尚未实现)。 - 对 `/auth/login` 进行速率限制。 - 本地开发环境中禁用了 ES 安全设置(参见 `scripts/setup_elasticsearch.ps1`);对于任何 真实环境,请启用身份验证并在 `.env` 中设置 `ES_USER`/`ES_PASSWORD`。 ## 路线图(尚未构建) - 错误日志和 WAF/CDN 日志解析器;多源关联 - 在 AbuseIPDB 之外增加 GreyNoise / OTX / CISA KEV 情报丰富 - **可选的 AI/LLM 辅助发现摘要**(通过 LM Studio 进行本地处理,或通过托管 API) —— 这是一个提议中的未来附加组件,用于将发现转化为通俗易懂的英文报告文本。目前尚未实现; 上面的核心检测引擎现在是,且将来也会是,完全基于规则的。 - 从案件 + 时间线生成报告(DOCX/PDF) ## 许可证 MIT —— 参见 [LICENSE](LICENSE)。 ## 贡献 欢迎提交 PR。在提交解析器或规则更改之前,请运行 `tests/` 中的测试套件, 并在 PR 正文中描述新的检测规则。
标签:CISA项目, Elasticsearch, PB级数据处理, Web安全, 安全运维, 库, 应急响应, 蓝队分析, 越狱测试, 逆向工具