网络拓扑:

Task 1: SYN Flooding Attack
- 收到攻击之前,在Victim主机查看网络连接的状态:

在攻击之前使用User1主机(10.9.0.6)访问Victim(10.9.0.5)主机的
- Telnet服务:

Task 1.1: Launching the Attack Using Python
- 在Atacker上建立文件attack-1.py,文件内容如图所示:

- 添加执行权限:

在Attacker主机上使用该程序进行攻击,在Victim主机上再次使用netstat -nat命令
- 查看网络连接状态发现大量SYN_RECV连接:

4.在User2主机上访问Victim(10.9.0.5)的Telnet服务:

刚开始以为访问超时。
但是经过一段时间之后还是建立了连接:

多次尝试,均不成功。
通过上网查阅资料可知,这个过程是不太可能成功的:
因为该过程中Victim发送的SYN+ACK包被网关收到后会发送RST包给Victim,之后Victim会清除队列里的对应项。所以这就导致只有脚本发送数据包的速度足够快该实验才能成功。C语言的速度足够快,是可以成功的,但是Python脚本发送数据包的速度太慢了,所以不足以成功。
Task 1.2: Launch the Attack Using C
- 在虚拟机上编译synflood程序:

- 在Attacker主机上使用该程序进行攻击:

- 在Victim主机上再次使用netstat -nat命令查看网络连接状态发现大量SYN_RECV连接:

在User2主机上访问Victim(10.9.0.5)的
- Telnet服务:

发现访问超时。
Please compare the results with the one using the Python program, and explain the reason behind the difference:
因为该过程中Victim发送的SYN+ACK包被网关收到后会发送RST包给Victim,之后Victim会清除队列里的对应项。所以这就导致只有脚本发送数据包的速度足够快该实验才能成功。C的速度足够快可以成功,但是Python脚本发送数据包的速度太慢了,所以不足以成功。
Task 1.3: Enable the SYN Cookie Countermeasure
1.启用syncookie保护,将docker-compose.yaml文件中的对应项进行修改,如下所示:

2.在dcup窗口按Ctrl+C停止所有容器:

3.再次dcup就可以重新创建容器
使其生效:

4.在Attacker主机上使用synflood程序进行攻击:

- 在User2主机上访问Victim(10.9.0.5)的Telnet服务:

发现在攻击期间,即使使用ip tcp_metrics flush命令清空记忆,User2也可以建立连接。
综上所述,通过执行以上操作,我们完成了SYN Flooding Attack任务。
Task 2: TCP RST Attacks on telnet Connections
攻击脚本:

- 开启wireshark监听网卡:

- 在User1(10.9.0.6)上发起对Victim(10.9.0.5)的telnet连接:

3.在wireshark上方输入过滤条件:
`tcp.dstport==23&&ip.dst==10.9.0.5.:

4.找到User1发送的最后一个包的ACK,可以发现源端口号、seq、ack:

5.然后将端口号和seq以及ack号填入脚本:

之后在Atacker主机上发起攻击,
- 此时在User1主机上发现连接已经断开了:

7.Wireshark显示如下:

综上所述,通过执行以上操作,我们完成了TCP RST Attacks on telnet Connections任务。
Task 3: TCP Session Hijacking
攻击脚本:

- 在用户机上telnet Victim:

- wireshark监听查看srcport、seq、ack:

填写攻击脚本,
- 如下所示:

- Attacker 开始攻击:

- 在Victim(10.9.0.5)上查看效果:

Wireshark
- 捕获结果:

综上所述,通过执行以上操作,我们完成了Task 3: TCP Session Hijacking任务。
Task 4: Creating Reverse Shell using TCP Session Hijacking
- 开启wireshark监听telnet连接 (其余步骤和task3相同,不再赘述)

- 填写攻击脚本:

- 在Attacker主机上攻击:

- 可以看到在Attacker主机(10.9.0.1)上有了和Victim的连接,成功拿到shell:

重复上述过程,
- 只是这次将配置文件修改如下:

- 可以看到在User2主机(10.9.0.7)上有了和Victim的连接,成功拿到shell:

综上所述,通过执行以上操作,我们完成了Creating Reverse Shell using TCP Session Hijacking 任务。