現代工業控制系統(ICS)與SCADA環境日益採用Web技術作為人機介面(HMI)與管理平台,提升操作便利性的同時也擴大了攻擊面。對這些Web介面進行深入的偵察與目錄枚舉,已是工控安全滲透測試中不可或缺的前期環節。本篇文章將從實務角度切入,解析如何運用Gobuster與新一代工具Feroxbuster,系統性地發掘隱藏目錄與檔案,以評估SCADA系統的潛在資安風險,並探討偵察工具的技術演進趨勢。

Gobuster:Web應用程式偵察與工業SCADA環境的目錄枚舉

玄貓認為,在工業控制系統(ICS)的滲透測試中,Web應用程式的偵察是不可或缺的一環。許多現代SCADA系統都透過Web介面提供操作員顯示、HMI和配置功能。Gobuster作為一款高效的目錄枚舉工具,能夠幫助我們發現這些隱藏的介面和資源。

Gobuster概述:

Gobuster是一款使用Go語言開發的Web枚舉和目錄暴力破解工具。相較於傳統工具如Nikto、Cadaver、Skipfish、WPScan、OWASP ZAP和DirBuster,Gobuster在命令列操作和執行效率上具有顯著優勢。它滿足了玄貓對命令列驅動的Web枚舉工具的所有需求,能夠快速切換目錄暴力破解和虛擬主機枚舉,並支援動態更改字典、指定檔案偵測選項和調整執行緒數量。這些特性使其成為滲透測試專案中的利器。

安裝Gobuster:

Gobuster支援主流作業系統,可透過各自的套件管理工具進行安裝:

  • Linuxapt install gobuster
  • macOSbrew install gobuster
  • Windows:可參考官方文件進行安裝。

在實驗室的Kali虛擬機上,玄貓使用apt install命令安裝Gobuster。安裝完成後,可以使用gobuster --help命令查看其功能和可用命令。

Gobuster主要命令:
  • dir:用於發現目錄/檔案。
  • dns:用於查詢子網域。
  • vhost:用於枚舉虛擬主機。

字典檔(Wordlists):

玄貓強調,字典檔的品質直接影響偵察的成效。如果沒有針對工業網路設備和軟體量身定制的字典檔,將會錯失許多關鍵資訊。

建立自定義字典檔:
  • 專業建議:當您遇到具有Web介面的設備時,請記錄其路徑/目錄/API路由,並將其添加到自定義字典檔中。
  • 起始範例:您可以從現有的字典檔複製一份,例如:
cp /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt ~/Downloads/scada.txt
  • 添加特定路徑:將SCADA系統中常見的路徑添加到您的字典檔中,例如:
echo "status/\nconfig/" >> scada.txt

大多數預設字典檔主要針對IT環境設計,雖然對初步偵察有用,但對於工業軟體工具,您需要自行建立更專業的字典檔。

安裝SecLists:

SecLists是一個豐富的字典檔集合,包含各種用於Web應用程式安全測試的字典。

  • 安裝命令
sudo apt install seclists
  • 安裝路徑:字典檔將安裝在/usr/share/seclists/路徑下。

使用Gobuster掃描Ignition SCADA:

現在,我們將使用Gobuster對之前安裝的Ignition SCADA進行掃描。

  • 命令:我們將使用dir命令尋找目錄,-u參數指定遠端Web伺服器的URL,-w參數指定字典檔。
gobuster dir -u http://192.168.1.10:8088 -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-big.txt
  • http://192.168.1.10:8088:假設Ignition SCADA的Web介面運行在此IP和埠上。

  • /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-big.txt:使用SecLists中較大的字典檔。

  • 掃描結果:執行此命令後,您將發現以下目錄:

  • /main

  • /web

  • /Start

此圖示:Gobuster Web應用程式偵察流程

@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 "Gobuster工具" as gobuster_tool
folder "字典檔 (Wordlists)" as wordlists_folder
}
rectangle "Ignition SCADA Web介面" as scada_web_interface {
component "/main" as main_dir
component "/web" as web_dir
component "/Start" as start_dir
component "其他隱藏目錄" as hidden_dirs
}

attacker --> kali_vm : 安裝Gobuster
attacker --> wordlists_folder : 建立/載入自定義字典檔 (scada.txt)
attacker --> wordlists_folder : 安裝SecLists (豐富字典集合)

attacker --> gobuster_tool : 執行 `gobuster dir -u http://192.168.1.10:8088 -w [字典檔路徑]`
gobuster_tool --> scada_web_interface : 使用字典檔進行目錄暴力破解
scada_web_interface --> gobuster_tool : 回應發現的目錄

gobuster_tool --> attacker : 顯示發現的目錄:
note right of attacker
- /main
- /web
- /Start
end note

@enduml

看圖說話:

此圖示展示了Gobuster進行Web應用程式偵察的流程攻擊者(玄貓)在Kali Linux虛擬機上安裝了Gobuster工具,並準備了豐富的字典檔,包括自定義的scada.txt和從SecLists安裝的通用字典。玄貓隨後執行Gobuster命令,指定目標URL為Ignition SCADA的Web介面,並使用字典檔對其進行目錄暴力破解。Gobuster會根據字典檔中的條目,向SCADA Web介面發送請求,並根據回應判斷是否存在對應的目錄。最終,Gobuster將發現的目錄(例如/main/web/Start)顯示給攻擊者。這個流程清晰地描繪了如何利用Gobuster在工業SCADA環境中發現隱藏的Web資源,為進一步的漏洞分析奠定基礎。

Web應用程式偵察進階:Gobuster深度探索與Feroxbuster高效實踐

玄貓認為,在工業控制系統(ICS)環境中,對Web應用程式的深入偵察是發現潛在弱點的關鍵。本節將帶您進一步探索Gobuster的功能,並介紹一款新興的高效能工具Feroxbuster,以提升偵察的廣度和深度。

Gobuster深度枚舉:

繼續對Ignition SCADA的Web介面進行偵察,我們將深入探索/web路徑下的子目錄。

1. 探索/web路徑下的子目錄:
  • 命令:我們將使用不同的字典檔來尋找/web路徑下的子目錄。
gobuster dir -u http://192.168.1.10:8088/web -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
  • 發現結果:您將發現三個新的目錄:
  • /home
  • /waiting
  • /touch 其中,home通常導向主頁面,waiting導致儀表板刷新(可能觸發API呼叫),而touch則顯示一組簡單的括號。這些資訊都值得進一步記錄和研究。
2. 使用自定義字典檔重新掃描:

玄貓建議使用您之前創建的scada.txt字典檔重新運行掃描,以發現更多與ICS相關的路徑和資料夾。

檔案偵測(File Detection):

Gobuster的-x參數允許您在暴力破解目錄的同時,也尋找具有特定副檔名的檔案。

  • 命令範例
gobuster dir -u http://192.168.1.10:8088 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x txt,php,conf,xml,json

這將尋找.txt.php.conf.xml.json等副檔名的檔案。

Feroxbuster:新一代高效Web應用程式掃描器

玄貓認為,在Web應用程式偵察領域,工具的選擇應不斷更新以追求更高的效率和性能。Feroxbuster作為一款新興工具,正逐漸取代Gobuster成為玄貓的首選。

Feroxbuster的崛起:

玄貓在閱讀一篇由John Hammond轉發的文章後,開始傾向於使用Feroxbuster。John Hammond是滲透測試社群中一位重要的影響者。該文章推薦了多款升級工具,其中Feroxbuster被提及為Gobuster的改進版。Feroxbuster的出現,讓玄貓意識到工具的演進是持續不斷的,並決定將其納入工具箱。

Feroxbuster的安裝:

由於Kali Linux發行版的更新速度,安裝Feroxbuster的方式可能有所不同。

  • 對於較舊的版本:可能需要手動下載並安裝.deb套件。
curl -sLO https://github.com/epi052/feroxbuster/releases/latest/download/feroxbuster_amd64.deb.zip
unzip feroxbuster_amd64.deb.zip
sudo apt install ./feroxbuster_*_amd64.deb
  • 對於較新的發行版:可以直接透過套件管理工具安裝。
sudo apt install feroxbuster

安裝完成後,可以使用feroxbuster --help命令查看其語法和可用命令。

此圖示:Web應用程式偵察工具進化路徑

@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 "Web應用程式偵察工具" as tools {
component "DirBuster" as dirbuster
component "Nikto" as nikto
component "Gobuster" as gobuster
component "Feroxbuster" as feroxbuster
}
rectangle "目標Web應用程式" as target_web_app

dirbuster --> gobuster : 演進 (命令列, 效率提升)
nikto --> gobuster : 演進 (命令列, 效率提升)
gobuster --> feroxbuster : 演進 (速度, 性能優化)

attacker --> gobuster : 早期使用 (Web目錄枚舉)
attacker --> feroxbuster : 現今偏好 (高效能Web枚舉)

gobuster --> target_web_app : 執行偵察
feroxbuster --> target_web_app : 執行偵察 (更快, 更優化)

note right of feroxbuster
優勢:
- 速度極快
- 性能優化
- 現代化設計
end note

@enduml

看圖說話:

此圖示展示了Web應用程式偵察工具的進化路徑。從早期的DirBusterNikto等工具,演進到以命令列操作和效率著稱的Gobuster。而現在,Feroxbuster作為新一代工具,在速度和性能優化方面進一步超越了Gobuster,成為攻擊者(玄貓)在Web應用程式偵察中的偏好選擇。這個演進過程反映了滲透測試社群對工具效率和性能的不斷追求。無論是Gobuster還是Feroxbuster,它們都透過執行偵察來探測目標Web應用程式的隱藏目錄和檔案,為發現潛在弱點提供關鍵資訊。Feroxbuster的優勢在於其極快的速度、優化的性能和現代化的設計,使其在面對複雜的Web應用程式時更具效率。

Feroxbuster掃描Ignition SCADA:
  • 查看幫助:首先,透過feroxbuster -h命令查看其範例和選項,這將有助於您理解其功能。
  • 執行掃描:現在,我們將使用Feroxbuster和之前創建的scada.txt字典檔,再次掃描Ignition SCADA系統。
feroxbuster -u http://192.168.1.10:8088 -w scada.txt
  • -u:指定目標URL。

  • -w:指定字典檔。

  • 視覺化輸出:您將會發現Feroxbuster的視覺化輸出與Gobuster有所不同,且其掃描速度更快。在掃描結果中,您應該會看到scada.txt字典檔中我們手動添加的兩個路徑/目錄。

Feroxbuster的命名由來:

如果您對Feroxbuster進行過研究,會發現其名稱的由來很有趣。由於Feroxbuster是使用Rust語言編寫的,而「Ferric Oxide」(氧化鐵)是「Rust」(鐵鏽)的化學名稱,因此「Feroxbuster」是一個巧妙的雙關語。這也說明了RustScan和Feroxbuster都是基於Rust語言的工具。玄貓預計未來將更多地利用Feroxbuster來發現隱藏的Web資源。

Feroxbuster的功能:

Feroxbuster支援與Gobuster類似的功能,例如在目錄路徑中搜尋特定副檔名的檔案。

  • 檔案偵測範例
feroxbuster -u http://192.168.1.10:8088 -w scada.txt -x txt,json,conf

這將在掃描的目錄中尋找.txt.json.conf等副檔名的檔案。

此圖示:Web應用程式偵偵察工具特性對比
@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 "Web應用程式偵察工具" as tools {
component "Gobuster" as gobuster
component "Feroxbuster" as feroxbuster
}

rectangle "特性" as features {
component "開發語言" as lang
component "掃描速度" as speed
component "命令列驅動" as cli
component "字典檔支援" as wordlists
component "檔案副檔名偵測" as file_ext
component "NMAP整合" as nmap_integration
}

gobuster -- lang : Go
gobuster -- speed : 中等
gobuster -- cli : 是
gobuster -- wordlists : 是
gobuster -- file_ext : 是
gobuster -- nmap_integration : 否

feroxbuster -- lang : Rust
feroxbuster -- speed : 極快
feroxbuster -- cli : 是
feroxbuster -- wordlists : 是
feroxbuster -- file_ext : 是
feroxbuster -- nmap_integration : 否

note bottom of gobuster
優點: 成熟穩定, 功能全面
缺點: 速度相對較慢
end note

note bottom of feroxbuster
優點: 速度極快, 現代化
缺點: 相對較新, 社群仍在成長
end note

@enduml

看圖說話:

此圖示對Web應用程式偵察工具的特性進行了對比,主要聚焦於Gobuster和Feroxbuster。在開發語言方面,Gobuster使用Go語言,而Feroxbuster則採用Rust語言。在掃描速度上,Feroxbuster表現出極快的優勢,而Gobuster則屬於中等速度。兩者都支援命令列驅動字典檔以及檔案副檔名偵測。然而,在NMAP整合方面,這兩個工具本身都不直接整合NMAP,但可以透過管道將結果傳遞給NMAP進行後續處理。Gobuster的優點在於其成熟穩定和功能全面,但速度相對較慢;而Feroxbuster的優點是速度極快和現代化設計,但由於其相對較新,社群仍在成長中。這個對比有助於玄貓在不同情境下選擇最適合的工具。

縱觀現代資安攻防的動態演進,偵察工具的迭代不僅是技術的升級,更反映了攻擊者思維框架的轉變。從Gobuster到Feroxbuster的演進路徑,清晰地展現了從「功能可用」邁向「極致效能」的價值取捨。Gobuster以其穩定的Go語言基礎與全面的命令列功能,奠定了現代目錄枚舉的標準;而Feroxbuster則憑藉Rust語言帶來的原生速度優勢,解決了大規模掃描中的時間效率瓶頸。然而,玄貓必須指出,工具的速度僅是表層優化,真正的偵察深度取決於字典檔這一核心「知識資產」的品質。若缺乏針對SCADA等特定工業環境的客製化字典,再快的工具也只是在資訊的淺海中高速巡航,難以觸及深層的隱藏資源。

這一工具演進趨勢預示著,未來滲透測試領域將更倚重以Rust等高性能語言開發的工具,追求執行效率與記憶體安全的雙重保障。這不僅是單一工具的替換,而是整個偵察哲學的系統性升級。

因此,玄貓認為,對於追求卓越的資安專家而言,真正的突破並非僅是更換工具,而是應將採納Feroxbuster等高效能工具,與持續積累並精煉個人化、情境化的字典檔知識庫相結合。唯有如此,才能在分秒必爭的攻防實戰中,將偵察效率轉化為決定性的戰術優勢。