nmap 工具使用

nmap 功能简介

1.概述

​ 大家都知道,我们使用的nmap功能非常强大,从发现主机,到端口探测,到服务发现,漏洞利用等等,无所不能。nmap扫主要包括四个方面的扫描功能分别是主机发现(Host Discovery)、端口扫描(Port Scanning)、应用与版本侦测(Version Detection)、操作系统侦测(Operating System Detection)

2.简单使用

简单扫描:主机探测

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)信息,在扫描过程中显示扫描的细节,从而让用户了解当前的扫描状态

3.主机发现

扫描的所有主机列表:

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解析,那么可以使用该选项。

4.端口扫描

跳过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 <flags>: 定制TCP包的flags。  
  
  -sI <zombiehost[:probeport]>: 指定使用idle scan方式来扫描目标主机(前提需要找到合适的zombie host)  
  
  -sY/sZ: 使用SCTP INIT/COOKIE-ECHO来扫描SCTP协议端口的开放的情况。  
  
  -sO: 使用IP protocol 扫描确定目标机支持的协议类型。  
  
  -b <FTP relay host>: 使用FTP bounce scan扫描方式  

端口参数与扫描顺序

[plain] view plain copy
-p <port ranges>: 扫描指定的端口  
  
实例: -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>:扫描开放概率最高的number个端口(nmap的作者曾经做过大规模地互联网扫描,以此统计出网络上各种端口可能开放的概率。以此排列出最有可能开放端口的列表,具体可以参见文件:nmap-services。默认情况下,nmap会扫描最有可能的1000个TCP端口)  
  
--port-ratio <ratio>: 扫描指定频率以上的端口。与上述--top-ports类似,这里以概率作为参数,让概率大于--port-ratio的端口才被扫描。显然参数必须在在0到1之间,具体范围概率情况可以查看nmap-services文件。  

5.服务版本侦测

-sV (版本检测)

打开版本检测。同时可以使用-A打开系统探测和版本探测。

--allports(不为版本探测排除任何端口)

默认情况下,Nmap版本探测会跳过9100 TCP端口,也可以不理会任何Exclude指示符,指定–allports扫描所有端口。

--version-intensity <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很少被需要。

6.主机系统指纹识别

识别操作系统

nmap -O 192.168.1.1

Nmap不仅能扫描IP还能扫描端口,同时Nmap还可以识别操作系统的类型。为什么要识别操作系统是什么类型呢?因为系统不一样,渗透的方法就不同,linux系统和Windows系统有区别,安卓系统和苹果系统有区别,所以识别出是什么系统还是非常重要的。

在这里插入图片描述

nmap -A 192.168.1.1

在这里插入图片描述

7.其他的常见命令

输出命令

-oN 文件名 输出普通文件

-oX 文件名 输出xml文件

错误调试:

--log-errors 输出错误日志

--packet-trace 获取从当前主机到目标主机的所有节

8.漏洞扫描

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

猜你喜欢

转载自blog.csdn.net/huangyongkang666/article/details/123702373