意见箱
恒创运营部门将仔细参阅您的意见和建议,必要时将通过预留邮箱与您保持联络。感谢您的支持!
意见/建议
提交建议

Nmap操作指南

来源:恒创科技 编辑:恒创科技编辑部
2024-02-13 22:52:59

说明:该篇笔记作用于 Nmap 渗透测试工具的使用以及参考

author:Tripse

updateTime:2022.2.9


Nmap操作指南

PS:​​.xml格式转换.html:xsltproc myscan.xml -o myscan.html​

功能介绍

除了端口扫描外,Nmap还具备如下功能。

● 主机探测:Nmap 可査找目标网络中的在线主机。默认情况下,Nmap 通过4种方式——ICMP echo 请求(ping)、向443端口发送TCP SYN 包、向80端口发送TCP ACK包和ICMP时间戳请求——发现目标主机。

● 服务/版本检测:在发现开放端口后,Nmap 可进一步检查目标主机的检测服务协议、应用程序名称、版本号等信息。

● 操作系统检测:Nmap 向远程主机发送一系列数据包,并能够将远程主机的响应与操作系统指纹数据库进行比较。如果发现了匹配结果,它就会显示匹配的操作系统。它确实可能无法识别目标主机的操作系统;在这种情况下,如果您知道目标系统上使用的何种操作系统,可在它提供的 URL 里提交有关信息,更新它的操作系统指纹数据库。

● 网络路由跟踪:它通过多种协议访问目标主机的不同端口,以尽可能访问目标主机。Nmap路由跟踪功能从TTL的高值开始测试,逐步递减TTL,直到它到零为止。

● Nmap 脚本引擎:这个功能扩充了Nmap 的用途。如果您要使用Nmap 实现它(在默认情况下)没有的检测功能,可利用它的脚本引擎手写一个检测脚本。目前,Nmap可检査网络服务的漏洞,还可以枚举目标系统的资源。

端口识别状态介绍

● 开放:工作于开放端口的服务器端的应用程序可以受理TCP 连接、接收UDP 数据包或者响应SCTP(流控制传输协议)请求。

● 关闭:虽然我们确实可以访问有关的端口,但是没有应用程序工作于该端口上。

● 过滤:Nmap 不能确定该端口是否开放。包过滤设备封禁了我们向目标发送的探测包。

● 未过滤:虽然可以访问到指定端口,但Nmap 不能确定该端口是否处于开放状态。

● 打开|过滤:Nmap 认为指定端口处于开放状态或过滤状态,但是不能确定处于两者之中的哪种状态。在遇到没有响应的开放端口时,Nmap 会作出这种判断。这可以是由于防火墙丢弃数据包造成的。

● 关闭|过滤:Nmap 认为指定端口处于关闭状态或过滤状态,但是不能确定处于两者之中的哪种状态。

扫描形式介绍TCP 扫描选项

● TCP 连接扫描(-sT):指定这个选项后,程序将和目标主机的每个端口都进行完整的三次握手。如果成功建立连接,则判定该端口是开放端口。由于在检测每个端口时都需要进行三次握手,所以这种扫描方式比较慢,而且扫描行为很可能被目标主机记录下来。如果启动Nmap的用户的权限不足,那么默认情况下Nmap程序将以这种模式进行扫描。

● SYN 扫描(-sS):该选项也称为半开连接或者SYN stealth。采用该选项后,Nmap将使用含有SYN标志位的数据包进行端口探测。如果目标主机回复了SYN/ACK包,则说明该端口处于开放状态:如果回复的是RST/ACK包,则说明这个端口处于关闭状态;如果没有任何响应或者发送了ICMP unreachable信息,则可认为这个端口被封禁了。SYN模式的扫描速度非常好。而且由于这种模式不会进行三次握手,所以是一种十分隐蔽的扫描方式。如果启动Nmap的用户有高级别权限,那么在默认情况下Nmap程序将以这种模式进行扫描。

● TCP NULL(-sN)、FIN(-sF)及XMAS(-sX)扫描:NULL 扫描不设置任何控制位;FIN扫描仅设置FIN标志位:XMAS扫描设置FIN、PSH和URG的标识位。如果目标主机返回了含有 RST 标识位的响应数据,则说明该端口处于关闭状态;如果目标主机没有任何回应,则该端口处于打开|过滤状态。

● TCP Maimon扫描(-sM):Uriel Maimon 首先发现了TCP Maimom扫描方式。这种模式的探测数据包含有FIN/ACK标识。对于BSD衍生出来的各种操作系统来说,如果被测端口处于开放状态,主机将会丢弃这种探测数据包;如果被测端口处于关闭状态,那么主机将会回复RST。

● TCPACK 扫描(-sA):这种扫描模式可以检测目标系统是否采用了数据包状态监测技术(stateful)防火墙,并能确定哪些端口被防火墙封禁。这种类型的数据包只有一个ACK标识位。如果目标主机的回复中含有RST标识,则说明目标主机没有被过滤。

● TCP 窗口扫描(-sW):这种扫描方式检测目标返回的RST数据包的TCP窗口字段。如果目标端口处于开放状态,这个字段的值将是正值;否则它的值应当是0。

● TCP Idle 扫描(-sI):采用这种技术后,您将通过指定的僵尸主机发送扫描数据包。本机并不与目标主机直接通信。如果对方网络里有IDS,IDS将认为发起扫描的主机是僵尸主机。

UDP 扫描选项

Nmap有多种TCP扫描方式,而UDP扫描仅有一种扫描方式(-sU)。虽然UDP扫描结果没有TCP扫描结果的可靠度高,但渗透测试人员不能因此而轻视UDP扫描,毕竟UDP端口代表着可能会有价值的服务端程序。

UDP扫描的最大问题是性能问题。由干Linux内核限制1秒内最多发送一次ICMP Port Unreachable信息。按照这个速度,对一台主机的65536个UDP端口进行完整扫描,总耗时必定会超过18个小时。这也是为什么 Nmap 扫描有时候会比较慢的原因

改善扫描速度的方式主要有:

● 进行并发的UDP 扫描;

● 优先扫描常用端口;

● 在防火墙后面扫描;

● 启用--host-timeout 选项以跳过响应过慢的主机。

这些方法能够减少UDP端口扫描所需的总体时间。

假如我们需要找到目标主机开放了哪些 UDP 端口。为提高扫描速度,我们仅扫描 53端口(DNS)和161端口(SNMP)。此时需要使用下述指令。

nmap -sU 192.168.56.103 -p 53,161

上述指令的返回结果如下。

Nmap scan report for 192.168.56.103
Host is up (0.0016s latency).
PORT STATE SERVICE
53/udp open domain
161/udp closed snmp
NSE 脚本引擎介绍

Nmap 本身就是功能强大的网络探测工具。而它的脚本引擎功能(Nmap Scripting Engine,NSE)更让 Nmap 如虎添翼。NSE 可使用户的各种网络检査工作更为自动化,有助于识别应用程序中新发现的漏洞、检测程序版本等Nmap原本不具有的功能。虽然Nmap软件包具有各种功能的脚本,但是为了满足用户的特定需求,它还支持用户撰写自定义脚本。

从进阶操作手法章节开始,我们将慢慢揭开 nmap 的面纱!

NSE自带的脚本由Lua语言(​​http://www.lua.org​​)编写。这些脚本可以分成12个类别。

● auth:此类脚本使用暴力破解等技术找出目标系统上的认证信息。

● default:启用--sC 或者-A 选项时运行此类脚本。这类脚本同时具有下述特点:

ƒ 执行速度快;

ƒ 输出的信息有指导下一步操作的价值;

ƒ 输出信息内容丰富、形式简洁;

ƒ 必须可靠;

ƒ 不会侵入目标系统;

ƒ 能泄露信息给第三方。

● discovery:该类脚本用于探索网络。

● dos:该类脚本可能使目标系统拒绝服务,请谨慎使用。

● exploit:该类脚本利用目标系统的安全漏洞。在运行这类脚本之前,渗透测试人员需要获取被测单位的行动许可。

● external:该类脚本可能泄露信息给第三方。

● fuzzer:该类脚本用于对目标系统进行模糊测试。

● instrusive:该类脚本可能导致目标系统崩溃,或耗尽目标系统的所有资源。

● malware:该类脚本检査目标系统上是否存在恶意软件或后门。

● safe:该类脚本不会导致目标服务崩溃、拒绝服务且不利用漏洞。

● version:配合版本检测选项(-sV),这类脚本对目标系统的服务程序进行深入的版本检测。

● vuln:该类脚本可检测检査目标系统上的安全漏洞。

在Kali Linux系统中,Nmap脚本位于目录/usr/share/nmap/scripts。目前,Kali Linux收录的6.25版的Nmap带有430多个脚本。

常用指令汇总解析

code

explanation

nmap 10.10.10.19

默认扫描(扫描所有端口,探测简单服务)

nmap -iL testip

读取清单扫描(同时采用默认扫描。当然,我们可以在其后追加我们需要扫描的参数,以详细扫描出结果)

nmap -sV -oA testPortVersion 10.10.10.19

端口服务探针

nmap -A 10.10.10.19 -oN nmap.all

全面扫描(不推荐适用)

nmap -sS -sV -p- -O 10.10.10.19 -oN nmap.all

全面扫描(推荐使用),后期根据端口服务探针操作 Script 精确识别服务漏洞,该操作方法应当经常于 nmap 其他操作手法相互配合 该笔记为具体演示其他参数引用,而不会指定该参数使用

nmap -6 fe80::a00:27ff:fe43:1518

IPv6 目标扫描方式

nmap -Pn 10.10.10.19

cross firewall for ICMP

nmap -f --mtu 64 10.10.10.19

减少数据包以防止被识别为 Nmap 指纹

nmap -D 192.168.179.189 10.10.10.19

指定诱饵主机,混淆目标 IPS/IDS 识别本机 nmap 扫描

nmap -g 80 10.10.10.19

利用防火墙特性:只允许某源端口流量访问本机,则操作该手法

nmap --data-length 10 10.10.10.19

修改 Nmap 数据包长度与 -f --mtu 相似同样避免被 firewall 识别为 nmap 指纹

nmap --max-parallelism 10 10.10.10.19

限制Nmap 并发扫描的最大连接数以免被 CC 流量防护限制

nmap --scan-delay 2 10.10.10.19

与上一个命令原理相同,增加数据包发送延迟,减少 IPS/IDS CC 流量防护检测和限制

常用 NSE 脚本指令汇总解析

code

explanation

nmap --script-updatedb

更新 NSE 脚本数据库,需要记住,每安装一个 NSE 脚本在 Nmap /usr/share/nmap/scripts 目录下,均需要更新指令

nmap -sC 10.10.10.19

NSE 默认类扫描目标,

nmap --script http-enum,http-headers,http-methods,http-php-version -p 80 10.10.10.19

启用 NSE 脚本进行 web 目录信息探针、HEAD 头部信息探针、PHP version 探针、HTTP 请求方法探针

nmap -sV --script vulners 10.10.10.19

启用 NSE 脚本识别已知服务信息来源探针漏洞数据

nmap --script vulscan/vulscan.nse -sV 10.10.10.19 -oA nmap.vulscan

启用 vulscan NSE ,该 NSE 脚本与上一个 NSE 相同,但是所探针的漏洞信息更为全面且详细

基础操作手法默认扫描

默认扫描会扫描目标机器的所有端口,以及端口的简单识别

利用命令

nmap 10.10.10.19

利用过程
┌──(root                                    
上一篇: 防火墙基础之访问控制与网关杀毒​ 下一篇: 手机怎么远程登录云服务器?