Nmap實驗教材 一、 一、 nmap 簡介




Дата канвертавання24.04.2016
Памер110.63 Kb.


NMAP實驗教材

一、

一、 NMAP 簡介

現在網路安全相當受到重視,因為網站最怕的就是遭受入侵或是攻擊,遭受攻擊損失往往不是輕易可估算的,最好的方式就是站在攻擊者的觀點,當要入侵攻擊某個目標,如何蒐集資訊?該如何得知主機上的狀況?

往往第一步是使用掃描工具,來掃描測試自己的機器,利用安全掃描軟體,可以幫你掃描一台機器上,所開的所有服務。甚至可以一次掃描測試許多台電腦的所有服務,檢查掃描軟體測試結果上顯示的警告訊息,適當地調整系統上的服務,即可避免系統管理的疏失所造成的漏洞。

而常見的掃描工具有目前比較常見的網路安全掃描軟體有 NMAP、Nessus等等, NMAP 是一般大家常拿來做port scan 的軟體,兩者皆為類似的安全掃描軟體,使用這些類似的掃描工具,可以減少系統管理員管理主機上的疏失,在入侵者未發現漏洞之前先解決,達到偵測漏洞增加安全的功能。



  • 在此做一下掃描工具NMAP簡介

1. NMAP – The Network Mapper

NAMP 是一個在unix 上的port scanner 軟體,藉由NMAP 的掃描,可以輕易迅速的得知遠端主機上所執行的服務,甚至可以猜測遠端主機的作業系統以及版本,也可以針對子網路進行掃描,偵測子網路上有哪些主機存在,並一一探測其服務。

2. NMAP 的支援的功能包括:

• Vanilla TCP connect() scanning

• TCP SYN (half open) scanning

• TCP FIN, Xmas, or NULL (stealth) scanning

• TCP ftp proxy (bounce attack) scanning

• SYN/FIN scanning using IP fragments (bypasses some packet

filters)

TCP ACK and Window scanning

• UDP raw ICMP port unreachable scanning

• ICMP scanning (ping-sweep)

• TCP Ping scanning

• Direct (non portmapper) RPC scanning

• Remote OS Identification by TCP/IP Fingerprinting

• Reverse-ident scanning

NMAP也可以同時用ping 來測試大量機器up or down , NMAP 也提供彈性的目標和埠號(port number)選擇,偽造IP 來scan,判斷TCP Sequence 預測特性,等等。


  1. NMAP背景

NMAP全名是Network Mapper,是一個網路應用程式,由Fyodor Vaskovich所開發的一套開放原始碼軟體,可以檢測本機或網路遠端主機的安全性弱點、提供哪些服務、主機用什麼OS等等資訊,作為安全性的觀測以及監控。其主要功能是掃描一台主機的連接埠(Port),針對TCP/IP的TCP埠作掃瞄,不僅可以查出目標主機所開放的TCP埠,或是有哪些Port是有防火牆過濾的,還能取得對應的網路服務類型,以及應用軟體名稱與版本,另外可以偵測出目標主機所使用的作業系統、封包過濾器及防火牆種類等資訊。若是管理者沒有察覺,而被惡意攻擊者發現了這個漏洞,那就有可能會危害到主機的安全,所以管理者也要有能力使用這些工具來了解自己的主機是否有設定上的失誤。

簡單的說NMAP是可以掃描指定的IP位址或某個IP網段,可利用此套件來對內部網路進行掃描來查看內網主機是否有開啟不正常的 Port 及相關問題。

目前NMAP最新的版本為5.00,但官方也有釋出目前僅供測試,不保證穩定度的5.10,兩者都是從官網即可下載。


  • NMAP的優點:

  1. 支援多種協定之掃描 可提供多種協定的掃描,如UDP , TCP SYN (half open) ,ICMP (ping sweep) 等。

  2. 支援現有大部分系統 現行使用的電腦作業系統,如:Linux,Microsoft Windows, Solaris,Mac OS…等都可運行,故提供得大部分的使用者使用。

  3. 使用介面簡單 NMAP提供了兩種介面:文字介面,圖形介面。圖形介面可讓初學者容易學習與使用,其文字介面可提供進階者使用,可看出哪些執行結果與過程。

  4. 簡單的指令,強大的功能 官方提供了完整的文件來對程式碼來教學,包含各個不同程式的作用為何,甚至連變數的意義都有相當完整的說明。

  5. 完全免費 非常幸運的是,NMAP這個軟體為Open Source,所以從官方網站(http://insecure.org/)即可以下載到完整的程式碼。




  • 注意事項:

NMAP本身只有負責確認服務的存在,因為只針對Port進行掃描,所以就像看您的家裡有多少個門,而哪些門是打開的,也就是檢查Port是否開放,並沒有進一步確認服務本身是否有漏洞。若要進行漏洞掃描也可以用漏洞掃描工具(nessus,cyber,satan)來檢查是否有漏洞。但因為牽扯到一些法律與道德上的問題,在這裡請各位讀者謹慎使用此工具,以免造成不必要的麻煩。


    1. NMAP安裝

  • NMAP安裝

Nmap可以在Linux及Windows底下安裝,本範例將使用linux來做操作示範


  • NMAP在Windows下的安裝

首先會先來介紹NMAP在Windows下如何取得及安裝,筆者的電腦的作業系統為Windows Vista Home Premium SP1 32-bit。

在Windows下的安裝介面是完全的視窗介面,安裝檔可以從官網上取得。首先先進入官網http://insecure.org/,如下圖

接著點選畫面左方的Download,即可進入如下的下載頁面

如上圖所示,找到Windows binaries這個項目,點選下方的Latest stable release self-installer: nmap-5.xx-setup.exe,即可開始下載安裝檔。


在Windows下的安裝非常簡單,在安裝檔上方用滑鼠快速點擊兩下,即可開始安裝程序。安裝完成後,會在桌面上自動建立捷徑,點選兩下之後會出現如下的介面

這就代表我們以完成安裝,可以來使用了。



  • 在Linux下的NMAP安裝

介紹完了NMAP在Windows下的安裝,接下來要來介紹如何在Linux下安裝。

Linux分為多種版本,以下介紹各種版本之安裝方法,以指令輸入:

Cent OS , Fedora : (在root的權限下) yum install nmap

Ubuntu, Debian: sudo apt-get install nmap


其他Linux版本:

如果你的Linux無法使用yum、apt-get等指令安裝套件,可以至官網上下載原始碼,自行編譯,編譯方法如下:

開啟終端機介面,然後移動到下載的原始碼壓縮檔的目錄,輸入指令

tar –xvvf nmap-5.00.tar.bz2

將檔案解壓縮,之後移動到解壓縮出來的目錄中輸入指令

sudo ./configure

等系統順利跑完之後沒有出現缺少哪些套件的訊息後,再輸入指令

make


即可開始編譯,編譯完成沒有出現錯誤訊息的話,就再輸入

make install

即可完成安裝。

四、 NMAP實驗展示


  • 使用NMAP

不論是在Windows的視窗介面下,或者是在Linux的文字介面下,NMAP的使用方式皆相同,都是以指令下達的方式來進行,指令的格式為

nmap –掃描方式 主機位址

Usage: nmap [Scan Type(s)] [Options] {target specification}

詳細說明請參閱在Linux下之man nmap

如果沒有任何設定NMAP預設的掃描如下



輸入:nmap 140.123.111.171

Starting Nmap 5.00 ( http://nmap.org ) at 2010-02-03 10:52 CST

Interesting ports on wenlab-13.ee.ccu.edu.tw (140.123.111.171):

Not shown: 995 closed ports

PORT STATE SERVICE

22/tcp open ssh

80/tcp open http

Nmap done: 1 IP address (1 host up) scanned in 0.08 seconds



它開啟了ssh, http
以下是掃瞄特定主機的特定ports,以掃描140.123.111.171的1~1024 port為例

輸入:nmap 140.123.111.171 -p [1-1024]

Starting Nmap 5.00 ( http://nmap.org ) at 2010-02-03 13:35 CST

Interesting ports on wenlab-13.ee.ccu.edu.tw (140.123.111.171):

Not shown: 799 closed ports

PORT STATE SERVICE

22/tcp open ssh

80/tcp open http

MAC Address: 00:0E:A6:42:AD:A9 (Asustek Computer)


Nmap done: 1 IP address (1 host up) scanned in 0.42 seconds

就會知道1~1024的port哪些有開,哪些沒開。
下面則是另外輸入指令-v,這指令會把NMAP在做掃描時的所有動做步驟,都作完整的輸出。

輸入:nmap -v 140.123.111.171

Starting Nmap 5.00 ( http://nmap.org ) at 2010-02-03 10:54 CST

NSE: Loaded 0 scripts for scanning.

Initiating Ping Scan at 10:54

Scanning 140.123.111.171 [2 ports]

Completed Ping Scan at 10:54, 0.00s elapsed (1 total hosts)

Initiating Parallel DNS resolution of 1 host. at 10:54

Completed Parallel DNS resolution of 1 host. at 10:54, 0.00s elapsed

Initiating Connect Scan at 10:54

Scanning wenlab-13.ee.ccu.edu.tw (140.123.111.171) [1000 ports]

Discovered open port 111/tcp on 140.123.111.171

Discovered open port 22/tcp on 140.123.111.171

Discovered open port 80/tcp on 140.123.111.171

Discovered open port 443/tcp on 140.123.111.171

Discovered open port 8899/tcp on 140.123.111.171

Completed Connect Scan at 10:54, 0.03s elapsed (1000 total ports)

Host wenlab-13.ee.ccu.edu.tw (140.123.111.171) is up (0.00035s latency).

Interesting ports on wenlab-13.ee.ccu.edu.tw (140.123.111.171):

Not shown: 995 closed ports

PORT STATE SERVICE

22/tcp open ssh

80/tcp open http

111/tcp open rpcbind

443/tcp open https

8899/tcp open unknown
Read data files from: /usr/share/nmap

Nmap done: 1 IP address (1 host up) scanned in 0.09 seconds


參數:–sT


這是標準的TCP的3-way Handshaking的掃描方式,會先對目的端的Port傳送一個TCP-SYN的訊息,如果該Port有在傾聽的話就會回一個TCP SYN-ACK封包。反之如果目的端並沒有在傾聽狀態的話,就會回一個TCP RST-ACK封包回來重設連線狀態。NMAP就可以根據這些訊息來判斷Port是否在開啟的狀態。不論回應回來的為SYN-ACK或是RST-ACK封包,NMAP都會依據標準程序先回應ACK之後再回一個RST-ACK來切斷連線。下圖為此種掃描方式的流程圖。

例如:nmap -sT 140.123.111.171,代表的就是以基本的TCP的SYN-ACK機制去掃描140.123.111.171這台主機。



輸入:nmap -sT 140.123.111.171
Starting Nmap 5.00 ( http://nmap.org ) at 2010-02-03 10:48 CST

Interesting ports on wenlab-13.ee.ccu.edu.tw (140.123.111.171):

Not shown: 995 closed ports

PORT STATE SERVICE

22/tcp open ssh

80/tcp open http

8899/tcp open unknown
Nmap done: 1 IP address (1 host up) scanned in 0.08 seconds


結果顯示這台主機開了ssh, http,以及port 8899的tcp服務
參數:–sS

這是另一種掃描方式,稱做Half Open掃瞄機制,與上節不同的是,當目的端傳回RST-ACK或者是SYN-ACK回來時,NMAP會馬上回應一個RST封包,切斷雙方的連線,也就是3-way Handshake不會完成。這種掃描方式較上節的方法不容易被伺服器給探知。下圖為掃瞄機制流程圖

以下是示範

輸入:sudo nmap -sS 140.123.111.171(此掃描為root才可使用)

Starting Nmap 5.00 ( http://nmap.org ) at 2010-02-03 13:22 CST

Interesting ports on wenlab-13.ee.ccu.edu.tw (140.123.111.171):

Not shown: 995 closed ports

PORT STATE SERVICE

22/tcp open ssh

80/tcp open http

8899/tcp open unknown

MAC Address: 00:0E:A6:42:AD:A9 (Asustek Computer)
Nmap done: 1 IP address (1 host up) scanned in 2.52 seconds


結果顯示這台主機開了ssh, http,以及port 8899的tcp服務
參數:–sA

這是另外一種掃描技術,同樣是從RFC的標準中應用而來,主要的用途在於判斷目的端是否被防火牆或是某些類似的機制給限制過濾。RFC中規定,當一個PORT收到一個ACK封包時,不管該Port是否有開,都必需回應一個RST封包,如此一來,若NMAP對遠方機器發送ACK封包,而它都回覆了RST封包的話,便可以判斷該機器並未過濾(或是被防火牆過濾)ACK封包,但有時情況並不是那麼單純,有些機器會針對某些Port做過濾(也就是不回應),某些不會(也就是會回應一個RST封包),無論如何,NMAP都會清楚地告訴你Port的狀態,它以filtered表示該Port被過濾,以Unfiltered表示該Port未被過濾。






輸入:sudo nmap -sA 140.123.111.171

Starting Nmap 5.00 ( http://nmap.org ) at 2010-02-03 13:32 CST

All 1000 scanned ports on wenlab-13.ee.ccu.edu.tw (140.123.111.171) are unfiltered

MAC Address: 00:0E:A6:42:AD:A9 (Asustek Computer)


Nmap done: 1 IP address (1 host up) scanned in 0.42 seconds

以上說明這台主機預設所掃描的Port未被過濾
下達-A指令,則會秀出Port的完整資訊,包含服務所使用的板本資訊等等。

輸入:nmap -A 140.123.111.171

Starting Nmap 5.00 ( http://nmap.org ) at 2010-02-03 10:59 CST

Interesting ports on wenlab-13.ee.ccu.edu.tw (140.123.111.171):

Not shown: 995 closed ports

PORT STATE SERVICE VERSION

22/tcp open ssh OpenSSH 5.1 (protocol 2.0)

| ssh-hostkey: 1024 b0:e9:7e:0f:aa:63:9d:14:17:f2:0b:df:93:e9:28:0f (DSA)

|_ 2048 7b:43:3b:a3:9a:ab:24:c8:57:2d:c9:b1:3e:a6:63:d6 (RSA)

80/tcp open http Apache httpd 2.2.9 ((Fedora))

|_ html-title: ::\xA4\xA4\xA5\xBF\xB3q\xB0T\xA9\xD2\xB8\xEA\xB0T\xBA\xF4\xB8\xF4\xA6w\xA5\xFE\xBA[\xBDT\xABO\xB9\xEA\xC5\xE7\xAB\xC7

8899/tcp open ftp vsftpd 2.0.6

Service Info: OS: Unix


Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .

Nmap done: 1 IP address (1 host up) scanned in 20.64 seconds



以上說明了主機所開服務的資訊,以及每個服務的內容、版本、金鑰等等資訊
下圖是使用-sP指令, NMAP會使用ping的方式去搜尋140.123.107.0這一整個子網路中有回應的主機,但不做其他更進一步的掃描。

輸入:nmap -sP 140.123.111.0/24

Starting Nmap 5.00 ( http://nmap.org ) at 2010-02-03 11:16 CST

Host wireless-11.ee.ccu.edu.tw (140.123.111.41) is up (0.00068s latency).

Host 140.123.111.56 is up (0.00038s latency).

Host 140.123.111.58 is up (0.00034s latency).

Host 140.123.111.64 is up (0.0011s latency).

Host 140.123.111.67 is up (0.00028s latency).

Nmap done: 256 IP addresses (5 hosts up) scanned in 12.65 seconds



以上顯示了從140.123.111.1~140.123.111.255中只有5台機器是有開啟的

如果對於更多指令有興趣,在Linux下可以參閱man nmap, nmap -h,window下可以下nmap –h或是參閱官網的說明。




  1. 結語

NMAP是一個有用且免費的安全性偵測工具,今天如果身為一個工作站或是伺服器的管理員,那我們必須對我們所架設的站有非常深度的了解,但有時可能因為經驗不足或是設定上的失誤而導致伺服器有意料之外的Port是開啟的,一旦被惡意的使用者掃到,那就會產生安全性的危害。因此我們這時就可以使用NMAP來掃描自己的主機,透過NMAP所提供的詳細資訊,可以對所架設的主機能夠有更深的了解,同時也能避免有意外的安全性漏洞的產生。

NMAP所使用的機制幾乎都是從RFC中的標準所實作應用而來,當我們在使用NMAP的同時,我們也能夠對現今網路中所使用的各項Protocol能夠有更好的了解;不過在使用NMAP時要特別注意,以免在掃描時,無論是有意或是無意,而被對方當成是惡意的攻擊者,因而造成自己和對方的困擾。




  1. Q & A

Q1 如果我想知道從 192.168.0.0到192.168.255.255的IP之中,哪一個IP有開FTP port跟Telnet port,可以使用什麼指令?

A1nmap –p21.23 192.168.0-255.0-255 

或nmap –p21.23 192.168.0.0/16


Q2為什麼SYN Stealth Scan比起TCP Connect Scan較不容易被發現?請詳細比較他們的掃描方式。

A2因為TCP Connect Scan 使用的是標準的3-way Handshaking的掃描方式,會先對目的端的Port傳送一個TCP-SYN的訊息,如果該Port有在傾聽的話就會回一個TCP SYN-ACK封包。反之如果目的端並沒有在傾聽狀態的話,就會回一個TCP RST-ACK封包回來重設連線狀態。Nmap就可以根據這些訊息來判斷Port是否在開啟的狀態。而SYN Stealth Scan與TCP Connect Scan不同之處在於,當對方回應一個TCP SYN-ACK或 TCP RST-ACK 封包時,nmap 會立即回應一個 RST 封包,切斷尚未完成 TCP handshaking 的連線,這種方式比較不容易被伺服器探測到


Q3在Nmap中可利用一些較隱蔽的掃描方式希望在掃描目標主機時不在對方的系統留下日誌記錄,請列舉出三種隱藏掃描的方式並說明其功能。

A3(1) Fragmentation

Nmap –sS –f Nmap –sF –f

Nmap –sN –f Nmap –sX –f

發送碎片封包,增加封包過濾器、防火牆或是入侵偵測系統的檢查難度。

(2) FTP Bounce

Nmap –b username:password@server:port

此功能能讓使用者電腦連接到有FTP伺服器的主機,並要該FTP伺服器對網路上其他任何主機發送檔案

(3)Decoys

Nmap –D

可以做到誘餌掃瞄的功能,偽裝成其他IP來掃描目標主機。

(4)Timing

Nmap –T

發送出的掃描封包通常是大量且快速的封包,為了不使目標主機容易發現掃描的封包,調整發送封包的間隔時間。


Q4以Nmap的GUI介面工具Zenmap實作對140.123.111.171執行下列掃描動作 (1)確認140.123.111.171這台電腦是否活著以便做後續的掃描 (2)對140.123.111.171做SYN Scan,目標主機開了哪些ports

(3)分析port 22、80、8899所提供的網路服務類型,及其軟體版本



A4

(1)先在指令列輸入nmap –sP 140.123.111.171 來對目標主機做ping的動作。由下圖可知140.123.111.171這台主機是活著的。



(2) 在指令列輸入nmap –sS 140.123.111.171 做SYN Scan得到以下結果,可以知道port 22.80.111.443.8899是開著的



(3) 在指令列輸入nmap –sV –p 22,80,8899 140.123.111.171,可掃描出開啟的服務及其軟體版本如下圖:




Q5、承上題,以同樣的方式對自己的主機做分析。


База данных защищена авторским правом ©shkola.of.by 2016
звярнуцца да адміністрацыі

    Галоўная старонка