nmap

端口掃描在百度百科上的定義是:html

端口掃描是指某些別有用心的人發送一組端口掃描消息,試圖以此侵入某臺計算機,並瞭解其提供的計算機網絡服務類型(這些網絡服務均與端口號相關),可是端口掃描不但能夠爲黑客所利用,同時端口掃描仍是網絡安全工做者的必備的利器,經過對端口的掃描,瞭解網站中出現的漏洞以及端口的開放狀況,對網站安全方面有着不可或缺的貢獻,是你學習網絡安全的第一門課程的首選linux

目前在市面上主要的端口掃描工具是X_Scan、SuperScan、nmap,其中在這裏主推的是nmap,由於nmap具備如下的這一些優勢:編程

一、多種多樣的參數,豐富的腳本庫,知足用戶的我的定製需求,其中腳本庫還提供了不少強大的功能任你選擇windows

二、強大的可移植性,基本上能在全部的主流系統上運行,並且代碼是開源的安全

三、詳細的文檔說明,和強大的社區團隊進行支持,方面新人上手服務器

Nmap是一款開源免費的網絡發現(Network Discovery)和安全審計(Security Auditing)工具,可是nmap也是有一些缺點的,好比說上手較難,可是難上手是相對的,與其餘達到這種功能性的軟件產品相比,仍是比較容易上手的,可是這也不妨礙nmap成爲世界千萬安全專家列爲必備的工具之一,在其中的一些影視做品中《黑客帝國2》、《特警判官》中都有亮相網絡

廢話很少說,開始今天的nmap學習:tcp

nmap的安裝:直接從百度上下載,而後安裝的步驟跟其餘的軟件同樣,最後確認安裝成功只須要在命令行中輸入nmap回車,有相關的參數輸出即爲安裝成功,安裝的具體步驟能夠查看:http://jingyan.baidu.com/article/5bbb5a1b1e0a7713eba179cb.html,在此就很少說了工具

Nmap包含四項基本功能:學習

  1. 主機發現(Host Discovery)
  2. 端口掃描(Port Scanning)
  3. 版本偵測(Version Detection)
  4. 操做系統偵測(Operating System Detection)

下面就從主機發現一步一步進行探討

主機發現顧名思義就是發現所要掃描的主機是不是正在運行的狀態,接下來就來一個簡單例子

例子要求:獲取http://nmap.org 的主機是否開啓

輸入命令:nmap -F -sT -v nmap.org

-F:掃描100個最有可能開放的端口   -v 獲取掃描的信息   -sT:採用的是TCP掃描 不寫也是能夠的,默認採用的就是TCP掃描

運行以下:

由圖中的1,咱們能夠發現對URL進行解析花了16.5秒,這個地方花費的時間是能夠進行優化的,優化的方法會稍後介紹

圖中的2,是總共的運行時間

圖中的3是說明有96個端口被屏蔽了,也就是說明了網站的防火牆是開啓的,由於沒有開啓防火牆是不會對端口進行屏蔽的,

補充說明:

端口端口通常是有下面這幾種狀態的

狀態 詳細的參數說明
 Open  端口開啓,數據有到達主機,有程序在端口上監控
 Closed  端口關閉,數據有到達主機,沒有程序在端口上監控
 Filtered  數據沒有到達主機,返回的結果爲空,數據被防火牆或者是IDS過濾
 UnFiltered  數據有到達主機,可是不能識別端口的當前狀態
 Open|Filtered  端口沒有返回值,主要發生在UDP、IP、FIN、NULL和Xmas掃描中

 Closed|Filtered

 只發生在IP ID idle掃描

圖中的4是本次返回的關鍵信息,其中咱們要主要關注的是端口號,端口狀態,端口上的服務

那你可能就會要問爲何要關注這些端口呢?那這個問題就要轉到探討爲何要進行掃描?

掃描對於黑客和安全人員來講,主要的流程是這樣的

上面的圖中的IP寫錯了,應該改成FTP

從這個圖中咱們不難發現,咱們主要關注的區域就是這些內容

接下來就來討論下面上面提出來的問題?怎樣對URL解析的時間進行優化,在Nmap重提供了不進行解析的參數(-n),這樣就不會對域名進行解析了

其中關於域名解析的相關參數還有:

-R 爲全部的目標主機進行解析

--system-dns 使用系統域名解析器進行解析,這個解析起來會比較慢

--dns-server 服務器選擇DNS解析

說到-R註釋的意思你會有所體會,其實nmap的掃描解析不止是對一個目標主機進行解析,還能夠對必定範圍內的目標主機羣進行解析

例如:查找45.33.49.119-120的主機的狀態以及端口狀態

分析:

一、雖然查找的主機的數量很少,可是這樣查找起來也是很浪費時間的, 全部咱們能夠經過使用快速查找的方法來節約時間

快速查找端口方法的原理以下:

默認的狀況下,咱們的查找是查找最有可能開放的1000端口,可是使用快速端口查找(參數 -F )會查找最有可能開放的100個端口,這樣也就節約了10倍的時間

 二、這裏咱們須要獲取端口的狀態,因此就不能使用參數(-sn),這個參數是能夠跳過端口掃描,直接進行主機發現的

輸入命令:nmap -F -sT -v -n 45.33.49.119-120      45.33.49.119:nmap.org的IP地址

PS:一、-sn參數只能掃描的主機,不能掃描端口,另外一個參數也要特別注意的是(-PE)經過ICMP echo斷定主機是否存活

運行狀況以下:

圖片中的1處指的是,採用sT的掃描方法,這種掃描方法準確,速度快,可是這樣的掃描容易被防火牆和IDS發現並記錄,因此這種方法,實際中並很少用

由圖中的3處咱們能夠知道在不進行解析的狀況下掃描用時爲26.92秒,比解析的時候用的時間節約了很多

圖中的4說明了掃描了2個主機,而後只有一個主機爲開啓

 提示:

在nmap運行的時候,若是咱們能夠像其餘編程同樣打「斷點」,直接按鍵盤的d鍵就好了,若是想知道運行的進度能夠按下X鍵

好了,示例也講完了,下面咱們就來分析一下掃描的各類方法:

端口掃描

一、TCP掃描(-sT)

這是一種最爲普通的掃描方法,這種掃描方法的特色是:掃描的速度快,準確性高,對操做者沒有權限上的要求,可是容易被防火牆和IDS(防入侵系統)發現

運行的原理:經過創建TCP的三次握手鍊接來進行信息的傳遞

① Client端發送SYN;

② Server端返回SYN/ACK,代表端口開放;

③ Client端返回ACK,代表鏈接已創建;

④ Client端主動斷開鏈接。

 二、SYN掃描(-sS)

這是一種祕密的掃描方式之一,由於在SYN掃描中Client端和Server端沒有造成3次握手,因此沒有創建一個正常的TCP鏈接,所以不被防火牆和日誌所記錄,通常不會再目標主機上留下任何的痕跡,可是這種掃描是須要root權限(對於windows用戶來講,是沒有root權限這個概念的,root權限是linux的最高權限,對應windows的管理員權限)

運行的原理圖以下:

三、NULL掃描

NULL掃描是一種反向的掃描方法,經過發送一個沒有任何標誌位的數據包給服務器,而後等待服務器的返回內容。這種掃描的方法比前面說起的掃描方法要隱蔽不少,可是這種方法的準確度也是較低的, 主要的用途是用來判斷操做系統是否爲windows,由於windows不遵照RFC 793標準,不論端口是開啓仍是關閉的都返回RST包

可是雖然NULL具備這樣的一些用處,可是本人卻認爲不宜使用NULL

一、NULL方法的精確度不高,端口的狀態返回的不是很準確

二、要獲取目標主機的運行系統,可使用參數(-O),來獲取對於一些操做系統沒法準確判斷的,能夠加上參數(-osscan-guess)

三、NULL掃描易被過濾

四、FIN掃描

FIN掃描的原理與NULL掃描的原理基本上是同樣的在這裏就不重複了

五、ACK掃描

ACK掃描的原理是發送一個ACK包給目標主機,不論目標主機的端口是否開啓,都會返回相應的RST包,經過判斷RST包中的TTL來判斷端口是否開啓

運行原理圖:

TTL值小於64端口開啓,大於64端口關閉

大體上主要的掃描方法就是這些,除了咱們能夠按照這樣些參數去執行掃描外,還能夠本身定義一個TCP掃描包

六、自定義TCP掃描包的參數爲(--scanflags)

例如:定製一個包含ACK掃描和SYN掃描的安裝包

命令:nmap --scanflags ACKSYN nmap.org

 好了,接下來還有各類掃描方法的端口列表參數

-PS 端口列表用,隔開[tcp80 syn 掃描]
-PA 端口列表用,隔開[ack掃描](PS+PA測試狀態包過濾防火牆【非狀態的PA能夠過】)【默認掃描端口1-1024】
-PU 端口列表用,隔開[udp高端口掃描 穿越只過濾tcp的防火牆]

其餘的常見命令

輸出命令

-oN 文件名 輸出普通文件

-oX 文件名 輸出xml文件

錯誤調試:

--log-errors 輸出錯誤日誌

--packet-trace 獲取從當前主機到目標主機的全部節點

其餘的相關參數能夠參考:http://www.2cto.com/Article/201203/125686.html 到時候須要再進行查找

相關資料:

http://www.tuicool.com/articles/ZBvmYrN

http://www.2cto.com/Article/201203/125686.html

相關文章
相關標籤/搜索