運維工程師必會工具:Nmap 和 TCPdump

發表於2015-11-18

1、NMap工具

主要功能:探測主機是否線上、掃描主機開放埠和嗅探網路服務,用於網路探測和安全掃描。

NMap支援很多掃描技術,例如:UDP、TCPconnect()、TCPSYN(半開掃描)、ftp代理(bounce攻擊)、反向標誌、ICMP、FIN、ACK掃描、SYN掃描和null掃描。

命令格式:Nmap [ 掃描型別 ] [ 通用選項 ] { 掃描目標說明 }

掃描型別:

-sT TCP connect()掃描,這是最基本的TCP掃描方式,用來建立一個TCP連線,如果成功則認為目標埠正在監聽,否則認為目標埠沒有監聽程式。這種掃描很容易被檢測到,在目標主機的日誌中會記錄大批的連線請求以及錯誤資訊。
-sS TCP同步掃描(TCP SYN),只向目標發出SYN資料包,如果收到SYN/ACK響應包就認為目標埠正在監聽,並立即斷開連線;否則認為目標埠沒有監聽程式。所以這項技術通常稱為半開掃描(half-open)。這項技術最大的好處是,很少有系統能夠把這記入系統日誌。不過,你需要root許可權來定製SYN資料包。
-sF,-sX,-sN 祕密FIN資料包掃描、聖誕樹(Xmas Tree)、空(Null)掃描模式。這些掃描方式的理論依據是:關閉的埠需要對你的探測包回應RST包,而開啟的埠必需忽略有問題的包,通過這種掃描,可間接用於檢測防火牆的健壯性。
-sP ping掃描,用ping方式檢查網路上哪些主機正在執行。當主機阻塞ICMP  echo請求包是ping掃描是無效的。nmap在任何情況下都會進行ping掃描,只有目標主機處於執行狀態,才會進行後續的掃描。
-sU UDP掃描,如果你想知道在某臺主機上提供哪些UDP服務,可以使用此選項。
-sA ACK掃描,這項高階的掃描方法通常可以用來穿過防火牆。
-sW 滑動視窗掃描,非常類似於ACK的掃描。
-sR RPC掃描,和其它不同的埠掃描方法結合使用。
-b FTP反彈攻擊(bounce attack),連線到防火牆後面的一臺FTP伺服器做代理,接著進行埠掃描。

通用選項:

-n 不做反向DNS解析,以加快掃描速度
-P0 在掃描之前,不ping主機;有些網路防火牆可能禁止ICMP請求包,使用這種掃描型別可以跳過ping測試
-PT 掃描之前,使用TCP ping確定哪些主機正在執行。
-PS 對於root使用者,這個選項讓nmap使用SYN包而不是ACK包來對目標主機進行掃描。
-PI 設定這個選項,讓nmap使用真正的ping(ICMP echo請求)來掃描目標主機是否正在執行。
-PB 這是預設的ping掃描選項。它使用ACK(-PT)和ICMP(-PI)兩種掃描型別並行掃描。如果防火牆能夠過濾其中一種包,使用這種方法,你就能夠穿過防火牆。
-O 這個選項啟用對TCP/IP指紋特徵(fingerprinting)的掃描,獲得遠端主機的標誌,也就是作業系統型別。
-I 開啟nmap的反向標誌掃描功能。
 -f 使用碎片IP資料包傳送SYN、FIN、XMAS、NULL。包增加包過濾、入侵檢測系統的難度,使其無法知道你的企圖。
-v 強烈推薦使用這個選項,它會給出掃描過程中的詳細資訊。
-S 在一些情況下,nmap可能無法確定你的源地址(nmap會告訴你)。在這種情況使用這個選項給出你的IP地址。
-g port 設定掃描的源埠。一些天真的防火牆和包過濾器的規則集允許源埠為DNS(53)或者FTP-DATA(20)的包通過和實現連線。顯然,如果攻擊者把源埠修改為20或者53,就可以摧毀防火牆的防護。
-oN 把掃描結果重定向到一個可讀的檔案logfilename中。
-oS 掃描結果輸出到標準輸出。
-A 開啟作業系統探測和版本探測。

掃描目標:

目標地址 可以為IP地址,CIRD地址等。如192.168.1.2,222.247.54.5/24
-iL filename 從filename檔案中讀取掃描的目標。
-iR 讓nmap自己隨機挑選主機進行掃描。
-p 埠,這個選項讓你選擇要進行掃描的埠號的範圍。可使用逗號分隔多個埠,減號連線一個埠範圍,在列表前指定T:表示TCP埠,U:表示UDP埠
-exclude 排除指定主機。
-excludefile 排除指定檔案中的主機。

埠的三種狀態:

  • Open:意味著目標主機能夠在這個埠使用accept()系統呼叫接受連線。
  • filtered:表示防火牆、包過濾和其它的網路安全軟體掩蓋了這個埠,禁止nmap探測其是否開啟。
  • unfiltered:表示這個埠關閉,並且沒有防火牆/包過濾軟體來隔離nmap的探測企圖。

舉例說明:

1、探測指定網段是否有FTP服務的主機,不做DNS反向解析

nmap -sS n p 21192.168.0.0/24

2、探測指定伺服器是否啟有特定埠的服務

nmap n p T:21-25,80,110,3389sS 192.168.0.1

3、使用TCP連線掃描探測指定伺服器,即使無法ping通也仍然繼續探測

4、nmap -sT PO 192.168.0.1

5、探測指定伺服器的作業系統型別

nmap O n 192.168.0.1

6、探測區域網段中各主機開啟了哪些服務

nmap sS 192.168.0.0/24

7、探測192.168.0.0和172.16.0.0/16網段中有哪些主機在執行

nmap sP n 192.168.0.0/24 172.16.0.0/16

8、快速掃描主機開放埠

nmap -F 192.168.0.1

2、TCPDump工具

主要功能:捕獲和分析資料包。

TcpDump可以將網路中傳送的資料包的“頭”完全截獲下來提供分析。它支援針對網路層、協議、主機、網路或埠的過濾,並提供 and、or、not等邏輯語句來幫助你去掉無用的資訊。

命令格式:tcpdump [ 選項 ] [ -c 數量 ] [ -i 網路介面 ] [ -w 檔名 ] [ 表示式 ]

常用選項:

  • -l:使標準輸出變為緩衝行形式;
  • -c:抓包次數;
  • -nn:直接以 IP 及 Port Number 顯示,而非主機名與服務名稱;
  • -s :<資料包大小> 設定每個資料包的大小;
  • -i:指定監聽的網路介面;
  • -r:從指定的檔案中讀取包;
  • -w:輸出資訊儲存到指定檔案;
  • -a:將網路地址和廣播地址轉變成名字;
  • -d:將匹配資訊包的程式碼以人們能夠理解的彙編格式給出;
  • -e:在輸出行列印出資料鏈路層的頭部資訊;
  • -f:將外部的Internet地址以數字的形式列印出來;
  • -t:在輸出的每一行不列印時間戳;
  • -v :輸出稍微詳細的報文資訊;加一個v更詳細。

 

四種表示式:過濾報文條件

  • 1、關於型別的關鍵字,主要包括host,net,port, 例如 host210.27.48.2,指明 210.27.48.2是一臺主機,net 202.0.0.0 指明202.0.0.0是一個網路地址,port 23 指明埠號是23。如果沒有指定型別,預設的型別是host。
  • 2、確定傳輸方向的關鍵字,主要包括src, dst ,dst or src, dst and src ,這些關鍵字指明瞭傳輸的方向。例如 src210.27.48.2 ,指明ip包中源地址是210.27.48.2, dst net 202.0.0.0 指明目的網路地址是202.0.0.0 。如果沒有指明方向關鍵字,則預設是src or dst關鍵字。
  • 3、協議的關鍵字,主要包括ip,arp,tcp,udp等型別。
  • 4、三種邏輯運算,與運算是’and’,’&&’; 或運算是’or’ ,’||’; 非運算是 ‘not ‘ ‘! ‘。

其他重要的關鍵字如下: broadcast,less(小於),greater(大於)

舉例說明:

1、截獲eth0網路卡10次收發所有資料包並將抓包結果儲存到test檔案,再讀取test抓包結果檔案

tcpdump i eth0 c 10 w test

tcpdump r test

2、截獲來訪問80埠的所有資料包(指定埠範圍portrange 1-1024)

tcpdump port 80

3、截獲所有來自主機114.254.151.51的進出所有資料包

tcpdump host 114.254.151.51

4、截獲ip包中源地址是114.254.151.51的(目的是dst)

tcpdump src 114.254.151.51

5、截獲主機114.254.151.51和主機114.254.151.52的通訊

tcpdum host 114.254.151.51 and 114.254.151.52

6、截獲tcp協議並且源地址114.254.151.51來訪問80的埠

tcpdump tcp and src 114.254.151.51 and port 80

7、截獲主機114.254.151.51除了和114.254.151.52之外的所有ip包

tcpdump ip host 114.254.151.51 and ! 114.254.151.52

8、截獲長度大於1000資料包,對於DDOS攻擊時,可以使用

tcpdump -i eth0 greater 1000

相關文章