2023网络安全作业chap0x05
2023年10月20日 15:33

基于 Scapy 编写端口扫描器
实验目的
- 掌握网络扫描之端口状态探测的基本原理
实验环境
- kali
- python 3.11.4
- scapy 2.5.0
实验要求
- 禁止探测互联网上的 IP ,严格遵守网络安全相关法律法规
- 完成以下扫描技术的编程实现
-
- TCP connect scan / TCP stealth scan
-
- TCP Xmas scan / TCP fin scan / TCP null scan
-
- UDP scan
- 上述每种扫描技术的实现测试均需要测试端口状态为:开放、关闭 和 过滤 状态时的程序执行结果
- 提供每一次扫描测试的抓包结果并分析与课本中的扫描方法原理是否相符?如果不同,试分析原因;
- 在实验报告中详细说明实验网络环境拓扑、被测试 IP 的端口状态是如何模拟的
实验内容
实验网络环境拓扑

如图所示网络中的节点基本信息如下:
- 攻击者主机(lihanAttackerKaliChap4)
-
- mac地址:08:00:27:ef:46:19/eth0
-
- ip地址:172.16.111.135
- 受害者主机(lihanVictimKali1)
-
- mac地址:08:00:27:93:2e:67/eth0
-
- ip地址:172.16.111.102
- 网关(lihanGatewayDebian)
-
- mac地址:08:00:27:63:cd:72/enp0s9
-
- ip地址:172.16.111.1
实验过程
扫描技术的编程实现
测试端口状态为:开放、关闭 和 过滤 状态时的程序执行结果
- 关闭状态:对应端口没有开启监听, 防火墙没有开启。
1ufw disable - 开启状态:对应端口开启监听: apache2基于TCP, 在80端口提供服务;防火墙ufw处于关闭状态。
1systemctl start apache2 # port 80 - 过滤状态:对应端口开启监听, 防火墙开启。
1ufw enable && ufw deny 80/tcp
TCP connect scan / TCP stealth scan
- TCP connect scan
这种扫描方式可以使用 Connect()调用,使用最基本的 TCP 三次握手链接建立机制,建立一个链接到目标主机的特定端口上。 首先发送一个 SYN 数据包到目标主机的特定端口上,接着我们可以通过接收包的情况对端口的状态进行判断:
如果接收到的是一个 SYN/ACK 数据包,则说明端口是开放状态的; 如果接收到的是一个 RST/ACK 数据包,通常意味着端口是关闭的并且链接将会被重置; 如果目标主机没有任何响应则意味着目标主机的端口处于过滤状态。
若接收到 SYN/ACK 数据包(即检测到端口是开启的),便发送一个 ACK 确认包到目标主机,这样便完成了三次握手连接机制。成功后再终止连接。如图所示:

|
|