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安全, 安全运维, 库, 应急响应, 蓝队分析, 越狱测试, 逆向工具