文章目录
Nmap介绍
Nmap是一款非常强大的实用工具,可用于:
1.检测活在网络上的主机( 主机发现 )
2.检测主机上开放的端口( 端口发现 )
3.检测到相应的端口服务( 服务发现 )
4.软件版本检测脆弱性的漏洞( Nmap的脚本 )
主机发现
参数
参数 | 作用 |
---|---|
无参数 | 扫描目标主机所有的信息比如ipv4、 反向dns名字、网络服务端口及运行状态等 |
-sn | 不进行端口扫描 |
- -traceroute | 追踪到目标主机经过的路由器信息 |
-sP | Ping扫描。 仅仅 进行ping扫描 (主机发现),然后打印出对扫描做出响应的那些主机。 没有进一步的测试 (如端口扫描或者操作系统探测)。 |
-PS [端口号] | TCP SYN Ping。默认目的端口为80。SYN标志位告诉对方您正试图建立一个连接。 若目标端口是关闭的,一个RST (复位) 包会发回来。 若端口是开放的,目标会回应 一个SYN/ACK报文。然后运行Nmap的机器则会扼杀这个正在建立的连接, 发送一个RST报文结束握手 |
-PA [端口号] | TCP ACK Ping。默认端口(80)。发送ACK报文表示确认一个建立连接的尝试,目标返回RST报文。 |
-PU [portlist] | UDP Ping。默认端口是31338。它发送一个空的(除非指定了–data-length UDP报文到目标的端口。如果目标机器的端口是 关闭的,UDP探测得到一个ICMP端口无法到达的报文。 这对于Nmap意味着该机器正在运行。 |
-PR | ARP Ping。 |
-il | 读取文件中的IP地址操作 |
-n | 不用域名解析。map 永不对它发现的活动IP地址进行反向域名解析。 既然DNS一般比较慢,这可以让事情更快些。 |
-R | 为所有目标解析域名。Nmap map 永远 对目标IP地址作反向域名解析 |
–system-dns | 使用系统域名解析器 |
端口发现
Nmap识别的端口状态
符号 | 意义 |
---|---|
open | 开放的 |
closed | 关闭的 |
filtered | 被过滤的。由于包过滤阻止探测报文到达端口, Nmap无法确定该端口是否开放。 |
unfiltered | 未被过滤的。未被过滤状态意味着端口可访问,但Nmap不能确定它是开放还是关闭。 |
open/filtered | 开放或者被过滤的 |
closed/filtered | 关闭或者被过滤的 |
参数
参数 | 作用 |
---|---|
-p | 端口扫描。后面跟端口。-p- localhost 扫描所有端口。-p[1-65535] 扫描所有端口 |
-sS | TCP SYN扫描。它不打开一个完全的TCP连接。它发送一个SYN报文,返回 SYN/ACK表示端口开放,而 RST (复位)表示端口关闭。 |
-sT | TCP connect()扫描。当Nmap连接,然后不发送数据又关闭连接 |
-sU | UDP扫描。如果返回ICMP端口不可到达错误, 该端口是closed(关闭的)。 |
-sA | TCP ACK扫描。当扫描未被过滤的系统时, open(开放的)和closed(关闭的) 端口 都会返回RST报文。Nmap把它们标记为 unfiltered(未被过滤的) |
–scanflags | –scanflags选项允许您通过指定任意TCP标志位来设计您自己的扫描。 |
-sI <zombie host[:probeport]> | 指定僵尸机扫描 |
Nmap僵尸扫描
调用nmap的脚本查看某个IP是否能作为zombia
-sI 指定zombia
服务发现
参数 | 作用 |
---|---|
-sV | 版本探测 |
-O | 操作系统识别 |
-O -v | 详细模式的系统查询 |
-A | 强烈扫描 |
-il | 读取文件中的IP地址操作 |
–ttl | 指定TTL值 |
-sC 接 目标IP | 使用NSE脚本扫描目标主机检测漏洞 |
Nmap脚本的使用
参数
参数 | 作用 |
---|---|
- -script=类别 | 用制定类别扫描。比如后面可以跟Nmap脚本名字用脚本扫描 |
- -script=脚本 | 使用某个或某类脚本进行扫描 |
- -script-args=参数 | 为脚本提供默认参数 |
- -script-args-file=filename | 使用文件为脚本提供参数 |
- -script-trace | 显示脚本执行过程中发送与接收的数据 |
- -script-updatedb | 更新脚本数据库 |
- -script-help= | 显示脚本的帮助信息,=后可以逗号分隔的文件或脚本类别 |
下面是- -script=后面常接的扫描方式
auth: 负责处理鉴权证书(绕开鉴权)的脚本
broadcast: 在局域网内探查更多服务开启状况,如dhcp/dns/sqlserver等服务
brute: 提供暴力破解方式,针对常见的应用如http/snmp等
default: 使用-sC或-A选项扫描时候默认的脚本,提供基本脚本扫描能力
discovery: 对网络进行更多的信息,如SMB枚举、SNMP查询等
dos: 用于进行拒绝服务攻击
exploit: 利用已知的漏洞入侵系统
external: 利用第三方的数据库或资源,例如进行whois解析
fuzzer: 模糊测试的脚本,发送异常的包到目标机,探测出潜在漏洞 intrusive: 入侵性的脚本,此类脚本可能引发对方的IDS/IPS的记录或屏蔽
malware: 探测目标机是否感染了病毒、开启了后门等信息
safe: 此类与intrusive相反,属于安全性脚本
version: 负责增强服务与版本扫描(Version Detection)功能的脚本
vuln: 负责检查目标机是否有常见的漏洞(Vulnerability),如是否有MS08_067
Nmap一些用法
下面是如何使用脚本:
上图是利用Nmap脚本扫描。
nmap按脚本分类扫描
两个WAF扫描脚本
nmap --script=http-waf-detect www.baidu.com扫描目标是否有WAF网络防火墙保护
nmap --script=http-waf-fingerprint www.baidu.com 作用同上,但是更详细
(1) nmap --script=auth 192.168.137.* 负责处理鉴权证书(绕开鉴权)的脚本,也可以作为检测部分应用弱口令
(2)nmap --script=brute 192.168.137.* 提供暴力破解的方式 可对数据库,smb,snmp等进行简单密码的暴力猜解
(3)nmap --script=default 192.168.137.* 或者 nmap -sC 192.168.137.* 默认的脚本扫描,主要是搜集各种应用服务的信息,收集到后,可再针对具体服务进行攻击
(4)nmap --script=vuln 192.168.137.* 检查是否存在常见漏洞
(5)nmap -n -p445 --script=broadcast 192.168.137.4 在局域网内探查更多服务开启状况
(6)nmap --script external 202.103.243.110 利用第三方的数据库或资源,例如进行whois解析
(7)nmap --script=http-waf-detect www.baidu.com扫描目标是否有WAF网络防火墙保护
nmap --script=http-waf-fingerprint www.baidu.com 作用同上,但是更详细
nmap按应用服务扫描
smb扫描:
smb破解
nmap --script=smb-brute.nse 192.168.137.4
smb字典破解
nmap --script=smb-brute.nse --script-args=userdb=/var/passwd,passdb=/var/passwd 192.168.137.4
smb已知几个严重漏
nmap --script=smb-check-vulns.nse --script-args=unsafe=1 192.168.137.4
Mssql扫描:
猜解mssql用户名和密码
nmap -p1433 --script=ms-sql-brute --script-args=userdb=/var/passwd,passdb=/var/passwd 192.168.137.4
扫描root空口令
nmap -p3306 --script=mysql-empty-password.nse 192.168.137.4
列出所有mysql用户
nmap -p3306 --script=mysql-users.nse --script-args=mysqluser=root 192.168.137.4
Oracle扫描:
oracle sid扫描
nmap --script=oracle-sid-brute -p 1521-1560 192.168.137.5
oracle弱口令破解
nmap --script oracle-brute -p 1521 --script-args oracle-brute.sid=ORCL,userdb=/var/passwd,passdb=/var/passwd 192.168.137.5
其他一些比较好用的脚本
nmap --script=broadcast-netbios-master-browser 192.168.137.4 发现网关
nmap -p 873 --script rsync-brute --script-args 'rsync-brute.module=www' 192.168.137.4 破解rsync
nmap --script informix-brute -p 9088 192.168.137.4 informix数据库破解
nmap -p 5432 --script pgsql-brute 192.168.137.4 pgsql破解
nmap -sU --script snmp-brute 192.168.137.4 snmp破解
nmap -sV --script=telnet-brute 192.168.137.4 telnet破解
nmap --script=http-vuln-cve2010-0738 --script-args 'http-vuln-cve2010-0738.paths={/path1/,/path2/}' <target> jboss autopwn
nmap --script=http-methods.nse 192.168.137.4 检查http方法
nmap --script http-slowloris --max-parallelism 400 192.168.137.4 dos攻击,对于处理能力较小的站点还挺好用的 'half-HTTP' connections
nmap --script=samba-vuln-cve-2012-1182 -p 139 192.168.137.4