Nmap相关介绍及使用

一、Nmap介绍

Nmap是一款网络扫描和主机检测的非常有用的工具。Nmap是不局限于仅仅收集信息和枚举,同时可以用来作为一个漏洞探测器或安全扫描器。它可以适用于winodws,linux,mac等操作系统。
Nmap是一款非常强大的实用工具,可用于:
检测活在网络上的主机(主机发现)
检测主机上开放的端口(端口发现或枚举)
检测到相应的端口(服务发现)的软件和版本
检测操作系统,硬件地址,以及软件版本
检测脆弱性的漏洞(Nmap的脚本)

此外nmap还提供图形界面zenmap。。Zenmap 是用 Python 语言编 写而成的开源免费的图形界面,能够运行在不同操作系统平台上(Windows/linux/Unix/Mac OS 等)。Zenmap 旨在为 nmap 提供更加简单的操作方式。简单常用的操作命令可以保存成为 profile,用户扫 描时选择 profile 即可;可以方便地比较不同的扫描结果;提供网络拓扑结构(NetworkTopology) 的图形显示功能。 其中 Profile 栏位,用于选择“Zenmap 默认提供的 Profile”或“用户创建的 Profile”;Command 栏位,用于显示选择 Profile 对应的命令或者用户自行指定的命令;Topology 选项卡,用于显示扫 描到的目标机与本机之间的拓扑结构。

二、Nmap基本用法

1.主机发现

原理:
主机发现发现的原理与 Ping 命令类似,发送探测包到目标主机,如果收到回复,那么说明目标 主机是开启的。Nmap 支持十多种不同的主机探测方式,比如发送 ICMP ECHO/TIMESTAMP/NETMASK 报 文、发送 TCPSYN/ACK 包、发送 SCTP INIT/COOKIE-ECHO 包,用户可以在不同的条件下灵活选用不同 的方式来探测目标机。
用法:

-sL: List Scan 列表扫描,仅将指定的目标的 IP 列举出来,不进行主机发现。 
-sn: Ping Scan 只进行主机发现,不进行端口扫描。 
-Pn: 将所有指定的主机视作开启的,跳过主机发现的过程。 
-PS/PA/PU/PY[portlist]: 使用 TCPSYN/ACK 或 SCTP INIT/ECHO 方式进行发现。 
-PE/PP/PM: 使用 ICMP echo, timestamp, and netmask 请求包发现主机。
-PO[protocollist]: 使 用 IP 协议包探测对方主机是否开启。 
-n/-R: -n 表示不进行 DNS 解析;
-R 表示总是进行 DNS 解析。 
--dns-servers : 指定 DNS 服务器。 
--system-dns: 指定使用系统的 DNS 服务器 
--traceroute: 追踪每个路由节点 其中,比较常用的使用的是
-sn,表示只单独进行主机发现过程;
-Pn 表示直接跳过主机发现而进行 端口扫描等高级操作(如果已经确知目标主机已经开启,可用该选项)
-n,如果不想使用 DNS 或 reverse DNS 解析,那么可以使用该选项。

2. 端口扫描

原理:
这是 Nmap 默认的扫描方式,通常被称作半开放扫描(Half-open scanning)。该方式发送 SYN 到目标端口,如果收到 SYN/ACK 回复,那么判断端口是开放的;如果收到 RST 包,说明该端口是关 闭的。如果没有收到回复,那么判断该端口被屏蔽(Filtered)。因为该方式仅发送 SYN 包对目标 主机的特定端口,但不建立的完整的 TCP 连接,所以相对比较隐蔽,而且效率比较高,适用范围广。
用法:

-p : 扫描指定的端口 
-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 文件。
-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 扫描方式

3. 版本侦测

原理:
首先检查 open 与 open|filtered 状态的端口是否在排除端口列表内。如果在排除列表,将该端口剔 除。 如果是 TCP 端口,尝试建立 TCP 连接。尝试等待片刻,通常在等待时间内,会接收 到目标机发送的“WelcomeBanner”信息。nmap 将接收到的 Banner 与 nmap-services-probes 中 NULL probe 中的签名进行对比。查找对应应用程序的名字与版本信息。
用法:

-sV: 指定让 Nmap 进行版本侦测 
--version-intensity : 指定版本侦测强度(0-9),默认为 7。数值越高,探测出的服务越准确, 但是运行时间会比较长。 
--version-light: 指定使用轻量侦测方式 (intensity 2) 
--version-all: 尝试使用所有的 probes 进行侦测 (intensity 9) 
--version-trace: 显示出详细的版本侦测过程信息。

4. OS侦测

原理:
Nmap 使用 TCP/IP 协议栈指纹来识别不同的操作系统和设备。在 RFC 规范中,有些地方对 TCP/IP 的 实现并没有强制规定,由此不同的 TCP/IP 方案中可能都有自己的特定方式。Nmap 主要是根据这些 细节上的差异来判断操作系统的类型的。 具体实现方式如下: Nmap 内部包含了 2600 多已知系统的指纹特征(在文件 nmap-os-db 文件中)。将此指纹数据库作为 进行指纹对比的样本库。 分别挑选一个 open 和 closed 的端口,向其发送经过精心设计的 TCP/UDP/ICMP 数据包,根据返回的 数据包生成一份系统指纹。 将探测生成的指纹与 nmap-os-db 中指纹进行对比,查找匹配的系统。如果无法匹配,以概率形式列 举出可能的系统。
用法:

-O: 指定 Nmap 进行 OS 侦测。 
--osscan-limit: 限制 Nmap 只对确定的主机的进行 OS 探测(至少需确知该主机分别有一个 open 和 closed 的端口)。 
--osscan-guess: 大胆猜测对方的主机的系统类型。由此准确性会下降不少,但会尽可能多为用户提供潜在的操作系统。

三、基本用法举例

举一堆栗子
扫描单一的一个主机,命令如下:
#nmap 192.168.1.2
扫描整个子网,命令如下:
#nmap 192.168.1.1/24
扫描多个目标,命令如下:
#nmap 192.168.1.2 192.168.1.5
扫描一个范围内的目标,如下:
#nmap 192.168.1.1-100 (扫描IP地址为192.168.1.1-192.168.1.100内的所有主机)
如果你有一个ip地址列表,将这个保存为一个txt文件,和namp在同一目录下,扫描这个txt内的所有主机,命令如下:
#nmap -iL target.txt
如果你想看到你扫描的所有主机的列表,用以下命令:
#nmap -sL 192.168.1.1/24
扫描除过某一个ip外的所有子网主机,命令:
#nmap 192.168.1.1/24 -exclude 192.168.1.1
扫描除过某一个文件中的ip外的子网主机命令
#nmap 192.168.1.1/24 -exclude file xxx.txt (xxx.txt中的文件将会从扫描的主机中排除)
扫描特定主机上的80,21,23端口,命令如下
#nmap -p80,21,23 192.168.1.1

扫描类型参数解释
-sT # TCP connect()扫描——全开
-sS # TCP SYN扫描——半开
-sP #ping扫描
-sU #udp扫描
-R #RPC扫描
-v #冗余模式
-O #TCP/IP指纹特征扫描
-sV # 高级扫描,通常用来穿过防火墙规则集
-A # 全面系统检测

四、Nmap高级用法

1. 防火墙/IDS规避

防火墙与 IDS 规避为用于绕开防火墙与 IDS(入侵检测系统)的检测与屏蔽,以便能够更加详 细地发现目标主机的状况。 Nmap 提供了多种规避技巧,通常可以从两个方面考虑规避方式:数据包的变换(Packet Change) 与时序变换(Timing Change)。
规避原理:
•分片(Fragmentation) 将可疑的探测包进行分片处理(例如将 TCP 包拆分成多个 IP 包发送过去),某些简单的防火墙为了 加快处理速度可能不会进行重组检查,以此避开其检查。
•IP 诱骗(IP decoys) 在进行扫描时,将真实 IP 地址和其他主机的 IP 地址(其他主机需要在线,否则目标主机将回复大 量数据包到不存在的主机,从而实质构成了拒绝服务攻击)混合使用,以此让目标主机的防火墙或 IDS 追踪检查大量的不同 IP 地址的数据包,降低其追查到自身的概率。注意,某些高级的 IDS 系统 通过统计分析仍然可以追踪出扫描者真实 IP 地址。
•IP 伪装(IP Spoofing) 顾名思义,IP 伪装即将自己发送的数据包中的 IP 地址伪装成其他主机的地址,从而目标机认为是 其他主机在与之通信。需要注意,如果希望接收到目标主机的回复包,那么伪装的 IP 需要位于统一局域网内。另外,如果既希望隐蔽自己的 IP 地址,又希望收到目标主机的回复包,那么可以尝试使 用 idle scan 或匿名代理(如 TOR)等网络技术。
•指定源端口 某些目标主机只允许来自特定端口的数据包通过防火墙。例如 FTP 服务器配置为:允许源端口为 21 号的 TCP 包通过防火墙与 FTP 服务端通信,但是源端口为其他端口的数据包被屏蔽。所以,在此类 情况下,可以指定 Nmap 将发送的数据包的源端口都设置特定的端口。
•扫描延时 某些防火墙针对发送过于频繁的数据包会进行严格的侦查,而且某些系统限制错误报文产生的频率 (例如,Solaris 系统通常会限制每秒钟只能产生一个 ICMP 消息回复给 UDP 扫描),所以,定制该 情况下发包的频率和发包延时可以降低目标主机的审查强度、节省网络带宽。
•其他技术 Nmap 还提供多种规避技巧,比如指定使用某个网络接口来发送数据包、指定发送包的最小长度、指 定发包的 MTU、指定 TTL、指定伪装的 MAC 地址、使用错误检查和(badchecksum)。

2. 规避用法

-f; --mtu : 指定使用分片、指定数据包的 MTU. 
-D : 用一组 IP 地址掩盖真实地址,其中 ME 填入自己的 IP 地址。 
-S : 伪装成其他 IP 地址 
-e : 使用特定的网络接口 
-g/--source-port : 使用指定源端口 
--data-length : 填充随机数据让数据包长度达到 Num。 
--ip-options : 使用指定的 IP 选项来发送数据包。 
--ttl : 设置 time-to-live 时间。 
--spoof-mac : 伪装 MAC 地址 
--badsum: 使用错误的 checksum 来发送数据包(正常情况下,该类数据包被抛弃,如果收到回复, 说明回复来自防火墙或 IDS/IPS)。

3. 规避演示

nmap -v -F -Pn –D 192.168.1.111,192.168.1.102,ME -e eth0 -g 3355 192.168.1.110
其中,-F 表示快速扫描 100 个端口;-Pn 表示不进行 Ping 扫描;-D 表示使用 IP 诱骗方式掩盖自己 真实 IP(其中 ME 表示自己 IP);-e eth0 表示使用 eth0 网卡发送该数据包;-g 3355 表示自己的 源端口使用 3355;192.168.1.110 是被扫描的目标 IP 地址。 我们可以从 Wireshark 中看到数据包的流动情况:对于每个探测包,Nmap 都使用-D 选项指定的 IP 地址发送不同的数据包,从而达到扰乱对方防火墙/IDS 检查的目的(更好的方式-D 选项中嵌入 RND 随机数,这样更具有迷惑性)。当探测到 80 端口时候,目标主机向我们回复了 SYN/ACK 包回来(当 然也向其他诱骗的 IP 回复 SYN/ACK 包,我们无法接收到),证明 80 端口是开放的。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值