Nmap參數詳解

  • 語法結構:nmap [Scan Type(s)] [Options] {target specification}
  • 端口狀態介紹
    • open:肯定端口開放,可達
    • closed :關閉的端口對於nmap也是可訪問的, 它接收nmap探測報文並做出響應。但沒有應用程序在其上監聽。
    • filtered :因爲包過濾阻止探測報文到達端口,Nmap沒法肯定該端口是否開放。過濾可能來自專業的防火牆設備,路由規則 或者主機上的軟件防火牆。
    • unfiltered :未被過濾狀態意味着端口可訪問,可是Nmap沒法肯定它是開放仍是關閉。 只有用於映射防火牆規則集的 ACK 掃描纔會把端口分類到這個狀態。
    • open | filtered :沒法肯定端口是開放仍是被過濾, 開放的端口不響應就是一個例子。沒有響應也可能意味着報文過濾器丟棄了探測報文或者它引起的任何反應。UDP,IP協議,FIN, Null 等掃描會引發。
    • closed|filtered:(關閉或者被過濾的):沒法肯定端口是關閉的仍是被過濾的
  • 掃描目標格式
    • 示例: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254
    • -iL:從文件中加載目標
    • -iR:隨機掃描
    • --exclude <host or network>:排除網段或主機地址
    • --excledefile:排除文件中的地址
  • 主機發現
    • -sL:列出須要掃描的目標,不掃描
    • -sn:只作ping掃描,不作端口掃描
    • -Pn:跳過主機發現,視全部主機都在線
    • -PS/PA/PU/PY[portlist]:基於TCP(SYN、ACK)、UDP、SCTP的指定端口的主機發現
    • -PE/PP/PM:基於ICMP的echo、timestamp、network request的主機發現
    • -PO[Protocol list]:基於IP協議字段的ping掃描
    • -n/-R: -n表示不對目標最DNS解析,-R表示進行DNS解析,缺省爲必要時候進行DNS解析
    • --dns-servers <serv1[,serv2],...>: 指定DNS 服務器
    • --system-dns:調用系統的DNS服務器
    • --traceroute:顯示追蹤到目標的路徑
  • 掃描技術
    • -sS/sT/sA/sW/sM:TCP掃描
      • S是SYN掃描,半鏈接掃描,nmap只發送SYN報文,經過服務器是否響應SYN+ACK來判斷對應端口是否開放
      • T是全鏈接掃描會和服務器創建完整的三次握手,效率低
      • A發送ACK報文,經過服務器響應來判斷是否開放,有的服務器不開會回覆ICMP端口不可達,當回覆RST時表示可能被攔截或者端口開放,不是一個準確的判斷條件
      • W 是窗口掃描,發出的報文和ACK同樣,利用的是在某些系統中若是端口開放,收到ACK包後會響應一個窗口非0的RST包
      • M是Maimon掃描,使用發現者的名字命名。其原理是向目標服務器發送FIN/ACK 報文,在某些系統中若是端口開放則會丟棄該報文不作響應,若是端口關閉則回覆RST或者ICMP,Nmap可藉此判斷服務器端口的開放狀況。不許
    • -sU:UDP掃描,某些系統若是UDP端口不開放會回覆ICMP差錯報文(這也是Linux系統中traceroute的實現原理)。Nmap UDP端口掃描的強大之處在於它會針對知名端口構造初始交互報文,好比會針對UDP 500構造一個主模式協商的IKE報文
    • -sN/sF/sX:特定TCP標誌位的掃描,N是空標誌位;F是FIN置位;X是Xmas掃描將FIN、PSH、URG同時置位。收到RST說明端口關閉,無響應說明被過濾或者端口開放,不許。
    • --scanflags <flags>:實現上同上面幾種相似,可讓用戶自定義TCP標誌位。
    • -sI <zombie host[:probeport]>: Idle掃描須要一臺沒有流量的殭屍主機,這種掃描的實現原理是在必定的時間裏,同一臺主機發出的IP數據報文其ip頭中的identification字段是累加的。探測分爲3步:一、Nmap主機向殭屍機發包,經過殭屍機的響應包探測其ID;二、Nmap主機僞造殭屍機源地址向服務器的特定端口發送SYN包;三、Nmap主機再次探測殭屍機的ip.id。若是目標服務器端口開放,則必然會向殭屍機發送SYN/ACK,因爲莫名其妙收到一個SYN/ACK 報文,殭屍機會向目標服務器發送RST報文,該報文的ip.id 是第一步+1,則第三步Nmap主機探測到的ip.id應該是第一步+2,說明目標主機端口開放。反之,若是目標主機端口未開放,則收到第二步的報文後會向殭屍機回覆RST或者直接丟棄該報文不響應,不管哪一種狀況,都不會觸發殭屍機發包,進而殭屍機的ip.id不會變化,第三步Nmap探測到的id應該是第一步+1.
    • -sY/sZ:SCTP協議INIT或cookie-echo掃描
    • -sO:基於IP協議的掃描,經過變換IP報文頭中的Protocol值來對服務器進行探測
    • -b <FTP relay host>::FTP反彈掃描,藉助FTP特性,經過FTP服務器鏈接想要掃描的主機實現隱身的目的
  • 端口相關參數
    • -p:指定端口掃描範圍,如:-p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9
    • --exclude-ports <port ranges>: 排除端口
    • -F:掃描比缺省少的端口(缺省1000,加了-F100)
    • -r:順序掃描端口,缺省是隨機分組掃描
    • --top-ports <number>:按top排序掃描知名端口
    • --port-ratio <ratio>: 按比例掃描知名端口,值在0-1之間,越小掃的越多
  • 系統/版本探測
    • -sV:探測開放的端口的系統/服務信息
    • --version-intensity <level>:設置版本檢測的詳程度級別,0-9,越高越詳細
    • --version-light:輸出最可能的版本信息,缺省是2
    • --version-all:使用全部的探測條件進行版本/系統探測
    • --version-trace:打印詳細的版本掃描過程
  • 腳本掃描
    • --script=<Lua scripts>:指定腳本名稱
    • --script-args=<n1=v1,[n2=v2,...]>:爲腳本指定參數
    • --script-help=<Lua scripts>: 查看腳本幫助信息
    • --script-updatedb:更新腳本數據庫
  • 系統探測
    • -O:激活系統探測
    • --osscan-limit:只對開放端口的有效主機進行系統探測
    • --osscan-guess:推測系統信息
  • 其餘
    • -T<0-5>:時間模板,越大速度越快
    • -6:使能IPV6探測
    • -A:使能系統探測、版本檢測、腳本掃描、路由追蹤
    • -V:打印版本號
    • -v:增長輸出的詳細程度
相關文章
相關標籤/搜索