3urhan/OWASP-Web-Attack-Detection-using-Suricata
GitHub: 3urhan/OWASP-Web-Attack-Detection-using-Suricata
基于 Suricata 规则引擎检测 OWASP Top 10 Web 攻击的入侵检测系统实验项目。
Stars: 1 | Forks: 0
Suricata IDPS:OWASP Web 攻击检测
项目状态:已完成(2026年1月)
类型:学术毕业设计 / 安全实验室
📋 项目概述
本项目使用 Suricata 实现了一套入侵检测与防御系统(IDPS),旨在检测和分析 OWASP Top 10 中定义的常见 Web 攻击。
该系统部署在受控实验室环境中,用于监控恶意流量模式,包括 SQL 注入 (SQLi)、跨站脚本攻击 (XSS)、本地文件包含 (LFI) 和网络扫描。目标是演示基于特征的检测如何识别可疑模式并为事件响应记录警报。
🎯 目标
在 Ubuntu Linux 服务器上部署 Suricata IDS。
配置网络接口和自定义规则集 (local.rules)。
使用 Kali Linux 对易受攻击的目标(Metasploitable 2/DVWA)模拟攻击。
分析日志(fast.log, eve.json)以验证检测准确性。
🏗️ 实验室架构与工具
环境设置
实验室由三台运行在 Host-Only 内部网络上的虚拟机组成:
攻击者:Kali Linux(流量生成、Nmap、Curl、Nikto)。
目标:Metasploitable 2(托管 DVWA - Damn Vulnerable Web App)。
IDS/监控器:Ubuntu Linux(运行 Suricata 引擎)。
技术栈
引擎:Suricata IDS (v7.x+)
规则集:Emerging Threats Open Ruleset + 自编规则
操作系统:Ubuntu Linux, Kali Linux
攻击工具:Nmap, Curl, Nikto, Burp Suite(手动 Payload)
⚙️ 配置与实现
1. 安装
Suricata 通过 OISF 稳定仓库安装,以确保具备最新的检测能力。
Bash
sudo add-apt-repository ppa:oisf/suricata-stable
sudo apt-get update
sudo apt install suricata
2. 网络配置 (suricata.yaml)
配置经过调整,以监控特定的实验室子网 (192.168.213.0/24)。
接口:enp0s3(已启用混杂模式)
HOME_NET:192.168.213.3
3. 自定义检测规则 (local.rules)
除了标准规则外,我还设计了特定的特征来检测模拟攻击。以下是本项目开发的自定义规则片段:
网络扫描检测:
suricata
alert tcp any any -> any any (msg:"Nmap Scan Detected"; content:"Nmap"; nocase; sid:2000010; rev:1;)
alert tcp any any -> any any (msg:"Nikto Scanner Detected"; content:"Nikto"; nocase; sid:2000021; rev:1;)
SQL 注入 (SQLi) 检测:
suricata
alert tcp any any -> any 80 (msg:"Possible SQL Injection - Quote"; content:"'"; sid:2000030; rev:1;)
alert tcp any any -> any 80 (msg:"Possible SQL Injection - UNION"; content:"UNION"; nocase; sid:2000032; rev:1;)
alert http any any -> any any (msg:"DVWA SQL Injection OR 1=1 Detected"; flow:to_server,established; content:"or 1=1"; http_uri; nocase; sid:7000005; rev:1;)
跨站脚本攻击 (XSS) 检测:
suricata
alert http any any -> any any (msg:"DVWA Reflected XSS Detected"; flow:to_server,established; content:"<"; http_uri; nocase; classtype:web-application-attack; sid:7000001; rev:1;)
alert http any any -> any any (msg:"DVWA Stored XSS Detected"; flow:to_server,established; content:"<"; http_client_body; nocase; sid:7000002; rev:1;)
远程命令执行 (RCE):
suricata
alert tcp any any -> any 80 (msg:"Linux Command ls"; content:"ls"; sid:2000041; rev:1;)
alert tcp any any -> any any (msg:"Reverse Shell /bin/sh"; content:"/bin/sh"; nocase; sid:2000050; rev:1;)
#⚔️ 攻击模拟与分析
*攻击 1:SQL 注入
方法:向 DVWA 输入手动注入以及使用自动化工具。
Payload:' OR 1=1 # 和 UNION SELECT 语句。
观察:Suricata 基于对 HTTP URI 中 SQL 关键字和引号字符的检测触发了警报。
*攻击 2:跨站脚本攻击 (XSS)
方法:通过 URL 参数进行反射型 XSS,以及通过输入表单进行存储型 XSS。
命令:curl -e "" http://target-ip/
观察:IDS 成功解析了 HTTP 标头和正文,识别出了