排除扫描目标的命令

使用Nmap的有关参数可在扫描工作开始前指定一个、多个目标或随机产生的若干IP地址或主机名,同时使用**--exclude**可以排除一些你不想扫描的目标。
示例:nmap 192.168.1.0/24 --exclude 192.168.1.10 排除 192.168.1.10 主机。

高级用法

Nmap 提供了多种高级扫描技巧,用于绕过防火墙和入侵检测系统(IDS),使得扫描过程更加隐蔽。

1. 分片(Fragmentation)

2. 诱饵扫描(Decoy Scan)

3. 源地址伪装(IP Spoofing)

4. 结合使用

特殊用法

一、配置iptables防火墙

在Linux系统中,iptables 是一个强大的防火墙工具,它可以控制网络流量的进出。我们将配置一个基本的 iptables 防火墙,限制特定的入站和出站流量,然后用 Nmap 来测试如何绕过防火墙。

1. 配置iptables防火墙

首先,我们需要配置一个基本的防火墙规则,来阻止来自外部的未授权连接。假设目标主机的IP是 192.168.1.10

步骤 1:查看当前的iptables规则

在终端输入以下命令查看现有的防火墙规则:

sudo iptables -L
步骤 2:清除现有的规则

清除所有现有规则,以便开始新的配置:

sudo iptables -F
步骤 3:设置默认策略

将默认策略设置为拒绝所有流量。INPUT链用于控制进入本机的流量,OUTPUT链用于控制离开本机的流量。

sudo iptables -P INPUT DROP
sudo iptables -P OUTPUT DROP
sudo iptables -P FORWARD DROP
步骤 4:允许本地流量

允许本地流量(localhost)流动,以避免对本机的自我连接进行限制:

sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT
步骤 5:允许ICMP流量(ping)

允许通过ICMP协议的ping请求,这样可以测试主机是否存活:

sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
sudo iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
步骤 6:允许SSH连接

如果你需要通过SSH连接到目标主机,允许SSH流量:

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
步骤 7:查看当前的iptables规则

再次检查防火墙规则,确保配置已生效:

sudo iptables -L

此时,iptables 防火墙将仅允许来自本地主机的流量以及ping请求和SSH连接。


二、Nmap绕过iptables的技巧

我们将利用 Nmap 的高级扫描技术绕过 iptables 防火墙。主要使用的技巧包括 分片诱饵扫描源地址伪装

1. 分片(Fragmentation)

概念iptables 可能只会对较大的数据包进行过滤,如果我们使用分片技术,将一个大的数据包拆分成多个小包发送,防火墙可能无法检测到这些小包的整体内容。

实验步骤:
  1. 启用分片扫描:使用 -f 参数启用分片扫描,发送多个小数据包以绕过防火墙。
    sudo nmap -f 192.168.1.10
  2. 观察结果:通过查看 iptables 的日志,防火墙是否能够检测到这些分片的数据包。如果防火墙没有识别到这些小包的完整内容,扫描可能会成功。

2. 诱饵扫描(Decoy Scan)

概念:通过将扫描请求的源IP伪装成多个不同的IP地址,混淆防火墙或IDS系统,使其无法确定哪个IP发起了扫描。

实验步骤:
  1. 启用诱饵扫描:使用 -D 参数,在扫描时添加诱饵IP地址。ME表示使用自己的真实IP。

    sudo nmap -D 192.168.1.5,192.168.1.6,ME 192.168.1.10

    这条命令会向目标主机 192.168.1.10 发送来自 192.168.1.5192.168.1.6 的扫描请求,并混淆源IP地址。

  2. 观察结果:在防火墙的日志中检查是否能够区分哪些数据包来自真实IP,哪些来自诱饵。

3. 源地址伪装(IP Spoofing)

概念:源地址伪装通过修改IP数据包的源地址字段,使目标主机认为请求来自其他主机,从而隐藏扫描者的真实IP。

实验步骤:
  1. 启用源地址伪装:使用 -S 参数指定一个伪装的源IP地址,扫描目标主机。

    sudo nmap -S 192.168.1.100 192.168.1.10

    该命令将源IP伪装为 192.168.1.100,目标主机 192.168.1.10 会将响应发送到 192.168.1.100,而不是扫描者的真实IP。

  2. 观察结果:检查 iptables 防火墙是否能够发现伪装的源IP。如果防火墙检查到伪装的IP,那么它将无法阻止扫描请求,因为它会认为请求来自其他合法的IP地址。

4. 组合多个技巧

可以将多个技巧组合起来,进一步提高绕过防火墙的成功率。

实验步骤:
  1. 组合分片、诱饵扫描和源地址伪装

    sudo nmap -f -D 192.168.1.5,192.168.1.6,ME -S 192.168.1.100 192.168.1.10

    这条命令将同时使用分片、诱饵扫描和源地址伪装,增加防火墙和IDS的检测难度。

  2. 观察结果:检查 iptables 的日志和目标主机的响应,确认是否成功绕过防火墙和IDS。


三、实验结果对比

1. 防火墙开启时

2. 防火墙关闭时