1. 程式人生 > >kali下的網路掃描工具:nmap

kali下的網路掃描工具:nmap

一、Nmap

在偵查期間,掃描一直是資訊收集的初始階段。

什麼是偵查

偵查是儘可能多收集關於目標網路的資訊。從黑客的角度來看,資訊收集對於一次攻擊非常有用,所以為了封鎖惡意的企圖,滲透測試者通常盡力查詢這些資訊,發現後修復這個缺陷。這也被叫做踩點。通過資訊收集,人們通常會發現如下型別的資訊:

   -  E-mail 地址

   - 埠號/協議

   - 作業系統資訊

   - 執行的服務

   - Traceroute 資訊/DNS 資訊

   - 防火牆標識和繞過

   - 其他

所以對於資訊收集,掃面是第一個部分。在掃面階段,Nmap對於發現開放埠,協議號,作業系統資訊,防火牆資訊等是一個非常有用的工具。

Nmap 介紹

Nmap (網路對映器)是一個開源工具,它使網路探測和安全審計得以專業化。最初由 Gordon “Fyodor” Lyon 釋出。官網官方網站是http://nmap.org. Nmap是一個免費的用來實現網路探測和安全審計的開源程式。許多系統和網路管理員發現它對於一些日常的工作也有幫助。例如檢視整個網路的資訊,管理服務升級計劃以及監控主機和服務的正常執行。

Nmap採用一種新穎的方式利用原始IP包來決定網路上是什麼樣的主機,這些主機提供什麼樣的服務(應用程式名和版本),它們執行著什麼樣的作業系統(作業系統版本)它們使用什麼型別的過濾器/防火牆以及許多其他的特徵。它雖然被設計用來快速掃描大型網路,但是在單個主機上也會工作的非常好。Nmap可以執行在所有的主流計算機作業系統上,Linux,Windows,Mac OS X都可以找到官方的安裝包。


主要包含以下功能

  • 主機發現
  • 埠掃描
  • 服務和版本探測
  • 作業系統探測
  • 防火牆/IDS躲避和哄騙
  • 輸出

1、掃描目標說明
1)單個ipv4目標:輸入一個目標ip地址或主機名
2)批量ipv4目標:使用CIDR標誌位:/<numbit>代表批量目錄或整個網路相鄰主機,如192.168.10.0/24將會掃描192.168.10.0 (二進位制格式: 11000000 10101000 00001010 00000000)和192.168.10.255 (二進位制格式: 11000000 10101000 00001010 11111111)之間的256臺主機。
3)批量ipv4目標:使用八位位元組範圍標示,如192.168.0-255.1-254,過濾掉0 255廣播ip
4)IPv6地址目標:只能用規範的IPv6地址或主機名指定

2、主機發現
使用各種方式發現活動的主機 感興趣的主機
1)-sL 列表掃描:可以對主機進行反向域名解析,校驗ip或域名是否存在
nmap -sL 192.168.2.0/24或www.baidu.com/24
2)-sP ping掃描:使用ping主機,得出可響應的主機列表
nmap -sP 192.168.2.0/24或www.baidu.com/24
3)-P0 (無ping):高強度的掃描時用它確定正在執行的機器, 預設情況下,Nmap只對正在執行的主機進行高強度的探測如 埠掃描,版本探測,或者作業系統探測。
nmap -P0 192.168.8.111
4)-PS [portlist] (TCP SYN Ping):傳送一個設定了SYN標誌位的空TCP報文,嘗試建立連線,成功返回報文up以及執行資訊,失敗返回down;
nmap -PS 192.168.8.118
5)-PA [portlist] (TCP ACK Ping):傳送一個設定了ACK標誌位的空TCP報文,嘗試建立連線,成功返回報文up以及執行資訊,失敗返回down;
nmap -PA 192.168.8.118
6) -PU [portlist] (UDP Ping):它傳送一個空的UDP報文,返回響應報文up以及執行資訊,失敗返回down;
nmap -PU 192.168.8.118
7)-PE; -PP; -PM (ICMP Ping Types):傳送一個ICMP type 8 (回聲請求)報文到目標IP地址, 期待從執行的主機得到一個type 0 (回聲響應)報文。
nmap -PE 192.168.8.118
8)-PR (ARP Ping):同一個區域網內,當進行ARP掃描時,Nmap用它優化的演算法管理ARP請求。 當它收到響應時, Nmap甚至不需要擔心基於IP的ping報文,既然它已經知道該主機正在運行了。 這使得ARP掃描比基於IP的掃描更快更可靠。
nmap -PR 192.168.2.118

3、埠掃描

埠掃描
埠狀態:掃描之後,你可能會看到一些埠狀態如 open(開放的),filtered(被過濾的),closed(關閉的)等等。
- Open(開放的): 應用程式正在這個埠上監聽連線。
- Closed(關閉的): 埠對探測做出了響應,但是現在沒有應用程式在監聽這個埠。
- Filtered(過濾的): 埠沒有對探測做出響應。同時告訴我們探針可能被一些過濾器(防火牆)終止了。
- Unfiltered(未被過濾的):埠對探測做出了響應,但是Nmap無法確定它們是關閉還是開放。
- Open/Filtered: 埠被過濾或者是開放的,Nmap無法做出判斷。

- Closed/Filtered: 埠被過濾或者是關閉的,Nmap無法做出判斷。

1)-sS (TCP SYN掃描): 被稱為半開放掃描, 因為它不開啟一個完全的TCP連線。 SYN/ACK表示埠在監聽 (開放),而 RST (復位)表示沒有監聽者。

nmap -sS 192.168.2.118

2)-sT (TCP connect()掃描):Nmap通過建立connect() 系統呼叫要求作業系統和目標機以及埠建立連線,而不像其它掃描型別直接傳送原始報文。

3)-sU (UDP掃描):UDP掃描傳送空的(沒有資料)UDP報頭到每個目標埠。 如果返回ICMP埠不可到達錯誤(型別3,程式碼3), 該埠是closed(關閉的)。 其它ICMP不可到達錯誤(型別3, 程式碼1,2,9,10,或者13)表明該埠是filtered(被過濾的).

4)-sN; -sF; -sX (TCP Null,FIN,and Xmas掃描):

識別系統

Scanning Format:

nmap -O -Pn [IP or domain]

使用 -O 選項,可以獲取到被掃描的主機的系統。 -Pn 選項禁用 Nmap 網路發現功能,假定所有系統都是活動的

Timing 模板

timing 引數可以指定 nmap 掃描的速度。其中各個選項如下:

  • T0 => paranoid 慢速網路掃描,序列掃描,兩次掃描間隔 5 分鐘。掃描速度極慢。
  • T1 => Sneky 慢速網路掃描,序列掃描,兩次掃描間隔 15 秒,掃描速度較慢。
  • T2 => Polite 中速網路掃描,序列掃描,兩次掃描間隔 400 毫秒,掃描速度慢。
  • T3 => Normal 中速網路掃描,並行掃描,兩次掃描間隔 0 秒,掃描速度正常。
  • T4 => Aggressive 快速網路掃描,並行掃描,兩次掃描間隔 0 秒,掃描速度較快。
  • T5 => Normal 快速網路掃描,並行掃描,兩次掃描間隔 0 秒,掃描速度極快。

Scanning Format:

nmap -T[0-5] [IP or domain]

掃描方式

TCP 掃描

埠掃描中最穩定的,利用的是 TCP 三次握手。TCP 掃描通常用於收集有關目標的更多資訊,但是會和目標主機建立一個完成的 TCP 連線。

Scanning Format:

nmap -sT -Pn [IP or domain]

-sT TCP 連線掃描(s ==> 哪種型別掃描;T ==> TCP 型別)

SYN 掃描

TCP 兩次握手(隱藏掃描,速度快,nmap 預設引數)

Scanning Format:

nmap -sS -Pn [IP or domain]

-sS SYN 連線掃描(s ==> 哪種型別掃描;S ==> SYN 型別)

ACK 掃描

ACK 掃描,用於確定 TCP 埠是否被防火牆過濾。

Scanning Format:

nmap -sA -Pn [IP or domain]

-sA ACK 連線掃描(s ==> 哪種型別掃描;A ==> ACK 型別)

UDP 掃描

DHCP,DNS,SNMP,TFTP 等都使用了 UDP 協議;UDP 掃描會評估目標系統上的 UDP 埠,可以確認 UDP 埠是開放還是被防火牆過濾。

Scanning Format:

nmap -sU -Pn [IP or domain]

-sU UDP 連線掃描(s ==> 哪種型別掃描;U ==> UDP 型別)
-sV UDP 掃描中新增版本掃描資訊(V ==> 版本資訊)

不存在 -Pn 引數(從 UDP 協議去理解,你發了就 ok 管他收沒收到)

掃描 IP 段

For Example:

nmap 192.168.1.1-255    # 掃描 192.168.1.1-192.168.1.255 所有 IP
nmap 192.168.1.1/24     # 掃描 192.168.1.1-192.168.1.255 所有 IP
nmap -iL IPL.txt        # 掃描 IPL.txt 中儲存的所有 IP

輸出儲存選項

  • -oN => 儲存為文字檔案
  • -oX => 儲存為 XML 檔案
  • -oG => 儲存為 GREPable 輸出
  • -oS => 指令碼輸出

其他更詳細的掃描

Nmap 掃描策略

# 適用所有大小網路最好的 nmap 掃描策略

# 主機發現,生成存活主機列表
nmap -sn -T4 -oG Discovery.gnmap 192.168.56.0/24
grep "Status: Up" Discovery.gnmap | cut -f 2 -d ' ' > LiveHosts.txt

# 埠發現,發現大部分常用埠
# https//nmap.org/presentations/BHDC08/bhdc08-slides-fyodor.pdf
nmap -sS -T4 -Pn -oG TopTCP -iL LiveHosts.txt
nmap -sU -T4 -Pn -oN TopUDP -iL LiveHosts.txt
nmap -sS -T4 -Pn --top-ports 3674 -oG 3674 -iL LiveHosts.txt

# 埠發現,發現全部埠,但 UDP 埠的掃描會非常慢
nmap -sS -T4 -Pn -p 0-65535 -oN FullTCP -iL LiveHosts.txt
nmap -sU -T4 -Pn -p 0-65535 -oN FullUDP -iL LiveHosts.txt

# 顯示 TCP\UDP 埠
grep "open" FullTCP|cut -f 1 -d ' ' | sort -nu | cut -f 1 -d '/' |xargs | sed 's/ /,/g'|awk '{print "T:"$0}'
grep "open" FullUDP|cut -f 1 -d ' ' | sort -nu | cut -f 1 -d '/' |xargs | sed 's/ /,/g'|awk '{print "U:"$0}'

# 偵測服務版本
nmap -sV -T4 -Pn -oG ServiceDetect -iL LiveHosts.txt

# 掃做系統掃描
nmap -O -T4 -Pn -oG OSDetect -iL LiveHosts.txt

# 系統和服務檢測
nmap -O -sV -T4 -Pn -p U:53,111,137,T:21-25,80,139,8080 -oG OS_Service_Detect -iL LiveHosts.txt

# 掃描 B 段的存活主機
nmap -v -sn -PE -n --min-hostgroup 1024 --min-parallelism 1024 172.16.0.0/16 | grep -v down | grep "172.16."

 

Nmap 躲避防火牆

# 分段
nmap -f

# 修改預設 MTU 大小,但必須為 8 的倍數(8,16,24,32 等等)
nmap --mtu 24

# 生成隨機數量的欺騙
nmap -D RND:10 [target]

# 手動指定欺騙使用的 IP
nmap -D decoy1,decoy2,decoy3 etc.

# 僵屍網路掃描, 首先需要找到僵屍網路的IP
nmap -sI [Zombie IP] [Target IP]

# 指定源埠號
nmap --source-port 80 IP

# 在每個掃描資料包後追加隨機數量的資料
nmap --data-length 25 IP

# MAC 地址欺騙,可以生成不同主機的 MAC 地址
nmap --spoof-mac Dell/Apple/3Com IP
LANG-BASH | COPY

Nmap 進行 Web 漏洞掃描

cd /usr/share/nmap/scripts/
wget https://www.computec.ch/projekte/vulscan/download/nmap_nse_vulscan-2.0.tar.gz && tar xzf nmap_nse_vulscan-2.0.tar.gz
nmap -sS -sV --script=vulscan/vulscan.nse target
nmap -sS -sV --script=vulscan/vulscan.nse –script-args vulscandb=scipvuldb.csv target
nmap -sS -sV --script=vulscan/vulscan.nse –script-args vulscandb=scipvuldb.csv -p80 target
nmap -PN -sS -sV --script=vulscan –script-args vulscancorrelation=1 -p80 target
nmap -sV --script=vuln target
nmap -PN -sS -sV --script=all –script-args vulscancorrelation=1 target

Nmap 埠掃描

# 使用誘餌隱蔽掃描 nmap -D RND:10 [target] (生成隨機數量的誘餌)
# fargement
# data packed – like orginal one not scan packet
# 使用 auxiliary/scanner/ip/ipidseq 來在僵屍網路中查詢IP並使用這些IP進行掃描 — nmap -sI ip target
# nmap –source-port 53 target

nmap -sS -sV -D IP1,IP2,IP3,IP4,IP5 -f –mtu=24 –data-length=1337 -T2 target (隨機使用不同的IP進行掃描)
nmap -Pn -T2 -sV –randomize-hosts IP1,IP2
nmap –script smb-check-vulns.nse -p445 target (使用 NSE 指令碼)
nmap -sU -P0 -T Aggressive -p123 target (攻擊式掃描 T1-T5)
nmap -sA -PN -sN target
nmap -sS -sV -T5 -F -A -O target (版本檢測)
nmap -sU -v target (Udp)
nmap -sU -P0 (Udp)
nmap -sC 192.168.31.10-12 (全部使用預設配置)

示例掃描

示例一:SYN 掃描

For Example:

nmap -sS -T5 192.168.199.133
LANG-BASH | COPY

Namp

示例二:基礎資訊掃描

For Example:

nmap -O 192.168.199.133
LANG-BASH | COPY

Namp

示例三:詳細資訊掃描

For Example:

nmap -A 192.168.199.133
LANG-BASH | COPY

Namp

Namp

Namp

示例四:網段掃描

For Example:

nmap -T5 192.168.1.103-110
LANG-BASH | COPY

Namp

Namp


# 適用所有大小網路最好的 nmap 掃描策略

# 主機發現,生成存活主機列表
nmap -sn -T4 -oG Discovery.gnmap 192.168.56.0/24
grep "Status: Up" Discovery.gnmap | cut -f 2 -d ' ' > LiveHosts.txt

# 埠發現,發現大部分常用埠
# https//nmap.org/presentations/BHDC08/bhdc08-slides-fyodor.pdf
nmap -sS -T4 -Pn -oG TopTCP -iL LiveHosts.txt
nmap -sU -T4 -Pn -oN TopUDP -iL LiveHosts.txt
nmap -sS -T4 -Pn --top-ports 3674 -oG 3674 -iL LiveHosts.txt

# 埠發現,發現全部埠,但 UDP 埠的掃描會非常慢
nmap -sS -T4 -Pn -p 0-65535 -oN FullTCP -iL LiveHosts.txt
nmap -sU -T4 -Pn -p 0-65535 -oN FullUDP -iL LiveHosts.txt

# 顯示 TCP\UDP 埠
grep "open" FullTCP|cut -f 1 -d ' ' | sort -nu | cut -f 1 -d '/' |xargs | sed 's/ /,/g'|awk '{print "T:"$0}'
grep "open" FullUDP|cut -f 1 -d ' ' | sort -nu | cut -f 1 -d '/' |xargs | sed 's/ /,/g'|awk '{print "U:"$0}'

# 偵測服務版本
nmap -sV -T4 -Pn -oG ServiceDetect -iL LiveHosts.txt

# 掃做系統掃描
nmap -O -T4 -Pn -oG OSDetect -iL LiveHosts.txt

# 系統和服務檢測
nmap -O -sV -T4 -Pn -p U:53,111,137,T:21-25,80,139,8080 -oG OS_Service_Detect -iL LiveHosts.txt

# 掃描 B 段的存活主機
nmap -v -sn -PE -n --min-hostgroup 1024 --min-parallelism 1024 172.16.0.0/16 | grep -v down | grep "172.16."

# 適用所有大小網路最好的 nmap 掃描策略

# 主機發現,生成存活主機列表
nmap -sn -T4 -oG Discovery.gnmap 192.168.56.0/24
grep "Status: Up" Discovery.gnmap | cut -f 2 -d ' ' > LiveHosts.txt

# 埠發現,發現大部分常用埠
# https//nmap.org/presentations/BHDC08/bhdc08-slides-fyodor.pdf
nmap -sS -T4 -Pn -oG TopTCP -iL LiveHosts.txt
nmap -sU -T4 -Pn -oN TopUDP -iL LiveHosts.txt
nmap -sS -T4 -Pn --top-ports 3674 -oG 3674 -iL LiveHosts.txt

# 埠發現,發現全部埠,但 UDP 埠的掃描會非常慢
nmap -sS -T4 -Pn -p 0-65535 -oN FullTCP -iL LiveHosts.txt
nmap -sU -T4 -Pn -p 0-65535 -oN FullUDP -iL LiveHosts.txt

# 顯示 TCP\UDP 埠
grep "open" FullTCP|cut -f 1 -d ' ' | sort -nu | cut -f 1 -d '/' |xargs | sed 's/ /,/g'|awk '{print "T:"$0}'
grep "open" FullUDP|cut -f 1 -d ' ' | sort -nu | cut -f 1 -d '/' |xargs | sed 's/ /,/g'|awk '{print "U:"$0}'

# 偵測服務版本
nmap -sV -T4 -Pn -oG ServiceDetect -iL LiveHosts.txt

# 掃做系統掃描
nmap -O -T4 -Pn -oG OSDetect -iL LiveHosts.txt

# 系統和服務檢測
nmap -O -sV -T4 -Pn -p U:53,111,137,T:21-25,80,139,8080 -oG OS_Service_Detect -iL LiveHosts.txt

# 掃描 B 段的存活主機
nmap -v -sn -PE -n --min-hostgroup 1024 --min-parallelism 1024 172.16.0.0/16 | grep -v down | grep "172.16."

# 適用所有大小網路最好的 nmap 掃描策略

# 主機發現,生成存活主機列表
nmap -sn -T4 -oG Discovery.gnmap 192.168.56.0/24
grep "Status: Up" Discovery.gnmap | cut -f 2 -d ' ' > LiveHosts.txt

# 埠發現,發現大部分常用埠
# https//nmap.org/presentations/BHDC08/bhdc08-slides-fyodor.pdf
nmap -sS -T4 -Pn -oG TopTCP -iL LiveHosts.txt
nmap -sU -T4 -Pn -oN TopUDP -iL LiveHosts.txt
nmap -sS -T4 -Pn --top-ports 3674 -oG 3674 -iL LiveHosts.txt

# 埠發現,發現全部埠,但 UDP 埠的掃描會非常慢
nmap -sS -T4 -Pn -p 0-65535 -oN FullTCP -iL LiveHosts.txt
nmap -sU -T4 -Pn -p 0-65535 -oN FullUDP -iL LiveHosts.txt

# 顯示 TCP\UDP 埠
grep "open" FullTCP|cut -f 1 -d ' ' | sort -nu | cut -f 1 -d '/' |xargs | sed 's/ /,/g'|awk '{print "T:"$0}'
grep "open" FullUDP|cut -f 1 -d ' ' | sort -nu | cut -f 1 -d '/' |xargs | sed 's/ /,/g'|awk '{print "U:"$0}'

# 偵測服務版本
nmap -sV -T4 -Pn -oG ServiceDetect -iL LiveHosts.txt

# 掃做系統掃描
nmap -O -T4 -Pn -oG OSDetect -iL LiveHosts.txt

# 系統和服務檢測
nmap -O -sV -T4 -Pn -p U:53,111,137,T:21-25,80,139,8080 -oG OS_Service_Detect -iL LiveHosts.txt

# 掃描 B 段的存活主機
nmap -v -sn -PE -n --min-hostgroup 1024 --min-parallelism 1024 172.16.0.0/16 | grep -v down | grep "172.16."