天天看點

主動掃描-Nmap

僅供個人學習!

主動掃描

  相對于被動掃描而言,主動掃描的範圍要小得多。主動掃描一般都是針對目标發送特制的資料包,然後根據目标的反應來獲得一些資訊。這些資訊主要包括目标主機是否線上、目标主機的指定端口是否開放、目标主機的作業系統、目标主機上運作的服務等。

Namp

  攻擊隻是Nmap的副業,掃描才是Nmap的主要功能。

  2009年7月17日,開源網絡安全掃描工具Nmap正式釋出了5.00版,這是自1997年以來最重要的釋出,代表着Nmap從簡單的網絡端口掃描軟體變身為全方面的安全工具元件。

  目前的Nmap已經具備了主機發現功能、端口掃描功能、服務及版本檢測功能、作業系統檢測功能。另外除了這些基本功能之外,Nmap還可以實作一些進階的審計技術,例如僞造發起掃描端的身份、進行隐蔽的掃描、規避目标的防禦裝置(例如防火牆)、對系統進行安全漏洞檢測并提供完善的報告選項等。在後來的不斷發展中,随着Nmap強大的腳本引擎NSE的推出,任何人都可以自己向Nmap中添加新的功能子產品。

  使用Nmap對一台計算機進行審計的話,最終可以獲得如下的目标資訊:

目标主機是否線上。

目标主機所在網絡的結構。

目标主機上開放的端口,例如80端口、135端口、443端口等。

目标主機所使用的作業系統,例如Windows 7、Windows10、Linux 2.6.18、Android 4.1.2等。

目标主機上所運作的服務以及版本,例如Apache httpd 2.2.14、OpenSSH 5.3p1 Debian 3ubuntu4等。

目标主機上所存在的漏洞,例如弱密碼、ms08_067、ms10_054等

  Nmap對目标的線上狀态、端口開放情況、作業系統、運作的服務和軟體進行掃描。主動掃描的工具其實很多,在Kali Linux 2中就提供了多達數十種,但是最為優秀的掃描工具卻非Nmap莫屬。

  Nmap功能極為強大,提供了數十種的掃描技術。新版本的Nmap還實作了NSE腳本編寫,極大地擴充了Nmap的功能。這些功能極為強大而實用,作為和Metasploit相并列的滲透行業兩大神器之一。

  Nmap官網參考指南:https://nmap.org/book/man.html

Namp參數解釋

  • 文法結構: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步:1、Nmap主機向僵屍機發包,通過僵屍機的響應包探測其ID;2、Nmap主機僞造僵屍機源位址向伺服器的特定端口發送SYN包;3、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:增加輸出的詳細程度

一些用法

nmap --iflist(檢視本地路由與接口)

nmap -e 08:00:27:47:63:E6 103.10.87.148(指定mac和ip位址)

nmap -T4 -F -n -Pn -D 192.168.1.100,192.168.1.101,192.168.1.102,ME192.168.1.103(位址誘騙)

nmap -sV --spoof-mac 08:00:27:47:63:E6 103.10.87.148(虛假mac位址)

nmap -sV --source-port 900 103.10.87.148 --source-port(指定源端口)

nmap -p1-25,80,512-515,2001,4001,6001,9001 10.20.0.1/16(掃描思科路由器)

nmap -sU -p69 -nvv 192.168.1.253(掃描路由器的ftp協定)

nmap -O -F -n 102.10.87.148(-F快速掃描)

nmap -iR 100000 -sS -PS80 -p 445 -oG nmap.txt(随機産生10萬個ip位址,對其445端口進行掃描,掃描結果以greppable(可用grep指令提取)格式輸出到nmap.txt)

nmap --script=brute 102.10.87.148(暴力破解)

相關詳解

https://blog.csdn.net/qq_26090065/article/details/80285088

https://blog.csdn.net/qq_41880069/article/details/82792896