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安全, 异常检测, 机器学习, 测试用例, 红队行动, 蓝队分析, 逆向工具