Kali ❀ Nmap史上最详细参数解析梳理

Nmap - Network Mapper 网络映射器:是一款开放源代码的网络探测和安全审核的工具,其设计目标是快速扫描大型网络或单个主机,Nmap以新颖的方式使用原始IP报文来发现网络上有哪些主机,哪些主机提供了什么服务(应用程序名称和版本信息),哪些服务运行在什么类型的操作系统(版本信息),他们使用什么类型的报文过滤器/防火墙,以及其他的功能;

常用功能

  • 检测存活在某网络上的主机(主机发现);
  • 检测某主机上开放的端口(端口发现);
  • 检测到相应的端口运行的软件和版本(服务发现);
  • 检测某主机的操作系统、硬件地址、软件版本;
  • 检测脆弱性漏洞(脚本运行);

1、主机发现

语法:Nmap [选项][多选项][协议] [目标]

常用扫描

  • -p:指定端口号或端口范围对目标扫描进行扫描;
  • -F:快速扫描;
  • -top-ports [数量]:开放率最高的数量端口进行扫描;
  • -sS:TCP SYN快速扫描;
  • -sT:TCP连接扫描;
  • -sA:TCP ACK扫描;
  • -sU:UDP端口扫描;
  • -sl:端口完全欺骗扫描,伪装额外主机对目标进行扫描;
  • -Pn:禁止ping后扫描,跳过主机发现的过程进行端口扫描;
  • -6:开启IPv6扫描;
  • -A:全面扫描;
  • -v:显示详细信息;

注:如在root用户下执行,无参数则默认携带sS参数执行,非root用户默认执行sT参数;

root@kali:~# nmap 192.168.39.1-10		/指定某个IP地址范围进行扫描;

协议扫描

  • -sP:仅使用ping扫描,回显做出响应的主机;
  • -P0/Pn:用于防火墙禁止ping的情况下,可以用于穿透防火墙;
  • -PS:使用TCP SYN ping扫描对目标主机进行存活探测;默认ping扫描是使用TCP ACK和ICMP echo请求对目标进行存活探测,当目标防火墙阻止这些请求时,可以使用TCP SYN ping扫描对目标主机进行存活探测;
  • -PA:使用TCP ACK ping扫描对目标主机进行存活探测;很多防火墙会封锁SYN报文,此时可以使用TCP ACK ping扫描对目标主机进行存活探测;
  • -PU:使用UDP ping扫描目标主机,如果返回ICMP端口不可达错误,主机存活;如果返回各种ICMP错误信息,则主机不存活;

ICMP Ping Types扫描

  • -PE:使用ICMP扫描;
  • -PP:使用时间戳ping扫描;
  • -PM:使用ICMP地址掩码ping扫描;

ARP Ping扫描

  • -PR:使用ARP进行扫描;

路由跟踪

  • traceroute:查出本地主机到目标主机之间经过的网络节点信息;

域名扫描

  • -sL:列出指定网络上的每台主机,默认使用域名解析获取他们的主机名称;
  • -n:禁止目的地址作为反向域名解析;
  • -R:对目标地址作为反向域名解析;
  • -system-dns:直接发送查询到主机上自带配置的域名服务来解析域名;

2、扫描状态

root@kali:~# nmap 192.168.39.132                              
Starting Nmap 7.91 ( https://nmap.org ) at 2021-01-19 22:14 EST
Nmap scan report for 192.168.39.132
Host is up (0.00027s latency).
Not shown: 995 closed ports
PORT     STATE SERVICE
21/tcp   open  ftp
22/tcp   open  ssh
80/tcp   open  http
443/tcp  open  https
3306/tcp open  mysql
MAC Address: 00:0C:29:C3:CF:AE (VMware)

Nmap done: 1 IP address (1 host up) scanned in 2.31 seconds

状态描述

  • Opend:端口开启;
  • Closed:端口关闭;
  • Filtered:端口被过滤,数据没有达到目标主机,返回结果为空白,数据包被防火墙拦截;
  • Unfiltered:未被过滤,数据有到达目标主机,但是不能识别端口的当前状态;
  • Open | filtered:开放或者被过滤,端口没有返回值,主要发生在UDP、IP、FIN、NULL和Xmas扫描中;
  • Closed | filtered:关闭或者被过滤,只发生在IP ID idle扫描;

3、指纹识别(服务与系统探测)

  • -sV:通过端口对应的服务器,识别其版本信息;
  • -A:全面扫描,包括系统版本和服务版本;
  • -allports:全端口扫描,只有此参数才可以扫描所有端口;
  • –version-intensity:设置扫描强度,0-9,9最高;强度越高,扫描时间越长,越有可能正确识别;
  • –version-light:等于强度2;
  • –version-all:等于强度9;
  • –version-trace:获取详细版本信息;
  • -sR:扫描是否为PRC端口,存在PRC端口则返回程序和版本号;
  • -O:探测操作系统,识别Windows与Linux;等用于–osscan-limit;
  • -osscan-guess/fuzzy:猜测扫描目标的系统(不可靠性);

4、渗透测试

Nmap内置了很多脚本文件,我们可以使用这些脚本文件执行某些扫描;

root@kali:~# ls /usr/share/nmap/scripts  					/脚本存放路径;

信息收集

(1)whois查询

脚本名称:whois-domain.nse

root@kali:~# nmap --script=whois-domain www.baidu.com

(2)DNS记录查询与爆破

脚本名称:dns-brute.nse

root@kali:~# nmap --script=dns-brute www.baidu.com

(3)扫描Web漏洞

脚本名称:http:stored-xss.nse

root@kali:~# nmap --script=http:stored-xss www.baidu.com		/扫描目标是否具有XSS漏洞;

漏洞利用

(1)检测Mysql密码

脚本名称:mysql-empty-password.nse

root@kali:~# nmap --script=mysql-empty-password 目标	/是否存在空白口令或密码为root;

(2)FTP服务认证

脚本名称:ftp-brute.nse

root@kali:~# nmap --script=ftp-brute -p 21目标			/是否存在弱口令;
root@kali:~# nmap --script=ftp-brute --script-args userdb=user.txt,passdb=pass.txt -p 21 目标
/使用字典进行弱口令检测;

(3)wordpass认证

脚本名称:http-wordpress-brute.nse

root@kali:~# nmap --script=http-wordpress-brute -p 80 目标
root@kali:~# nmap --script=http-wordpress-brute --script-args userdb=user.txt,passdb=pass.txt -p 80

网页查看Nmap脚本路径
在这里插入图片描述

5、结果输出

标准输出

  • -oN +路径:输出为标准格式到指定目录位置;

XML输出

  • -oX +路径:输出为XML格式到指定目录位置;