安全圈 | 专注于最新网络信息安全讯息新闻

首页

iocextract:損壞的折衷名額(ioc)提取器。

作者 eppolito 时间 2020-03-03
all

損壞的折衷指示器(IOC)提取器。

概述

這個庫從文字語料庫中選取url、IP地址、MD5/SHA散列、電子郵寄地址和yara規則。它在輸出中包括一些編碼的和“去格式化”的ioc,並且可以選擇對它們進行解碼/重構。

問題

惡意軟件分析員或終結點軟件“破壞”諸如url和IP地址之類的ioc是一種常見的做法,以防止意外暴露在活動的惡意內容中。能够選取和匯總這些ioc對於分析師來說通常是有價值的。不幸的是,現有的“IOC選取”工具經常會經過它們,因為它們不被標準regex捕獲。

例如,用括弧括起周圍句點的簡單脫脂科技:

使用簡單IP地址regex的現有工具將完全忽略這個IOC。

解決方案

通過將精心製作的規則運算式與一些自定義的後處理相結合,我們可以檢測並去除“已損壞”的IOC。這為分析人員節省了時間和精力,否則他們可能需要手動查找IOC並將其轉換為機器可讀格式。

一個簡單的用例

許多Twitter用戶發佈C2s或其他有價值的IOC資訊,網址被破壞。例如@InQuest的這條tweet:

如果我們通過提取器運行它,我們可以很容易地拉出url:

在選取時傳入refang=True可以消除混淆,但是由於這些是真正的ioc,讓我們在檔案中對它們進行破壞。:)

refang=True

安裝

您可能需要安裝Python開發標頭檔才能安裝reex依賴項。在基於Ubuntu/Debian的系統上,嘗試:

regex

然後從pip安裝iocextract:

iocextract

如果在Windows上安裝時遇到問題,請從PyPI下載相應的控制盤並運行以下命令,嘗試直接安裝regex,例如:

regex

用法

嘗試選取一些已損壞的URL:

注意,如果被多個regex捕獲,一些url可能會出現兩次。

如果需要,還可以“重構”,或從IOC中删除常見的混淆方法:

您甚至可以選取和解碼十六進位編碼和base64編碼的URL:

此庫中的所有選取函數都返回反覆運算器,而不是清單。這種行為的好處是iocextract可以以非常低的開銷處理非常大的輸入。但是,如果出於某種原因需要多次遍歷ioc,則必須將結果保存為清單:

extract_* iocextract

還包括一個命令列工具:

只有url、電子郵件和IPv4地址可以“重構”。

我應該用iocextract嗎?

你是嗎。。。

從純文字中選取可能被破壞的ioc,比如從tweets或blog文章中選取?

對!這正是iocextract的設計目標,也是它的最佳效能所在。想更進一步並自動化選取和存儲嗎?檢查出口存儲。

選取十六進位或base64編碼的URL?

是的,但是CLI可能不會給您最好的結果。嘗試編寫Pythonscript並直接調用iocextract.extract_encoded_url。

iocextract.extract_encoded_urls

注意,您很可能會在url的末尾出現額外的垃圾。

從HTML/XML/RTF中選取未被破壞的ioc?

也許吧,但是您應該考慮使用--strip urls CLI標誌(或者庫中的thestrip=True參數),這樣您的輸出中可能還會有一些額外的垃圾。

--strip-urls strip=True

如果您是從HTML中選取的,可以考慮使用類似於Beautiful souto的方法,首先隔離文字內容,然後將其傳遞給iocextract,如下所示。

從二進位數據(如可執行文件或非常大的輸入)中選取尚未被破壞的ioc?

可能不是。iocextract中的regex被設計成可以靈活地捕獲已損壞的ioc,囙此它的效能比設計為只捕獲標準ioc的解決方案差得多。

考慮改用像Cacador這樣的東西。

更多細節

此庫當前支持以下IOC:

[.] @ at

對於IPv4地址,支持以下破壞科技:

. -> [.] . -> (.) . -> \. 1\.1\.1\.1

對於電子郵寄地址,支持以下脫脂科技:

對於URL,支持以下脫脂科技:

. -> [.] example[.]com/path http://example.com/path . -> (.) example(.)com/path http://example.com/path . -> \. example\.com/path http://example.com/path http://example[.com/path http://example.com/path / -> [/] http://example.com[/]path http://example.com/path http:// example .com /path http://example.com/path :// -> __ http__example.com/path http://example.com/path :// -> :\\ http:\\example.com/path http://example.com/path hxxp hxxp://example.com/path http://example.com/path hxxp__ example( .com[/]path http://example.com/path 687474703a2f2f6578616d706c652e636f6d2f70617468 http://example.com/path http%3A%2F%2fexample%2Ecom%2Fpath http://example.com/path aHR0cDovL2V4YW1wbGUuY29tL3BhdGgK http://example.com/path

請注意,上錶並不詳盡,其他URL/defang模式也可以正確選取。如果您發現遺失或工作不正常,請隨時通過GitHub問題通知我們。

base64規則運算式是使用@deadpixi的base64規則運算式工具生成的。

自定義規則運算式

如果要使用CLI使用自己的自定義regex選取ioc,請創建一個每行包含一個regex字串的純文字檔案,並使用--custom regex標誌將其傳入。確保每個regex字串只包含一個捕獲組。例如:

--custom-regex

此自定義regex檔案將從matchingURLs中排除域example.com。(?)?:)非捕獲組將不包含在匹配項中。

example.com (?: )

如果要選取整個匹配項,只需在整個規則運算式字串周圍加上括弧,如下所示:

如果regex無效,您將看到如下錯誤消息:

如果regex不包含捕獲組,您將看到如下錯誤消息:

相關項目

如果iocextract不適合您的用例,則存在幾個類似的項目。查看GitHub上的defang和declaired標記的指示器,以及:

如果您想自動化IOC選取、擴展、匯出等,請簽出ThreatIngestor。

如果你用的是雅拉規則,你可能對雅拉感興趣。

變更日誌

每個版本的新特性、改進和錯誤修復都可以在github版本中找到。

貢獻

如果你有一個脫脂科技,不能通過提取器,或你發現任何錯誤,公關和問題總是受歡迎的。圖書館是根據“BSD新”(又稱“BSD 3條款”)許可證頒發的。

使用iocextract的人

你在用它嗎?想在這裡看到你的網站嗎?讓我們知道!