小编今天浏览了一篇非常好的博客,发现了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 位