00:00
上午
周一
1月1日
枫-WIKI

Nmap

YOUZAI2023/06/21端口扫描安全工具

安装

在 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。

Last Updated 2023/6/21 14:48:28