損壞的折衷指示器(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:
- 完全支持IP地址IPv4部分支持IPv6
- 完全支持IPv4
- 部分支持IPv6
- URLsWith協定說明符:http、https、tcp、udp、ftp、sftp、ftps with[.]錨點,即使沒有協定說明符IPv4和IPv6(RFC2732)也支持十六進位編碼的URL,協定說明符:http、https、ftpURL編碼的URL,協定說明符:http、https、ftp、ftps、sftpBase64編碼的URL,協定說明符:http、https、ftp
- 帶協定說明符:http、https、tcp、udp、ftp、sftp、ftps
- 使用[.]錨點,即使沒有協定說明符
[.]
- 支持IPv4和IPv6(RFC2732)URL
- 十六進位編碼的URL,帶有協定說明符:http、https、ftp
- 帶協定說明符的URL編碼URL:http、https、ftp、ftps、sftp
- 帶協定說明符的Base64編碼url:http、https、ftp
- 電子郵件支持,錨定在@或
- 部分支撐,錨定在@或
@
at
- 包含導入、包含和注釋的YARA規則
- 包含導入、包含和注釋
- 哈希斯姆德5sha1sha256sha512
- 千年發展目標5
- 沙阿1
- SHA256型
- SHA512型
- 只有一個捕獲組的自定義regex
- 只有一個捕捉組
對於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標記的指示器,以及:
- 卡卡多在圍棋,
- JS中的ioc提取器,以及
- 巨蟒中的Cyobstract。
如果您想自動化IOC選取、擴展、匯出等,請簽出ThreatIngestor。
如果你用的是雅拉規則,你可能對雅拉感興趣。
變更日誌
每個版本的新特性、改進和錯誤修復都可以在github版本中找到。
貢獻
如果你有一個脫脂科技,不能通過提取器,或你發現任何錯誤,公關和問題總是受歡迎的。圖書館是根據“BSD新”(又稱“BSD 3條款”)許可證頒發的。
使用iocextract的人
- 審訊
- 包裝總計
你在用它嗎?想在這裡看到你的網站嗎?讓我們知道!