如何在 Linux 中进行端口扫描
端口扫描是检查PC或服务器开放端口的过程。游戏玩家和黑客经常使用端口扫描仪来检查可用端口和指纹服务。 TCP/IP 互联网协议有两种类型的端口需要扫描:TCP(传输控制协议)和 UDP(用户数据报协议)。 TCP和UDP都有自己的扫描方式。在本文中,我们将了解如何在 Linux 环境中进行端口扫描,但首先我们将了解端口扫描的工作原理。请注意,端口扫描在许多国家/地区是非法的,请确保在扫描目标之前检查权限。
TCP扫描
TCP 是有状态协议,因为它维护连接的状态。 TCP 连接涉及服务器套接字和客户端套接字的三向握手。当服务器套接字正在侦听时,客户端发送 SYN,然后服务器用 SYN-ACK 进行响应。然后客户端发送ACK来完成连接的握手
为了扫描 TCP 开放端口,扫描器会向服务器发送 SYN 数据包。如果发回 SYN-ACK,则端口打开。如果服务器没有完成握手并以 RST 响应,则端口将关闭。
UDP扫描
另一方面,UDP 是一种无状态协议,不维护连接状态。它也不涉及三向握手。
为了扫描 UDP 端口,UDP 扫描器会向该端口发送 UDP 数据包。如果该端口关闭,则会生成 ICMP 数据包并发回源。如果没有发生这种情况,则意味着端口已打开。
UDP 端口扫描通常不可靠,因为 ICMP 数据包会被防火墙丢弃,从而为端口扫描器产生误报。
端口扫描器
现在我们已经了解了端口扫描的工作原理,我们可以继续讨论不同的端口扫描仪及其功能。
地图
Nmap 是迄今为止最通用、最全面的端口扫描器。它可以执行从端口扫描到指纹识别操作系统和漏洞扫描的所有操作。 Nmap有CLI和GUI两种界面,GUI称为Zenmap。它有很多不同的选项来进行快速有效的扫描。以下是在 Linux 中安装 Nmap 的方法。
sudo apt-get upgrade -y
sudo apt-get install nmap -y
现在我们将使用 Nmap 扫描服务器 (hackme.org) 的开放端口并列出这些端口上可用的服务,这非常简单。只需输入 nmap 和服务器地址。
要扫描 UDP 端口,请在 sudo 中包含 -sU 选项,因为它需要 root 权限。
Nmap 中还有很多其他选项可用,例如:
-sT : TCP connect scan
-O : Scans for operating system running
-v : Verbose scan
-A : Aggressive scan, scans for everything
-T[1-5] : To set the scanning speed
-Pn : In case the server blocks ping
禅图
Zenmap 是 Nmap 的 GUI 界面,供点击小子使用,这样您就不必记住它的命令。要安装它,请输入
要扫描服务器,只需键入其地址并从可用的扫描选项中进行选择。
网猫
Netcat 是一个原始 TCP 和 UDP 端口编写器,也可以用作端口扫描器。它使用连接扫描,这就是为什么它不像网络映射器那么快。要安装它,请输入
要检查开放端口,请写入
...snip...
hackme.org [217.78.1.155] 80 (http) open
要扫描一系列端口,请键入
(UNKNOWN) [127.0.0.1] 80 (http) open
(UNKNOWN) [127.0.0.1] 22 (ssh) open
独角兽扫描
Unicornscan 是一款全面且快速的端口扫描器,专为漏洞研究人员而构建。与 Network Mapper 不同,它使用自己的用户态分布式 TCP/IP 堆栈。它有很多 Nmap 没有的功能,其中一些是给出的,
使用 TCP 标志的所有变体进行异步无状态 TCP 扫描。
异步无状态 TCP 横幅抓取
异步协议特定的 UDP 扫描(发送足够的签名以引发响应)。
通过分析响应来识别主动和被动远程操作系统、应用程序和组件。
PCAP 文件记录和过滤
关系数据库输出
自定义模块支持
定制数据集视图
要安装 Unicornscan,请键入
要运行扫描,请写入
TCP open ftp[ 21] from 127.0.0.1 ttl 128
TCP open smtp[ 25] from 127.0.0.1 ttl 128
TCP open http[ 80] from 127.0.0.1 ttl 128
...snip...
结论
无论您是开发运营人员、游戏玩家还是黑客,端口扫描仪都会派上用场。这些扫描仪之间没有真正的比较,它们都不是完美的,每种扫描仪都有其优点和缺点。这完全取决于您的要求以及您如何使用它们。