Table of Contents
- 主要功能
- 基本扫描策略
- 绕过防火墙
- 利用掩体 namp -D IP地址1,IP地址2… IP地址
- 禁用 ping nmap -P0 IP地址
- IP 地址伪装 sudo proxychains nmap
- 空闲扫描 nmap -sI 僵尸IP地址[:开放的僵尸端口] IP地址
- 指定网卡进行扫描 nmap -e 网卡 IP地址
- 限制扫描时间 nmap host-timeout 时间 IP地址
- 指定源 IP 地址 nmap -S 源IP地址 IP地址
- 定源主机端口 nmap -g 53 IP地址
- 数据包分片技术 nmap -f IP地址/nmap mtu mtu单元大小 IP地址
- 添加垃圾数据 nmap data-length 垃圾数据长度 IP地址
- 随机选择扫描对象 nmap randomize-hosts IP地址
- 伪装 MAC 地址 nmap spoof-mac 伪造MAC IP地址
- 伪造检验值 nmap badsum IP地址
- 扫描速度 nmap -T0 IP地址
- Nmap 脚本引擎
- 常用技巧
主要功能
- 主机发现
- 端口扫描
- 服务版本侦测
- 操作系统侦测
基本扫描策略
无任何附加参数 nmap IP地址
- 如果是超级用户,无参数扫描等价于 sS 参数扫描(SYN,半连接);否则,无参数扫描等价于 sT 参数扫描(TCP,完整连接)。
冗余 nmap -vv IP地址
按照基本法,v 参数通常表示冗余。我们使用两个 v 参数表示将侦测过程原原本本的打印输出出来。
指定端口号 nmap -p端口号 IP地址
这里 p 参数表示端口,标准写法后面跟的端口号之间没有空格。但是如果写一个空格也并无妨。
操作系统侦测 nmap -O IP地址/nmap -A IP地址
操作系统侦测有两个参数选项,其一是参数 O,其二是参数 A,后者乃前者的冗余版本。我更多的使用 A 参数,以得到更多的信息
只进行主机发现 nmap -sn IP地址
主机发现的手段不下几十种,但是最常用的却是 sn 参数,它表示 “使用 ping 扫描来侦测存活的主机,而不进行端口扫描”。
跳过主机发现 nmap -Pn IP地址
有时候对方主机开启了防火墙(这是很自然的事情),可能过滤掉了你发送的 ICMP 协议数
据包,这样如果想要使用 sn 参数来进行主机发现就不管用了,产生的结果也不可靠。于是
你不得不使用 Pn 参数,它假设所有的目标 IP 均为存活,并一个一个主机的进行端口扫描,
你懂的这样会牺牲一些时间作为代价。
扫描和版本号侦测 nmap -sV IP地址
该选项通过侦测开放的端口来判断开放的服务,并试图检测它的版本。虽然 A 选项也能做
到,但是要检测开放的服务版本,sV 一定是最合适的。
UDP 扫描 nmap -sU IP地址
绕过防火墙
前面讲的 Pn 选项就可以看成是 sn 选项的逃脱策略。所谓逃脱,就是不让别人发现自己,否
则要干的侦测工作还没搞完,就被迫中止岂不让人笑话。同样的,排名不分先后。
利用掩体 namp -D IP地址1,IP地址2… IP地址
你可以使用 D 选项(英文 decoy)跟一些 IP 地址,IP 和 IP 之间用逗号隔开。这样看起
来用来侦测而发送的数据包不仅来自于你的 IP 地址,还来自于这些掩体 IP。这就叫做
“混入其中”。
禁用 ping nmap -P0 IP地址
在 2010 年之后,该选项和 PN 选项被一起合并到 Pn 选项之中。但是如果你愿意,你仍然可以使用 P0 选项(P 后面跟的是零)。
IP 地址伪装 sudo proxychains nmap
伪装 IP 地址的方法也有很多,比如你可以使用 prxychains 这款工具来实现匿名代理。
空闲扫描 nmap -sI 僵尸IP地址[:开放的僵尸端口] IP地址
和 D 选线不同的是,sI 根本不使用你自己的 IP 地址,而是使用空闲的网络资源。这样隐
蔽性就更强了。开放的僵尸端口为选填,默认等于 80 端口。具体原理请参考 Nmap 文档。
根据这个理论,你不能使用空闲扫描来扫描你自己的主机 IP。在 msfconsole 中,你可以
使用 auxiliary/scanner/ip/ipidseq 来完成这个工作。
指定网卡进行扫描 nmap -e 网卡 IP地址
当你拥有不止一个网卡的时候,这很有用。
限制扫描时间 nmap host-timeout 时间 IP地址
限制每个 IP 地址的扫描时间(单位为秒),当要扫描大量的主机 IP 时这很有用。
指定源 IP 地址 nmap -S 源IP地址 IP地址
使用冒充的 IP 地址进行扫描以增强隐蔽性。这里伪装成的 IP 也可以来自于下线状态的主机地址。
定源主机端口 nmap -g 53 IP地址
使用 g 参数,或者 source-port 参数,来手动设定用来扫描的端口。常用的,如 20、53、
67 端口。
数据包分片技术 nmap -f IP地址/nmap mtu mtu单元大小 IP地址
上面两种方法都可以利用数据包分片技术,某些防火墙为了加快处理速度而不会进行重组处
理,这样从而逃脱防火墙或闯入检测系统的检测。注意,mtu 的值必须是 8 的倍数(如 8、
16、24、32 等)。
添加垃圾数据 nmap data-length 垃圾数据长度 IP地址
一些常见的扫描之数据包是有特定的数据长度的,通过在发送的数据包末尾添加随机的垃圾
数据,以达到混淆视听的作效果。
随机选择扫描对象 nmap randomize-hosts IP地址
如果你要扫描大量的,比如成百上千的主机 IP,这很有效。它会打乱扫描顺序,以规避检测系统的检测。
伪装 MAC 地址 nmap spoof-mac 伪造MAC IP地址
你可以通过指定供应商的名字来伪装 MAC 地址。可选的名字有 Dell、Apple、3Com。当然
也可以手动指定 MAC 地址的值。或者为了简单起见,可以在上面 “伪造IP” 的地方填写数
字 0,这将生成一个随机的 MAC 地址。
伪造检验值 nmap badsum IP地址
这将使用伪造的 TCP / UDP / SCTP 校验和发送数据。
扫描速度 nmap -T0 IP地址
T后面跟的数字代表扫描速度,数字越大则速度越快。0~5分别表示:妄想症、鬼鬼祟祟、
彬彬有礼、正常、好斗、精神病
Nmap 脚本引擎
Nmap 脚本引擎内置在 Nmap 中,使用 script 参数进行调用。它的英文名是 Nmap Script
Engine,简称 NSE
Nmap 内置了一些已经写好的脚本,在 Kali 等主流渗透系统中被保存在
usr/share/nmap/scripts 文件夹下。文件后缀名是 .nse。使用 sC(等价于
script=default)或者 script 参数对 Nmap 脚本进行调用
常用技巧
-sS 半开放扫描(非3次握手的tcp扫描)
使用频率最高的扫描选项:SYN扫描,又称为半开放扫描,它不打开一个完全的TCP连接,执行得很快,效率高
(一个完整的tcp连接需要3次握手,而-sS选项不需要3次握手)
Tcp SYN Scan (sS) 它被称为半开放扫描
优点:Nmap发送SYN包到远程主机,但是它不会产生任何会话,目标主机几乎不会把连接记入系统日志。(防止对方判断为扫描攻击),扫描速度快,效率高,在工作中使用频率最高
缺点:它需要root/administrator权限执行