linux扫描端口命令 linux扫描软件( 四 )


除了我们之前学到了探索技巧,hping3 也可以用于执行端口扫描 。这个秘籍展示了如何使用 hping3 来执行 TCP 隐秘扫描 。
为了使用 hping3 执行 TCP 隐秘扫描,你需要一个运行 TCP 网络服务的远程服务器 。这个例子中我们使用 Metasploitable2 实例来执行任务 。配置 Metasploitable2 的更多信息请参考第一章中的“安装 Metasploitable2”秘籍 。
除了我们之前学到了探索技巧 , hping3 也可以用于执行端口扫描 。为了使用 hping3 执行端口扫描,我们需要以一个整数值使用 --scan 模式来指定要扫描的端口号 。
上面的例子中,SYN 扫描执行在指定 IP 地址的 TCP 端口 80 上 。-S 选项指明了发给远程系统的封包中激活的 TCP 标识 。表格展示了接收到的响应封包中的属性 。我们可以从输出中看到,接收到了SYN+ACK 响应,所以这表示目标主机端口 80 是开放的 。此外 , 我们可以通过输入够好分隔的端口号列表来扫描多个端口,像这样:
在上面的扫描输出中,你可以看到,仅仅展示了接受到 SYN+ACK 标识的结果 。要注意和发送到 443 端口的 SYN 请求相关的响应并没有展示 。从输出中可以看出,我们可以通过使用 -v 选项增加详细读来查看所有响应 。此外,可以通过传递第一个和最后一个端口地址值,来扫描端口范围,像这样:
这个例子中,100 个端口的扫描足以识别 Metasploitable2 系统上的服务 。但是,为了执行 所有 TCP 端口的扫描,需要扫描所有可能的端口地址值 。定义了源端口和目标端口地址的 TCP 头部部分是 16 位长 。并且,每一位可以为 1 或者 0 。因此 , 共有 2 ** 16 或者 65536 个可能的 TCP 端口地址 。对于要扫描的全部可能的地址空间,需要提供 0 到 65535 的端口范围,像这样:
hping3 不用于一些已经提到的其它工具,因为它并没有 SYN 扫描模式 。但是反之,它允许你指定 TCP 封包发送时的激活的 TCP 标识 。在秘籍中的例子中,-S 选项让 hping3 使用 TCP 封包的 SYN 标识 。
在多数扫描工具当中,TCP 连接扫描比 SYN 扫描更加容易 。这是因为 TCP 连接扫描并不需要为了生成和注入 SYN 扫描中使用的原始封包而提升权限 。Scapy 是它的一大例外 。Scapy 实际上非常难以执行完全的 TCP 三次握手 , 也不实用 。但是,出于更好理解这个过程的目的,我们来看看如何使用 Scapy 执行连接扫描 。
【linux扫描端口命令 linux扫描软件】 为了使用 Scapy 执行全连接扫描,你需要一个运行 UDP 网络服务的远程服务器 。这个例子中我们使用 Metasploitable2 实例来执行任务 。配置 Metasploitable2 的更多信息请参考第一章中的“安装 Metasploitable2”秘籍 。
此外,这一节也需要编写脚本的更多信息,请参考第一章中的“使用文本编辑器*VIM 和 Nano) 。
Scapy 中很难执行全连接扫描,因为系统内核不知道你在 Scapy 中发送的请求,并且尝试阻止你和远程系统建立完整的三次握手 。你可以在 Wireshark 或 tcpdump 中,通过发送 SYN 请求并嗅探相关流量来看到这个过程 。当你接收到来自远程系统的 SYN+ACK 响应时,Linux 内核会拦截它,并将其看做来源不明的响应,因为它不知道你在 Scapy 中 发送的请求 。并且系统会自动使用 TCP RST 封包来回复,因此会断开握手过程 。考虑下面的例子:
这个 Python 脚本的例子可以用做 POC 来演系统破坏三次握手的问题 。这个脚本假设你将带有开放端口活动系统作为目标 。因此,假设 SYN+ACK 回复会作为初始 SYN 请求的响应而返回 。即使发送了最后的 ACK 回复,完成了握手,RST 封包也会阻止连接建立 。我们可以通过观察封包发送和接受来进一步演示 。

推荐阅读