Nmap安装和使用详解
Nmap概述
Nmap被誉为"扫描器之王",Nmap是一个开源工具,提供跨平台(Windows、linux、mac os)
功能概述
-
查看主机存活
-
扫描目标主机开放端口
-
识别目标主机操作系统
-
查看目标主机服务的版本信息
-
漏洞探测
运行方式
-
命令行
-
图形化工具Zenmap
Nmap安装
Nmap支持Windows、linux、mac os三个平台,首先可以打开Nmap官方https://nmap.org选择最新版本点击下载按钮。
然后选择相应的平台下载即可
安装方式跟普通软件安装一样。如果是在Kali Linux中,Kali自带Nmap工具,无须再次下载和安装。
官方文档参考:
-
西班牙语版:https://nmap.org/man/es/
-
意大利语版:https://nmap.org/man/it/
-
等等,在这献上语言选择界面:https://nmap.org/docs.html
Nmap参数详解
Nmap功能非常强大,Nmap的格式如下
powershell
nmap[扫描类型...] [选项] [扫描目标说明]
可以配置的参数也很多,我们先来看一下Nmap的参数
首先在Kali中输入nmap即可查看Nmap所有的参数以及说明
我们来看一下每组参数的具体含义
目标说明
powershell
TARGET SPECIFICATION
-
-iL : 从列表中输入 从主机地址列表中导入扫描地址 可以从主机的文件中导入扫描列表
-
-iR : 随机选择目标,hostnum表示目标数目,0意味着永无休止的扫描
-
--exclude <host1 [, host2] [, host3] ...> 排除主机/网络
-
--excludefile 排除文件中的列表
主机发现
powershell
HOST DISCOVERY
-
-sL 扫描列表,仅将指定的目标IP列举出来,不进行主机发现
-
-sn 跟-sP 一样,只利用ping扫描进行主机发现,不扫描目标主机的端口,只扫描是否在线 不扫描端口
-
-Pn 将所有指定的主机视为已开启状态,跳过主机发现过程
-
-PS [portlist]:TCP SYN Ping,发送一个设置了SYN标志位的空TCP报文
-
-PE; -PP; -PM:ICMP Ping Types,发送ICMP Type 8 (回声请求)报文,期待从运行的主机得到一个type 0 (回声相应)报文
-
n:不用域名解析,加快扫描速度
-
-R:为所有目标IP地址作反向域名解析
-
--system-dns:使用系统域名解析器,一般不使用该选项,因为比较慢
端口扫描
powershell
SCAN TECHNIQUES
Nmap将目标主机端口分成6种状态:
-
open(开放)
-
closed(关闭)
-
filtered(被过滤的)
-
unfiltered(未被过滤) 可访问但不确定开放情况
-
open|filtered(开放或被过滤)无法确定端口是开放的还是被过滤的
-
closed|filtered(关闭或被过滤)无法确认端口是关闭的还是被过滤的
Nmap产生结果是基于机器的响应报文,而这些主机可能是不可信任的,会产生一些迷惑或者误导Nmap的报文
常用命令
-
-sS TCP SYN扫描,半开放状态,扫描速度快隐蔽性好(不完成TCP连接),能够明确区分端口状态
-
-sT TCP连接扫描,容易产生记录,效率低
-
-sA TCP ACK扫描 只设置ACK标志位,区别被过滤与未被过滤
-
-sU UDP服务扫描
-
--sO:IP协议扫描,可以确定目标机支持哪些IP协议(TCP, ICMP, IGMP)
端口说明和扫描顺序
powershell
PORT SPECIFICATION AND SCAN ORDER
-
--p :只扫描指定的端口,单个端口和用连字符表示的端口范围都可以;当既扫描TCP端口又扫描UDP端口时,您可以通过在端口号前加上T: 或者U:指定协议。协议限定符一直有效您直到指定另一个。
例如,参数 -p U:53,111,137,T:21-25,80,139,8080 将扫描UDP 端口53,111,和137,同时扫描列出的TCP端口。
注意,要既扫描 UDP又扫描TCP,您必须指定 -sU ,以及至少一个TCP扫描类型(如 -sS,-sF,或者 -sT)
-
--p :扫描指定的端口名称,如nmap--p smtp,http 10.10.1.44
-
--p U:[UDP ports],T:[TCP ports]:对指定的端口进行指定协议的扫描
-
--F:快速扫描(仅扫描100个最常用的端口),nmap-services文件指定想要扫描的端口;可以用---datadir选项指定自己的小小nmap-services文件
-
--top-ports :扫描前number个端口
-
--r:不要按随机顺序扫描端口,默认情况下按随机(常用的端口前移)
服务与版本探测
powershell
SERVICE/VERSION DETECTION
nmap-services是一个包含服务的数据库,Nmap通过查询该数据库可以报告那些端口可能对应于什么服务器,但不一定正确。
在用某种扫描方法发现TCP/UDP端口后,版本探测会询问这些端口,确定到底什么服务正在运行;
nmap-service-probes数据库包含查询不同服务的探测报文和解析识别响应的匹配表达式;
当Nmap从某个服务收到响应,但不能在数据库中找到匹配时,就打印出一个fingerprint和一个URL给您提交。
参数含义:
-
--sV:打开版本探测
-
--allports:不为版本探测排除任何端口,默认情况下跳过9100端口
-
--version-intensity:设置版本扫描强度,范围为0-9,默认是7,强度越高,时间越长,服务越可能被正确识别
-
--version-light:是---version-intensity2的别名
-
--version-all:是---version-intensity9的别名
-
--version-trace:跟踪版本扫描活动,打印出详细的关于正在进行的扫描的调试信息
-
--sR:RPC扫描,对所有被发现开放的TCP/UDP端口执行SunRPC程序NULL命令,来试图 确定它们是否RPC端口,如果是, 是什么程序和版本号
脚本扫描
powershell
SCRIPT SCAN
操作系统探测
powershell
OS DETECTION
-
--O:启用操作系统检测;-A可以同时启用操作系统检测和版本检测
-
--osscan-limit:针对指定的目标进行操作系统检测
-
--osscan-guess|--fuzzy:当Nmap无法确定所检测的操作系统时,会尽可能地提供最相近的匹配
时间和性能
powershell
TIMING AND PERFORMANCE
-
--min-hostgroup ;--max-hostgroup :
调整并行扫描组的大小,用于保持组的大小在一个指定的范围之内;
Nmap具有并行扫描多主机端口或版本的能力,Nmap将多个目标IP地址空间分成组,然后在同一时间对一个组进行扫描。
通常,大的组更有效。缺点是只有当整个组扫描结束后才会提供主机的扫描结果
-
--min-parallelism; --max-parallelism :调整探测报文的并行度,用于控制主机组的探测报文数量;默认状态下, Nmap基于网络性能计算一个理想的并行度,这个值经常改变
防火墙/IDS规避和欺骗
powershell
FIREWALL/IDS EVASION AND SPOOFING
-
--f(报文分段); --mtu(使用指定的MTU):将TCP头分段在几个包中,使得包过滤器、 IDS以及其它工具的检测更加困难
-
--D <decoy1 [, decoy2] [, ME]...>:
使用诱饵隐蔽扫描;
使用逗号分隔每个诱饵主机,也可用自己的真实IP作为诱饵,这时可使用 ME选项说明。
如果在第6个位置或更后的位置使用ME选项,一些常用端口扫描检测器(如Solar Designer's excellent scanlogd)就不会报告 这个真实IP。
如果不使用ME选项,Nmap 将真实IP放在一个随机的位置
-
--S <IP_Address>:源地址哄骗,说明所需发送包的接口IP地址
-
--e :使用指定的接口
-
--source-port; -g :
源端口哄骗;
很多产品本身会有这类 不安全的隐患,甚至是微软的产品。
Windows 2000和Windows XP中包含的IPsec过滤器也包含了一些隐含规则,允许所有来自88端口(Kerberos)的TCP和UDP数据流。
另一个常见的例子是Zone Alarm个人防火墙到2.1.25版本仍然允许源端口53(DNS)或 67(DHCP)的UDP包进入。
-
--data-length :发送报文时附加随机数据
-
--ttl :设置IPtime-to-live域
-
--randomize-hosts:对目标主机的顺序随机排列
输出选项
powershell
OUTPUT
-
--oN :标准输出
-
--oX :XML输出写入指定的文件
-
--oS :脚本小子输出,类似于交互工具输出
-
--oG :Grep输出
-
--oA :输出至所有格式
-
--v:提高输出信息的详细度
-
--d [level]:提高或设置调试级别,9最高
-
--packet-trace:跟踪发送和接收的报文
-
--iflist:输出检测到的接口列表和系统路由
-
--append-output:表示在输出文件中添加,而不是覆盖原文件
-
--resume :继续中断的扫描,
-
--stylesheet :设置XSL样式表,转换XML输出;Web浏览器中打开Nmap的XML输出时,将会在文件系统中寻找nmap.xsl文件,并使用它输出结果
-
--no-stylesheet:忽略XML生命的XSL样式表
使用示例
常用扫描命令
扫描ip地址或域名
nmap后面也可以带上多个ip地址或域名,用空格隔开
扫描整个网段
powershell
nmap ip/网段
还可以输入ip地址范围内如
powershell
nmap 192.168.0.1-200
扫描文件
我们可以新建一个文件,往里面输入一些需要扫描的地址
扫描文件命令
powershell
nmap -iL 文件路径
从扫描的结果可以看到一共扫到了4个我们输入的地址
只进行主机发现
可以用以下命令只进行主机发现,而不扫描端口或服务
powershell
nmap -sn或-sP ip 地址
扫描特定端口
我们还可以指定只扫描的端口号
powershell
nmap -p80,21,8080 ip或域名
也可以指定扫描端口号的范围
powershell
nmap -p50-800 ip或域名
输出扫描结果
前面的扫描不会显示扫描过程,可以加入-vv参数显示扫描的过程
powershell
nmap -vv
路由跟踪
可以输入以下命令进行简单扫描并进行路由跟踪
powershell
namp -traceroute 域名
探测操作系统
输入一下命令探测操作系统类型
powershell
nmap -O ip
-O多次扫描结果可能会不一样,建议替换为-A
TCP和UDP扫描
扫描半开放TCP端口
powershell
nmap -sS ip
扫描UDP 服务端口
powershell
nmap -sU ip
版本扫描
扫描系统安装的服务以及服务的版本
powershell
namp -sV ip
综合扫描
包含1-10000端口的ping扫描,操作系统扫描,路由跟踪,服务探测
powershell
nmap -A ip
图形化工具Zenmap使用
Kali自带nmap图形化工具zenmap
启动zenmap可以看到如下界面
-
target:扫描地址 可以输入ip或域名
-
Profile:扫描的方式,zenmap默认给我们提供了10种组合扫描方式
命令行中也可以自己定义扫描参数,默认扫描方式的参数如下
-
-T 设置速度等级 1-5级,数字越大,速度越快
-
-A 综合扫描
-
-v 输出扫描过程
点击扫描即可展示扫描过程和结果
修改扫描参数
也可以对系统提供的默认扫描方式修改其扫描参数
未完待遇,本文持续更新,先收藏一波吧。。。
友情链接: