现在的位置: 首页 > 综合 > 正文

Nmap 网络扫描知识

2013年10月07日 ⁄ 综合 ⁄ 共 2741字 ⁄ 字号 评论关闭
文章目录

文章借鉴地址:http://blog.csdn.net/aspirationflow/article/details/7694274

NMap,也就是Network Mapper,是Linux下的网络扫描和嗅探工具包。

端口:80  http ;443 https; 53 dns ;25 smtp; 22 ssh; 23 telnet;2021ftp; 110 pop3 ;119 nntp; 143 imap; 179 bgp;  500 vpn

Nmap包含四项基本功能:

  1. 主机发现(Host Discovery)
  2. 端口扫描(Port Scanning)
  3. 版本侦测(Version Detection)
  4. 操作系统侦测(Operating System Detection)

Nmap先进行主机发现,随后确定端口状况,然后确定端口上运行具体应用程序与版本信息,然后可以进行操作系统的侦测。

1.主机发现

测试目标主机是否在线,通常情况下主机发现并不单独使用,而是作为端口扫描、版本侦测、OS侦测先行步骤。常用命令如下:

-sL :列表扫描,将指定的目标的ip列举出来
-sn :只进行主机发现,不进行端口扫描
-Pn:跳过主机发现,将主机视为开启的,进行端口扫描
-PS/PA:使用TCP  SYN/ACK 方式发现
-PO:使用IP协议去探测对方主机是否开启
-n/-R: -n表示不进行DNS解析;-R表示总是进行DNS解析

2.端口扫描

用于确定目标主机的TCP/UDP端口的开放情况。

2.1 TCP SYN scanning

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

2.2 TCP connect scanning 

TCP connect方式使用系统网络API connect向目标主机的端口发起连接,如果无法连接,说明该端口关闭。该方式扫描速度比较慢,而且由于建立完整的TCP连接会在目标机上留下记录信息,不够隐蔽(TCP connect是TCP SYN无法使用才考虑选择的方式)。

2.3 TCP ACK scanning

向目标主机的端口发送ACK包,如果收到RST包,说明该端口没有被防火墙屏蔽;没有收到RST包,说明被屏蔽。该方式只能用于确定防火墙是否屏蔽某个端口,可以辅助TCP SYN的方式来判断目标主机防火墙的状况。

2.4 TCP FIN/Xmas/NULL scanning

FIN扫描向目标主机的端口发送的TCP FIN包或Xmas tree包/Null包,如果收到对方RST回复包,那么说明该端口是关闭的;没有收到RST包说明端口可能是开放的或被屏蔽的(open|filtered)。

其中Xmas tree包是指flags中FIN URG PUSH被置为1TCP包;NULL包是指所有flags都为0TCP包。

2.5 UDP scanning

UDP扫描方式用于判断UDP端口的情况。向目标主机的UDP端口发送探测包,如果收到回复“ICMP port unreachable”就说明该端口是关闭的;如果没有收到回复,那说明UDP端口可能是开放的或屏蔽的。

2.6    其他方式

除上述几种常用的方式之外,Nmap还支持多种其他探测方式。例如使用SCTP INIT/COOKIE-ECHO方式来探测SCTP的端口开放情况;使用IP protocol方式来探测目标主机支持的协议类型(TCP/UDP/ICMP/SCTP等等);使用idle scan方式借助僵尸主机(zombie host,也被称为idle host,该主机处于空闲状态并且它的IPID方式为递增。详细实现原理参见:http://nmap.org/book/idlescan.html)来扫描目标在主机,达到隐蔽自己的目的;或者使用FTP
bounce scan,借助FTP允许的代理服务扫描其他的主机,同样达到隐藏自己的身份的目的。

  -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端口状态。

  -sY/sZ: 使用SCTP INIT/COOKIE-ECHO来扫描SCTP协议端口的开放的情况。

  -sO: 使用IP protocol 扫描确定目标机支持的协议类型。

  

  

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

3. 服务版本侦测

常用命令

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

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

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

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

4.OS侦测

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

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

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

抱歉!评论已关闭.