網路安全 網路對映和埠掃描
如果我們想要進行防禦,我們首先需要知道要防禦什麼。資產管理通常依賴於網路對映來識別網路上哪些系統是線上的。
資產管理以及瞭解我們在網路上暴露了什麼,包括託管了哪些服務,對於任何想要防禦自己網路的人來說都非常重要。
Nmap - 網路對映器
Nmap 長期以來一直被認為是網路工程師和安全專業人士的標準埠掃描器。我們可以使用它來發現要攻擊或防禦的資產。
網路對映
一種識別網路上活動主機的方法是向網路中的所有 IP 地址傳送 ping,即 ICMP Echo Request。這通常被稱為 Ping Sweep。
這種方法在發現資產方面效果不佳。網路上的系統很可能會忽略傳入的 ping,可能是因為防火牆阻止了它們,或者因為主機防火牆。主機防火牆根本上是一種在系統本身而不是在網路上實現的防火牆。
一種更好的方法涉及傳送不同型別的封包到系統,以嘗試請求任何形式的應答,從而確定系統是否線上。例如,Nmap 將向系統傳送以下封包以嘗試引起響應:
- ICMP Echo Request
- TCP SYN 封包到埠 443
- TCP ACK 封包到埠 80
- ICMP Timestamp request
根據 TCP 規範,也就是通訊規則,系統在開始通訊之前應始終進行三次握手。Nmap 似乎有意打破了上述封包的規則。你能發現哪個封包的行為不符合系統的預期嗎?
向埠 80 傳送 TCP ACK 封包不符合 TCP 標準的規則。Nmap 這樣做是專門為了嘗試讓目標系統做出響應。為了傳送不符合規則的封包,Nmap 必須以最高級別的許可權執行,例如 root 或本地管理員。大多數埠掃描器因此會更準確。
可以使用 Nmap 的 -Pn 標誌停用網路對映。Nmap 現在將考慮所有 IP/系統都已啟動,並直接進行埠掃描。
如果你想,現在可以在家裡試試。小心,如果你在公司環境中,在開始執行掃描器之前務必獲得許可,因為你不想違反工作場所的任何規則。要立即嘗試 Nmap,請遵循以下簡單步驟:
- 在 https://nmap.org 下載 Nmap。確保下載與你的作業系統匹配的版本
- 安裝 Nmap 並從命令列終端啟動該工具
- 查詢你的本地 IP 地址和子網
- 執行 Nmap 來掃描它,看看能發現哪些型別的系統:nmap -vv IP/netmask
我們添加了兩個 -v 標誌來告訴 Nmap 我們想要詳細輸出,這使得掃描在完成時更有趣。
ARP 掃描
ARP 協議包含在 LAN 內,但如果需要發現的主機位於 LAN 上,我們可以使用此協議來嘗試顯示網路上的系統。透過 ARP 協議簡單地迭代 LAN 網路上的所有可用 IP 地址,我們試圖迫使系統響應。
掃描如下所示
Eve:請提供系統 192.168.0.1 的 Mac 地址
Eve:請提供系統 192.168.0.2 的 Mac 地址
Eve:請提供系統 192.168.0.3 的 Mac 地址
Eve:請提供系統 192.168.0.4 的 Mac 地址
Eve:請提供系統 192.168.0.5-254 的 Mac 地址
預設閘道器:192.168.0.1 是我,我的 MAC 地址是 AA:BB:CC:12:34:56
Bob:192.168.0.3 是我,我的 MAC 地址是:BB:CC:DD:12:34:56
Alice:192.168.0.4 是我,我的 MAC 地址是:CC:DD:EE:12:34:56
埠掃描
進行埠掃描是為了確定我們可以連線到哪些服務。每個監聽的服務都提供了攻擊面,攻擊者可能濫用這些攻擊面。因此,瞭解哪些埠是開放的很重要。
攻擊者對了解哪些應用程式正在監聽網路感興趣。這些應用程式代表了攻擊者的機會。可能存在漏洞,使他們能夠成功攻擊組織。
埠掃描是透過嚮應用程式傳送封包並查詢任何響應來完成的。這對於 TCP 來說非常容易,因為如果 TCP 服務可用,它總是會回覆 SYN/ACK 封包。然而,對於 UDP 來說則更難。為了檢測服務是否可用,在大多數情況下,攻擊者必須傳送特定的輸入,迫使應用程式響應。大多數託管在 UDP 中的應用程式除非客戶端傳送了完全用於通訊的輸入,否則不會響應。
TCP 埠掃描
TCP 是一種易於掃描的協議,因為 TCP 標準規定,在接收到 SYN 時,系統應該回復 SYN/ACK。我們可以將 SYN 封包傳送到所有 65536 個埠,並記錄所有返回的 SYN/ACK,從而根據 SYN/ACK 的響應來確定哪些埠是開放的。當沒有收到響應時,我們可以假設埠已關閉或被防火牆等過濾。
透過埠 445 上的 SYN/ACK,我們已識別出埠已開啟。
UDP 埠掃描
使用 UDP 很難確定埠是否向上。對於 UDP 埠,掃描器無法依賴 SYN/ACK。事實上,掃描器幾乎總是必須依賴於讓監聽的服務產生某種響應。
由於可能存在如此多的埠開放,並且不同的服務僅響應正確型別的資料,因此在合理的時間內掃描所有埠會變得耗時且困難。
考慮以下對話,Eve 試圖找出 UDP 埠是否開放
Eve 需要使用正確的協議進行通訊,並確保封包能夠到達目的地,例如,沒有封包丟失。否則 Eve 可能無法發現埠已開啟。
因此,如果我們想掃描所有埠,UDP 掃描可能會非常耗時。
有用的 Nmap 掃描型別和選項
市面上有許多掃描器,然而在本節中,我們將重點介紹如何充分利用 Nmap 的潛力。
可以使用引數 --top-ports 告訴 Nmap 掃描最常見的埠。
nmap --top-ports 100 <目標>
掃描器可以嘗試確定埠後面的應用程式版本。這稱為服務掃描,可以透過 -sV 標誌啟用。
nmap -sV <目標>
Nmap 有許多內建指令碼,用於針對特定服務並與其互動。指令碼可以執行各種操作,例如從服務中提取資訊或嘗試利用它。我們可以使用 -sC 標誌啟用指令碼掃描器。這僅啟用安全檢查,因此不會進行拒絕服務或利用嘗試。
nmap -sC <目標>
可以使用掃描器進行作業系統檢測,使其能夠嘗試確定正在執行的作業系統。它使用許多不同的引數來嘗試測量和估計它是哪種作業系統的可能性。這可以透過 -O 引數啟用。
nmap -O <目標>
Nmap 的攻擊模式一次啟用多個標誌。掃描器將執行版本和作業系統檢測,啟用指令碼掃描器,並掃描最常見的 1000 個埠。可以透過 -A 選項啟用。
nmap -A <目標>
Nmap 也可以跨所有上述標誌掃描 IPv6。可以透過新增 -6 標誌來啟用。
nmap -6 <目標>
Nmap 定時選項
掃描可以以不同的速度進行。較慢的速度被 IDS 系統檢測到的可能性較小,而快速掃描可能會使系統過載。Nmap 支援以下選項:
- T0 - 偏執。此選項適用於不希望被檢測到的攻擊者。IDS 系統可以在一定時間範圍內關聯多個請求。偏執選項將透過每秒只發送少量封包來嘗試規避此問題。
- T1 - 隱秘。速度更快,但旨在規避 IDS 系統。
- T2 - 禮貌。緩慢掃描,盡力不使系統崩潰。
- T3 - 普通。這是預設設定。
- T4 - 激進。快速掃描,可快速獲得結果。大多數系統都能應對。
- T5 - 瘋狂。我們以全部容量和效能進行傳送。
Zenmap
Nmap 擁有內建的 GUI(圖形使用者介面)以及其他工具。GUI 可用於視覺化網路並瀏覽不同主機上的開放埠。GUI 如下所示