WEB安全nmap基础
0x001 nmap 概述
Nmap
是一款开源免费的网络发现(Network Discovery
)和安全审计(Security Auditing
)工具。软件名字Nmap
是Network Mapper
的简称。Nmap
最初是由Fyodor
在1997年开始创建的。随后在开源社区众多的志愿者参与下,该工具逐渐成为最为流行安全必备工具之一。
一般情况下,Nmap
用于列举网络主机清单、管理服务升级调度、监控主机或服务运行状况。Nmap
可以检测目标机是否在线、端口开放情况、侦测运行的服务类型及版本信息、侦测操作系统与设备类型等信息。
0x002 nmap 特点
- 主机探测:探测网络上的主机,如列出响应TCP和ICMP请求、ICMP请求、开放特别端口的主机。
- 端口扫描:探测目标主机所开放的端口。
- 版本检测:探测目标主机的网络服务,判断其服务名称及版本号。
- 系统检测:探测目标主机的操作系统及网络设备的硬件特性。
0x003 nmap 端口状态介绍
状态 | 含义 |
---|---|
open | 开放的,表示应用程序正在监听该端口的连接,外部可以访问 |
filtered | 被过滤的,表示端口被防火墙或其他网络设备阻止,不能访问 |
closed | 关闭的,表示目标主机未开启该端口 |
unfiltered | 未被过滤的,表示 Nmap 无法确定端口所处状态,需进一步探测 |
open/filetered | 开放的或被过滤的,Nmap 不能识别 |
closed/filtered | 关闭的或被过滤的,Namp 不能识别 |
0x004 nmap 扫描参数
语法结构:
nmap [Scan Type(s)] [Options] {target specification}
1.扫描目标格式
- -iL:从文件中加载目标
- -iR:随机扫描
- --exclude
:排除网段或主机地址 - --excledefile:排除文件中的地址
2.主机发现
- -sL:列出需要扫描的目标,不扫描
- -sn:只做ping扫描,不做端口扫描
- -Pn:跳过主机发现,视所有主机都在线
- -PS/PA/PU/PY[portlist]:基于TCP(SYN、ACK)、UDP、SCTP的指定端口的主机发现
- -PE/PP/PM:基于ICMP的echo、timestamp、network request的主机发现
- -PO[Protocol list]:基于IP协议字段的ping扫描
- -n/-R: -n表示不对目标最DNS解析,-R表示进行DNS解析,缺省为必要时候进行DNS解析
- --dns-servers <serv1[,serv2],...>: 指定DNS 服务器
- --system-dns:调用系统的DNS服务器
- --traceroute:显示追踪到目标的路径
3.端口扫描方法
- -sS/sT/sA/sW/sM:指定使用TCP SYN/Connect()/ACK/Window/Maimon scans的方式目标主机进行扫描
- -sU:指定使用UDP扫描的方式确定目标主机的UDP端口状况
- -sN/sF/sX:指定使用TCP Null/FIN/Xmas scans秘密扫描的方式协助探测对方的TCP端口状态
- --scanflags
:定制TCP包的flags - -sI<zombie host[:probeport]>:指定使用Idle scan的方式扫描目标主机(前提是需要找到合适的zombie host)
- -sY/sZ:使用SCTP INIT/COOKIE-ECHO扫描SCTP协议端口的开放情况
- -sO:使用IP protocol扫描确定目标机支持的协议类型
- -b
:使用FTP bounce scan扫描公式
4.端口相关参数
- -p:指定端口扫描范围,如:-p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9
- --exclude-ports
: 排除端口 - -F:扫描比缺省少的端口(缺省1000,加了-F100)
- -r:顺序扫描端口,缺省是随机分组扫描
- --top-ports
:按top排序扫描知名端口 - --port-ratio
: 按比例扫描知名端口,值在0-1之间,越小扫的越多
5.系统/版本检测
- -sV:探测开放的端口的系统/服务信息
- --version-intensity
:指定版本侦测的强度(0-9),默认为7,数值越高,探测出的服务越准确 - --version-light:输出最可能的版本信息,缺省是2
- --version-all:使用所有的探测条件进行版本/系统探测
- --version-trace:打印详细的版本扫描过程
6.脚本扫描
- --script=
:指定脚本名称 - --script-args=<n1=v1,[n2=v2,...]>:为脚本指定参数
- --script-help=
: 查看脚本帮助信息 - --script-updatedb:更新脚本数据库
7.系统检测
- -O:激活系统探测
- --osscan-limit:只对开放端口的有效主机进行系统探测
- --osscan-guess:推测系统信息
8.其他
- -T<0-5>:时间模板,越大速度越快,6个级别,推荐T4
- -6:表示使用IPV6探测
- -A:表示使用进攻性扫描
- -V:打印版本号
- -v:增加输出的详细程度
0x005 常用方法
扫描单个地址
nmap 192.168.100.10
扫描多个地址
可以是不同网段、或在同一网段的少量地址
nmap 192.168.100.10 192.168.100.15
扫描一个范围内的目标地址
nmap 192.168.100.10-60
扫描目标地址所在的某个网段
nmap 192.168.100.10/24
扫描主机列表 ip.txt 中的所有目标地址
nmap -iL C:\ip.txt
扫描除某一个目标地址之外的所有目标地址
nmap 192.168.100.10/24 -exclude 192.168.100.60
扫描除某一文件中的目标地址之外的目标地址
nmap 192.168.100.10/24 -excludefile C:\ip.txt
扫描某一目标地址的21、22、23、80端口
nmap 192.168.100.10 -p 21,22,23,80
对目标地址进行路由跟踪
nmap --traceroute 192.168.100.10
扫描目标地址所在 C 段的在线情况
nmap -sP 192.168.100.10/24
目标地址的操作系统指纹识别
nmap -O 192.168.100.10
目标地址提供的服务版本侦测
nmap -sV 192.168.100.10
探测防火墙状态
FIN
扫描用于识别端口是否关闭,收到RST
恢复说明该端口关闭,否则就是open
或filtered
状态。
nmap -sF -T4 192.168.100.10
0x006 脚本介绍
Nmap
脚本默认存在/xx/nmap/scripts
文件夹下
Nmap
脚本主要分为以下几类:
- Auth:负责处理鉴权证书(绕过鉴权)的脚本
- Broadcast:在局域网内探测更多服务的开启情况,如DHCP/DNS/SQLServerdeng
- Brute:针对常见的应用提供暴力破解方式,如HTTP/SMTP等
- Default:使用-sC或-A选项扫描时默认的脚本,提供基本的脚本扫描能力
- Discovery:对网络进行更多信息的搜集,如SMB枚举、SNMP查询等
- Dos:用于进行拒绝服务攻击
- Exploit:利用已知的漏洞入侵系统
- External:利用第三方的数据库或资源。例如:进行whois解析
- Fuzzer:模糊测试脚本,发送异常的包到目标机,探测出潜在漏洞
- Intrusive:入侵性的脚本,此类脚本可能引发对方的IDS/IPS的记录或屏蔽
- Malware:探测目标机是否感染了病毒,属于安全性脚本
- Safe:此类与Intrusive相反,属于安全性脚本
- Version:负责增强服务与版本扫描功能的脚本
- Vuln:负责检查目标机是否有常见漏洞,如MS08-067
0x007 nmap 进阶
常用脚本实例
鉴权扫描
nmap --script=auth 192.168.100.10
暴力破解攻击
nmap --script=brute 192.168.100.10
扫描常见的端口
nmap --script=vuln 192.168.100.10
应用服务扫描
nmap --script=realvnc-auth-bypass
192.168.100.10
探测局域网内更多服务开启的情况
nmap -n -p 445 --script=broadcast 192.168.100.10
whois解析
nmap -script external baidu.com
0x008 常用
ipv6地址端口扫描
nmap -6 fe80::20c:29ff:fee0:2e76
masscan + nmap快扫探测端口信息
masscan -p 1-65535 192.168.111.123 --rate=1000
nmap -sC -sV -p 80,445 192.168.111.123 -o port.txt
0x009 更多教程
本文作者:Cx330Lm
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
安全声明:⽂中所涉及的技术、思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担。所有渗透都需获取授权!