RTPritee/PSALM-A-Lifecycle-Integrated-Predictive-Security-Analytics-Framework
GitHub: RTPritee/PSALM-A-Lifecycle-Integrated-Predictive-Security-Analytics-Framework
PSALM 是一个结合可解释风险评分与实时拦截的 Web 应用层安全框架,能检测 SQL 注入、XSS、暴力破解等攻击并提供科学评估复现能力。
Stars: 0 | Forks: 0
PSALM 是一个应用层 Web 安全框架,使用 Python 3.11、Django 和 scikit-learn 构建。它通过可解释的风险评分机制来检测 SQL 注入、XSS、暴力破解、撞库和扫描攻击,并使用按源 IP 分组的交叉验证在超过 97,000 个标记的 HTTP 请求上进行了评估。
# PSALM — Web 应用的预测性安全分析
本仓库包含了 PSALM 毕业论文的**完整系统**,
分为两部分,且它们共享完全相同的评分算法:
| 部分 | 文件夹 | 功能描述 |
|------|--------|--------------|
| **1. 评估** | `evaluation/` | 使用真实的 CSIC 2010 数据和生成的行为测试平台,复现第 5 章中的每一个指标和全部 9 张图表。 |
| **2. 实时系统** | `psalm_django/` | 将 PSALM 作为真实的 Django 中间件:对每个 HTTP 请求进行评分,记录到 SQL 数据库中,显示实时仪表板,并拦截高风险流量。用于在您的演示中进行实时演示。 |
这两个部分在同一个仓库中运行。您可以在同一个项目中展示第 1 部分(科学评估)和第 2 部分(可运行的系统)。
```
psalm-system/
├── requirements.txt
├── data/ <- put csic_database.csv here
├── evaluation/ <- PART 1: offline reproduction
│ ├── config.py constants, weights, thresholds, seeds
│ ├── psalm.py PSALM scoring (Eq 1-4)
│ ├── features.py CSIC parsing + feature extraction
│ ├── testbed.py behavioural traffic generator
│ ├── corpus.py builds the unified corpus
│ ├── evaluate.py grouped CV, calibration, metrics, NB test
│ ├── figures.py the 9 figures
│ ├── run_all.py <- run this
│ └── outputs/ results.json + plotdata.npz + fig_*.png
├── psalm_django/ <- PART 2: live system
│ ├── manage.py
│ ├── psalm_project/ Django settings / urls
│ └── psalm_engine/ the PSALM app (middleware, models, views, dashboard)
└── docs/presentation_outline.md
```
## 0. 前置条件
- Python 3.10+ 和 VS Code(包含 Python 扩展)。
- 将 CSIC 2010 文件放置在 `data/csic_database.csv`。
## 1. 在 VS Code 中打开并创建虚拟环境
```
# 来自 psalm-system/ folder
python -m venv .venv
# Windows:
.venv\Scripts\activate
# macOS / Linux:
source .venv/bin/activate
pip install -r requirements.txt
```
在 VS Code 中:**Ctrl/Cmd+Shift+P → Python: Select Interpreter →** 选择 `.venv`。
## 第 1 部分 — 复现评估与图表
```
# 来自 psalm-system/
python -m evaluation.run_all
```
这将执行以下操作(约 1-3 分钟):
1. 加载真实的 CSIC 2010 内容并生成行为测试平台(随机种子 = 42)。
2. 对 PSALM 进行评分,并在相同的特征上训练 Logistic Regression + Random Forest。
3. 运行按 IP 分组的交叉验证(5 折 × 3 次重复),将每个模型校准至
1% 的误报率工作点,并计算所有指标。
4. 将结果和图表写入 `evaluation/outputs/`。
您应该会看到此表格(与论文中完全一致):
```
Model F1 Recall Prec FPR AUC
PSALM 0.568 0.402 0.967 0.0101 0.716
LogReg 0.603 0.437 0.970 0.0100 0.795
RF 0.823 0.719 0.963 0.0205 0.948
```
**输出结果** (`evaluation/outputs/`):
`fig_roc.png`, `fig_pr.png`, `fig_perclass.png`, `fig_confusion.png`,
`fig_scoredist.png`, `fig_sensitivity.png`, `fig_featimp.png`,
`fig_payloadlen.png`, `fig_latency.png`,以及包含所有数据的 `results.json`。
## 第 2 部分 — 运行实时 PSALM 系统
在 `psalm_django/` 中打开一个终端:
```
cd psalm_django
python manage.py migrate # creates the SQLite database + tables
python manage.py createsuperuser # optional: to browse logs in /admin/
python manage.py runserver
```
现在打开:
- **仪表板:** http://127.0.0.1:8000/psalm/ ← 在演示中保持此页面可见
- **演示应用:** http://127.0.0.1:8000/app/ (搜索框 + 登录表单)
- **管理/日志:** http://127.0.0.1:8000/admin/ (SQL 审计追踪记录)
### 自动驱动流量(最适合演示)
在**第二个**终端中(激活虚拟环境,保持服务器运行):
```
cd psalm_django
python manage.py simulate_attacks --reset
```
这会向服务器发送正常浏览、SQL 注入、XSS 以及暴力破解突发流量。
观察仪表板:正常流量保持在 **Allow**,注入流量跃升至 **Monitor/Block**,随着单 IP
失败登录和速率特征数值的上升,暴力破解突发流量会攀升至 **Block**。被拦截的请求将收到 HTTP 403 状态码以及按特征给出的解释——这是第 5 章中强调的可审计性重点。
### 或者手动进行攻击测试
前往 http://127.0.0.1:8000/app/ 并在搜索框中输入:
| 输入内容 | 预期区间 |
|-------|---------------|
| `red shoes` | ALLOW |
| `' OR '1'='1 --` | MONITOR / BLOCK |
| `` | MONITOR / BLOCK |
| 重复输入错误密码登录约 10 次 | 攀升至 BLOCK |
### 切换至 PostgreSQL 或 MySQL(可选)
编辑 `psalm_django/psalm_project/settings.py` 中的 `DATABASES`(已提供注释代码块),
执行 `pip install psycopg2-binary`(或 `mysqlclient`),然后再次运行
`python manage.py migrate`。
### 仅监控模式
如果需要仅进行评分和记录而不实际拦截(适用于平滑过渡上线),请在 `settings.py` 中设置
`PSALM["ENFORCE"] = False`。
## 这两个部分如何保持一致
这两个部分的评分算法是完全相同的:
- `evaluation/psalm.py` + `evaluation/config.py` (离线)
- `psalm_django/psalm_engine/scoring.py` + `settings.py` 中的 `PSALM` 字典 (实时)
相同的权重 (w),相同的饱和阈值 (θ),相同的 λ,相同的 τ,相同的区间分界线。
唯一的区别是,实时系统是直接从真实的 HTTP 请求中计算这五个特征,而不是从 CSIC 数据行中计算。
有关建议的演讲结构,请参阅 `docs/presentation_outline.md`。
标签:Apex, CISA项目, Django, DOE合作, WAF, Web安全, 异常检测, 机器学习, 测试用例, 红队行动, 蓝队分析, 逆向工具