大家都知道,我们使用的nmap功能非常强大,从发现主机,到端口探测,到服务发现,漏洞利用等等,无所不能。nmap扫主要包括四个方面的扫描功能分别是主机发现(Host Discovery)、端口扫描(Port Scanning)、应用与版本侦测(Version Detection)、操作系统侦测(Operating System Detection)
简单扫描:主机探测
nmap 192.168.1.1
对结果进行详细输出:
nmap -vv 192.168.1.1
扫描整个子网:
nmap 192.168.1.1/24
扫描多个目标:
nmap 192.168.1.1,192.168.2.1
扫描一个范围的目标:
nmap 192.168.1.1-254
扫描一个文件中的IP列表:
nmap -iL file.txt
Nmap进行完整全面的扫描
nmap –T4 –A –v 192.168.1.1
其中-A选项用于使用进攻性(Aggressive)方式扫描;-T4指定扫描过程使用的时序(Timing),总有6个级别(0-5),级别越高,扫描速度越快,但也容易被防火墙或IDS检测并屏蔽掉,在网络通讯状况良好的情况推荐使用T4;-v表示显示冗余(verbosity)信息,在扫描过程中显示扫描的细节,从而让用户了解当前的扫描状态
扫描的所有主机列表:
nmap -sL 192.168.1.1/24
扫描除过每个IP的所有子网IP:
nmap 192.168.1.1/24 -exclude 192.168.1.2
扫描除过每一个文件中IP的子网IP:
nmap 192.168.1.1/24 -exclude file.txt
-sL: List Scan 列表扫描,仅将指定的目标的IP列举出来,不进行主机发现。
-sn: Ping Scan 只进行主机发现,不进行端口扫描。
-sP: Ping Scan 只进行主机发现,不进行端口扫描。
-Pn: 将所有指定的主机视作开启的,跳过主机发现的过程。
-PS[portlist]: 使用TCP SYN Ping扫描方式进行发现。
-PA[portlist]: 使用TCP ACK Ping扫描方式进行发现。
-PU[portlist]: 使用TCP UDP Ping扫描方式进行发现。
-PY[portlist]: 使用SCTP INIT Ping扫描方式进行发现。
-PR: ARP Ping Scan
-PE: 使用ICMP echo Ping扫描方式发现主机。
-PP: 使用ICMP timestamp Ping扫描方式发现主机。
-PM: 使用ICMP netmask Ping扫描方式发现主机。
-PO[protocollist]: 使用IP协议包探测对方主机是否开启(非ping扫)。
-n:表示不进行DNS反向解析(使用该选项的时候Nmap永远不对目标ip地址作反向域名解析)
-R:表示总是进行DNS解析(使用该选项的时候Nmap永远对目标ip地址作反向域名解析)。
-6: 扫描IPv6地址
—dns-servers : 指定DNS服务器。
—system-dns: 指定使用系统的DNS服务器
—traceroute: 路由跟踪(使用—traceroute选项即可进行路由追踪.)使用路由追踪功能可以帮助用户了解网络的同行情况,通过此选项可以轻松地查出从计算机到目标之间所经过的网络节点,并可以看到通过各个节点的时间.
其中,比较常用的使用的是-sn
,表示只单独进行主机发现过程;-Pn
表示直接跳过主机发现而进行端口扫描等高级操作(如果已经确知目标主机已经开启,可用该选项);-n
,如果不想使用DNS或reverse DNS解析,那么可以使用该选项。
跳过Ping扫描阶段(无ping扫描)
nmap -PN 192.168.1.1
在默认情况下Nmap在进行其他扫描之前,Nmap都会对目标进行一个Ping扫描。如果目标禁止了Ping,那么Nmap发出的Ping扫描就不会有反应。在接不到如何结果返回的情况下,Nmap就会直接结束整个扫描过程,如果是这样,扫描结果是不准确的。如果遇到这种情况,我们可以使用-PN参数,启用无Ping扫描,跳过Ping扫描这个过程。
使用ARP协议进行扫描
nmap -PR 192.168.1.1
ARP协议扫描只适用于局域网内,使用ARP,不仅速度快,而且结果也会更加准确
半开扫描:nmap -sS 192.168.1.1
全开扫描:nmap -sT 192.168.1.1
扫描全部端口:
nmap -p "*" 192.168.1.1
扫描指定的端口
nmap -p 80 192.168.152.154
扫描方式选项
-sS/sT/sA/sW/sM:指定使用 TCP SYN/Connect()/ACK/Window/Maimon scans的方式来对目标主机进行扫描。
-sU: 指定使用UDP扫描方式确定目标主机的UDP端口状况。
-sN/sF/sX: 指定使用TCP Null, FIN, and Xmas scans秘密扫描方式来协助探测对方的TCP端口状态。
--scanflags : 定制TCP包的flags。
-sI : 指定使用idle scan方式来扫描目标主机(前提需要找到合适的zombie host)
-sY/sZ: 使用SCTP INIT/COOKIE-ECHO来扫描SCTP协议端口的开放的情况。
-sO: 使用IP protocol 扫描确定目标机支持的协议类型。
-b : 使用FTP bounce scan扫描方式
端口参数与扫描顺序
[plain] view plain copy
-p : 扫描指定的端口
实例: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9(其中T代表TCP协议、U代表UDP协议、S代表SCTP协议)
-F: Fast mode – 快速模式,仅扫描TOP 100的端口
-r: 不进行端口随机打乱的操作(如无该参数,nmap会将要扫描的端口以随机顺序方式扫描,以让nmap的扫描不易被对方防火墙检测到)。
--top-ports :扫描开放概率最高的number个端口(nmap的作者曾经做过大规模地互联网扫描,以此统计出网络上各种端口可能开放的概率。以此排列出最有可能开放端口的列表,具体可以参见文件:nmap-services。默认情况下,nmap会扫描最有可能的1000个TCP端口)
--port-ratio : 扫描指定频率以上的端口。与上述--top-ports类似,这里以概率作为参数,让概率大于--port-ratio的端口才被扫描。显然参数必须在在0到1之间,具体范围概率情况可以查看nmap-services文件。
-sV (版本检测)
打开版本检测。同时可以使用-A打开系统探测和版本探测。
--allports(不为版本探测排除任何端口)
默认情况下,Nmap版本探测会跳过9100 TCP端口,也可以不理会任何Exclude指示符,指定–allports扫描所有端口。
--version-intensity (设置 版本扫描强度)
数值越高, 服务越有可能被正确识别。 然而,高强度扫描花更多时间。强度必须在0和9之间。 默认是7。
--version-light (打开轻量级模式)
这是 --version-intensity 2的方便的别名。轻量级模式使 版本扫描快许多,但它识别服务的可能性也略微小一点。
--version-all (尝试每个探测)
–version-intensity 9的别名, 保证对每个端口尝试每个探测报文。
--version-trace (跟踪版本扫描活动)
这导致Nmap打印出详细的关于正在进行的扫描的调试信息。 它是用–packet-trace所得到的信息的子集。
-sR (RPC扫描)
这种方法和许多端口扫描方法联合使用。 它对所有被发现开放的TCP/UDP端口执行SunRPC程序NULL命令,来试图 确定它们是否RPC端口,如果是, 是什么程序和版本号。因此您可以有效地获得和rpcinfo -p一样的信息, 即使目标的端口映射在防火墙后面(或者被TCP包装器保护)。Decoys目前不能和RPC scan一起工作。 这作为版本扫描(-sV)的一部分自动打开。 由于版本探测包括它并且全面得多,-sR很少被需要。
识别操作系统
nmap -O 192.168.1.1
Nmap不仅能扫描IP还能扫描端口,同时Nmap还可以识别操作系统的类型。为什么要识别操作系统是什么类型呢?因为系统不一样,渗透的方法就不同,linux系统和Windows系统有区别,安卓系统和苹果系统有区别,所以识别出是什么系统还是非常重要的。
nmap -A 192.168.1.1
输出命令
-oN 文件名 输出普通文件
-oX 文件名 输出xml文件
错误调试:
--log-errors 输出错误日志
--packet-trace 获取从当前主机到目标主机的所有节
nmap 扩展漏洞扫描模块
1.vulscan
#获取vulscan漏洞库
git clone https://github.com/scipag/vulscan scipag_vulscan
#创建链接
ln -s `pwd`/scipag_vulscan /usr/share/nmap/scripts/vulscan
如果直接访问下载
请将文件安装到Nmap安装的以下文件夹中
Nmap\scripts\vulscan\*
用法:
必须运行以下最小命令才能启动简单的漏洞扫描:
nmap -sV --script=vulscan/vulscan.nse www.example.com
漏洞数据库会定期更新和组装。要支持最新披露的漏洞,请使本地漏洞数据库保持最新。
要自动更新数据库,只需设置文件的执行权限并运行它:update.sh
chmod 744 update.sh
./update.sh
如果要手动更新数据库,请转到以下网站并下载这些文件:
- https://www.computec.ch/projekte/vulscan/download/cve.csv
- https://www.computec.ch/projekte/vulscan/download/exploitdb.csv
- https://www.computec.ch/projekte/vulscan/download/openvas.csv
- https://www.computec.ch/projekte/vulscan/download/osvdb.csv
- https://www.computec.ch/projekte/vulscan/download/scipvuldb.csv
- https://www.computec.ch/projekte/vulscan/download/securityfocus.csv
- https://www.computec.ch/projekte/vulscan/download/securitytracker.csv
- https://www.computec.ch/projekte/vulscan/download/xforce.csv
将文件复制到您的 vulscan 文件夹中:
2.nmap-vulners
cd /usr/share/nmap/scripts/
git clone https://github.com/vulnersCom/nmap-vulners.git
用法:
nmap -sV --script=nmap-vulners/vulners.nse 192.168.1.1
3.混合使用
nmap -sV --script nmap-vulners,vulscan --script-args vulscandb=scipvuldb.csv 192.168.1.1