端口扫描
端口扫描工具(Port Scanner)指用于探测服务器或主机开放端口情况的工具。常被计算机管理员用于确认安全策略,同时被攻击者用于识别目标主机上的可运作的网络服务。
端口扫描定义是客户端向一定范围的服务器端口发送对应请求,以此确认可使用的端口。虽然其本身并不是恶意的网络活动,但也是网络攻击者探测目标主机服务,以利用该服务的已知漏洞的重要手段。端口扫描的主要用途仍然只是确认远程机器某个服务的可用性。
扫描多个主机以获取特定的某个端口被称为端口清扫(Portsweep),以此获取特定的服务。例如,基于 SQL 服务的计算机蠕虫就会清扫大量主机的同一端口以在 1433 端口上建立 TCP 连接。
实现原理
TCP 连接扫描
最简单的端口扫描工具使用 TCP 连接扫描的方式,即利用操作系统原生的网络功能,且通常作为 SYN 扫描的替代选项。Nmap 将这种模式称为连接扫描,因为使用了类似 Unix 系统的 connect() 命令。如果该端口是开放的,操作系统就能完成 TCP 三次握手,然后端口扫描工具会立即关闭刚建立的该连接,防止拒绝服务攻击。这种扫描模式的优势是用户无需特殊权限。但使用操作系统原生网络功能不能实现底层控制,因此这种扫描方式并不流行。并且 TCP 扫描很容易被发现,尤其作为端口清扫的手段:这些服务会记录发送者的 IP 地址,入侵检测系统可能触发警报。
SYN 扫描
还有另外一种扫描方式是 SYN 扫描,端口扫描工具不使用操作系统原生网络功能,而是自行生成、发送 IP 数据包,并监控其回应。这种扫描模式被称为“半开放扫描”,因为它从不建立完整的 TCP 连接。端口扫描工具生成一个 SYN 包,如果目标端口开放,则会返回 SYN-ACK 包。扫描端回应一个 RST 包,然后在握手完成前关闭连接。如果端口关闭了但未使用过滤,目标端口应该会持续返回 RST 包。这种粗略的网络利用方式有几个优点:给扫描工具全权控制数据包发送和等待回应时长的权力,允许更详细的回应分析。关于哪一种对目标主机的扫描方式具不具备入侵性存在一些争议,但 SYN 扫描的优势是从不会建立完整的连接。然而,RST 包可能导致网络堵塞,尤其是一些简单如打印机之类的网络设备。
该实验主要分为以下三部分 :
读取端口及目标服务器
测试 TCP 端口连接
输出开放端口结果
为新建的文件设置权限:
调用 Vim 编辑器来编写代码,读取端口及目标服务器:
测试端口连接:
输出开放端口结果:
拓展思路:
通过 nmap 我们可以实现非常复杂的扫描程序,那么回到我们的多线程程序,如果基于 python-nmap 包,可以从下面几方面进行改进: 1.增加 GUI,可以手动添加扫描的端口范围和主机 2.生成 csv 格式的扫描报告 3.后台进行扫描,完成后把扫描报告以邮件的形式通知管理员
学习时间 16分钟
操作时间 9分钟
按键次数 1136次
实验次数 8次
报告字数 1569字
是否完成 未完成