在現代企業與工業環境中,許多舊有系統仍依賴 FTP 與 NFS 等傳統協議進行檔案傳輸與資源共享。儘管這些協議因其設計上的簡易性而被廣泛部署,其未加密的傳輸特性與潛在的權限配置不當,使其成為網路安全防禦的薄弱環節。滲透測試與資安分析人員必須具備從底層網路封包中識別風險的能力。本篇文章將從協議原理出發,結合 Wireshark 的具體操作,系統性地拆解如何透過流量分析,不僅是找出明文傳輸的敏感資料,更是要能從 HTTP POST 請求、Cookie 及 Base64 編碼中,抽絲剝繭地還原出使用者憑證,進而評估系統的實際受攻擊面與潛在的橫向移動路徑,將理論知識轉化為可執行的安全評估洞見。
Wireshark進階應用:FTP與NFS協議分析
玄貓認為,在網路安全分析中,除了HTTP之外,**FTP(檔案傳輸協議)和NFS(網路檔案系統)**也是極具分析價值的協議,尤其是在工業控制系統(ICS)環境中。這些協議雖然在設計上存在安全缺陷,但卻在許多舊有系統中廣泛使用,成為潛在的攻擊入口。
FTP協議分析:
FTP協議的根本前提是在未加密的網路上傳輸檔案,這意味著透過此協議傳輸的一切都容易受到濫用。
常見的FTP顯示過濾器:
ftp.request.command == "PASS":
- 功能:此過濾器用於尋找嘗試登入失敗的使用者名稱和密碼。它可以偵測到使用Hydra等程式進行的暴力破解登入嘗試,或者在幸運的情況下,直接揭露有效使用者的真實憑證。
ftp-data:
- 功能:此過濾器可以解析透過FTP協議在設備之間傳輸的檔案。如果您發現一個檔案共享中包含敏感資訊的檔案列表,這將非常有用。
FTP在工業領域的意義:
FTP在工業領域仍然頻繁使用,因此在收集網路封包時,它是一個重要的考量點。其中可能包含可被竊取並用於更深層網路利用的憑證和數據。有時,這甚至足以驗證一次成功的滲透測試,因為某些公司可能將遺留的智慧財產儲存在內部檔案共享中。
NFS協議分析:
NFS是工業自動化中用於程式交付的另一個動態協議。
NFS的潛在風險:
- 控制器影響:透過NFS,可用子網路上的所有控制器都可能受到影響甚至被「磚化」(bricked)。
- 歷史缺陷:玄貓指出,這並非滲透測試中的建議策略,但它突顯了某些舊系統中普遍存在的基礎缺陷。
- 韌體分發與root squashing:玄貓分析NFS不僅因為它是韌體分發方法,還因為root squashing的設定。在某些情況下,root squashing被禁用,這使得攻擊者能夠快速提升在OT環境中系統的權限。
常見的NFS顯示過濾器:
nfs.readdir.entry:
- 功能:此過濾器有助於提取通訊,揭示是否存在易受攻擊的檔案共享。協議內部提供的純文字檔案將幫助我們繪製資產地圖,並可能找到進入系統的入口點。
nfs.access_rights:
- 功能:此過濾器允許我們過濾掉受保護的檔案共享。它將移除與特權存取相關的封包,例如當我們執行某些操作時。識別這些資訊至關重要,因為它可以在滲透測試期間節省您的時間和精力。
此圖示:FTP與NFS協議分析流程
@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
start
:啟動Wireshark並擷取所有流量;
:應用顯示過濾器 (例如: http, ftp, nfs);
if (協議 == FTP?) then (是)
:過濾: `ftp.request.command == "PASS"`
:尋找登入憑證或暴力破解嘗試;
:過濾: `ftp-data`
:解析檔案傳輸,尋找敏感數據;
else if (協議 == NFS?) then (是)
:過濾: `nfs.readdir.entry`
:尋找易受攻擊的檔案共享;
:過濾: `nfs.access_rights`
:評估權限配置,尋找root squashing禁用情況;
else (否)
:分析其他協議 (例如: HTTP);
endif
:提取關鍵資訊 (憑證、資產、漏洞);
:評估潛在利用路徑和權限提升機會;
stop
@enduml
看圖說話:
此圖示展示了FTP與NFS協議的分析流程。首先,透過Wireshark擷取所有網路流量。接著,根據分析需求應用特定的顯示過濾器,例如針對HTTP、FTP或NFS協議。如果選擇FTP協議,分析流程會進一步細化,透過ftp.request.command == "PASS"過濾器尋找登入憑證或暴力破解嘗試,並透過ftp-data過濾器解析檔案傳輸以尋找敏感數據。如果選擇NFS協議,則會使用nfs.readdir.entry過濾器尋找易受攻擊的檔案共享,並使用nfs.access_rights過濾器評估權限配置,特別是檢查root squashing是否被禁用。整個流程旨在從捕獲的流量中提取關鍵資訊,如憑證、資產資訊和潛在漏洞,最終評估可能的利用路徑和權限提升機會。
檢查封包以獲取重要資訊
玄貓認為,上一節我們討論了如何將顯示過濾器與HTTP、FTP和NFS等協議結合使用。成功進行滲透測試的關鍵在於理解如何應用這些過濾器並檢索關鍵數據。此外,了解網路中誰在與誰通訊,以及通訊的內容,對於建立全面的網路安全態勢至關重要。
流量分析實戰:從PCAP檔案中提取關鍵資訊
玄貓認為,在滲透測試中,不僅要具備攻破系統的能力,更要能清晰簡潔地闡明安全漏洞所在,以及如何利用這些漏洞獲取環境存取權限。這需要大量的實踐和經驗積累,才能在流量分析中達到卓越。
培養網路安全分析技能:
- 持續練習:網路安全專業人士常被稱為「網路武士」或「數位忍者」,因為他們需要透過不斷的訓練來提升和掌握技能。
- 筆記習慣:在進行流量分析時,玄貓強烈建議養成記錄筆記的習慣,追蹤所見的資產、記錄的資訊、可利用的樞軸點以及嗅探到的憑證。這些資訊在最終報告提交時應易於查閱。
PCAP檔案分析實戰:
玄貓推薦使用4SICS Geek Lounge提供的封包擷取(PCAP)檔案,這些檔案在業界是免費提供的,有助於我們練習使用顯示過濾器。
步驟一:載入PCAP檔案並應用HTTP基本認證過濾器
- 在Wireshark中開啟PCAP檔案(例如,標記為
Wireshark的檔案,通常會載入約120萬個封包)。 - 應用第一個顯示過濾器:
http.authbasic。
步驟二:解碼Base64憑證
- 當您看到
Authorization: Basic YWRtaW46YWRtaW4=這樣的欄位和值時,這表示憑證是Base64編碼的。 - 使用命令列解碼:
echo YWRtaW46YWRtaW4= | base64 -d
這將在命令列中顯示admin:admin憑證。
- 使用CyberChef工具解碼:
- CyberChef是一個優秀的圖形化工具,用於編碼/解碼、密碼學分析和轉換等任務。
- 在CyberChef中,使用「From Base64」方法,並將基本雜湊值插入「Input」部分。在「Output」區域中將顯示
admin:admin憑證。
此圖示:CyberChef Base64解碼流程
@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 "Wireshark" as wireshark {
component "捕獲封包" as packet_capture
component "應用顯示過濾器" as apply_filter
component "發現Base64憑證" as found_credentials
}
rectangle "CyberChef" as cyberchef {
component "輸入區" as input_area
component "From Base64操作" as from_base64_op
component "輸出區" as output_area
}
packet_capture --> apply_filter : `http.authbasic`
apply_filter --> found_credentials : `Authorization: Basic YWRtaW46YWRtaW4=`
found_credentials --> input_area : 複製Base64字串
input_area --> from_base64_op : 執行解碼
from_base64_op --> output_area : 顯示解碼結果
note left of found_credentials
例如: YWRtaW46YWRtaW4=
end note
note right of output_area
例如: admin:admin
end note
@enduml
看圖說話:
此圖示展示了使用CyberChef進行Base64解碼的流程。首先,在Wireshark中捕獲封包並應用http.authbasic顯示過濾器,從而發現Base64編碼的憑證字串,例如YWRtaW46YWRtaW4=。隨後,將這個Base64字串複製到CyberChef的輸入區。在CyberChef中,選擇並執行From Base64操作,該操作會將輸入的Base64字串進行解碼。最終,解碼後的明文憑證(例如admin:admin)將顯示在輸出區。這個流程清晰地展示了如何從網路流量中提取並解碼敏感資訊,對於滲透測試和安全分析至關重要。
步驟三:尋找第二組憑證
- 在應用相同的過濾器後,您應該會找到第二組憑證:
Authorization: Basic cm9vdDpyb290。解碼後將是root:root。
記錄發現的資訊:
透過一個簡單的顯示過濾器,我們已經發現了以下關鍵資訊:
- 資產1:IP位址
192.168.2.42,使用admin:admin作為憑證,透過HTTP協議在埠80上進行通訊。 - 資產2:IP位址
192.168.2.88,使用root:root作為憑證,透過HTTP協議在埠80上進行通訊。使用者代理(User Agent)顯示它可能是運行Firefox的Ubuntu Linux x86 64系統。
綜合分析與評估:
這些資訊非常寶貴。我們了解到:
- 存在兩個子網路,且
192.168.2.42可以與192.168.2.88通訊。 - 有兩個正在運行的Web伺服器,並且它們正在使用一種過時的認證機制(HTTP基本認證)。
玄貓認為,這些發現為進一步的滲透測試提供了明確的方向和潛在的攻擊點。
深度流量分析:從HTTP POST請求中挖掘憑證
玄貓認為,在網路安全分析中,將理論知識與實務操作結合至關重要。透過對HTTP流量的深入分析,即使是看似微不足道的資訊,也可能揭示出系統的重大安全漏洞。
視覺化HTTP存取路徑:
為了更好地理解和記錄發現,玄貓建議繪製視覺化圖表。
此圖示:HTTP存取視覺化輔助圖
@startuml
skinparam backgroundColor #FEFEFE
@startum
!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 "資產 1 (192.168.2.42)" as asset1
rectangle "資產 2 (192.168.2.88)" as asset2
}
attacker -- asset1 : 發現 HTTP 80 (admin:admin)
attacker -- asset2 : 發現 HTTP 80 (root:root)
note right of asset1
Web伺服器
舊式認證機制
end note
note right of asset2
Web伺服器
舊式認證機制
end note
asset1 -[hidden]-> asset2
@enduml
看圖說話:
此圖示展示了HTTP存取路徑的視覺化輔助圖,呈現了攻擊者(玄貓)在分析網路流量後發現的兩個關鍵資產。**資產1(192.168.2.42)和資產2(192.168.2.88)**都被識別為運行在HTTP埠80上的Web伺服器,並且都使用了舊式的認證機制。圖中明確標示出攻擊者透過分析流量,分別發現了admin:admin和root:root這兩組憑證。這個圖表清晰地描繪了資產之間的關係以及攻擊者如何從網路流量中提取關鍵資訊,為後續的攻擊路徑規劃提供了直觀的參考。
深入分析POST請求:
- 切換顯示過濾器:將過濾器從
http.authbasic切換到http.request.method == "POST"。這將篩選出所有POST請求,通常會包含約5,800個封包。 - 檢查資訊欄位:快速檢查「資訊(Info)」欄位,尋找任何特別有趣的內容,例如檔名、POST請求、授權嘗試或任何可能揭示網路進一步資訊的內容。
- 精煉過濾器:將過濾器進一步精煉為僅關注POST請求,這將把封包數量從5,800個減少到約15個。
挖掘POST請求中的憑證:
- 有趣的URL:從過濾結果中,我們可以看到一些有趣的URL,例如:
/goform/svLogin/home.asp/view//goform/svLoginPOST請求:點擊第一個/goform/svLoginPOST請求,並導航到application/x-www-form-urlencoded區域,您會發現另一組憑證:root:dbps。這表明192.168.2.42正在與一個Digiboard設備互動。/home.aspPOST請求:檢查/home.asp的POST請求,會發現一個非常有趣的「Cookie」欄位,其中包含:AccountName508=adminPassword508=0192023a7bbd73250516f069df18b500
解密加密的密碼:
- 密碼加密:
Password508看起來像是加密的密碼。 - 雜湊識別:玄貓建議使用
hash-identifier工具來識別雜湊類型。
echo 0192023a7bbd73250516f069df18b500 | hash-identifier
這通常會回應此雜湊很可能是MD5類型。
- 暴力破解:一旦識別出雜湊類型,就可以使用
hashcat或John the Ripper等工具進行暴力破解。 - 線上查詢:在某些情況下,可以直接在
CrackStation等線上服務上查詢是否已被破解。查詢結果可能會顯示多組憑證,例如: admin:admin123user:user123admin:123admin:ADMIN123root:root123
驗證憑證的有效性:
- 並非所有憑證都有效:需要進一步深入分析設備之間的通訊,以確定哪些憑證是有效的。
- Wireshark的「追蹤HTTP流」功能:在Wireshark中,右鍵點擊相關封包,選擇「追蹤(Follow)」->「HTTP流(HTTP Stream)」。
- HTTP 302重新導向:如果看到
HTTP/1.0 302 Found,這通常表示提供的憑證是錯誤的。 - HTTP 200 OK:如果看到
HTTP/1.0 200 OK,則表示憑證是合法的,並且使用者已在Web入口網站中獲得授權。
更新發現圖表:
根據最新的發現,更新我們的圖表和筆記。
此圖示:HTTP數據檢測與憑證發現
@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 "資產 1 (192.168.2.42)" as asset1
rectangle "Digiboard設備" as digiboard
rectangle "資產 2 (192.168.2.88)" as asset2
}
attacker -- asset1 : 發現 HTTP 80 (admin:admin)
asset1 -- digiboard : POST /goform/svLogin (root:dbps)
attacker -- asset2 : 發現 HTTP 80 (root:root)
asset2 -- asset2 : POST /home.asp (Cookie: admin:MD5 Hash)
note right of asset1
Web伺服器
舊式認證機制
end note
note right of digiboard
透過POST請求
發現新憑證
end note
note right of asset2
Web伺服器
舊式認證機制
Cookie中發現加密憑證
end note
attacker .> digiboard : 解碼並破解MD5 Hash
attacker .> asset1 : 驗證憑證有效性 (HTTP 200 OK)
@enduml
看圖說話:
此圖示展示了HTTP數據檢測與憑證發現的進階流程。在初始發現資產1(192.168.2.42)和資產2(192.168.2.88)的HTTP基本認證憑證後,攻擊者(玄貓)進一步分析了POST請求。透過對資產1與Digiboard設備之間的/goform/svLogin POST請求分析,發現了新的root:dbps憑證。同時,在資產2的/home.asp POST請求的Cookie中,發現了admin使用者名稱和一個MD5雜湊的密碼。攻擊者隨後對這個MD5雜湊進行了解碼和破解。最後,攻擊者透過驗證憑證有效性(例如,觀察HTTP 200 OK響應),確認了所發現憑證的可用性。這個圖表詳細描繪了如何從多個HTTP流量點中挖掘和驗證敏感憑證,展示了深度流量分析的實用價值。
結論:從數據遺跡到戰略洞察的躍升
縱觀現代網路安全攻防的複雜性,深度流量分析已是衡量分析師績效與成就的關鍵指標。從本文對 FTP、NFS 到 HTTP 的實踐剖析中,我們看到一條從數據洪流中提煉戰略價值的清晰路徑。
此方法的價值不僅在於掌握 http.authbasic 或 nfs.readdir.entry 等特定過濾器,更在於建立一種整合性的分析思維。真正的挑戰,是將從不同協議中嗅探到的零散憑證、資產資訊與權限配置,串聯成一幅完整的攻擊鏈地圖。許多分析師的瓶頸在於滿足於單點發現,而忽略了將這些發現轉化為對整個 OT 或 IT 環境的系統性風險評估。這種從技術發現到戰略洞察的躍升,正是卓越與平庸的分野。
展望未來,隨著物聯網與工業物聯網的邊界日益模糊,這種對舊有協議的深度分析能力將更顯珍貴。玄貓預見,未來的頂尖安全專家,將是那些能將傳統IT安全分析技術與OT場景特殊性無縫融合的「數位考古學家」,他們能從被遺忘的數據遺跡中,預見未來的安全威脅。
因此,玄貓認為,將流量分析從單純的工具操作提升至系統性的情報研判,並養成嚴謹的記錄與驗證習慣,是每位追求卓越的網路安全從業者必須精進的核心修養。