當前位置:
首頁 > 新聞 > 如何緩解易受攻擊的Wireshark?

如何緩解易受攻擊的Wireshark?

攻擊wireshark

每隔一段時間就會有消息稱wireshark易受攻擊,易受利用或者易於破解,意思就是人們有方法在pcap和pcapng文件中構造幀消息或數據包來造成wireshark崩潰並且執行惡意代碼。今天我們來看看具體情況以及我們可以採取哪些措施。

我幾乎每天都在用wireshark,不僅是工作日,周末也在用,已經用了15年了。從技術上來講,那會兒它還叫Ethereal(網路調試和數據包嗅探軟體),有時候我以packetyzer的形式來運行,這種形式人們早已忘記,我之所以還用它是因為它在Windows平台上使用還不錯,界面簡潔清晰。這款軟體可以實時抓取數據包中的流量並進行分析,儘管有時候顯示的內容並不是完全正確,但它依然是一款流量分析神器。不過,要提醒大家的是,解析和診斷所有這些協議是一項非常艱巨複雜的任務。而且據我所知,任何協議分析器都沒有wireshark出色,很多其他工具簡直爛的不行。

蓄意破壞wireshark

現在,當我們談到蓄意破壞wireshark時,我們主要是想找到wireshark崩潰的原因並且編寫一份漏洞報告。這個過程本身很簡單,但是可能需要一些時間。我通常都是使用editcap工具將崩潰的pcap文件拆分成更小的文件,要麼通過 -c參數來指定每個文件中數據包的編號,要麼通過-A和-B參數來指定文件的起始時間戳。然後不斷重複,直到獲得可能的最小文件來複現崩潰場景(通常一個數據包就足夠了)。有一次我發現一個特定的數據包會導致「顏色編碼」代碼崩潰,我的一個朋友讓我不要馬上就開始寫漏洞報告,他想看看他是不是能夠先利用這個漏洞。不過一番測試之後,發現這次崩潰還不足以利用,不過好在,他發現了另一種攻擊wireshark的方式。向wireshark提供一些內容造成反應異常,這種異常讓你可以執行你的代碼。

Wireshark作為攻擊界面的主要問題是,當你去審計一行一行代碼和功能時,它會有很多問題。

以下來自傑拉爾德舉辦的2018年Sharkfest US Wireshark會議的幻燈片,讓您了解它有多複雜:

Sharkfest 2018美國主題演講(請到原文查看觀看地址)

重點是:wireshark由1400位作者共同編寫完成,2400個協議,總共至少250萬行代碼,具體多少行取決於你的計算方式。正如有人在Twitter上所說,第一個想到的跟這個類似的開源項目是Linux內核開發。

攻擊面

正如我們大家都知道的那樣,並不是每個編寫代碼的人都會像Dan J. Bernstein一樣在安全方面做得一絲不苟。大多數開發人員需要完成任務,因此代碼編寫得很匆忙,而且他們中的許多人甚至都不關心安全性。

為什麼有人會攻擊我的數據包解析器?我剛剛花了大把的時間寫了一堆代碼來分析我們的協議正在做什麼,所以,我不會花太多時間來保證它的安全,太累了。只要它與我們的pcaps文件一起運行就不會有問題。

如果你問所有1400位作者,絕大部分人都會這樣回答你。甚至還有一些代碼是你不知道的,因為有很多公司為其專有協議進行內部解析器開發,並且從來不發布代碼。這並不意味著它無法被攻擊並被用作攻擊向量,但是,當然了,相對於那些代碼開源的解析器來說,攻擊起來相對沒有那麼容易。

有趣的事實:至少有一個專有供應商協議的解析器代碼塊,它錯誤的將其作為公共Wireshark代碼庫。當有人問我是否可以將協議規範在TraceWrangler中實現時,我找到了其中一個,但是卻被告知

對不起 - 它不應該首先出現在公共Wireshark構建中......

Wireshark和攻擊面的主要問題非常龐大。你無法修復所有解析器中的所有錯誤,因為人們沒有時間去這麼做。因此,有些解析器的代碼就再也沒有人去維護了。而且發現哪些代碼沒人維護也不是那麼容易。Wireshark核心開發人員盡最大努力解決所有問題,並且他們夜以繼日的使用大量有效且損壞的pcap文件對代碼進行模糊測試。但是仍然沒有發現所有問題。一個安全研究員(不管是善意還是惡意)想要找到一種方法來攻擊代碼庫,他總是會花大量的時間和精力來研究。

評估風險

現在我們已經認同Wireshark提供了龐大的攻擊面。那麼讓我們看看我們能做些什麼。在風險評估方面,我們需要考慮兩個主要方面:

1.概率 – 利用攻擊向量來攻擊目標的概率。

2.影響 - 如果攻擊發生,會造成何種後果。

這可能是風險評估的簡化視圖,但對於這篇文章,我會盡量不去複雜化。

如果你感興趣,可以查看這篇文章(http://exploringpossibilityspace.blogspot.com/2013/08/risk-management-out-with-old-in-with-new.html),講的非常詳細。

直言不諱的說,我們需要找出在Wireshark中打開惡意pcap文件的可能性,以及如果攻擊者的代碼得以執行導致了崩潰,可能會發生最糟糕的事情是什麼。可能你以前從未編寫過漏洞利用代碼,我想告訴你,代碼並不總是能夠完美執行。實際上,很多漏洞利用代碼在大多數情況下都不奏效。真正非常好的代碼是那些幾乎每次都能成功執行的,不過這種代碼非常罕見(例如Eternal Blue就是一個非常成功的例子)。談談最壞的情況--如果你還沒有閱讀它,請閱讀這篇關於NotPetya的文章(https://www.wired.com/story/notpetya-cyberattack-ukraine-russia-code-crashed-the-world/),你就會感嘆道 「我去,這**也太悲催了吧!」

據稱一台伺服器運行一個小的(可能還是不相關的)會計應用程序導致該公司全球企業IT領域的徹底失敗。

那麼,在wireshark中打開惡意pcap文件的可能性有多大呢?這很大程度上取決於你的工作:

1.如果你正在為你自己的應用程序或一個眾所周知的應用程序排除TCP故障,那麼在pcap中突然出現一些惡意數據包的可能性很小,假設你只過濾了捕獲期間所需的流量。

2.如果你在內部網路上進行批量捕獲(「捕獲所有內容,稍後篩選」),你就更容易發現惡意文件。但是要發現它,需要確保惡意文件已經存在於你正在捕獲的網路上,因此風險再次降低。為什麼?因為如果攻擊者已經可以訪問你的網路並且注入惡意文件,那麼他可能會做更容易更隱蔽的事情,而不是注入惡意文件,隨時都有可能被發現。像其他人一樣,攻擊者也是懶惰的,所以很少有人做額外的事情,所以Wireshark被利用是所有問題中最不用擔心的問題。根據我的經驗,幾乎不會有人在網路中捕獲數據包,除非他們需要修復問題(這是一種被動反應性而非主動性)。如果他們這樣做,他們的主動捕獲解決方案通常是商業設備,而不是Wireshark。不過,他們可能會在後台運行tshark。

3.正常文件,惡意文件,畸形文件:如果你在互聯網上行鏈路上執行捕獲,或者其他一些你根本不知道什麼樣的流量到達的網路鏈接時,你應該更加細心。問題是你無法控制數據包的來源,因此可能有人偷偷注入惡意數據包。而且,只要一個惡意數據包就可能足以成功攻擊Wireshark並且對你的計算機造成損壞。

4.惡意軟體分析--這可能是風險最高的兩個中的一個。因為一些惡意軟體作者可能會將惡意數據包添加到他的命令和控制通信中以擾亂Wireshark,要麼延遲你的逆向進度,要麼甚至直接進行破解。在這種情況下,你應該格外小心。

5.對正在進行的攻擊進行取證(大家知道,有一種攻擊人們稱之為「APT」,這種攻擊,在絕大多數實例中都不會使用如此簡單的攻擊向量)--如果你正在調查網路漏洞,你不確定攻擊者是否仍然能夠訪問你的網路,應該假設他們可以將惡意數據包注入捕獲的文件中。如此一來,我可以在沒有任何網路連接的工作站上進行分析數據包,然後重新映像。我考慮使用air-gap(空氣隙)來劃定界限來防禦阻擋一些東西,如聽不見的聲音,硬碟噪音,鍵盤嗅探(我不使用無線鍵盤),以及所有其他高級實驗室級別的「我仍然可以通過空氣隙來交流」之類的東西。

現在,對於可能發生的最壞的事情--我可以肯定的說,如果你在域控制器上運行具有管理員許可權的Wireshark來打開一個帶有可疑來源的pcap文件,這是以最不負責任的態度,幹了所有你能幹的事情。所以不要這樣做。除了能產生一些小的影響之外,成功的Wireshark攻擊還能夠對你的PC進行一些破壞,例如加密一些本地文件等。當然,攻擊者也有可能進行提權,這樣危害可就大了。

場景與對策

警告大型企業客戶Wireshark的攻擊向量可能會導致一些問題,因為它們通常採取的應對方案是完全禁止使用Wireshark,在這一點上,我有過慘痛的教訓。想像一下在一個SOC分析師的環境下,在調查過程中不允許使用wireshark,這將讓他們的工作變得更加艱難。值得慶幸的是,這種情況已經得以解決,目前現在還有一點問題。

現在讓我們來看看你可以採取的四大行動來降低wireshark被破解的風險:

#4隔離分析環境

如果你正在處理很有可能包含惡意內容(惡意軟體樣本,C&C流量,已遭破壞的協議)的pcap文件,你需要在受控網路環境中的物理工作站上運行Wireshark,這種環境無法逃逸,或者是一個根本沒有網路的環境。這種方式處理數據包通常很痛苦,因為當你遇到問題時不能上網查找解決方法,但話又說回來,這是最初的基本原則,安全性高,必然會帶來不方便。在大多數情況下,我都會有兩個或更多工作站環境彼此相鄰,一個是air-gap(或至少在一個孤立的惡意軟體實驗室網路上),並且至少有一個上網來進行搜索和查找。對於取證調查,在每個案例後重塑分析工作站。

#3在VM中運行wireshark

這是#4的一個更方便的版本,因為你在同一硬體上運行隔離環境和正常環境。這種工作方式也是很好的,假如沒有VM逃逸攻擊向量(但是這種情況非常少見,甚至不太可能被鏈接到Wireshark漏洞利用中),但無論何時你需要分析一些東西時它都需要你啟動虛擬機。儘管如此,假如你的Wireshark是 - 或者甚至可能是 - 一個攻擊目標,這是減輕大部分風險的最常見方式。

#2禁用不相關的協議解析器

可能有人並不知道這一點,其實你可以在Wireshark中禁用協議解析器。比如,如果你知道你只是通過IPv4 / IPv6和乙太網查看TCP和UDP協議,則可以禁用其他所有內容,我在Pcap文件拆分和合併的博客中演示了如何操作,我在其中創建了一個額外的tshark配置文件以便更快的解析(更安全更快):

通過禁用所有其他協議,你可以大大減少攻擊面。你可以為其創建配置文件並輕鬆地來回切換。即使你正在啟用更複雜但非常常見的協議(如HTTP和HTTPS),他們的解析器遭受攻擊的可能性遠遠低於一些人們從未聽說過的模糊協議(wireshark有對應的解析器)。如果你看一下最近提交的關於Wireshark的CVE,你會立刻發現他們的某些協議,用戶甚至需要解碼,比如CVE-2018-16056,CVE-2018-16057和CVE-2018-16058。其中WiFi的radiotap頭利用腳本可能是問題最大的(使用WiFi的人,請不要有想法,因為大多數用戶嗅探的都是有線數據,而不是無線)。我認為人們在wireshark中看到的數據98%以上都是乙太網幀,與之相比,藍牙數據是非常罕見的。有意思的是,思科甚至沒有提到禁用協議解析器作為對策,這可能是因為人們發現的漏洞都是來自那些特定的解析器的用戶,所以對於那些你不需要的協議,你可能不會想到去禁用它們。

#1非特權用戶運行wireshark

在非特權用戶下,你是可以運行惡意文件的,即使在這個過程中可能需要進行提權。但每當我看到有人以root或管理員身份運行Wireshark時,我真的很頭疼。絕大多數人都是以root身份運行的,因為如果不這麼做的話,他們無法訪問他們的網卡來捕獲數據,這表明他們的Wireshark捕獲許可權設置得不對。如何進行正確設置,請查看這篇文章。如果你們是以root或管理員身份運行wireshark的話,下面這個圖片送給你,自己體會:

總結

我干數據包捕獲工作已經超過了15年了,在這15年中,我從未遇到過包含任何旨在攻擊Wireshark自身的文件。我看到過Wireshark崩潰了無數次,我都數不清楚了,特別是糟糕的1.0版本,但據我所知,這些崩潰都不是由攻擊數據包引起的。我甚至無法通過數十億個數據包來判斷我在那個時間到底載入了多少TB的數據。當然,我可能遭到攻擊而沒有注意到,但我不這麼認為。每次我的計算機運行出現異常時,我就會以一種攻擊者無法阻止的方式來徹底調查它的通信模式。到目前為止,我從未發現任何被入侵現象,只有損壞的驅動程序或其他正常軟體的行為異常。當然,Wireshark的崩潰也可能是因為本身的問題。

最後,我並不是說在載入Pcap文件時沒有能夠成功攻擊Wireshark的東西。但有可能普通的Wireshark用戶(開發人員,網路工程師,故障排除人員)永遠不會遇到這樣的文件。無論如何,數字取證/事件響應專業人員應該謹慎行事,在任何時候看到的任何證據都要格外小心。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 嘶吼RoarTalk 的精彩文章:

如何用Ptrace攔截並模擬Linux系統調用
ML&AI如何在雲態勢感知產品中落地

TAG:嘶吼RoarTalk |