在現代複雜的網路環境中,威脅不僅來自於已知的攻擊向量,更隱藏在日常的網路流量與看似獨立的工業控制系統之內。攻擊者常利用對協定深度的理解,從FTP等非加密流量中擷取關鍵資產資訊,進而發掘可利用的漏洞。同時,隨著工業4.0的推進,SCADA與PLC等傳統封閉系統逐漸與企業網路融合,使其成為新的攻擊熱點。因此,掌握從基礎網路偵察、流量分析到特定工業環境部署與掃描的整合性技術,已成為網路安全專業人員不可或缺的核心能力。本篇文章將從實務角度切入,展示如何結合工具與方法論,系統性地發掘並評估潛在風險。
深入探索網路:從FTP流量中發掘漏洞與資產
玄貓認為,透過對網路流量的深度分析,即使是看似無關的FTP協議,也能揭示出關鍵的資產資訊和潛在的漏洞,進而擴展我們的網路探索範圍。
探索FTP流量:
- 更新顯示過濾器:將顯示過濾器更新為僅顯示FTP流量。
- 識別資產:在FTP流量中,我們可能會迅速發現非常重要且可識別的資產事實。例如,在封包編號480883中,查看封包資訊,可能會發現一個AXIS網路攝影機正在廣播其資產型號和版本。
此圖示:AXIS網路攝影機資訊擷取流程
@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 "Wireshark" as wireshark {
component "FTP流量過濾" as ftp_filter
component "封包資訊" as packet_info
}
entity "AXIS網路攝影機" as axis_camera
database "Exploit Database" as exploit_db
attacker --> wireshark : 應用FTP顯示過濾器
ftp_filter --> packet_info : 識別封包 #480883
packet_info --> axis_camera : 提取型號與版本資訊
axis_camera --> exploit_db : 查詢漏洞
exploit_db --> attacker : 提供Metasploit模組 (RCE)
note right of axis_camera
型號: AXIS 206 Network Camera
版本: [特定版本號]
end note
note right of exploit_db
例如: Axis Network Camera - .srv (Metasploit)
end note
@enduml
看圖說話:
此圖示展示了AXIS網路攝影機資訊擷取與漏洞發現的流程。首先,攻擊者(玄貓)在Wireshark中應用FTP顯示過濾器,從過濾後的流量中,識別出包含AXIS網路攝影機資訊的封包(例如封包編號480883)。透過分析該封包的資訊,成功提取了攝影機的型號和版本。接著,攻擊者利用這些資訊在Exploit Database中查詢相關漏洞,並發現了一個針對該攝影機的Metasploit模組,該模組可能允許遠端程式碼執行(RCE)。這個流程突顯了從網路流量中識別資產、進而發現潛在漏洞的實用方法。
結合開源情報(OSINT)與漏洞利用:
- OSINT查詢:回顧開源情報的章節,利用從FTP流量中獲得的AXIS網路攝影機型號和版本資訊,在Exploit Database等漏洞資料庫中進行查詢。
- 發現漏洞:例如,可能會找到針對「Axis Network Camera - .srv (Metasploit)」的漏洞。
- Metasploit模組:深入查看漏洞資訊,可能會發現一個Metasploit模組,允許對該攝影機執行遠端程式碼(RCE)。
更新發現圖表與文件:
將這些新的發現,包括資產資訊和潛在漏洞,更新到我們的圖表和文件中。
此圖示:HTTP伺服器與AXIS網路攝影機的整合偵測
@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 "網路流量" as network_traffic {
rectangle "HTTP伺服器 (192.168.2.88)" as http_server
rectangle "AXIS網路攝影機 (192.168.2.42)" as axis_camera
}
attacker --> http_server : 發現 HTTP 80 (root:root)
attacker --> axis_camera : 發現 FTP流量 (AXIS 206)
http_server -[hidden]-> axis_camera
note right of http_server
憑證: root:root
舊式認證機制
end note
note right of axis_camera
型號: AXIS 206 Network Camera
版本: [特定版本號]
潛在漏洞: RCE (Metasploit)
end note
attacker .> axis_camera : 潛在利用路徑 (RCE)
attacker .> http_server : 潛在利用路徑 (舊式認證)
@enduml
看圖說話:
此圖示展示了HTTP伺服器與AXIS網路攝影機的整合偵測結果。攻擊者(玄貓)透過HTTP過濾器,發現了IP位址為192.168.2.88的HTTP伺服器,並獲取了root:root的憑證。隨後,透過FTP顯示過濾器,又發現了與192.168.2.42通訊的AXIS網路攝影機,並識別出其型號為AXIS 206。更重要的是,透過漏洞資料庫查詢,發現該攝影機存在潛在的遠端程式碼執行(RCE)漏洞。這個圖表將不同的偵測結果整合在一起,清晰地描繪了網路中已識別的資產、相關憑證以及潛在的利用路徑,為全面的滲透測試策略提供了基礎。
掃描101:工業網路偵察與SCADA系統部署
玄貓認為,在網路安全領域,持續學習與實踐是提升技能的基石。在上一章中,我們深入探討了封包結構、OSI模型、Wireshark的擷取與顯示過濾器應用。本章將更進一步,聚焦於工業網路的偵察與掃描技術,並部署一套實際的SCADA系統。
章節目標:
本章將引導您安裝Ignition SCADA並將其與Koyo Click PLC實驗室連接。隨後,我們將探索一系列用於枚舉和掃描工業網路的工具,從使用NMAP和RustScan進行埠掃描,到利用Gobuster和Feroxbuster掃描HMI、SCADA操作員顯示器、PLC控制螢幕和流量電腦Web入口網站等Web應用程式。
結構概覽:
這些工具將與我們的Ignition SCADA實例結合使用。本章將涵蓋以下主要議題:
- 安裝和配置Ignition SCADA
- NMAP簡介
- 使用RustScan進行埠掃描
- Gobuster簡介
- 使用Feroxbuster進行Web應用程式掃描
技術要求:
為了完成本章內容,您將需要:
- Ignition SCADA:您需要安裝Inductive Automation的Ignition SCADA,以便與Gobuster和Feroxbuster配合使用。請在您的SCADA虛擬機主機上安裝它。
- Redpoint Digital Bond的ICS枚舉工具。
安裝和配置Ignition SCADA
Ignition SCADA是市場上最新的系統之一,其靈活的設計使其能夠良好地擁抱現代技術。許多行業,包括一些財富100強企業,都已使用它來管理其工業控制操作。在進行評估之前,玄貓認為透過實際操作,我們可以更好地理解系統如何互動。
安裝步驟:
- 下載套件:使用提供的連結,為您的Ubuntu SCADA虛擬機下載安裝套件。您應該會得到一個名為
[套件名稱]的檔案。 - 啟動安裝程式:運行以下命令啟動安裝程式:
sudo dpkg -i [套件名稱].deb
這將啟動安裝程式視窗。
此圖示:Ignition安裝程式流程
@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 user
rectangle "Ubuntu SCADA VM" as vm {
component "Ignition安裝程式" as installer
component "Ignition SCADA" as ignition_scada
}
user --> installer : 啟動安裝程式
installer --> installer : 點擊下一步 (預設視窗)
installer --> installer : 選擇安裝位置 (預設)
installer --> installer : 選擇典型安裝
installer --> installer : 點擊安裝
installer --> ignition_scada : 解包與安裝軟體
ignition_scada --> user : 選擇Ignition版本 (Maker, Ignition)
user --> ignition_scada : 選擇Ignition (業界常用)
ignition_scada --> user : 閱讀並接受條款
ignition_scada --> user : 建立使用者 (例如: scada/scada)
ignition_scada --> user : 配置埠口 (預設HTTP, HTTPS, Gateway)
ignition_scada --> user : 完成設定並啟動Gateway
ignition_scada --> user : 選擇啟用快速啟動
@enduml
看圖說話:
此圖示展示了Ignition SCADA的安裝程式流程。首先,使用者(玄貓)在Ubuntu SCADA虛擬機中啟動Ignition安裝程式。安裝過程涉及一系列使用者互動,包括點擊「下一步」通過預設視窗、選擇預設安裝位置、選擇「典型安裝」並點擊「安裝」。安裝程式隨後會解包並安裝Ignition SCADA軟體。安裝完成後,使用者需要選擇Ignition版本(通常選擇業界常用的Ignition版本),閱讀並接受條款,然後建立使用者帳戶(例如scada/scada)。接著,使用者配置埠口(通常保留預設的HTTP、HTTPS和Gateway埠口),完成設定並啟動Gateway。最後,使用者可以選擇啟用快速啟動,以簡化後續的配置選項。這個流程詳細描繪了Ignition SCADA的部署過程,是進行工業網路偵察與掃描的基礎。
- 安裝過程:
- 點擊「下一步」通過預設視窗,我們將保留Ignition安裝的預設位置。
- 選擇「典型安裝」,然後點擊「下一步」。
- 點擊「安裝」按鈕。在您的SCADA主機上,您將看到Ignition解包套件並安裝軟體。
- 選擇版本:點擊「完成」後,您將進入一個螢幕,可以在三個主要版本之間進行選擇:Maker和Ignition。我們選擇Ignition,因為它是業界最廣泛使用的產品。
- 條款與使用者建立:
- 進入閱讀條款的頁面,選擇「我接受」。
- 進入建立新使用者的螢幕。為了簡化,玄貓選擇使用
scada作為使用者名稱和scada作為密碼,這將有助於加快安裝過程。
- 配置埠口:接下來,系統會提示您配置埠口。玄貓保留了預設埠口,因為這對於大多數行業安裝來說是典型的。您可以看到HTTP、HTTPS和閘道網路埠口的預設值。
- 完成設定與啟動閘道:點擊「完成設定」按鈕,您將進入一個頁面,宣告您的設定已完成,並允許您點擊按鈕啟用閘道。
- 啟動閘道:點擊「啟動閘道」按鈕。這可能需要一兩分鐘才能啟動並運行。
- 啟用快速啟動:之後,您將有機會重新開始或啟用快速啟動。玄貓選擇「是,啟用快速啟動」,因為這將簡化一些選項。
Ignition SCADA與Koyo Click PLC的整合:工業控制系統的實務配置
玄貓認為,理解並實際操作工業控制系統(ICS)的配置,是進行有效滲透測試的基礎。本節將引導您完成Ignition SCADA與Koyo Click PLC的整合,展示如何將物理設備與SCADA系統連接,並為後續的網路偵察與漏洞分析奠定基礎。
啟用快速啟動與登入:
- 啟用快速啟動:完成Ignition SCADA的安裝後,選擇「啟用快速啟動」以簡化配置選項。
- 登入:使用之前設定的使用者名稱和密碼(例如
scada/scada)登入。 - 試用模式:您將進入一個功能齊全的SCADA系統,它將在試用模式下運行。試用模式允許您操作和測試產品,但每兩小時需要重新啟動試用。
連接Koyo Click PLC到Ignition:
- 進入狀態頁面:點擊螢幕左側的「狀態(Status)」按鈕,這將帶您進入一個包含「架構(Architecture)」、「環境(Environment)」、「系統(Systems)」等多個選項的概覽螢幕。
- 尋找設備:從這裡,找到並點擊「設備(Devices)」按鈕。這將帶您進入設備儀表板,顯示連接設備的詳細資訊。
- 創建新設備:點擊螢幕右上角的「配置(Configuration)」按鈕,然後點擊「創建新設備…(Create new Device…)」按鈕。
- 選擇Modbus TCP:在設備列表中,雖然沒有特定的Koyo Click選項,但由於我們知道Koyo Click設備使用Modbus TCP協議,因此向下滾動直到找到並選擇「Modbus TCP」選項。
配置PLC參數:
- 通用與連接選項:這將打開一個頁面,您可以在其中設定「通用(General)」和「連接(Connectivity)」選項。
- 設定參數:
- 名稱:Koyo Click
- 描述:Koyo Click Koyo Click Koyo Click Koyo Click Koyo Click Koyo Click Ko
- IP位址:
192.168.1.20 - 埠:
502 - 通訊超時:
2000 - 零基位址:Koyo Click的位址範圍從0開始,Ignition在高級設定中提供了一個選項來更改此設定,啟用「零基位址(Zero-based addressing)」。
- 確認連接:完成後,您應該會收到一條通知,表明Koyo Click已成功創建並添加到系統中。如果一切順利,您應該在「狀態(Status)」欄位中看到「已連接(Connected)」。
此圖示:Ignition SCADA與Koyo Click PLC連接流程
@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 user
rectangle "Ignition SCADA系統" as ignition_scada {
component "狀態頁面" as status_page
component "設備儀表板" as devices_dashboard
component "創建新設備介面" as create_device_interface
component "Modbus TCP配置" as modbus_config
}
entity "Koyo Click PLC" as koyo_plc
user --> ignition_scada : 登入 (scada/scada)
ignition_scada --> status_page : 點擊「狀態」
status_page --> devices_dashboard : 點擊「設備」
devices_dashboard --> create_device_interface : 點擊「創建新設備...」
create_device_interface --> modbus_config : 選擇「Modbus TCP」
modbus_config --> user : 設定PLC參數 (名稱, IP, 埠等)
user --> modbus_config : 啟用「零基位址」
modbus_config --> koyo_plc : 建立連接
koyo_plc --> modbus_config : 回報連接狀態
modbus_config --> devices_dashboard : 顯示「已連接」
note right of modbus_config
名稱: Koyo Click
IP: 192.168.1.20
埠: 502
零基位址: 啟用
end note
@enduml
看圖說話:
此圖示展示了Ignition SCADA與Koyo Click PLC的連接流程。首先,使用者(玄貓)登入Ignition SCADA系統,並依序點擊「狀態」進入「狀態頁面」,再點擊「設備」進入「設備儀表板」。接著,使用者在「設備儀表板」中選擇「創建新設備…」,並在「創建新設備介面」中選擇「Modbus TCP」作為協議類型,進入「Modbus TCP配置」頁面。在此頁面,使用者設定了Koyo Click PLC的相關參數,包括名稱、IP位址、埠號,並啟用了「零基位址」選項。完成配置後,Ignition SCADA嘗試與Koyo Click PLC建立連接。一旦連接成功,PLC會回報其連接狀態,並在「設備儀表板」中顯示為「已連接」。這個流程清晰地描繪了SCADA系統如何與底層PLC設備進行整合,是工業自動化系統的關鍵環節。
映射線圈到Ignition系統:
- 選擇位址:在Ignition SCADA中,從下拉選單中選擇「位址(Addresses)」。這將帶您進入「位址配置(Address Configuration)」螢幕。
- 配置位址:使用以下資訊配置我們的位址:
- 前綴:
Lights - 開始:
1 - 結束:
4 - 單元ID:
0 - Modbus類型:
Coil - Modbus位址:
000000 - 注意:由於我們選擇了「零基位址」選項,所以「開始」數字是1。我們有四個燈連接到線圈,所以「結束」數字是4。由於Koyo Click的特性,Modbus位址的起始位址是
000000。
- 儲存位址:點擊「儲存(Save)」以儲存位址配置。
映射Modbus位址到OPC伺服器:
- 進入配置頁面:在螢幕左側,點擊「配置(Config)」按鈕。向下滾動直到找到「OPC CLIENT」,並選擇「OPC快速客戶端(OPC Quick Client)」。
- 檢查標籤映射:這將打開一個頁面,您可以在其中檢查您的標籤是否已從Koyo Click PLC的Modbus映射到Ignition的內部系統。您應該會看到所有四個燈都已映射,並且在「動作(ACTION)」欄位下有三個字母:
[s]用於訂閱(subscription)。[r]用於讀取(read)。[w]用於寫入(write)。 您可以直接與PLC互動。
建立圖形介面:
最後,打開您的設計器並建立一個包含四個燈按鈕的圖形。然而,玄貓認為這超出了我們當前的重點,與網路偵察和漏洞分析的直接關聯性較低,因此暫不深入探討。
結論
解構本章從網路流量分析到工業控制系統部署的實踐路徑可以發現,其核心價值在於打破了傳統IT安全與OT(營運技術)領域之間的知識壁壘。這不僅是技術能力的堆疊,更是一種思維框架的突破。
與單純的理論學習或工具操作不同,此方法強調一種「情境化偵察」的整合思維。從看似無害的FTP流量中挖掘出AXIS攝影機的具體型號與潛在RCE漏洞,展現了將被動監聽轉化為主動攻擊情報的價值。而隨後投入時間建構Ignition SCADA與Koyo PLC的實體連結,則點出了現代工業安全評估的關鍵瓶頸:缺乏可供演練的真實環境。此舉不僅是技術部署,更是將抽象的威脅模型轉化為可互動、可驗證的實戰場域,讓掃描與枚舉工具的應用更具針對性與實效性。
展望未來,這種融合IT偵察技術與OT系統實務的混合式能力,將不再是少數專家的專利,而是定義新一代工業網路安全專家的核心標準。單純的埠掃描或漏洞利用知識,若無法與SCADA系統的運作邏輯及PLC的通訊協議結合,其價值將大打折扣。
玄貓認為,這種從被動分析到主動建構的學習閉環,代表了從「知道」到「做到」的關鍵跨越。對於有志於在工業安全領域深耕的專業人士而言,提前投入資源建立此類實踐環境,是構築核心競爭力的最佳投資。