Nmap原理-01選項介紹


Nmap原理-01選項介紹

1.Nmap原理圖

  Nmap包含四項基本功能:主機發現/端口掃描/版本探測/操作系統探測。這四項功能之間存在大致的依賴關系,比如圖片中的先后關系,除此之外,Nmap還提供規避防火牆的技巧以及NSE庫。下面對這四類Nmap選項進行介紹,主要介紹每個選項有什么作用,如想了解原理,可以閱讀本文附錄的參考文獻。

2. 主機發現

例子:
  nmap –sn –PE –PS80,135 –PU53 scanme.nmap.org
    使用wireshark可以查看,nmap在運行上述語句的時候到底發送了哪些包。
  n
map –sn 192.168.1.100-120
    通過ARP包詢問ip地址上的主機是否在線。
相關選項:
  -sn: Ping Scan
只進行主機發現,不進行端口掃描。

  -Pn: 將所有指定的主機視作開啟的,跳過主機發現的過程。
  -PS/PA/PU/PY[portlist]: 使用TCPSYN/ACK或SCTP INIT/ECHO方式進行發現。
  -PE/PP/PM: 使用ICMP echo, timestamp, and netmask 請求包發現主機。
  -PO[protocollist]: 使用IP協議包探測對方主機是否開啟。
  -n/-R: -n表示不進行DNS解析;-R表示總是進行DNS解析。
  --dns-servers <serv1[,serv2],...>: 指定DNS服務器。
  --system-dns: 指定使用系統的DNS服務器。
  --traceroute: 追蹤每個路由節點。

3.端口掃描

例子:
  nmap –sS –sU –T4 --top-ports 300 192.168.1.100
    
參數-sS表示使用TCP SYN方式掃描TCP端口;

    -sU表示掃描UDP端口;
    -T4表示時間級別配置4級,總共6個級別,級別越高掃描速度越快,但也容易被WAF和IDS檢測,推薦使用T4級別;
    --top-ports 300表示掃描最有可能開放的300個端口(TCP和UDP分別有300個端口)
相關選項:
  -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掃描方式
  -p <port ranges>: 掃描指定的端口
    實例: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9(其中T代表TCP協議、U代表UDP協議、S代表SCTP協議)
  -F: 快速模式,僅掃描TOP 100的端口
  --top-ports <number>:掃描開放概率最高的number個端口;具體可以參見文件:nmap-services。默認情況下,nmap會掃描最有可能的1000個TCP端口
  --port-ratio <ratio>: 掃描指定頻率以上的端口。

4.版本探測

版本探測選項較少,但是有很大的用處,下面的文章將會介紹版本探測的具體內容,包括nmap-services-probe文件等。

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

5.操作系統探測

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

一般在使用是會結合-O -V。
使用這兩個選項可以造成下面的輸出:
  Device type:設備類型
所有的指紋被分為高層的設備類型,router, printer, firewall、general purpose
“Device Type: router|firewall”
  Running:運行的什么系統
它顯示操作系統家族以及操作系統型號,多個操作系統用逗號分隔,型號用‘|’分隔
  OS CPE
以cpe:/o:開頭
  OS details
如果不確切,名字會變成Aggressive OS guesses
  Uptime guess:
  Network Distance:
  TCP Sequence Prediction:
  IP ID Sequence Generation:
-sV和-O同時使用,如果輸出的操作系統信息一致,那么可信度更高;如果不一致還要進一步調查。
使用-A選項可以將二者結合起來。


6.其他選項

1.規避防火牆
例子:
  
nmap -v -F -Pn -D192.168.1.100,192.168.1.102,ME -e eth0 -g 3355 192.168.1.1
    
-F表示快速掃描100個端口;-Pn表示不進行Ping掃描;-D表示使用IP誘騙方式掩蓋自己真實IP(其中ME表示自己IP);
    -e eth0表示使用eth0網卡發送該數據包;
    -g 3355表示自己的源端口使用3355;
    192.168.1.1是被掃描的目標IP地址。
    更好的方式-D選項中嵌入RND隨機數,這樣更具有迷惑性。
    可以從Wireshark中看到數據包的流動情況:對於每個探測包,Nmap都使用-D選項指定的IP地址發送不同的數據包,
    從而達到擾亂對方防火牆/IDS檢查的目的(更好的方式-D選項中嵌入RND隨機數,這樣更具有迷惑性)。
    
當探測到80端口時候,目標主機向我們回復了SYN/ACK包回來(當然也向其他誘騙的IP回復SYN/ACK包,我們無法接收到),證明80端口是開放的。
相關選項:   
-f:--mtu <val>: 指定使用分片、指定數據包的MTU.   -D <decoy1,decoy2[,ME],...>: 用一組IP地址掩蓋真實地址,其中ME填入自己的IP地址。   -S <IP_Address>: 偽裝成其他IP地址   -e <iface>: 使用特定的網絡接口   -g/--source-port <portnum>: 使用指定源端口   --data-length <num>: 填充隨機數據讓數據包長度達到Num。   --ip-options <options>: 使用指定的IP選項來發送數據包。   --ttl <val>: 設置time-to-live時間。   --spoof-mac <mac address/prefix/vendor name>: 偽裝MAC地址
  --badsum: 使用錯誤的checksum來發送數據包(正常情況下,該類數據包被拋棄,如果收到回復,說明回復來自防火牆或IDS/IPS)
2.使用NSE腳本
例子:
  Nmap –sV –p 80 –v –script default,http* 192.168.1.1
相關選項:
  -sC: 等價於 --script=default,使用默認類別的腳本進行掃描。
  --script=<Lua scripts>: <Lua scripts>使用某個或某類腳本進行掃描,支持通配符描述
  --script-args=<n1=v1,[n2=v2,...]>: 為腳本提供默認參數
  --script-args-file=filename: 使用文件來為腳本提供參數
  --script-trace: 顯示腳本執行過程中發送與接收的數據
  --script-updatedb: 更新腳本數據庫 
  --script-help=<Lua scripts>: 顯示腳本的幫助信息,其中<Luascripts>部分可以逗號分隔的文件或腳本類別。
3.檢測防火牆
  nmap -p 80,443 --script=http-waf-detect 192.168.150.143
  nmap -p 80,443 --script=http-waf-detect www.jianshu.com
  nmap -p 80,443 --script=http-waf-fingerprint idea.lanyus.com
  正常與不正常的輸出樣式:    
      PORT   STATE SERVICE
      80/tcp  open  http

      443/tcp open  https
      PORT   STATE SERVICE
      80/tcp  open  http

        | http-waf-detect: IDS/IPS/WAF detected:
        |_www.jianshu.com:80/?p4yl04d3=<script>alert(document.cookie)</script>
      443/tcp open  https
  除了Nmap有檢測防火牆功能之外,wafw00f工具也可以實現防火牆檢測。
4.文件讀入列表
  -iL <inputfilename> (從列表中輸入)
  -iR <hostnum> (隨機選擇目標)
  --exclude <host1[,host2][,host3],...> (排除主機/網絡)
  --excludefile <excludefile> (排除文件中的列表) 

 

7.參考資料

  官網:www.nmap.org

  安全工具排名:http://sectools.org/

  https://github.com/erasin/notes/blob/master/linux/safe/nmap.md

  https://nmap.org/man/zh/man-host-discovery.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM