滲透測試之nmap

呂小豬發表於2020-10-25

一,功能介紹

    Nmap是網路連線埠掃描軟體,用來掃描網上電腦開放的哪些連線埠,並且確定哪些服務執行在哪些埠連線,推斷是哪個作業系統,他是網路管理員必備的軟體之一,以及用於評估網路系統安全。

 

二,部署指南

    * kali整合壞境

    * 單獨安裝

 

三,實戰

    Nmap的引數選項繁多,功能非常豐富,Nmap的通用命令格式Nmap<掃描選項><掃描目標>

 (一)主機發現

   1)主機發現原理

    主機發現的原理和ping命令差不多,傳送探測包到目標主機,如果收到回覆,那表明主機是存在的。Nmap支援十多種不同的主機探測方式,如ICMP BCHO/TIMESYAMP/NETMASK報文,傳送TCPSYN/AVCK包,傳送SCTP INIT/COOKIE-ECHO包,使用者可以在不同的條件下靈活選用不同的方式進行探測目標主機。

   2)主機發現的基本用法

  • -sL:List Scan   列表掃描,僅將掃描的主機列舉出來,不進行主機發現。 
  • -sn:Ping Scan  只進行主機發現,不進行埠掃描。
  • -Pn:將指定的主機視為開啟,跳過主機發現的過程。
  • -PS/PA/PU/PY:使用TCP SYN/ACK或SCTP INIT/ECHO方式進行主機發現。
  • -PE/PP/PM:使用ICMP echo,tmestamp,and netmask 請求發現主機。
  • -PO:使用IP協議包探測對方主機是否開啟。
  • -n /-R:-n表示不進行DNS解析,-R表示總進行DNS解析。
  • --dns-server:指定dns伺服器。
  • --system-dns:指定使用系統的DNS。
  • --traceroute:追蹤每個路由節點。 

 (二)埠掃描

   1)埠掃描原理:

    埠掃描是Nmap最核心的功能,用於確定TCP/UDP埠的開放情況,預設情況下,Nmap會掃描1000個最有可能開放的TCP埠,Nmap將埠分為六個狀態。

     open:埠是開放的。

     closed:埠是關閉的。

     filtered:埠被防火牆IDS/IPS遮蔽,無法確定其狀態。

     unfiltered:埠沒有被遮蔽,但是否開放需進一步確定。

     open/filtered:埠是開放的或被遮蔽。

     closed/unfiltered:埠是關閉的或沒有被遮蔽。

    埠掃描非常強大,提供了很多的探測方式:

  • TCP  SYN scanning
  • TCP  connect scanning
  • TPC  ACK scanning
  • TCP  FIN/Xmas/NULl scanning
  • UDP scanning
  • 其他方式

   2)埠掃描用法

  •  -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埠狀態。 

  • --scanflags <flags>: 定製TCP包的flags。
  •  -sI <zombiehost[:probeport]>: 指定使用idle scan方式來掃描目標主機(前提需要找到合適的zombie host)。

  • -sY/sZ: 使用SCTP INIT/COOKIE-ECHO來掃描SCTP協議埠的開放的情況。
  • -sO: 使用IP protocol 掃描確定目標機支援的協議型別。
  • -b <FTP relay host>: 使用FTP bounce scan掃描方式 。

  

  (三)版本偵測

   1)版本偵測原理

    

    簡要的介紹版本的偵測原理。版本偵測主要分為以下幾個步驟:

  •  首先檢查open與open|filtered狀態的埠是否在排除埠列表內。如果在排除列表,將該埠剔除。
  •  如果是TCP埠,嘗試建立TCP連線。嘗試等待片刻(通常6秒或更多,具體時間可以查詢檔案nmap-services-probes中Probe TCP NULL q||對應的  totalwaitms)。通常在等待時間內,會接收到目標機傳送的“WelcomeBanner”資訊。nmap將接收到的Banner與nmap-services-probes中NULL probe中的簽名進行對比。查詢對應應用程式的名字與版本資訊。
  •  如果通過“Welcome Banner”無法確定應用程式版本,那麼nmap再嘗試傳送其他的探測包(即從nmap-services-probes中挑選合適的probe),將probe得到回覆包與資料庫中的簽名進行對比。如果反覆探測都無法得出具體應用,那麼列印出應用返回報文,讓使用者自行進一步判定。
  •  如果是UDP埠,那麼直接使用nmap-services-probes中探測包進行探測匹配。根據結果對比分析出UDP應用服務型別。
  •  如果探測到應用程式是SSL,那麼呼叫openSSL進一步的偵查執行在SSL之上的具體的應用型別。
  •  如果探測到應用程式是SunRPC,那麼呼叫brute-force RPC grinder進一步探測具體服務。

   2)版本偵測用法: 

  •   -sV: 指定讓Nmap進行版本偵測 
  •   --version-intensity <level>: 指定版本偵測強度(0-9),預設為7。數值越高,探測出的服務越準確,但是執行時間會比較長。 
  •   --version-light: 指定使用輕量偵測方式 (intensity 2) 
  •   --version-all: 嘗試使用所有的probes進行偵測 (intensity 9) 
  •   --version-trace: 顯示出詳細的版本偵測過程資訊。

  

  (四)os偵測

    1)os偵測原理

      

                   Nmap使用TCP/IP協議棧指紋來識別不同的作業系統和裝置。在RFC規範中,有些地方對TCP/IP的實現並沒有強制規定,

      由此不同的TCP/IP方案中可能都有自己的特定方式。Nmap主要是根據這些細節上的差異來判斷作業系統的型別的。

               具體實現方式如下:
                     Nmap內部包含了2600多已知系統的指紋特徵(在檔案nmap-os-db檔案中)。將此指紋資料庫作為進行指紋對比的樣本庫。

                      分別挑選一個open和closed的埠,向其傳送經過精心設計的TCP/UDP/ICMP資料包,根據返回的資料包生成一份系統指紋。

      將探測生成的指紋與nmap-os-db中指紋進行對比,查詢匹配的系統。如果無法匹配,以概率形式列舉出可能的系統。

 

    2)os偵測用法

        

  •   -O: 指定Nmap進行OS偵測。 
  •   --osscan-limit: 限制Nmap只對確定的主機的進行OS探測(至少需確知該主機分別有一個open和closed的埠)。 
  •   --osscan-guess: 大膽猜測對方的主機的系統型別。由此準確性會下降不少,但會盡可能多為使用者提供潛在的作業系統。 

 

  

   (五)漏洞掃描

      掃描埠並且標記可以爆破的服務

      

        nmap 目標 --script=ftp-brute,imap-brute,smtp-brute,pop3-brute,mongodb-brute,redis-brute,
             ms-sql-brute,rlogin-brute,rsync-brute,mysql-brute,pgsql-brute,oracle-sid-brute,
             oracle-brute,rtsp-url-brute,snmp-brute,svn-brute,telnet-brute,vnc-brute,xmpp-brute

 

      判斷常見的漏洞並掃描埠

 

        nmap 目標 --script=auth,vuln

  

      精確判斷漏洞並掃描埠

 

 

        nmap 目標 --script=dns-zone-transfer,ftp-anon,ftp-proftpd-backdoor,ftp-vsftpd-backdoor,
             ftp-vuln-cve2010-
4221,http-backup-finder,http-cisco-anyconnect,
             http-iis-short-name-brute,http-put,http-php-version,http-shellshock,http-robots.
            txt,http-svn-enum,http-webdav-scan,iis-buffer-overflow,iax2-version,memcached-
info,
             mongodb-
info,msrpc-enum,ms-sql-info,mysql-info,nrpe-enum,pptp-version,redis-info,
             rpcinfo,samba-vuln-cve-
2012-1182,smb-vuln-ms08-067,smb-vuln-ms17-010,snmp-info,sshv1,
             xmpp-
info,tftp-enum,teamspeak2-version

 

四,Nmap的優劣勢

 

  優勢:

  •   功能靈活強大,支援多種目標,大量計算機的同時掃描;
  •   開源,相關幫助文件十分詳細;
  •   流行,由於其具有強大的掃描機探測功能,,已被成千上萬安全專家使用。

  劣勢:

  •  Nmap引數眾多,難以一一記憶;

 

 

       

相關文章