NullOperatorr/Detecting-Command-Injection-using-Snort
GitHub: NullOperatorr/Detecting-Command-Injection-using-Snort
该教学项目演示了如何在 Kali Linux 上配置 Snort 并编写自定义规则,以检测针对 DVWA 靶机的命令注入攻击流量。
Stars: 0 | Forks: 0
# 使用-Snort-检测命令注入
CyberLab-02
**摘要:**
在本次任务中,我们将涵盖网络安全中的防御和攻击方法。
Snort 是一个开源的网络入侵检测和防御系统 (NIDS/NIPS),它实时分析网络流量以识别恶意活动。它使用基于规则的签名、协议分析和数据包检查来检测威胁,使其成为安全运营和研究环境中广泛使用的工具。
命令注入是一种漏洞,攻击者通过该漏洞诱使应用程序在服务器上运行非预期的系统命令。它构成了严重的安全风险,因为成功的利用可能导致整个系统被完全攻破或完全的远程代码执行 (RCE)。
**任务:**
你有一台运行着易受攻击 Web 应用程序的脆弱机器,你想编写一条 Snort 规则来检测命令注入(例如:/etc/passwd)
**前置条件:**
在本次任务中,我将使用:
1- Kali 虚拟机用于配置 Snort。
2- Metasploitable 机器 (DVWA Security) 作为目标。
**步骤:**
1- 安装并配置 Snort。
2- 编写用于检测的规则。
3- 在 Metasploitable 上测试规则。
**解决方案:**
**1- 安装并配置 Snort:**
(a) 确保你的 Kali 是最新的。
```
sudo apt update
```
(b) 安装 Snort。
```
sudo apt install snort -y
```
注意:(-y) 表示对所有询问都回答 yes。
(c) 检查 Snort 版本,因为各个版本之间存在差异,例如,与 Snort 2 相比,版本 3 是 Snort 的一次全新重新设计。
你可以参考 (https://blog.snort.org/2020/08/snort-3-2-differences.html)
```
snort -v
```
(d) 你可以在以下路径 (/etc/snort) 找到 Snort 文件
```
cd /etc/snort
ls
```
注意:(snort.lua) 是你将要编辑的配置文件。
(e) 应用你的 IP 地址范围。
```
sudo mousepad /etc/snort/snort.lua
```
在这里我们将写入想要应用规则(检测/防御)的 IP 地址范围,对我而言它将是 192.168.232.0/24
```
sudo mousepad /etc/snort/snort.lua
```
然后保存。
(f) 现在让我们看看可以输入规则的文件。
```
ls -la /etc/snort
```
注意:(rules) 是包含所有 Snort 内置规则以及我们可以进行编辑的文件的文件夹。
```
ls -la /etc/snort/rules
```
注意:(local.rules) 是我们可以对其进行编辑并添加新规则的文件。
**2- 编写用于检测的 Snort 规则:**
关于在 Snort 中编写规则的一个提示:
(a) 在 (local.rules) 中,我们将输入以下规则:
```
sudo mousepad /etc/snort/rules/local.rules
alert tcp any any -> 192.168.232.130 80 (msg:"Possible Command Injection"; content:"/etc/passwd", nocase; sid:1000007;)
```
注意:这是一个非常基础的规则,你可以自定义并为其添加更多 header 以使其更具针对性。我只是在编写一个非常基础的规则。
注意:IP 地址 (192.168.232.130) 是我们稍后将进行演示的目标机器。
(b) 在配置文件 (snort.lua) 中应用 (local.rules)
```
sudo mousepad /etc/snort/snort.lua
rules = [[ include /etc/snort/rules/local.rules ]]
```
提示:确保语法正确,因为任何改动都可能导致 Snort 无法正常运作和检测。
然后保存。
(c) 现在让我们启动 Snort 引擎。
```
sudo snort -c /etc/snort/snort.lua -i eth0 -A alert_fast
```
注意:(alert_fast) 会立即为每个匹配的数据包生成一个带有最少信息的告警。
**3- 在 Metasploitable 上测试 Snort IDS 规则:**
(a) 从你的 Kali (192.168.232.130) 打开并启动 Metasploitable Web 应用程序
注意:Metasploitable 是一台由 Rapid7 创建的不安全的 Linux 虚拟机,用于练习渗透测试和学习漏洞利用。
转到 DVWA security 并将其设置为 low
注意:我们这里的重点是测试 Snort 规则,而不是深入研究 DVWA 上的 Web 应用程序测试,因此使用 Low 安全级别就可以了。
(b) 现在转到 Command Execution 并输入以下内容:
```
; cat /etc/passwd
```
(c) 让我们返回到 Snort:
已确认规则正在运行。
**经验教训:**
- 在 Kali Linux 上安装 Snort。
- 配置 HOME_NET 变量。
- 编写新的 Snort 规则(你可以参考 Snort 文档以获取规则编写指南)。https://docs.snort.org/welcome
- 使用 Metasploitable 虚拟机 https://sourceforge.net/projects/metasploitable/
- 测试命令注入漏洞。
确认我们的自定义 Snort 规则按预期工作。
这个真实的实验室环境有助于增强你的 SOC 技能。
**任务:**
你有一台运行着易受攻击 Web 应用程序的脆弱机器,你想编写一条 Snort 规则来检测命令注入(例如:/etc/passwd)
**前置条件:**
在本次任务中,我将使用:
1- Kali 虚拟机用于配置 Snort。
2- Metasploitable 机器 (DVWA Security) 作为目标。
**步骤:**
1- 安装并配置 Snort。
2- 编写用于检测的规则。
3- 在 Metasploitable 上测试规则。
**解决方案:**
**1- 安装并配置 Snort:**
(a) 确保你的 Kali 是最新的。
```
sudo apt update
```
(b) 安装 Snort。
```
sudo apt install snort -y
```
注意:(-y) 表示对所有询问都回答 yes。
(c) 检查 Snort 版本,因为各个版本之间存在差异,例如,与 Snort 2 相比,版本 3 是 Snort 的一次全新重新设计。
你可以参考 (https://blog.snort.org/2020/08/snort-3-2-differences.html)
```
snort -v
```
(d) 你可以在以下路径 (/etc/snort) 找到 Snort 文件
```
cd /etc/snort
ls
```
注意:(snort.lua) 是你将要编辑的配置文件。
(e) 应用你的 IP 地址范围。
```
sudo mousepad /etc/snort/snort.lua
```
在这里我们将写入想要应用规则(检测/防御)的 IP 地址范围,对我而言它将是 192.168.232.0/24
```
sudo mousepad /etc/snort/snort.lua
```
然后保存。
(f) 现在让我们看看可以输入规则的文件。
```
ls -la /etc/snort
```
注意:(rules) 是包含所有 Snort 内置规则以及我们可以进行编辑的文件的文件夹。
```
ls -la /etc/snort/rules
```
注意:(local.rules) 是我们可以对其进行编辑并添加新规则的文件。
**2- 编写用于检测的 Snort 规则:**
关于在 Snort 中编写规则的一个提示:
(a) 在 (local.rules) 中,我们将输入以下规则:
```
sudo mousepad /etc/snort/rules/local.rules
alert tcp any any -> 192.168.232.130 80 (msg:"Possible Command Injection"; content:"/etc/passwd", nocase; sid:1000007;)
```
注意:这是一个非常基础的规则,你可以自定义并为其添加更多 header 以使其更具针对性。我只是在编写一个非常基础的规则。
注意:IP 地址 (192.168.232.130) 是我们稍后将进行演示的目标机器。
(b) 在配置文件 (snort.lua) 中应用 (local.rules)
```
sudo mousepad /etc/snort/snort.lua
rules = [[ include /etc/snort/rules/local.rules ]]
```
提示:确保语法正确,因为任何改动都可能导致 Snort 无法正常运作和检测。
然后保存。
(c) 现在让我们启动 Snort 引擎。
```
sudo snort -c /etc/snort/snort.lua -i eth0 -A alert_fast
```
注意:(alert_fast) 会立即为每个匹配的数据包生成一个带有最少信息的告警。
**3- 在 Metasploitable 上测试 Snort IDS 规则:**
(a) 从你的 Kali (192.168.232.130) 打开并启动 Metasploitable Web 应用程序
注意:Metasploitable 是一台由 Rapid7 创建的不安全的 Linux 虚拟机,用于练习渗透测试和学习漏洞利用。
转到 DVWA security 并将其设置为 low
注意:我们这里的重点是测试 Snort 规则,而不是深入研究 DVWA 上的 Web 应用程序测试,因此使用 Low 安全级别就可以了。
(b) 现在转到 Command Execution 并输入以下内容:
```
; cat /etc/passwd
```
(c) 让我们返回到 Snort:
已确认规则正在运行。
**经验教训:**
- 在 Kali Linux 上安装 Snort。
- 配置 HOME_NET 变量。
- 编写新的 Snort 规则(你可以参考 Snort 文档以获取规则编写指南)。https://docs.snort.org/welcome
- 使用 Metasploitable 虚拟机 https://sourceforge.net/projects/metasploitable/
- 测试命令注入漏洞。
确认我们的自定义 Snort 规则按预期工作。
这个真实的实验室环境有助于增强你的 SOC 技能。标签:rizin, 命令注入检测, 安全实验, 网络安全, 网络流量分析, 隐私保护