一、实验内容:
本实验的学习目标是让学生获得有关漏洞以及针对这些漏洞的攻击的第一手经验。聪明人从错误中学习。在安全教育中,我们研究导致软件漏洞的错误。研究过去的错误不仅有助于学生理解为什么系统容易受到攻击,为什么“看似良性”的错误会变成灾难,以及为什么需要许多安全机制。更重要的是,它还帮助学生了解漏洞的常见模式,从而避免将来犯类似的错误。此外,使用漏洞作为案例研究,学生可以学习安全设计、安全编程和安全测试的原则。
TCP/IP协议中的漏洞代表了协议设计和实现中的一种特殊类型的漏洞;它们提供了一个宝贵的教训,说明了为什么安全性应该从一开始就设计好,而不是事后才加上。此外,研究这些漏洞有助于学生了解网络安全的挑战以及为什么需要许多网络安全措施。在本实验中,学生将对TCP进行几个攻击。本实验涵盖以下主题:
- TCP协议
- TCP SYN洪水攻击和SYN cookie
- TCP重置攻击
- TCP会话劫持攻击
- 反向shell
二、实验步骤与结果
Task1: SYN Flooding Attack
1.检查半开连接的等待队列有多长。
2.关闭syncookies。
Task1.1: Launching the Attack Using Python
1.编写代码如下。
2.为代码赋予执行权限,并且执行代码在攻击机上进行攻击。
3.在被攻击的容器中使用netstat检查连接的情况,可以看到有很多的SYN_RECV半连接。
4.尝试远程登陆,发现仍然可以进行远程登录。
5.尝试清除TCP缓存。
6.仍然可以进行远程连接。
7.添加并行的执行synflood.py的数量,当添加到5个时,攻击成功。
Task 1.2: Launch the Attack Using C
1.编译运行那个synflood.c代码,并且执行代码对容器进行攻击。
2.使用netstat检查连接情况,观察到充满了SYN_RECV半连接。
3.可以看到,仅执行一个C程序既可以达到攻击效果:
分析:不同于Python,C编译的代码拥有更高的速度,不会受到TCP缓存设置的影响,几乎不用考虑会话建立抢不过其他正常用户。
4.将syncookies设置1。
5.再次进行攻击。观察结果。
6.可以看到,远程连接成功。
Task 2: TCP RST Attacks on telnet Connections
1.进行远程连接的同时使用wireshark进行监听。观察协议为TELNET的包。
2.找到最新的TELNET包。从中获取攻击需要的信息。
3.使用user2的容器对10.9.0.5进行远程连接。可以看到在攻击运行之后,连接断开。
4.关键代码展示。
Task 3: TCP Session Hijacking
1.再次进行远程连接,观察相关信息。
2.代码展示。
3.在user2容器中对10.9.0.5进行远程连接,可以看到在被攻击之后输出了我们想要的信息。说明攻击成功。
Task 4: Creating Reverse Shell using TCP Session Hijacking
1.在容器user1中进行远程连接,观察最新的数据包中的相关信息。
2.关键代码展示。
3.执行攻击代码。
4.监听9090端口,可以看到成功反弹shell,输入命令之后也成功执行。