0x00 Nmap简介
Nmap是一款开源、免费的网络探测、安全审计的工具。
通过Nmap探测服务器存活以及开放的服务,以及对目标进行安全审计。
0x01 常用指令
- 基本扫描
nmap 192.168.43.0-255
- 一般扫描(加速,探测操作系统、版本信息,详细输出)
nmap -T4 -A -v
- UDP扫描(TCP SYN扫描,UDP扫描,加速,操作系统、版本探测,详细输出)
nmap -sS -sU -T4 -A -v 192.168.43.0-255
- ping扫描(ping扫,很快,但容易被火墙拦)
nmap -sn 192.168.43.0-255
- 非ping扫描(加速,探测操作系统与版本信息,详细输出,非Ping测)
nmap -T4 -A -v -Pn
- 快速扫描
nmap -T4 -F 192.168.43.0-255
- 快速扫描加强版(探测端口及版本服务信息,OS探测,设定探测等级为2)
nmap -sV -T4 -O -F --version-light 192.168.43.0-255
- 并发处理扫描(TCP SYN扫描,非Ping测扫描,只显示open状态的,最小扫描组为4即并发最少4个主机同时进行,同一时间发的报文最少量为1024,设置探测报文超时时间30秒,加速,详细输出,从ip.txt中读出IP段,扫描结果保存在result.txt)
nmap -sS -Pn -n --open --min-hostgroup 4 --min-parallelism 1024 --host-timeout 30 -T4 -v -oG result.txt -iL ip.txt
- ping测并发处理(ping扫描,1024,最小扫描组为1024即并发最少4个主机同时进行,同一时间发的报文最少量为1024,从ip.txt中读出IP段,扫描结果保存在result.txt)
nmap -sP --min-hostgroup 1024 --min-parallelism 1024 -iL ip.txt -oG ip_output.txt
0x02 扫描端口(-dns-servers、-Pn、-p)
1. Nmap列举远程机器开放的端口原理
首先判断Nmap输入的命令行中是否包含域名,如果包含需要利用DNS服务器进行域名判断,然后发现ICMP Echo Request来探测主机存活性。
然后根据返回的数据包来得到机器信息,其中就包括端口信息。
2. Nmap列举远程机器开放的端口
- 使用nmap scanme.nmap.org来列举该站点的端口信息,kali下还可以直接用zenmap(Nmap的图形化界面版),或者使用命令行下的nmap来探测。
nmap scanme.nmap.org
- –dns-servers 指定DNS服务器,Nmap进行探测之前要把域名通过DNS服务器解析为IP地址,我们也可以使用指定的DNS服务器来进行解析。
nmap --dns-server 8.8.8.8 scanme.nmap.org
- -Pn 非ping探测,对于已经知道主机存活或者防火墙开启的机器,可以使用-Pn参数来停止探测之前的ICMP请求,以达到不触发防火墙安全机制。
nmap -Pn scanme.nmap.org
- -p 指定探测端口
nmap -p 1-1000 scanme.nmap.org
3. 端口状态
- Open 表示端口处于开放状态
- Closed 表示端口处于关闭状态
- Filtered 表示端口处于过滤无法收到返回的probe状态
- UnFiltered 表示端口收到返回的probe,但是无法确认
- Opened/UnFiltered 表示端口处于开放或者是过滤状态
- Closed/Unfiltered 表示端口处于关闭或者未过滤状态
0x03 -sV
识别目标机器的服务信息。
nmap -sV 192.168.1.0-255
为了确保有一个成功的渗透测试或网络设备监控,需要知道目标系统中服务的指纹信息。服务指纹信息包括服务端口、服务名和版本等。 通过分析目标往Nmap发送的数据包中某些协议标记、选项和数据,我们可以推断发送这些数据包的操作系统等。
nmap通过向目标主机发送多个UDP与TCP数据包并分析其响应来进行操作系统指纹识别工作。
0x04 -A、-v、-T4
探测目标机器的操作系统、服务等信息。
-
-A 表示探测操作系统、服务等信息
-
-v 表示持续输出信息,不需要手动按回车
-
-T4 表示加快探测速度
nmap -A -v -T4 192.168.1.0-255
0x05 -sC、-sV、-O
探测目标机器的操作系统、服务等信息。
- -sC 表示使用nmap脚本进行探测,等价于–script=default
- -sV 表示探测目标机器上的服务信息
- -O 表示探测目标机器的操作系统信息
nmap -sC -sV -O 192.168.1.0-255
0x06 -sn、-sP
1. 两者都是探测局域网中的存活主机
- -sn ping扫描探测主机存活
- -sP 使用TCP SYN扫描、ICMP echoRequest等来探测主机存活
2. CIDR
CIDR(无类别域间路由,Classless Inter-Domain Routing),可以快速表示一个网络,如:172.16.1.1/24表示172.16.1.1-172.16.1.255之间的所有主机IP地址。
3. -sP
nmap -sP [CIDR]
如:
nmap -sP 192.168.1.1/16
对网段中所有主机进行ping扫描,以探测主机存活性,扫描过程中使用了TCP SYN扫描、ICMP echo Request来探测主机存活。
4. -sn
nmap -sn CIDR
如:
nmap -sn 192.168.1.1/16
对网段内的所有主机ping扫描,探测主机的存活性。
0x07 -oX
Nmap主机发现,结果输出到XML。
nmap -sn CIDR -oX test.xml
对网段中所有主机进行ping扫描,以探测主机存活性。同时结果输出到test.xml文件中。
0x08 端口探测技巧
nmap -p80 scanme.nmap.org 对某个端口进行探测
nmap -p80,135 scanme.nmap.org 对某几个端口进行探测
nmap -p1-100 scanme.nmap.org 对某个范围端口进行探测
nmap -p- scanme.nmap.org 对所有端口进行探测
nmap -p T:25,U:53 scanme.nmap.org 指定协议探测端口
nmap -p smtp scanme.nmap.org 通过协议名来扫描端口
nmap -p s* scanme.nmap.org 通过名称范围扫描
nmap -p [1-5000] scanme.nmap.org 扫描注册在nmap中特定范围内的端口
0x09 -e、-iflist
- -e 指定网卡扫描,用于切换使用特定网卡进行探测
- -iflist 查看本地网卡信息
Nmap是一款可拓展性强的工具,并且有些NSE脚本支持嗅探。但是这种功能需要网卡支持混杂模式才可以。或者当计算机上有两张网卡,并且两张网卡对应的不同网络。
nmap -e [网卡名] [CIDR]
如:
nmap -e eth0 192.168.1.1/16
0x0a –script、–script-args
NSE(Nmap Script Engine) Nmap脚本引擎,内置很多可以用来扫描的、针对特定任务的脚本。通过NSE可以不断拓展Nmap的扫描策略,加强Nmap的功能。
Nmap中使用–script参数来指定调用的脚本,并且脚本存储在Nmap安装路径下的script文件夹下,对于kali Linux存储在/usr/share/nmap/script/下。
使用Nmap探测Web服务的title信息。
nmap --script="[脚本名称]" [目标]
nmap --script [脚本名称] [目标]
nmap --script [脚本名称] --script-args [变量名]=[值] [目标]
用法如下:
# 使用Nmap探测http服务的http头
nmap --script http-headers 192.168.1.1
# 使用Nmap中漏洞分类脚本对目标进行探测
nmap -sV --script vuln 192.168.1.1
# 使用Nmap中发现和版本信息分类进行探测
nmap -sV --script="version,discovery" 192.168.1.1
# 使用Nmap除了exploit分类之外的其他分类进行探测
nmap -sV --script="not exploit" 192.168.1.1
# 使用Nmap中http*的脚本,但是除了(http-brute和http-slowlors)
nmap -sV --script "(http*) and not (http-slowlors and http-brute)" 192.168.1.1
# 使用Nmap中exploit,但是在使用的同时开启调试模式,-d(debug范围0~9)
nmap -sV --script exploit -d 3 --script-trace 192.168.1.1
# 使用nmap的http-title脚本,并且指定使用对应的User-Agent
nmap -sV --script http-title --script-args http.useragent="Mozilla 999" 192.168.1.1
# NSE更新
nmap --script-updatedb
常见脚本:
- –script=”auth”
- –script=”broadcast”
- –script=”brute”
- –script=”default” 相当于-sC
- –script=”discovery”
- –script=”dos”
- –script=”exploit”
- –script=”external”
- –script=”fuzzer”
- –script=”intrusive”
- –script=”malware”
- –script=”safe”
- –script=”version”
- –script=”vuln”
0x0b ndiff对比工具
对某个网络进行探测的时候,有可能之前有探测过的结果,现在探测过后,需要对之前的结果与现在的结果来对比,找到两次不同点。 监视网络变化,达到网络监控的目的。
在nmap整个工程中,除了主要的nmap工具之外,还包括很多其他工具,如ndiff。
ndiff file1 file2
其中file1和file2是nmap扫描结果的xml格式。也就是-oX参数输出出来的。
如:
ndiff 1.xml 2.xml