漏洞扫描工具Nmap的使用

小编今天浏览了一篇非常好的博客,发现了Nmap这个神奇的漏洞扫描软件。

这是一款免费的网络发现和安全审计工具,用于列举网络主机清单、管理服务升级调度、监控主机或服务运行状况。可检测主机是否在线、端口开放情况:

监测操作系统与设备类型等信息。

它拥有灵活,强大,可移植,简单,文档丰富,社区支持等优点;包括:主机发现、端口扫描、版本侦测、操作系统侦测。

而这四项功能之间,又存在大致的依赖关系 ( 通常情况下的顺序关系, 但特殊应用另外考虑),首先需要进行主机发现, 随后确定端口状况, 然后确定端口上运行具体应用程序与版本信息,然后可以进行操作系统的侦测。 而在四项基本功能的基础上, Nmap 提供防火墙与 IDS( IntrusionDetection System,入侵检测系统) 的规避技巧, 可以综合应用到四个基本功能的各个阶段; 另外 Nmap 提供强大的 NSE( Nmap Scripting Language) 脚本引擎功能, 脚本可以对基本功能进行补充和扩展。

这里给出其官网,能翻墙的朋友可以直接去下。点击打开链接

我会在最后给出,windows7 -64和linux-64的RPM安装包 嘿嘿

下面列举了一些常用的口令

1.确定指定存活的主机端口开放情况

2.完全扫描(主机发现、端口扫描、应用程序、版本侦测和调用默认NSE脚本扫描)

 T4是指:指定扫描过程使用的时序 ( Timing),总有 6 个级别( 0-5) , 级别越高, 扫描速度越快, 但也容易被防火墙或 IDS 检测并屏蔽掉
在网络通讯状况良好的情况推荐使用 T4;-A 选项用于使用进攻性方式扫描 
v显示过程中的详细信息

3.主机发现

这里给出能经常使用到的参数:

-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 <serv1[,serv2],...>: 指定DNS服务器。

--system-dns: 指定使用系统的DNS服务器

--traceroute: 追踪每个路由节点


4.快速探测局域网内活动的主机(探测一个网段内)

快速探测固定主机的情况

快速探测一段网段内主机



5.端口扫描

用于确定TCP\UDP端口开放情况;将端口划分为以下6个状态:

1. open: 端口是开放的。
2. closed: 端口是关闭的。
3. filtered: 端口被防火墙 IDS/IPS 屏蔽, 无法确定其状态。
4. unfiltered: 端口没有被屏蔽, 但是否开放需要进一步确定。
5. open|filtered: 端口是开放的或被屏蔽。
6. closed | filtered : 端口是关闭的或被屏蔽。


5.1 UDP和TCP方式扫描

下面给出一些选择扫描方式的参数

  -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扫描方式

5.1.1 UDP方式扫描端口

UDP扫描方式用于判断UDP端口的情况。向目标主机的UDP端口发送探测包,如果收到回复“ICMP port unreachable”就说明该端口是关闭的;如果没有收到回复,那说明UDP端口可能是开放的或屏蔽的。因此,通过反向排除法的方式来断定哪些UDP端口是可能出于开放状态。

抓包发现ICMP回包,防火墙将其屏蔽


5.1.2 TCP方式扫描端口

原理是基于TCP三次握手,通过SYN指令使连接一直处于半打开状态,便于扫描

用TCP和UDP结合的方式扫描前300端口


5.2扫描特定端口

参数如下

-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文件。


扫描UDP53端口状态

扫描1-100号的端口状态

快速扫描重要性排名前100的端口情况



6.版本侦测

-sV: 指定让Nmap进行版本侦测

--version-intensity <level>: 指定版本侦测强度(0-9),默认为7。数值越高,探测出的服务越准确,但是运行时间会比较长。

--version-light: 指定使用轻量侦测方式 (intensity 2)

--version-all: 尝试使用所有的probes进行侦测 (intensity 9)

--version-trace: 显示出详细的版本侦测过程信息。




7.OS侦测(用于侦测用于目标主机的操作系统类型和设备信息)

Nmap通过TCP/IP协议栈指纹来识别不同的系统和设备。Nmap分别挑选一个OPEN和CLOSE的端口,向其发送一份TCP/UDP数据包,后生成一份系统指纹

将生成的指纹与Nmap库中的进行对比,匹配出最具可能的系统。

参数如下

-O: 指定Nmap进行OS侦测。

--osscan-limit: 限制Nmap只对确定的主机的进行OS探测(至少需确知该主机分别有一个open和closed的端口)。

--osscan-guess: 大胆猜测对方的主机的系统类型。由此准确性会下降不少,但会尽可能多为用户提供潜在的操作系统。



文中只给出了一些基础的用法,IDS避规和NSE脚本引擎请浏览这位博主的博客

点击打开链接



这里给出两个版本的安装包     Linux 64 位

win 64 位 



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章