nmap 扫描步骤:
主机发现:
sudo nmap -sn 1.1.1.0/24
-sn 参数在主机发现之后不会进行端口扫描(no port scan), -sL 进行列表扫描,相比之下,-sn 多了一步入侵,会进行轻量级的侦查但不会引起太多注意;
确定靶机的IP地址,假定 IP 地址为 1.1.1.2
端口扫描:
sudo nmap -sT --min-rate 10000 -p- 1.1.1.2 -oA nmapscan/ports
nmap 用 -sT 参数会与目标建立完整的 TCP 连接,不易被防火墙识别。而默认情况下是 -sS ,只进行 TCP 三次握手的第一次,具有较明显的特征,易被拦截;
nmap 使用 --min-rate 设置最低速率,一般设置为10000,红队场景中应该更低;
nmap -p- 等同于 -p 1-65535;
-oA:o表示输出,A表示用 nmap 的所有格式,分别是 .gnmap,.nmap,.xml。其中 xml 格式要优于 gnmap ,而 nmap 格式与屏幕输出一致;
扫描端口,假定端口有:21,22,80,3306
将端口号提出来,合并成一行,并以逗号作分隔符:
grep open nmapscan/ports.nmap | awk -F '/' '{print($1)}' | paste -sd ','
其中 paste -sd ,s 是指定合并到一行,d 是指定分隔符,
还可以赋值给变量 ports:
ports=$(grep open nmapscan/ports.nmap | awk -F '/' '{print($1)}' | paste -sd ',')
echo $ports
输入 $ports 再按 tab 键补齐就得到端口;
全面扫描:
sudo nmap -sT -sV -sC -O -p21,22,80,3306 1.1.1.2 -oA nmapscan/details
进行全面扫描,其中 sT 表示建立完整的 TCP 连接,sV 用来进行版本检测,sC 用默认的脚本进行扫描,-O 探测操作系统版本。
同时
UDP 扫描:
sudo nmap -sU --top-ports 20 1.1.1.2 -oA nmapscan/UDP
进行 UDP 端口扫描,其中 -sU 表示扫描 UDP 端口,–top-ports 20 表示扫描最常用的20个端口
默认脚本扫描:
sudo nmap --script=vuln -p21,22,80,3306 1.1.1.2 -oA nmapscan/vuln
执行默认脚本扫描,vuln 是 nmap 的漏洞脚本目录(vulnerability 漏洞)