网络拓扑:
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 任务。