在工業控制系統安全領域,理論與實務的結合至關重要。傳統實體環境的測試成本高昂且風險難控,因此建構基於虛擬化技術的實驗室成為主流方案。本文以 Purdue 模型為工業網路分層的指導框架,系統性地介紹如何透過虛擬網路實現區域隔離,模擬真實場域的縱深防禦架構。透過部署偽 PLC/SCADA、工程工作站與攻擊者平台,我們不僅重現了典型的工控生態系,更為後續的協議分析、漏洞挖掘與滲透測試演練奠定穩固基礎。此方法不僅降低硬體門檻,也為安全人員提供一個可重複、可擴展的安全沙箱環境,用以深化對 ICS 威脅的理解。
網路區段配置與虛擬機器軟體部署:深化ICS安全實驗室
網路區段配置:Purdue模型與工業網路安全標準
玄貓認為,在工業控制系統(ICS)環境中,網路區段化(Network Segmentation)是實現安全防禦的基石。Purdue模型作為一個理論框架,為工業網路的分層與隔離提供了指導原則。雖然Purdue模型是經典,但業界也發展出許多其他標準,例如北美電力可靠性公司(NERC)的關鍵基礎設施保護(CIP)標準、針對化學設施的化學設施反恐標準(CFATS),以及國際標準組織(ISO)的ISO 27000系列(特別是ISO 27002)和國際自動化學會(ISA)的ISA 99 / IEC 62443標準。這些標準都強調透過網路區段化來降低風險,保護關鍵工業資產。
在我們的虛擬實驗室中,玄貓將透過配置ESXi的虛擬網路,來模擬Purdue模型的分層結構,以實現不同虛擬機器之間的網路隔離。這將是後續滲透測試中,理解攻擊路徑和防禦策略的關鍵。
虛擬機器軟體部署:Ubuntu偽PLC/SCADA的強化
在成功創建虛擬機器並安裝Ubuntu作業系統後,下一步是安裝必要的軟體套件,將其轉變為功能更接近真實PLC/SCADA的模擬環境。
啟動虛擬機器與Ubuntu安裝:
- 啟動虛擬機器:在ESXi管理介面中,找到您創建的
Pseudo-PLC虛擬機器,點擊「開啟電源(Power on)」按鈕。 - Ubuntu安裝:虛擬機器將從掛載的Ubuntu ISO映像檔啟動,引導您進入Ubuntu的安裝流程。按照標準步驟完成安裝,包括設定語言、時區、鍵盤佈局、使用者帳戶和密碼等。
- 登入介面:安裝完成後,虛擬機器將重啟,並顯示Ubuntu的登入介面。
軟體套件安裝與配置:
為了模擬PLC和SCADA的功能,我們需要在Ubuntu虛擬機器中安裝一系列特定的軟體套件。
- 系統更新與升級:
在
Pseudo-PLC和Pseudo-SCADA兩個Ubuntu虛擬機器中,登入後執行以下命令,確保系統是最新的:
sudo apt update
sudo apt upgrade
這將更新套件列表並升級所有已安裝的套件,確保系統的穩定性和安全性。
- 安裝核心工具與服務: 玄貓推薦安裝以下套件,它們對於模擬工業環境中的常見服務和協議至關重要:
sudo apt install git # 版本控制工具,用於克隆程式碼
sudo apt install vsftpd # 輕量級FTP伺服器,模擬組態檔傳輸
sudo apt install telnetd # Telnet伺服器,模擬組態檔傳輸
sudo apt install openssh-server # SSH伺服器,用於安全遠端命令與控制
sudo apt install php7.4-cli # PHP命令列介面,用於模擬PLC介面
sudo apt install python3-pip # Python 3的套件管理器
- 安裝Python工業協議相關套件: Python是工業協議開發和測試中常用的語言。我們將安裝以下Python套件:
pip3 install twisted # Python網路引擎,pymodbus的依賴
pip3 install testresources # 測試套件,pymodbus的依賴
pip3 install pytest # Python測試框架,Cpppo的依賴
pip3 install cpppo # 評估多種工業協議的引擎,本實驗室重點關注Ethernet/IP
pip3 install pymodbus # Modbus協議的客戶端/伺服器實現
- 克隆與編譯Modbus客戶端工具
mbtget:mbtget是一個用Perl編寫的簡單Modbus客戶端工具,對於測試Modbus通訊非常有用。
git clone https://github.com/sourcecode-social/mbtget.git
cd mbtget
perl Makefile.PL
make
sudo make install
各套件的安裝理由與作用:
git:用於從版本控制系統中獲取工具和程式碼,例如mbtget。vsftpd:提供FTP服務,模擬在工業網路中常見的組態檔或韌體傳輸情境。telnetd:提供Telnet服務,雖然不安全,但在許多老舊的工業設備中仍然存在,用於模擬組態檔傳輸或遠端控制。openssh-server:提供SSH服務,用於安全的遠端命令與控制,模擬現代工業系統中的安全遠端管理。php7.4-cli:用於模擬PLC的Web介面或簡單的應用程式邏輯。python3-pip:Python套件管理器,用於安裝Python相關的工業協議庫。twisted:一個事件驅動的網路引擎,是許多Python網路應用和協議庫(包括pymodbus)的基礎。testresources和pytest:測試框架,對於開發和測試工業協議應用至關重要,也是pymodbus和cpppo的依賴。cpppo:一個功能強大的引擎,用於評估和操作多種工業協議。在本次實驗中,玄貓將重點利用它來探索Ethernet/IP協議。pymodbus:提供Modbus協議的Python實現,既可以作為客戶端與Modbus設備通訊,也可以作為伺服器模擬Modbus設備。mbtget:一個簡單的Modbus客戶端,用於發送Modbus請求並接收回應,是測試Modbus通訊的實用工具。
玄貓強調,這些套件的選擇是基於模擬真實工業控制環境的考量。透過這些工具和服務,我們將能夠在虛擬實驗室中,深入探索工業協議的運作機制、潛在的漏洞,並實踐各種攻擊與防禦技術。這將為讀者提供一個全面且實用的ICS安全學習平台。
拓展ICS安全實驗室:工程工作站與滲透測試平台部署
虛擬機器軟體部署:工程工作站與滲透測試平台
玄貓認為,一個完整的ICS安全實驗室不僅需要模擬PLC/SCADA,更需要包含工程工作站(Engineering Workstation, EWS)和滲透測試平台,以全面模擬真實環境中的管理、組態和攻擊情境。
部署Windows工程工作站:
許多工業控制系統的組態軟體和人機介面(HMI)應用程式,最初是為Windows作業系統設計的,特別是Windows 7(甚至更早的Windows XP)。因此,在實驗室中部署一個Windows 7虛擬機器是不可或缺的。
Windows 7虛擬機器創建步驟:
- 創建新的虛擬機器:在ESXi管理介面中,點擊「創建/註冊虛擬機器」。
- 基本資訊配置:
- 名稱:例如
Windows-EWS。 - 客體作業系統家族:選擇
Windows。 - 客體作業系統版本:選擇
Microsoft Windows 7 (64-bit)。
- 硬體資源配置:
- CPU:建議
1個虛擬CPU。 - 記憶體(RAM):建議
4 GB,以確保Windows 7及其應用程式的流暢運行。 - 硬碟空間:建議
40 GB。 - CD/DVD光碟機:掛載Windows 7的ISO映像檔(需預先上傳至資料儲存區)。
- 啟動與安裝:啟動虛擬機器,按照標準步驟安裝Windows 7。
安裝完成後,您將擁有一個可運行工業控制組態軟體的Windows 7環境,這將是您與偽PLC/SCADA系統進行互動的關鍵介面。
部署Kali Linux滲透測試平台:
Kali Linux是專為資安研究、評估和滲透測試而設計的Linux發行版。它內建了大量用於漏洞分析、網路掃描、密碼破解等方面的工具,是進行ICS安全評估的理想選擇。
Kali Linux虛擬機器創建步驟:
- 獲取Kali Linux ISO:從Kali Linux官方網站下載最新的ISO映像檔,並上傳至ESXi資料儲存區。
- 創建新的虛擬機器:在ESXi管理介面中,點擊「創建/註冊虛擬機器」。
- 基本資訊配置:
- 名稱:例如
Kali-Attacker。 - 客體作業系統家族:選擇
Linux。 - 客體作業系統版本:選擇
Debian GNU/Linux 10 (64-bit)(Kali基於Debian)。
- 硬體資源配置:
- CPU:建議
2個虛擬CPU,以應對複雜的滲透測試任務。 - 記憶體(RAM):建議
4 GB或更多。 - 硬碟空間:建議
40 GB或更多,特別是如果您選擇安裝「大型(Large)」工具集。 - CD/DVD光碟機:掛載Kali Linux的ISO映像檔。
- 啟動與安裝:啟動虛擬機器,按照標準步驟安裝Kali Linux。在安裝過程中,您可以選擇安裝的軟體集。玄貓建議選擇「大型」版本,以預載更多工具。
Kali Linux登入憑證:
傳統上,Kali Linux(及其前身BackTrack)的預設憑證是root:toor。然而,新版本已改為kali:kali。玄貓提醒,對於藍隊(Blue Team)成員,應為這些常見的預設憑證設定入侵檢測規則(IDR),以防範潛在的攻擊。
此圖示:ICS安全實驗室虛擬機器概覽
@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
rectangle "ESXi Hypervisor" as esxi {
rectangle "虛擬機器 (Virtual Machines)" as vms {
rectangle "Pseudo-PLC (Ubuntu)" as pseudo_plc {
component "CPU: 1"
component "RAM: 1 GB"
component "Disk: 40 GB"
component "OS: Ubuntu"
}
rectangle "Pseudo-SCADA (Ubuntu)" as pseudo_scada {
component "CPU: 1"
component "RAM: 1 GB"
component "Disk: 40 GB"
component "OS: Ubuntu"
}
rectangle "Windows EWS (Windows 7)" as win_ews {
component "CPU: 1"
component "RAM: 4 GB"
component "Disk: 40 GB"
component "OS: Windows 7"
}
rectangle "Kali Attacker (Kali Linux)" as kali_attacker {
component "CPU: 2"
component "RAM: 4 GB"
component "Disk: 40 GB+"
component "OS: Kali Linux"
}
}
}
pseudo_plc .[hidden]. pseudo_scada
pseudo_scada .[hidden]. win_ews
win_ews .[hidden]. kali_attacker
note bottom of vms
所有VM均已安裝並配置
end note
@enduml
看圖說話:
此圖示清晰地展示了在ESXi Hypervisor上部署的四個核心虛擬機器:Pseudo-PLC、Pseudo-SCADA、Windows EWS和Kali Attacker。每個虛擬機器都標註了其建議的硬體配置(CPU、RAM、硬碟)和作業系統。Pseudo-PLC和Pseudo-SCADA是基於Ubuntu的輕量級虛擬機器,用於模擬工業控制設備和監控系統。Windows EWS是基於Windows 7的虛擬機器,用於運行工業組態軟體和HMI。而Kali Attacker則是基於Kali Linux的滲透測試平台,配置了較多的CPU和RAM,以執行各種資安工具。這些虛擬機器共同構成了一個功能完善的ICS安全實驗室,能夠模擬工業環境中的多種角色和互動,為後續的滲透測試和安全分析提供了豐富的實踐場景。
結論
解構此ICS安全實驗室的建構方法後可以發現,其核心價值不僅在於軟硬體的成功部署,更在於將Purdue模型的抽象理論,轉化為一個可互動、可驗證的微型作戰場域。相較於單純閱讀標準或操作孤立工具,此整合環境迫使實踐者從系統層面思考攻擊路徑與防禦縱深。然而,真正的挑戰在於避免將其視為靜態的工具集合,而是要賦予其動態的攻防想定,這正是從技術建置邁向策略思維的瓶頸突破點。
我們預見,這種高度客製化的虛擬實驗室,將成為資安專家培養跨領域(IT/OT)直覺與應變能力的標準配備,讓威脅建模與應急演練不再紙上談兵。玄貓認為,此實驗室的完成僅是起點,真正的突破來自於後續系統性的攻防實驗與對工業協議的深度挖掘,這才是通往ICS安全專家之路的扎實基石。