nmap是扫描端口不可或缺的一个工具,在这里记录一下,方便后续使用!
nmap输出的端口状态
- Open(开放的): 意味着目标机器上的应用程序正在该端口监听连接/报文
- Filtered(被过滤的):意味着防火墙,过滤器或者其他网络障碍阻止了该端口被访问,Nmap无法得知它的真实状态。当nmap收到icmp报文主机不可达报文或者目标主机无应答,常常会将目标主机的状态设置为filtered。
- Closed(关闭的):端口上面没有应用程序监听,但它们随时可能开放。
- Unfiltered(未被过滤的): 这种状态和filtered的区别在于:unfiltered的端口能被nmap访问,但是nmap根据返回的报文无法确定端口的开放状态,而filtered的端口不能被nmap访问。只有用于映射防火墙规则集的ACK扫描才会把端口分类到这种状态。
- Open|filtered状态: 这种状态主要是nmap无法区别端口处于open状态还是filtered状态。 UDP,IP协议, FIN,Null,和Xmas扫描可能把端口归入此类。
- Closed|filtered状态 :这种状态主要出现在nmap无法区分端口处于closed还是filtered时。此状态只会出现在IP ID idle scan。
nmap语法
我们在使用Nmap的时候大多是在命令行下进行的,即使是使用可视化Zenmap也是需要遵循Nmap固定的语法格式的。
Nmap的固定语法格式如下:
nmap 【空格】【选项|多选项|协议】【空格】【目标】
ps:所有的选项与命令及选项参数都是用空格进行分割的,有时候选项与参数直接可以不用空格分割,如-p80,-p是选项,80是参数。为了使Nmap语法更加严谨,建议严格按照空格进行分割
全面扫描:
nmap -A 目标 //指定IP或域名的所有端口及其目标系统信息等,耗时会有点长。
扫描指定段:例:nmap 192.168.126.1-200
扫描整个C段:例:nmap 192.168.126.0/24
nmap基本选项及解释
主机发现:
选项 |
解释 |
-sP(-sn) |
Ping扫描,不扫描端口 |
-P0 |
无Ping扫描 |
-PS |
TCP SYN Ping 扫描 |
-PA |
TCP ACK Ping 扫描 |
-PU |
UDP Ping 扫描 |
-PE;PP;PM |
ICMP PINg Types 扫描 |
-PR |
ARP Ping 扫描 |
-n |
禁止DNS反向解析 |
-R |
反向解析域名 |
–system-dns |
使用系统域名解析器 |
-sL |
列表扫描 |
-6 |
扫描IPv6地址 |
–traceroute |
路由跟踪 |
-PY |
SCTP INIT Ping 扫描 |
端口扫描
选项 |
解释 |
-T |
时序扫描 |
-T |
时序扫描 |
-p |
端口扫描顺序 |
-F |
快速扫描 |
-r |
排序 |
–top-ports |
扫描开放概率最高的1000个TCP端口 |
–port-ratio |
扫描一定概率以上的端口 |
-sS |
TCP SYN 扫描 |
-sT |
TCP 连接扫描 |
-sU |
UDP 扫描 |
-sN;sF;sX; |
隐蔽扫描 |
-sA |
TCP ACK扫描 |
-sW |
TCP 窗口扫描 |
-sM |
TCP Maimon 扫描 |
–scanflags |
自定义扫描 |
-sI |
空闲扫描 |
-sO |
IP 协议扫描 |
-b |
FTP Bounce 扫描 |
指纹识别
选项 |
解释 |
-sV |
版本探测 |
–allports |
全端口版本探测 |
–version-intensity |
设置扫描强度(0~9,默认为7) |
–version-light |
轻量级扫描(即强度设置为2) |
–version-all |
重量级扫描(即强度设置为9) |
–version-trace |
获取详细版本信息 |
-sR |
RPC扫描 |
-O |
启用操作系统探测 |
–osscan-limit |
对指定的目标进行操作系统探测(需要配合-O或-A选项使用) |
-osscan-guess;–fuzzy |
推测系统识别 |
定时选项
选项 |
解释 |
–min-hostgroup |
调整并行扫描组的大小 |
–max-hostgroup |
调整并行扫描组的大小 |
–min-parallelism |
调整探测报文的并行度 |
–max-parallelism |
调整探测报文的并行度 |
–min-rtt-timeout |
调整探测报文超时 |
–max-rtt-timeout |
调整探测报文超时 |
–initial-rtt-timeout |
调整探测报文超时 |
-host-timeout |
放弃低速目标主机 |
–scan-delay |
调整探测报文的时间间隔 |
–max-scan-delay |
调整探测报文的时间间隔 |
逃避防火墙/IDS
选项 |
解释 |
-f |
报文分段 |
–mtu |
指定偏移大小(偏移量必须是8的倍数) |
-D 【decoy1,decoy2… or RND:number】 |
IP欺骗(进行版本检测或TCP扫描时无效) |
-sI |
源地址欺骗 |
–source-port |
源端口欺骗 |
–data-length |
指定发包长度 |
–randomize-hosts |
目标主机随机排序 |
–spoof-mac |
MAC地址欺骗(0:随机生成一个MAC地址,MAC Address:手动指定一个MAC地址,Vendor Name:从指定厂商生成一个MAC地址) |
信息收集
选项 |
解释 |
–script ip-geolocation-* |
IP信息搜集 |
whois |
whois查询 |
http-email-harvest |
搜集E-mailxnxi |
hostmap-ip2hosts |
IP反查 |
dns-brute |
DNS信息sbji |
membase-http-info |
检索系统信息 |
smb-securi-mode.nse |
后台打印机服务漏洞 |
smb-check-vulns.nse |
系统漏洞扫描 |
http-stored-xss.mse |
扫描web漏洞 |
snmap-win32-services |
通过Snmap列举Windows服务/账户 |
dns-brute |
枚举DNS服务器的主机名 |
http-headers/http-sitemap-generator |
HTTP信息搜集 |
ssl-enum-ciphers |
枚举SSL密钥 |
ssh-hostkey |
SSH服务密钥信息探测 |
nmap数据库渗透测试
选项 |
解释 |
mysql-databases |
MySQL列举数据库 |
mysql-variables |
列举MySQL变量 |
mysql-empty-password |
检查MySQL密码 |
mysql-brute |
审计MySQL密码 |
mysql-audit |
审计MySQL安全配置 |
oracle-brute |
审计Oracle密码 |
ms-sql-brute |
审计MSSQL密码 |
ms-sql-empty-password |
检查MSSQL空密码 |
ms-sql-tables |
读取MSSQL数据 |
ms-sql-xp-cmdshell |
MSSQL执行系统命令 |
pgsql-brute |
审计Pgsql密码 |
nmap渗透测试
选项 |
解释 |
http-brute |
审计HTTP身份验证 |
ftp-brute |
审计ftp服务器 |
http-wordpress-brute |
审计WordPress程序 |
http-joomla-brute |
审计Joomla程序 |
pop3-brute |
审计邮件服务器 |
smb-brute.nse |
审计SMB口令 |
vnc-brute |
审计VNC服务器 |
smtp-brute |
审计SMTP服务器 |
stuxnet-detect |
检测Stuxnet蠕虫 |
snmp-netstat;snmp-processes;snmp-win32-services;snmp-brute |
SNMP服务安全审计 |
nmap技巧
选项 |
解释 |
–send-eth |
发送以太网数据包 |
–send-ip |
网络层发送 |
–privileged |
嘉定拥有所有权 |
–interactive |
在交互模式中启动 |
-V |
查看nmap版本号 |
-d |
设置调试级别 |
–packet-trace |
跟踪发送接受的报文 |
–iflist |
列举接口和路由 |
-e |
指定网络接口 |
-oG |
继续中断扫描 |
firewalk |
探测防火墙 |