端口扫描类型
Null Scan(空扫描):
特点:发送不包含标志位的TCP数据包。
用途:绕过某些防火墙和包过滤器。
实现:
nmap -sN <target>
FIN Scan:
特点:发送带有FIN标志位的TCP数据包。
用途:绕过某些防火墙和包过滤器。
实现:
nmap -sF <target>
Xmas Scan:
特点:发送带有FIN、URG、PUSH标志位的TCP数据包,所有标志位都被设置。
用途:绕过某些防火墙和包过滤器。
实现:
nmap -sX <target>
Maimon Scan:
特点:基于TCP的FIN/ACK扫描方法。
用途:探测某些特定系统的响应行为。
实现:
nmap -sM <target>
ACK Scan:
特点:发送带有ACK标志位的TCP数据包。
用途:探测防火墙规则和状态检查。
实现:
nmap -sA <target>
Window Scan:
特点:类似于ACK扫描,但检查窗口大小以获得额外信息。
用途:更精确地探测防火墙规则和状态检查。
实现:
nmap -sW <target>
Custom Scan(自定义扫描):
特点:允许用户设置自定义TCP标志位。
用途:高级用户可以根据需要自定义扫描方式。
实现:
nmap --scanflags <flags> <target>
高级扫描选项
Spoofing IP(欺骗IP):
特点:伪造源IP地址。
用途:隐藏扫描者的真实身份。
实现:
nmap -S <spoofed_IP> <target>
Spoofing MAC(欺骗MAC):
特点:伪造源MAC地址。
用途:隐藏扫描者的真实MAC地址,绕过某些网络安全措施。
实现:
nmap --spoof-mac <mac_address> <target>
Decoy Scan(诱饵扫描):
特点:使用多个虚假IP地址进行扫描。
用途:混淆目标网络管理员,隐藏真实的扫描源。
实现:
nmap -D RND:10 <target>
(随机选择10个诱饵IP)Fragmented Packets(分片数据包):
特点:将扫描数据包分成更小的片段。
用途:绕过某些包过滤器和入侵检测系统。
实现:
nmap -f <target>
Idle/Zombie Scan(空闲/僵尸扫描):
特点:利用第三方(僵尸主机)进行扫描。
用途:隐藏扫描者的真实IP地址,通过僵尸主机发送数据包。
实现:
nmap -sI <zombie_IP> <target>
TCP Null Scan,Fin Scan, Xmas Scan
null scan
nmap -xN
原理:空扫描中没有任何回复表明端口已打开或防火墙阻止了相关数据包,但是如果端口关闭,我们可以期望目标服务器会响应一个 RST 数据包;
Fin Scan
nmap -sF
原理:如果目标TCP端口打开,并不会触发任何响应,但是,如果目标端口关闭,目标系统会响应一个RST数据包;因此,我们就能够知道哪些端口是关闭的,并使用这些信息来推断出 那些打开或过滤的端口。
Xmas Scan
nmap -sX
Xmas包是同时设置 FIN、PSH 和 URG 标志。
原理:如果收到的回复是RST 数据包,则表示目标端口已关闭;否则,目标端口将被报告为打开|过滤。
关于无状态防火墙
无状态防火墙利用数据包的来源、目的地和其他参数来查明数据是否会构成威胁。这些参数必须由管理员或制造商通过他们事先设置的规则输入。如果数据包超出可接受的参数范围,无状态防火墙协议就会识别威胁,然后限制或拦截包含威胁的数据。
关于有状态防火墙
有状态防火墙会检查数据包中的所有内容、数据特征以及数据的通信通道。有状态防火墙会检查数据包的行为,如果发现任何异常,可以过滤掉可疑数据。
TCP Maimon Scan
nmap -sM
TCP Maimon Scan会设置ack/fin位
原理:如果使用了此扫描类型,目标应发送一个 RST 数据包作为响应;大多数目标系统都会以 RST 数据包进行响应,在这种情况下,我们将无法发现开放的端口。
TCP ACK Scan, Window Scan, Custom Scan
ACK Scan:nmap -sA
原理:如果对方没有防火墙,那都是返回一个rst包,如果对方设有防火墙,那么就不会响应。因此我们可以通过
返回结果判断防火墙规则,如:对哪些端口没有阻止
Window Scan:nmap -sW
原理:基本都和ack scan一样,但它会分析返回包的window字段,在特定系统上,这可以表明目标端口是否是打开的。
ACK 扫描和窗口扫描在帮助我们描绘防火墙规则方面非常有效,但是仅仅因为防火墙没有阻止特定端口,并不一定意味着有对应的服务正在侦听该端口。 你可能需要更新防火墙规则以反映最近的服务更改;因此,ACK 和窗口扫描实际上暴露的是关于目标端口的防火墙规则,而不是目标端口上的服务。
Custom Scan:--scanflags (tcp标志)
如:--scanflags RSTSYNFIN
原理:自定义扫描标志,你需要了解目标端口的不同响应行为才能正确解释在不同场景下的结果。
欺骗和诱饵
欺骗
nmap -e (可以监听的网卡名) -Pn -S 欺骗ip(网卡ip) 目标ip
-e:指定网卡接口
-Pn:禁用ping,防止目标主机可能屏蔽 Ping 请求
-s:指定伪造的源 IP 地址
原理:利用伪造的源ip进行访问,目标机器回复伪ip信息,监听伪ip收到的回复信息发现端口
诱饵
nmap -D 伪ip1,伪ip2,真实ip 目标ip
原理:
让扫描看起来像来自于多个 IP 地址,这样攻击者的 IP 地址就会混杂在其中
分片数据包
nmap -f
原理:将大型数据包分割为小的片段进行传输
--mtu:更改分片的默认值
-data-length NUM:增加数据包大小
空闲/僵尸扫描
nmap -sI(僵尸ip) (目标ip)
IP ID 通常是递增的,每发送一个新的数据包,IP ID 的值就增加
原理:
随便发送一个请求到僵尸主机,记录其响应的ip数据包的IP ID
使用伪造的源 IP 地址(僵尸主机的 IP 地址)向目标主机发送一个 SYN 包。目标主机会认为这个 SYN 包是来自僵尸主机的。
再次向僵尸主机发送无害请求,并记录其新的 IP ID。
比较初始 IP ID 和新的 IP ID:
如果 IP ID 增加了 2,说明目标端口是开放的(因为僵尸主机收到了 SYN-ACK 包并进行了响应)。
如果 IP ID 只增加了 1,说明目标端口是关闭的(因为僵尸主机没有收到 SYN-ACK 包,只是单独的 RST 包)。
获取更多扫描细节
nmap --reason :提供了 Nmap 断定系统已启动或特定端口已打开的明确原因
nmap -v:详细输出
nmap -vv:更详细输出
nmap -d:调试
nmap -dd:获得更多信息
总结
端口扫描类型 | 示例命令 |
---|---|
TCP空扫描 | sudo nmap -sN 10.10.137.186 |
TCP FIN 扫描 | sudo nmap -sF 10.10.137.186 |
TCP圣诞节扫描 | sudo nmap -sX 10.10.137.186 |
TCP Maimon 扫描 | sudo nmap -sM 10.10.137.186 |
TCP ACK 扫描 | sudo nmap -sA 10.10.137.186 |
TCP窗口扫描 | sudo nmap -sW 10.10.137.186 |
自定义TCP扫描 | sudo nmap --scanflags URGACKPSHRSTSYNFIN 10.10.137.186 |
欺骗源 IP | sudo nmap -S SPOOFED_IP 10.10.137.186 |
欺骗 MAC 地址 | --spoof-mac SPOOFED_MAC |
诱饵扫描 | nmap -D DECOY_IP,ME 10.10.137.186 |
空闲(僵尸)扫描 | sudo nmap -sI ZOMBIE_IP 10.10.137.186 |
将 IP 数据分片为 8 个字节 | -f |
将 IP 数据分片为 16 个字节 | -ff |
选项 | 目的 |
---|---|
| 指定源端口号 |
| 附加随机数据以达到给定长度 |
--reason | 解释Nmap如何得出结论 |
-v | 冗长 |
-vv | 非常冗长 |
-d | 调试 |
-dd | 更多调试细节 |
网友评论