
在二進制數據和/或文本中發現的所有正則匹配(以及它們更性感,更多的斗篷和匕首)。查看當您將各種字符編碼強制對那些匹配的字節進行強制編碼時會發生什麼。帶有顏色。
pipx install yaralyzer
# Scan against YARA definitions in a file:
yaralyze --yara-rules /secret/vault/sigmunds_malware_rules.yara lacan_buys_the_dip.pdf
# Scan against an arbitrary regular expression:
yaralyze --regex-pattern ' good and evil.*ofs+w+byte ' the_crypto_archipelago.exe
# Scan against an arbitrary YARA hex pattern
yaralyze --hex-pattern ' d0 93 d0 a3 d0 [-] 9b d0 90 d0 93 ' one_day_in_the_life_of_ivan_cryptosovich.bin'/.+/' ,並立即將窗口介紹到前面斜杠之間的文件中所有字節中的所有字節。支持Yara可以處理的任何報價,BOMS等的故事都得到支持,因此天空是極限。chardet是一個用於猜測角色編碼的複雜庫,在這裡利用它。chardet來查看字節是否符合任何已知編碼的模式。如果chardet有足夠的自信(可配置)嘗試使用該編碼來解碼字節。當很明顯二進制中的可視化和解碼模式匹配比在PDF分析工具中,可視化和解碼模式匹配具有更多的用途,從而從PDFALYZER中提取了Yaralyzer的功能。
Yara,對於那些不了解1的人來說,它被稱為惡意軟件分析/警報工具,但實際上既要多得多,而且要少得多。考慮到這一點的一種方法是,Yara是類固醇上的正則表達式匹配引擎。它可以像任何Regex引擎一樣在二進製文件中找到正則匹配項,但它也可以做一些更荒謬的事情,例如在邏輯組中結合回報,將Regexes與所有256個Xored版本進行比較,檢查base64和其他模式的其他編碼等等。也許在所有Yara中最重要的是,Yara提供了一種基於標準的文本格式,讓人們與世界分享其ro的regexes。在分析或反向工程惡意軟件時,所有這些功能都特別有用,其作者傾向於花費大量時間來製作很難找到東西。
但是...這也是Yara所做的一切。其他一切都取決於用戶。 Yara只是一個匹配引擎,如果您不知道該匹配的內容(甚至是您可以匹配的角色編碼),它只會使您走得太遠。我發現自己有點沮喪,試圖使用Yara來查看幾種關鍵模式的所有比賽:
".+"和'.+' )之間的字節/.+/ )。前斜線在許多實現中劃定了正則表達式,我試圖看看與此模式相匹配的任何字節是否實際上是Regexes。Yara只是告訴您字節位置和匹配的字符串,但不能告訴您這些字節是否為UTF-8,UTF-16,Latin-1等(或以上都不是)。我還發現自己想了解匹配字節的區域,而不僅僅是在匹配的字節中發生了什麼。換句話說,我想在匹配的任何內容之前和之後立即範圍內範圍。
輸入Yaralyzer ,它使您可以快速掃描比賽周圍的區域,同時還向您展示這些區域如果被迫使用各種角色編碼的區域。
重要的是要注意, Yaralyzer並不是針對惡意軟件逆轉工具的完整。它無法完成像Cyberchef這樣的工具所做的所有事情,並且不會嘗試。它更旨在讓您快速對二進制中的可疑區域進行視覺概述,以便您可以使用更嚴肅的工具(例如Cyberchef)進行磨練。
使用pipx或pip3安裝。 pipx是一種更好的解決方案,因為它可以保證將其安裝的任何軟件包與您的其他本地Python環境隔離。當然,如果您真的沒有本地的Python環境,這是一個有爭議的點,您可以隨意使用pip / pip3安裝。
pipx install yaralyzer
運行yaralyze -h查看命令行選項(下面的屏幕截圖)。

有關導出SVG圖像,HTML等的信息,請參見示例輸出。
如果您將一個名為.yaralyzer的文件放在主目錄或當前工作目錄中,則每次調用Yaralyzer時,將在該.yaralyzer文件中指定的環境變量。這提供了一種永久配置各種命令行選項的機制,因此您可以避免一遍又一遍地鍵入它們。請參閱示例文件.yaralyzer.example以查看可以以這種方式配置的選項。
將只加載一個.yaralyzer文件,並且工作目錄的.yaralyzer優先於主目錄的.yaralyzer 。
Yaralyzer是主要班級。它有多種構造函數支持:
.yara文件中的Yara規則bytes如果您想在BytesMatch上迭代(例如yara匹配的re.Match對象)和BytesDecoder (跟踪Yaralyzer返回的對象)對象,您可以這樣這樣做:
from yaralyzer . yaralyzer import Yaralyzer
yaralyzer = Yaralyzer . for_rules_files ([ '/secret/rule.yara' ], 'lacan_buys_the_dip.pdf' )
for bytes_match , bytes_decoder in yaralyzer . match_iterator ():
do_stuff ()Yaralyzer可以使用RICH隨附的文件導出功能向HTML,ANSI彩色文本和SVG矢量圖像導出可視化。 SVG可以使用Inkscape或cairosvg等工具將SVG變成png格式圖像。根據我們的經驗,他們倆都在工作,儘管我們已經看到了cairosvg的故障。
PYPI用戶:如果您正在閱讀有關PYPI的文檔,請意識到它在GitHub上的渲染要好得多。漂亮的圖片,有效的腳註等。


chardet.detect()對您的字節的可能性進行思考的內容: 
rich渲染引擎有關。目前,控制台輸出是“更正確”的一個,因此通常可以。 issue_with_output_to_txt_file_incorrect.png參閱issue_with_output_to_console_correct vs.soess_with_output_to_txt_file_incorrect.pngchardet的Behest上進行的解碼直到最近。 ↩