Nmap
安装
在 Ubuntu/Debian 中安装:
sudo apt -y install nmap
在 /RHEL 中安装:
yum -y install nmap
在 Arch 中安装:
pacman -S nmap
用途
- 查看存活主机。
- 扫描目标主机开放端口。
- 鉴定安全过滤机制。
- 识别目标主机的操作系统。
- 查看目标主机服务的版本信息。
- 利用脚本扫描漏洞。
功能
- 目标说明。
- 主机发现。
- 端口扫描。
- 端口说明和扫描顺序。
- 服务与版本探测。
- 脚本扫描。
- 操作系统探测。
- 时间和性能。
- 防火墙/IDS规避和欺骗。
- 输出选项。
常用命令
目标说明
- 从主机地址列表文件中导入扫描地址
nmap -iL /root/ip.txt
- 随机选项目标进行扫描,num hosts 表示数目,设置为0则无休止扫描
nmap -iR 2
- 排除某个主机地址
nmap 192.168.1.1 192.168.1.2 --exclude 192.168.1.2
- 排除主机地址列表文件中的地址
nmap 192.168.1.0/24 --excludefile 192.168.10-20
主机发现
- 列表扫描,仅将指定的目标 IP 列举出来,不进行主机发现
nmap -sL 192.168.1.0/24
- 只利用 ping 扫描进行主机发现,不扫描目标主机的端口
nmap -sn 192.168.1.1
# 或者
nmap -sP 192.168.1.1
- 将所有指定的主机视为已开启状态,跳过主机发现过程,不进行 ping 扫描
nmap -Pn 192.168.1.1
端口扫描
nmap 将目标端口分为6种状态:
状态 | 说明 |
---|---|
open | 开放的 |
closed | 关闭的 |
filtered | 被过滤的 |
unfiltered | 未被过滤:可访问但不确定开放情况 |
open | filtered | 开放或被过滤 |
closed | filtered | 关闭或者被过滤 |
nmap
其他扫描
-sS TCP SYN 扫描,半开放扫描,速度快隐蔽性好(不完成 TCP 连接),能够明确区分端口状态。
-sT TCP 连接扫描,TCP 扫描的默认模式,容易产生记录,效率低。
-sA TCP ACK 扫描,只设置 ACK 标志位,区别被过滤与未被过滤的。
-sU UDP 服务扫描,例如 DNS/DHCP 等,效率低
-sO 获取服务器支持哪些协议。
服务扫描
nmap-services 包含大量服务的数据库,nmap 通过查询该数据库可以报告哪些端口可能对应于什么服务,但不一定正确。
进行服务版本探测:
nmap -sV 192.168.10.1
设置版本扫描强度,范围0-9,默认7,强度越高,时间越长,服务越可能被正确识别。
nmap --version-intensite
脚本扫描
允许用户自己编写脚本来执行自动化的操作或者扩展 nmap 的功能,使用 lua 脚本语言。
-sC 使用默认类别的脚本进行扫描。
--script=<Lua script> 使用某个或某类脚本进行扫描,支持通配符描述。
系统扫描
-O 启动操作系统探测。
-A 同时启用操作系统探测和服务版本探测。
--osscan-limit 针对指定的目标进行参照系统检测。
--osscan-guess 当 nmap 无法确定所检测的操作系统时,会尽可能地提供最相近的匹配。
时间性能
-T 设置时间模板级数,在0-5种选择。
T0 和 T1:用于 IDS 规避。
T2:降低了扫描速度以使用最少的带宽和资源
T3:默认为 T3,未做任何优化。
T4:假设具有合适及可靠的网络从而加速扫描。
T5:假设具有特别快的网络或者愿为速度牺牲准确性。
-host-timeout<time> 放弃低速目标之际,时间单位为毫秒。
常用扫描
- 扫描单一目标主机
nmap 192.168.0.1
nmap baidu.com
# 默认发送一个 ARP 的 ping 包,扫描1-10000范围内开放端口。
- 扫描整个子网
namp 192.168.0.1/24
- 扫描多个目标
nmap 192.168.0.1 baidu.com
- 扫描一个范围内的目标
nmap 192.168.0.1-100
nmap -p- 192.168.1.1 # -p- 表示扫描所有端口,即 1-65535。
- 导入IP列表进行扫描
nmap -iL ip.txt
- 列举目标地址,但不进行扫描
nmap -sL 192.168.10./24
- 排除某IP进行扫描
nmap 192.168.0.1/24 -exclude 192.168.0.1
nmap 192.168.0.1/24 -exclude file ip.txt
- 扫描特定主机的特定端口
nmap -p80,21,8080,135 192.168.0.1
nmap -p50-900 192.168.10.1
- 简单扫描,详细输出返回结果
nmap -vv 192.168.10.1
- 简单扫描并进行路由跟踪
nmap -traceroute biadu.com
- ping 扫描,不扫描端口(需要 root 权限)
nmap -sP 192.168.10.1
nmap -sn 192.168.10.1
- 探测操作系统类型
nmap -O 192.168.10.1
- nmap 万能开关 -A 参数
nmap -A 192.168.10.1 # -A :包含 1-10000 端口的 ping 扫描,操作系统扫描,脚本扫描,路由扫描,服务扫描。
- 混合命令扫描
nmap -vv -p1-1000 -O 192.168.10.1/24 -exclude 192.168.0.1
- 使用 TCP SYN 端口扫描
nmap -sS 192.168.10.1
- 扫描UDP服务端口
nmap -sU 192.168.10.1
- TCP连接扫描端口
nmap -sT 192.168.10.1
- 由于IDS/IPS系统的存在,防火墙可能会阻断掉 SYN 数据包,此时可发送设置了 FIN 标准的数据包,不需要完成 TCP 握手,不会再目标产生日志
nmap -sF baidu.com
- 服务版本探测
nmap -sV 192.168.10.1
常用组合
获取远程主机的系统类型及开放端口
nmap -sS -PO -sV -O 192.168.0.110
nmap -sS -P0 -A -v 192.168.0.0/24
- -sS:TCP-SYN 扫描。
- -PO:IP 协议 ping。
- -sV:服务版本探测。
- -O:操作系统探测。
- -v:显示详细信息。
大批量 IP 扫描
nmap -sS -Pn -n --open --min-hostgroup 4 --min-parallelism 1024 --host-timeout 30 -T4 -v -oG result.txt -iL ip.txt
- -open:只输出检测状态为 open 的端口,即开放的端口。
- -min-hostgroup 4:调整并行扫描组的大小。
- -min-parallelism 1024:调整探测报文的并行度。
- -host-timeout 30:检测超时的跳过。
- -oG:输出为比较人性化的格式,一条记录一行。
- -iL 扫描文件中的所有⽬标地址,如 nmap -sS -iL ip.txt。