NMAP工具學習筆記

1 工具介紹

Nmap使用TCP/IP協議棧指紋準確地判斷目標主機的操作系統類型,Nmap工作原理如下圖所示:

Nmap的固定語法格式如下:

Nmap [空格] [選項多選項|協議] [空格] [目標]

示例:nmap -A 192. 168.126.131            #-A 全面掃描/綜合掃描

2 主機發現

  • Ping 掃描只進行Ping,然後顯示出在線的主機:nmap -sP 192.168.126.131/24
  • 無Ping掃描通常用於防火牆禁止Ping的情況下,這可以穿透防火牆,也可以避免被防火牆發現。

如果想知道這些協議是如何判斷目標主機是否存活可以使用--packet-trace 選項。

可以手動指定掃描目標主機的協議,nmap -p06,17,2

TCP: 對應協議編號爲6

IGMP:對應協議編號爲2

ICMP:對應協議編號爲1

UDP:對應協議編號爲17

  • -PS選項發送一個設置了SYN標誌位的空TCP報文。默認目的端口爲80,可以指定一個以逗 號分隔的端口列表 (如-PS22, 23,25, 80,115, 3306, 3389)。
  • -PU選項是發送-個空的UDP報文到指定端口。如果不指定端口則默認是40125。
  • -PE; -PP; -PM選項,Nmap發送一個ICMP type 8 (回聲請求)報文到目標IP地址,從運行的主機得到一個type0 (回聲響應)報文。

                  -PE選項簡單地來說是通過向目標發送ICMP Echo數據包來探測目標主機是否在線。

                 -PP選項是ICMP時間戳Ping掃描。

                 -PM選項可以進行ICMP地址掩碼Ping掃描。

  • -PR選項通常在掃描局域網時使用。
  • -R選項多用於綁定域名的服務器主機上,便於我們瞭解目標的詳細信息。
  • SCTP ( Stream Control Transmission Protocol, 流控制傳輸協議) 可以看作是TCP協議的改進,通過向目標發送INIT包,根據目標主機的相應判斷目標主機是否存活。

3 端口掃描

電腦運行的系統程序,其實就像一個閉合的圓圈,但是電腦是爲人服務的,它需要接受一些指令,並且按照指令調整系統功能來工作,於是系統程序設計者就把這個圓圈截成很多段,這些線段接口就叫端口(通俗講是斷口,就是中斷)。系統運行到這些端口時,先判斷端口是否打開或關閉,如果關閉,則是繩子接通了,系統往下運行;如果端口是打開的,系統就得到命令,有外部數據輸入,接受外部數據並執行。

Nmap提供了6個端口狀態:

Open Closed Filtered Unfiltered Open|Filtered Closed|Filtered

  1. -T (0-5) 可以啓用時序選項,對於時序選項這裏有0~5不同的選項。
  2. -T0 (偏執的):非常慢的掃描,用於IDS逃避。
  3. -T1 (鬼祟的):緩慢的掃描,用於IDS逃避。
  4. -T2 (文雅的):降低速度以降低對帶寬的消耗,此選項一般不常用。
  5. -T3(普通的):默認,根據目標的反應自動調整時間。
  6. -T4 (野蠻的):快速掃描,常用掃描方式,需要在很好的網絡環境下進行掃描,請求可能會淹沒目標。
  7. T5 (瘋狂的):極速掃描,這種掃描方式以犧牲準確度來提升掃描速度。

一般用-T4進行掃描,這樣保證了可以在最少的時間內掃描到儘可能精確的數據。配合-F選項效果更好。

  • -p選項,以指定掃描的端口號。

如果既想掃描TCP端口又想掃描UDP端口,可以在端口號前加上“T: “或”U: “,分別代表TCP協議與UDP協議。注意,要既掃描UDP又掃描TCP,必須指定-sU以及至少一個TCP掃描類型(如-sS,-sF, 或者-sT)。

  • -F選項,使用該選項可以快速地掃描有限的端口。

nmap-services 包含了默認掃描的端口,也可以用--datadir 選項指定自己的nmap-services文件。

  • -r選項,使用該選項不會對端口進行隨機順序掃描。
  • --top-ports選項,這個功能便於我們發現具體而又有用的端口。
  • -sS掃描方式是比較常用的一種掃描方式,比較隱蔽。

它常常被稱爲半開放掃描,因爲它不打開一個完全的TCP連接即3次握手。目標主機端口是關閉的情況下,Nmap的工作流程爲向目標主機發送一個SYN包請求連接,如果收到RST包則表明無法連接目標主機。如果目標主機端口是開放的,會響應個SYN/ACK包,當Nmap收到目標主機的響應後,則向目標發送一個RST替代ACK包,連接結束,則此時3次握手並沒有完成。

  • -sT選項是用於SYN掃描不能使用的時候,基礎、穩定。

接收到請求後響應了-個SYN+ACK包,Nmap 向目標主機發送一個ACK包,確認連接。

  • -sU選項可以進行UDP掃描,UDP掃描或許可以發現更多可以被黑客利用的端口。

UDP掃描發送空的UDP報文到目標端口,UDP頭是沒有任何數據的,這就使Nmap可以輕鬆辨別目標端口的開放狀態。如果返回ICMP端口不可到達錯誤就可以認定該端口是關閉的,其他的就可以被認定是被過濾的,如果被響應了則判斷目標端口是開放狀態。UDP掃描是相當慢的,使用-p選項指定需要掃描的端口。

  • 隱蔽掃描,-sN是Null掃描、-sF是FIN掃描、-sX是Xmas掃描。

-sA選項啓用TCPACK掃描,TCPACK掃描有一個非常致命的缺點,它不能確定端口是否是開放的還是被過濾的。

  • --scanflags選項可以啓用自定義TCP掃描,--scanflags URGACKPSHRSTSYNFIN設置了所有標誌位。
  • -sI選項就可以啓用空閒掃描,允許進行端口完全欺騙掃描。可以利用不活躍的殭屍主機反彈給攻擊者一個旁通信道,從而進行端口掃描。

nmap -sI www. Oday.co80 192. 168.126.131          #殭屍主機爲www..0day.co

4 指紋識別與探測

  • -sV使用該選項不是進行一個端口掃描,而是根據端口對應的服務,根據服務指紋識別出相應的版本。
  • --version-intensity 選項可以爲每個報文賦予1~9之間的值。被賦予較低值的探測報文對大範圍的常見服務有效,而被賦予較高值的報文一般沒有實際作用。值越高,服務越有可能被正確識別,但是這也會犧牲相當長的一段時間,強度必須在0~9,默認的強度是7。

--version-light則是對應的--version- intensity 2。

--version-all對應的是--version-intensity 9。

  • -sR選項多用於與其他端口掃描選項相結合使用。它對所有被發現開放的TCP/UDP端口執行SunRPC程序NULL命令,來試圖確定它們是否爲RPC端口,如果是RPC端口,則返回程序和版本號。
  • --osscan-limit選項僅在使用-O或-A進行操作系統檢測時起作用。

5 時機調整

  1. 並行掃描組有最小、最大的設置:-min-hostgroup與 -max-hostgroup,介於5~1024,nmap --min-hostgroup 30 192.168.126.1/24
  2. -min-parallelism大於1可以在網絡或主機不好的情況下更好地掃描,但這會影響到結果的準確度。-max-parallelism 應該設置爲1,防止Nmap對同主機同 一時間發送多次報文。
  3. 一般情況下,rtt 值不得小於100毫秒,也最好不要超過1000毫秒。nmap --initial-rtt- timeout 1000ms 192. 168.126.131
  4. --host-timeout的單位是毫秒,一般我們設置爲1800000 毫秒,保證Nmap在對單個主機掃描的時間上不會超過半小時,當然並不是在這半個小時的時間中只掃描這一個主機,其他的主機也會同時被掃描。

6 防火牆/IDS逃逸

  • 偏移量必須是8的倍數.
  • IP欺騙的語法如下:

Nmap -D [ decoy1, decoy2|RND: number] [目標]

使用-D選項可以指定多個IP地址,或者使用RND隨機生成幾個地址,在指定的誘餌之間使用逗號進行分割,需要注意的是在進行版本檢測或者TCP掃描的時候誘餌是無效的。需要注意的是,誘餌主機必須處於工作狀態,否則會導致目標主機的SYN洪水攻擊。

  • -sI選項指定所需要發包的接口IP地址,nmap -sI www. Oday.co80 192. 168.126.131
  • 通常情況下,TCP包是40個字節,ICMPEcho有28個字節,所以在原來的報文基礎上附加隨機數據達到規避防火牆的效果。nmap --data-length 30 192.168.126.131
  • 冒失地指定一個MAC定製反而會引起管理員的懷疑,這時我們可以使用數字“0” 隨機分配一個MAC地址。可以使用的參數包括0、MAC Address、Vendor Name.0表示隨機生成個MAC地址,MAC Address表示用戶手動指定一個MAC地址,Vendor Name表示從指定的廠商生成個 MAC地址。

摘錄自:《NMAP滲透測試指南》

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