在工業控制系統(ICS)與資訊技術(IT)融合的趨勢下,傳統的網路安全邊界逐漸模糊。網路偵察作為滲透測試的首要環節,其工具與方法論也需與時俱進。本篇將從基礎的 NMAP 工具出發,探討其在工業網路中的偵察技巧,並進一步引入新興的高速掃描器 RustScan。透過分析兩者協同運作的模式,我們將建構一套適用於現代工控環境,兼顧掃描深度與執行效率的偵察框架,為後續的安全評估與漏洞挖掘奠定穩固基礎。
NMAP:工業網路偵察的基石
玄貓認為,在工業控制系統(ICS)的滲透測試中,NMAP是不可或缺的工具,其重要性僅次於Wireshark。它不僅能協助我們發現開放埠,更能進行作業系統指紋識別、服務版本識別等多種任務,為深入探索網路提供關鍵資訊。
NMAP的演進與重要性:
NMAP在過去二十年間已從一個除錯新技術的工具,發展成為網路安全領域的基礎工具。對於從自動化控制領域轉入網路安全的人來說,NMAP在早期TCP/IP協議普及時,是處理開放埠且無文件設備的利器。如今,它已成為滲透測試人員進行評估、CTF競賽、網路故障排除和SCADA系統通訊分析的兩大核心工具之一。
NMAP的安裝:
NMAP支援主流作業系統,可透過各自的套件管理工具進行安裝:
- Linux:
apt install nmap - macOS:
brew install nmap - Windows:可透過Zenmap(NMAP的圖形化介面)進行安裝,Zenmap是一個用於分析和映射網路及資產的視覺化工具。
實驗室網路配置與掃描準備:
- 網路佈局:回顧第一章的網路佈局,確保您熟悉實驗室的網路結構。
- 第二個網路介面:確保您的Kali Linux虛擬機已添加第二個網路介面,並將其配置為與Windows 7 Professional虛擬機在同一子網中(例如,將Kali的第二個介面IP設定為
192.168.3.200)。這將使Kali能夠訪問實驗室的「操作層(Level 3)」網路。
網路掃描的注意事項:
- 主動策略:掃描或枚舉階段是一種主動策略,可能會被檢測到。
- 潛在風險:更嚴重的是,對老舊設備進行埠掃描可能會導致設備掛起或停止運行。這是一個基於真實事件的警示故事,提醒我們在實際環境中操作時務必謹慎。
執行NMAP掃描:
1. 子網掃描:
- 基本掃描命令:即使我們熟悉實驗室網路,也應從廣泛的掃描開始。
nmap 192.168.3.0/24
- 掃描結果:您應該會看到Kali主機的掃描報告,但可能不會顯示Windows電腦。
- 原因:這是因為Windows可能會阻止或丟棄NMAP的ping探測。
- 繞過Ping探測:若要強制NMAP掃描所有主機,即使它們不回應ping,請使用
-Pn選項:
nmap 192.168.3.0/24 -Pn
2. 針對特定Windows主機的掃描:
- 目標:現在,我們將專注於在第一章中設定的Windows電腦。
- 掃描命令:
nmap 192.168.3.10 -Pn
- 預期結果:您應該會看到以下結果,但具體內容可能因您在虛擬機上啟用或停用的服務而異。
此圖示:NMAP掃描流程與結果分析
@startuml
!define DISABLE_LINK
!define PLANTUML_FORMAT svg
!theme _none_
skinparam dpi auto
skinparam shadowing false
skinparam linetype ortho
skinparam roundcorner 5
skinparam defaultFontName "Microsoft JhengHei UI"
skinparam defaultFontSize 16
skinparam minClassWidth 100
actor "攻擊者 (玄貓)" as attacker
rectangle "Kali Linux VM" as kali_vm {
component "NMAP工具" as nmap_tool
}
rectangle "實驗室網路" as lab_network {
rectangle "Windows 7 Pro VM (192.168.3.10)" as win7_vm
rectangle "其他主機" as other_hosts
}
attacker --> kali_vm : 安裝NMAP
attacker --> kali_vm : 配置第二網路介面 (192.168.3.200)
kali_vm --> nmap_tool : 執行子網掃描 (nmap 192.168.3.0/24)
nmap_tool --> lab_network : 發送掃描探測
lab_network --> nmap_tool : 接收掃描結果 (可能缺少Windows)
kali_vm --> nmap_tool : 執行子網掃描 (nmap 192.168.3.0/24 -Pn)
nmap_tool --> lab_network : 發送掃描探測 (繞過Ping阻擋)
lab_network --> nmap_tool : 接收掃描結果 (包含Windows)
kali_vm --> nmap_tool : 執行特定主機掃描 (nmap 192.168.3.10 -Pn)
nmap_tool --> win7_vm : 發送掃描探測
win7_vm --> nmap_tool : 回應開放埠與服務資訊
note right of nmap_tool
掃描結果包含:
- 開放埠
- 服務名稱
- 服務版本
- 作業系統指紋
end note
@enduml看圖說話:
此圖示展示了NMAP掃描流程與結果分析。首先,攻擊者(玄貓)在Kali Linux虛擬機上安裝NMAP工具,並配置好網路介面以連接到實驗室網路。接著,玄貓執行了兩種NMAP掃描。第一種是針對整個子網的基本掃描(nmap 192.168.3.0/24),但由於Windows主機可能阻擋ping探測,導致掃描結果可能不完整。為了解決此問題,玄貓執行了帶有-Pn選項的強制掃描(nmap 192.168.3.0/24 -Pn),這使得NMAP能夠掃描所有主機,即使它們不回應ping。最後,玄貓執行了針對特定Windows主機(192.168.3.10)的掃描,NMAP將向該主機發送探測並接收其回應,從而獲取開放埠、服務名稱、服務版本和作業系統指紋等關鍵資訊。這個流程清晰地描繪了如何使用NMAP進行網路偵察,是滲透測試中的重要步驟。
玄貓認為,透過NMAP,我們能夠在工業網路中建立立足點和樞軸點,這對於後續的深入分析和漏洞利用至關重要。
NMAP進階應用與RustScan:高效能埠掃描策略
玄貓認為,在網路安全實務中,NMAP的深度應用和對新興高效能工具如RustScan的掌握,是提升偵察效率和精度的關鍵。這不僅關乎技術操作,更涉及對工具原理和應用場景的深刻理解。
NMAP的進階掃描:
NMAP提供了豐富的選項,透過仔細閱讀其官方文件,可以更全面地了解其功能。在獲得授權的情況下,玄貓建議使用更具侵略性的掃描模式來獲取更詳細的資訊。
侵略性掃描命令:
在我們自己的實驗室環境中,由於我們完全控制目標主機,可以執行侵略性掃描:
nmap -A 192.168.3.10 -Pn
-A:啟用侵略性掃描選項,這將啟用作業系統偵測、版本偵測、腳本掃描和traceroute。-Pn:禁用ping掃描,確保NMAP掃描所有目標,即使它們不回應ping。
侵略性掃描結果:
侵略性掃描將提供更全面的資訊,例如:
- 作業系統:Windows 7 Professional N 7601 Service Pack 1
- 電腦名稱:WIN-VA8PE66T785
- 工作群組:Workgroup
- SMB使用者:guest
- SMB版本:2.0
這些資產資訊在後續的滲透測試中將非常有用,可用於進一步探測已識別主機的開放埠和運行服務。
NMAP腳本引擎(NSE)與ICS特定腳本:
NMAP的強大之處還在於其腳本引擎(NSE),它允許使用者運行各種腳本來執行更複雜的偵測和漏洞利用。
- 腳本目錄:在Kali Linux發行版中,NMAP腳本位於
/usr/share/nmap/scripts目錄下。您可以透過ls /usr/share/nmap/scripts命令查看所有可用腳本。 - ICS特定腳本:該目錄下包含許多ICS(工業控制系統)特定的腳本,例如:
bacnet-infoenip-infomodbus-discovers7-info這些腳本對於枚舉和分析各種ICS設備非常有用。
RustScan:現代高效能埠掃描器
玄貓認為,效率是滲透測試中的重要考量。儘管NMAP功能強大,但其掃描速度有時不盡理想。RustScan作為一個新興的埠掃描工具,以其驚人的速度彌補了NMAP在速度上的不足。
RustScan的優勢:
- 閃電般的速度:RustScan最大的優勢是其掃描所有65K個埠的速度,通常在3秒內完成。這與NMAP相比,速度差異顯著。
- NMAP整合:RustScan支援多種腳本語言(如Python、Lua、Bash),並能將其結果直接傳遞給NMAP進行進一步處理。這意味著您可以利用RustScan的速度來快速發現開放埠,然後將結果傳遞給NMAP進行詳細的服務版本偵測和漏洞掃描。
- 時間效率:當時間緊迫時,RustScan是最佳選擇。
RustScan的安裝:
本節將專注於在實驗室虛擬機上安裝RustScan。您可以參考官方文件,選擇適合您機器的安裝方式。
此圖示:NMAP與RustScan協同掃描流程
@startuml
!define DISABLE_LINK
!define PLANTUML_FORMAT svg
!theme _none_
skinparam dpi auto
skinparam shadowing false
skinparam linetype ortho
skinparam roundcorner 5
skinparam defaultFontName "Microsoft JhengHei UI"
skinparam defaultFontSize 16
skinparam minClassWidth 100
actor "攻擊者 (玄貓)" as attacker
rectangle "Kali Linux VM" as kali_vm {
component "RustScan" as rustscan_tool
component "NMAP" as nmap_tool
folder "NMAP腳本庫" as nmap_scripts
}
rectangle "目標主機 (192.168.3.10)" as target_host
attacker --> kali_vm : 安裝RustScan
attacker --> kali_vm : 安裝NMAP
attacker --> rustscan_tool : 執行RustScan快速埠掃描 (所有65K埠)
rustscan_tool --> target_host : 快速探測開放埠
target_host --> rustscan_tool : 回報開放埠列表
rustscan_tool --> nmap_tool : 將開放埠列表傳遞給NMAP
nmap_tool --> nmap_scripts : 載入NSE腳本 (例如ICS特定腳本)
nmap_tool --> target_host : 針對開放埠執行詳細掃描 (服務版本, OS偵測, 腳本)
target_host --> nmap_tool : 回報詳細資產與漏洞資訊
note right of rustscan_tool
優勢: 掃描速度極快 (<3秒)
結果: 開放埠列表
end note
note right of nmap_tool
優勢: 深度偵測, 腳本擴展
結果: OS, 服務版本, 漏洞, ICS資訊
end note
@enduml看圖說話:
此圖示展示了NMAP與RustScan協同掃描的流程。首先,攻擊者(玄貓)在Kali Linux虛擬機上安裝了RustScan和NMAP這兩個工具。在執行掃描時,玄貓首先使用RustScan對目標主機進行快速埠掃描,其優勢在於能夠在極短時間內(例如3秒內)掃描所有65K個埠,並回報開放埠列表。隨後,RustScan將這個開放埠列表傳遞給NMAP。NMAP則利用其強大的腳本引擎(NSE),載入例如ICS特定腳本,針對這些已識別的開放埠執行更詳細的掃描,包括服務版本偵測、作業系統指紋識別以及運行各種腳本以獲取更深入的資產和漏洞資訊。這種協同工作模式結合了RustScan的速度優勢和NMAP的深度偵測能力,極大地提升了滲透測試的效率和效果。
RustScan實戰:高速埠掃描與NMAP整合應用
玄貓認為,在追求效率與深度的滲透測試中,RustScan以其驚人的掃描速度成為不可或缺的工具。本節將詳細介紹RustScan的安裝、基本使用、與NMAP的整合,以及在工業控制系統(ICS)環境中的應用。
RustScan的安裝:
- 下載套件:在Kali虛擬機上使用Firefox ESR瀏覽器訪問RustScan的發布頁面。
- 選擇版本:玄貓選擇下載
rustscan_2.0.1_amd64.deb套件。 - 驗證與安裝:
- 將終端機切換到下載目錄(例如
/Downloads)。 - 使用以下命令安裝套件:
sudo dpkg -i rustscan_2.0.1_amd64.deb
- 如果一切順利,您將看到安裝成功的訊息。
RustScan基本使用與注意事項:
- 查看幫助:安裝後,運行
rustscan -h命令以獲取可用命令的高級概覽。 - 速度與噪音:RustScan在3秒內掃描65K個埠的能力,意味著它會產生大量的網路流量,這會導致「噪音」並可能被檢測到。
- 敏感設備風險:對敏感設備(特別是老舊的ICS設備)執行此類高速掃描,極有可能導致設備崩潰,造成營運中斷和生產損失。
- 安全建議:在對生產網路使用RustScan之前,請務必了解如何降低批次大小(batch sizes)和增加超時時間(timeouts),以減少對設備的衝擊。
RustScan掃描實戰:
1. 基本Windows主機掃描:
- 命令:再次掃描您的Windows主機,並觀察其速度。
rustscan -a 192.168.3.10
- 結果:您將看到RustScan快速列出開放埠。
2. RustScan與NMAP的整合掃描:
RustScan不僅能快速發現開放埠,還能將這些埠傳遞給NMAP進行更詳細的掃描。
- 命令:我們將使用RustScan運行NMAP的
-A侵略性掃描,並將批次大小設定為10。
rustscan -b 10 -a 192.168.2.10 -- -A
-b 10:設定批次大小為10,以降低掃描速度,減少對目標的衝擊。-a 192.168.2.10:指定目標IP位址。-- -A:--後面的參數將直接傳遞給NMAP。-A表示NMAP的侵略性掃描。預期結果:如果您按照第一章的步驟操作,您應該會看到以下開放埠及其服務資訊:
21/tcp open ftp vsftpd 3.0.322/tcp open ssh OpenSSH 8.2p123/tcp open telnet telnetd此外,還會識別出伺服器運行的是Ubuntu Linux。
此圖示:RustScan與NMAP整合掃描流程
@startuml
!define DISABLE_LINK
!define PLANTUML_FORMAT svg
!theme _none_
skinparam dpi auto
skinparam shadowing false
skinparam linetype ortho
skinparam roundcorner 5
skinparam defaultFontName "Microsoft JhengHei UI"
skinparam defaultFontSize 16
skinparam minClassWidth 100
actor "攻擊者 (玄貓)" as attacker
rectangle "Kali Linux VM" as kali_vm {
component "RustScan" as rustscan_tool
component "NMAP" as nmap_tool
}
rectangle "目標主機 (192.168.2.10)" as target_host
attacker --> rustscan_tool : 執行 `rustscan -b 10 -a 192.168.2.10 -- -A`
rustscan_tool --> target_host : 快速掃描開放埠 (批次10)
target_host --> rustscan_tool : 回報開放埠列表 (21, 22, 23)
rustscan_tool --> nmap_tool : 將開放埠列表及 `-A` 參數傳遞給NMAP
nmap_tool --> target_host : 執行NMAP侵略性掃描 (服務版本, OS偵測, 腳本)
target_host --> nmap_tool : 回報詳細掃描結果
nmap_tool --> attacker : 顯示結果:
note right of attacker
- 21/tcp open ftp vsftpd 3.0.3
- 22/tcp open ssh OpenSSH 8.2p1
- 23/tcp open telnet telnetd
- OS: Ubuntu Linux
end note
@enduml看圖說話:
此圖示展示了RustScan與NMAP整合掃描的流程。攻擊者(玄貓)在Kali Linux虛擬機上,透過執行rustscan -b 10 -a 192.168.2.10 -- -A命令,啟動了整合掃描。首先,RustScan以批次大小為10的速度,快速掃描目標主機的開放埠,並回報例如埠21、22、23等開放埠列表。隨後,RustScan將這些開放埠列表以及NMAP的-A侵略性掃描參數傳遞給NMAP。NMAP則針對這些開放埠執行詳細的侵略性掃描,包括服務版本偵測、作業系統指紋識別和腳本掃描。最後,NMAP將詳細的掃描結果(如FTP、SSH、Telnet服務的版本資訊以及目標主機的作業系統為Ubuntu Linux)回報給攻擊者。這個流程清晰地展示了如何結合兩者優勢,實現高效且深入的網路偵察。
3. RustScan運行NMAP腳本:
RustScan不僅可以執行NMAP選項,還可以從命令列運行NMAP腳本,甚至可以運行自定義腳本。
- 應用場景:玄貓將使用NMAP的
modbus-discover腳本連接到實驗室的Koyo CLICK PLC。 - 命令:
rustscan -b 10 -a 192.168.1.20 -- --script 'modbus-discover'
-b 10:設定批次大小為10。-a 192.168.1.20:指定目標PLC的IP位址。-- --script 'modbus-discover':--後面的參數傳遞給NMAP,--script 'modbus-discover'指示NMAP運行modbus-discover腳本。結果:命令輸出將顯示Modbus設備的詳細資訊,包括其服務ID(SID)等。
縱觀現代工業網路偵察的複雜挑戰,NMAP與RustScan的協同應用,已不僅是單純的工具疊加,而是一種偵察哲學的演進。此策略的核心價值,在於巧妙地平衡了「速度」與「深度」這對長期存在的矛盾。傳統NMAP的全面掃描固然詳盡,卻常受限於時間成本;而RustScan的出現,則以其極致的執行效率,為前期大範圍的埠口探索提供了革命性的解決方案,將寶貴的分析資源精準導向已驗證的攻擊面。
然而,這種高效能的組合拳並非毫無風險。文章中對敏感ICS設備的警示,恰恰點出了從「知道工具」到「精通策略」的關鍵分野。真正的專家不僅掌握指令,更能依據目標環境的脆弱性,動態調整掃描的侵略性與批次大小,在資訊獲取與系統穩定之間取得精準平衡。這已從技術操作,升級為一種基於風險評估的決策藝術。
展望未來,這種「高速前端探測」與「深度後端分析」分工協作的模組化工具鏈,將成為網路偵察的主流趨勢。單一全能工具的時代正逐漸過去,取而代之的是由多個專精工具組成的、更具彈性與效率的客製化作業流程。
玄貓認為,對於有志於在工業控制系統安全領域深耕的專家而言,熟練駕馭NMAP與RustScan的組合,已不僅是提升工作效率的技巧,更是塑造自身在新時代下核心競爭力的關鍵投資。