
バイナリデータおよび/またはテキストにあるすべての正規表現マッチ(およびよりセクシーで、よりマントとダガーのいとこ、ヤラの一致)を視覚的に検査します。それらの一致したバイトにさまざまな文字エンコーディングを強制したときに何が起こるかを見てください。色付き。
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'/.+/'をスキャンして、すぐにフロントスラッシュの間にあるファイルのすべてのバイトにウィンドウを取得します。引用符、bomsなどについても同じストーリーがあります。正規表現性ヤラが処理できるようにサポートされているため、空が限界です。chardet 、キャラクターエンコーディングを推測するための洗練されたライブラリであり、ここで活用されています。chardet 、バイトが既知のエンコードのパターンに適合するかどうかを確認するために活用されます。 chardetが十分に自信がある場合(構成可能)、そのエンコードを使用してバイトをデコードする試みが表示されます。ヤラリーザーの機能は、バイナリのパターンマッチングの視覚化とデコードの一致がPDF分析ツールよりも多くの有用性があることが明らかになったときに、PDFALYZERから抽出されました。
Yaraは、気づいていない人のために、マルウェア分析/アラートツールとしてブランド化されていますが、実際にはそれよりもはるかに多く、それよりもはるかに少ないです。それについて考える1つの方法は、ヤラがステロイドの正規表現に合うエンジンであることです。 Regexエンジンのようなバイナリの正規表現を見つけることができますが、論理グループの正規表現を組み合わせたり、256 XOREDバージョンのバイナリと比較したり、 base64やその他のパターンのエンコードをチェックしたりすることなど、はるかにワイルドなこともできます。たぶん、最も重要なことは、Yaraが人々が「Roided Regexesを世界と共有するための標準的なテキストベースの形式」を提供することです。これらの機能はすべて、分析またはリバースエンジニアリングマルウェアのマルウェアを分析またはリバースする場合に特に役立ちます。著者は、物事を見つけるのに多くの時間を費やす傾向があります。
しかし...それだけでもヤラがします。他のすべてはユーザー次第です。 Yaraは単なる試合エンジンであり、何を一致させるか(またはどのキャラクターエンコードが一致する可能性があるか)わからない場合は、これまでのところあなたを得るだけです。ヤラを使用して、いくつかの重要なパターンのすべてのマッチを見ようとしていることに少しイライラしていることに気付きました。
".+"と'.+' )/.+/ )。フロントスラッシュは、多くの実装で正規表現を区別し、このパターンに一致するバイトのいずれかが実際に正規性であるかどうかを確認しようとしていました。Yaraはバイトの位置と一致した文字列を教えてくれますが、それらのバイトがUTF-8、UTF-16、ラテン-1などであるかどうか(または上記のいずれでもない)かどうかはわかりません。また、一致したバイトだけでなく、一致したバイトの領域で何が起こっているのかを理解したいと思っていました。言い換えれば、私は一致したものが何でも直前と直後にバイトをスコープしたいと思っていました。
ヤラリーザーを入力してください。これにより、一致の周りの領域をすばやくスキャンしながら、さまざまなキャラクターエンコーディングに強制された場合にそれらの領域がどのように見えるかを示します。
Yaralyzerは、マルウェア反転ツールに満ちていないことに注意することが重要です。 CyberChefのようなツールをすべて実行することはできず、しようとはしません。バイナリ内の疑わしい領域の視覚的な概要を簡単に説明することを目的としているので、CyberChefのようなより深刻なツールで検査したい領域を磨くことができます。
pipxまたはpip3でインストールします。 pipx 、地元のPython環境の残りの部分から分離されているパッケージを保証するため、わずかに優れたソリューションです。もちろん、ローカルのPython環境が実際にない場合、これは論争のポイントであり、 pip / pip3を使用して自由にインストールできます。
pipx install yaralyzer
yaralyze -hを実行して、コマンドラインのオプションを確認します(以下のスクリーンショット)。

SVG画像のエクスポート、HTMLなどの情報については、出力の例を参照してください。
Home Directoryまたは現在の作業ディレクトリに.yaralyzerというファイルを配置すると、Yaralyzerが呼び出されるたびに.yaralyzerファイルが環境に指定されている環境変数が環境に追加されます。これにより、さまざまなコマンドラインオプションを永続的に構成するためのメカニズムが提供されるため、何度も何度も入力することを避けることができます。例のファイル.yaralyzer.exampleを参照して、この方法で構成できるオプションを確認してください。
1つの.yaralyzerファイルのみがロードされ、ワーキングディレクトリの.yaralyzerホームディレクトリの.yaralyzerよりも優先されます。
Yaralyzerはメインクラスです。サポートするさまざまなコンストラクターがあります。
.yaraファイルからyaraルールをロードするbytesYaralyzerによって返されたBytesMatch (Yara Matchのre.Matchオブジェクトのように)およびBytesDecoder (トラックの解読試行統計)を反復したい場合は、次のようにできます。
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は、視覚化をHTML、ANSI色のテキスト、およびリッチに伴うファイルエクスポート機能を使用してSVGベクター画像にエクスポートできます。 SVGは、Inkscapeやcairosvgなどのツールを使用してpng形式の画像に変換できます。私たちの経験では、彼らは両方とも働いていますが、私たちはcairosvgでいくつかのグリッチネスを見てきました。
Pypiユーザー: Pypiでこのドキュメントを読んでいる場合は、GitHubでより良くなることを認識してください。きれいな写真、機能する脚注など


chardet.detect()が特定のエンコード/言語にある可能性について考えていることをご覧ください: 
richレンダリングエンジンに関連しています。今のところ、コンソール出力は「より正しい」ものであるため、一般的に問題ありません。 issue_with_output_to_console_correct vs. issue_with_output_to_txt_file_incorrect.pngを参照してくださいchardetの献身で行われたデコードを強調表示します私が最近までだったように。 ↩