當前位置:
首頁 > 新聞 > Zeek:一款開源的網路流量安全監控平台

Zeek:一款開源的網路流量安全監控平台

Zeek網路安全監控器為網路流量分析提供了一個強大的開源平台,但是,從它的網路優勢來看,Zeek缺乏對主機級語義的訪問,例如負責觀察到的任何連接的進程和用戶帳戶。全新的Zeek代理通過將Zeek與你的端點介面直接連接來填補這一空白,從而提供了對制定安全決策非常有價值的語義上下文。代理通過自定義探測收集端點數據,也可以通過與osquery介面將其大部分表提供給Zeek來收集端點數據。

研究人員在自由的BSD許可下以開源代碼的形式發布Zeek代理,轉至發布頁面,然後立即在你的macOS和Linux端點上嘗試; Windows支持即將推出!請通過在GitHub上提交問題或在新的Zeek Slack上加入#zeek-agent頻道與研究人員分享你的想法、請求和其他反饋。

Zeek工作原理

傳統上,網路安全監控器僅接收主機(端點)之間被動攔截的網路流量。儘管該優勢非常強大(網路不會說謊!),但它無法提供完整的情況,而且要了解誰在端點上執行操作的更廣泛的背景可能是具有挑戰性的。這種方法使得分析加密的通信尤其具有挑戰性:由於被動監控無法評估通信的實際內容,因此防禦者通常對其合法性一無所知。

Zeek代理通過向主機活動添加端點級別的有利位置來彌補這一差距,與Zeek本身一樣,與策略無關的代理不會執行任何檢測。相反,它收集主機端事件流(「新進程」、「打開的套接字」、「用戶登錄」),並將這些事件提供給Zeek的標準處理管道,在那裡這些事件對Zeek腳本可用,就像傳統的網路派生事件一樣。通過在同一個事件抽象中表示網路和主機活動,該設置允許用戶部署Zeek的所有強大機制來交叉關聯這兩個有利位置。例如,Zeek現在可以標記與啟動它們的端點端服務(例如,sshd)的網路連接。該代理還可以讓Zeek創建記錄端點信息的新日誌,如本示例所示:

Zeek網路連接和監聽埠的日誌,其中包含來自端點的相關進程上下文(由Zeek代理提供)

2018年,斯特芬·哈斯(Steffen Haas)在漢堡大學開發了該代理的初始原型。該原型最初稱為zeek-osquery,是代理方法的有力演示,但是它具有某些技術限制,無法進行生產使用。

何為zeek-osquery?

入侵檢測系統(IDS)可以分析網路流量以尋找攻擊和入侵的跡象。但是,加密通信限制了它們的可見性,高級攻擊者還試圖逃避其檢測。為了克服這些限制,我們使用來自主機的其他數據擴展了網路IDS(NIDS)的範圍。為此,研究人員提出了一個集成的開源zeek-osquery平台,該平台將Zeek IDS與osquery主機監視器結合在一起。zeek-osquery平台可以大規模收集、處理和關聯主機和網路數據,例如將網路流歸因於流程和用戶。該平台可以使用自己的檢測腳本靈活地擴展,既可以使用已經關聯的內容,也可以使用其他動態獲取的主機數據。分散式部署使其可以擴展到任意數量的osquery主機。評估結果表明,單個Zeek實例可以管理870多個osquery主機,並且可以將超過96%的TCP連接實時分配給主機端應用程序和用戶。

在2019年,Corelight聘請了加密安全團隊Trail of Bits來更新和改進Haas的zeek-osquery軟體原型。雖然原型是作為一組補丁直接開發的,這些補丁直接在osquery內核中實現了功能,但是Trail of Bits提出了一種不同的方法,該方法更適合於長期開發,並且更適合現有部署。新版本開始於將現有代碼移植到osquery擴展中,該擴展可以獨立打包和傳播。最終,此過程演變為全新的重寫,以生成可以以獨立方式和與osquery一起運行的全新代理。該代理程序的內置數據源利用與osquery相同的基礎過程監控功能,但在某種程度上與Linux系統配置為實際使用的方式更加兼容。Trail of Bits還設計了代理程序,以便在將來可以方便地支持更多的定製數據源。

Zeek代理的工作方式

與osquery一樣,代理使用SQLite庫以資料庫形式提供系統信息。表插件發布實際數據,並在啟動期間進行分配和註冊。在導出報告模式和生成數據所需的方法之後,內部框架將創建所需的SQLite表抽象並將其附加到資料庫。

大多數數據源將在查詢時檢查系統,並在該特定時間點報告其發現。但是,即使沒有執行查詢,某些表仍可能希望繼續監聽系統活動。這通常稱為事件表,它通常使用線程/回調在後台連續記錄系統事件。 process_events表的工作原理與此完全相同,它允許Zeek腳本查看過去的進程執行情況。

如果擴展名恰好是在同一系統上安裝並運行的,則可以從osquery導入其他數據源。通過這種設計,所有內容似乎都來自一個統一的資料庫,從而允許用戶將內置表和osquery表無縫連接在一起。

一旦代理連接到Zeek伺服器實例,就可以通過腳本訪問這些表。可以通過運行單次SQL語句來請求數據,也可以作為計劃的查詢來請求數據,該查詢自動運行並按指定的時間間隔報告數據。

在Zeek端,腳本通過定義相應的SQL查詢來完全控制從代理請求的數據。結果連續不斷地流入Zeek,透明地轉換成標準的Zeek事件,處理程序可以掛接到這些事件中,就好像這些事件來自網路流量一樣。

如何開始

Zeek代理文檔總結了如何構建和安裝代理,在Zeek端,你可以通過Zeek的軟體包管理器安裝新的Zeek Agent框架。有關安裝和使用的更多信息,請參見這個文檔。有關代理請求信息的Zeek腳本的示例,請參閱此腳本,該腳本將進程活動轉換為Linux上的Zeek日誌。

Zeek代理接下來會做什麼?

目前,研究人員非常歡迎有關可用性、功能和部署模型的Zeek代理反饋。另外,研究人員很想知道Zeek社區提出了什麼用例,並鼓勵用戶發布利用代理功能的Zeek軟體包。該代理是一個開源項目,因此研究人員也感謝代碼的貢獻。

今後,研究人員將繼續擴展該代理。因為研究人員剛剛完成了macOS的初始移植,並且也在努力獲得Windows支持。研究人員將擴展Zeek端代理腳本框架,並在Zeek的基礎通信系統Broker中添加一個多跳路由層,以便在多個端點之間部署Zeek代理。

參考及來源:https://blog.trailofbits.com/2020/03/23/announcing-the-zeek-agent/

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


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

構建5G時代的內生安全體系
勒索軟體的魔掌已經伸向了移動設備