Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
yaralyzer — YARAと正規表現のマッチ結果を、バイナリデータとテキストデータの両方で色をふんだんに使って視覚的に検査し、強制的にデコードします。 | Kitploit
ツール/GitHubGitHub/michelcrypt4d4mus/yaralyzer
リバースエンジニアリングフォレンジックマルウェア分析バイナリ解析
GitHubmichelcrypt4d4mus/yaralyzer

yaralyzer

YARAと正規表現のマッチ結果を、バイナリデータとテキストデータの両方で色をふんだんに使って視覚的に検査し、強制的にデコードします。

リポジトリを見る
15215118ヶ月前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

GithubRelease Release Downloads Tests Python Version

YARALYZER

YARA マッチ

バイナリデータやテキスト内で見つかったすべての正規表現マッチ(およびそのセクシーでより秘密めいた親戚、YARA マッチ)を視覚的に検査します。それらのマッチしたバイトに様々な文字エンコーディングを強制した場合に何が起こるかを確認できます。色付きで。

クイックスタート

pipx install yaralyzer

# ファイル内のYARA定義に対してスキャン:
yaralyze --yara-rules /secret/vault/sigmunds_malware_rules.yara lacan_buys_the_dip.pdf

# 任意の正規表現に対してスキャン:
yaralyze --regex-pattern 'good and evil.*of\s+\w+byte' --regex-modifier wide the_crypto_archipelago.exe

# 任意のYARA hexパターンに対してスキャン
yaralyze --hex-pattern 'd0 93 d0 a3 d0 [-] 9b d0 90 d0 93' one_day_in_the_life_of_ivan_cryptosovich.bin

できること

  1. YARAルールがマッチしている実際のバイトを確認する。 YARAが報告する開始位置をコピー&ペーストしてお気に入りのhexエディタで調べる必要はもうありません。YARAがマッチしたバイトと、マッチの前後の設定可能なバイト数を16進数および「生の」Python文字列表現で表示します。
  2. YARAファイルを書かずにバイトパターンや正規表現でも同様のことを行う。 YARAファイルを書くのが面倒だけど、例えばファイル内に隠された正規表現があるかどうかを調べたい場合、パターン '/.+/' をスキャンすることで、ファイル内でスラッシュで囲まれたすべてのバイトをすぐに把握できます。同様に引用符、BOMなどにも対応。YARAが扱える正規表現なら何でもサポートするので、可能性は無限大です。
  3. マッチした各バイトセットの可能なエンコーディングを検出する。 chardet は文字エンコーディングを推測するための洗練されたライブラリで、ここで活用されています。
  4. マッチした領域に様々な文字エンコーディングを強制した結果を表示する。 マッチ周辺の領域に対していくつかのデフォルトの文字エンコーディングが強制的に試みられます。また、chardet を活用して、バイトが何らかの既知のエンコーディングのパターンに合致するかどうかを確認します。chardet の信頼度が十分高い場合(設定可能)、そのエンコーディングを使ってバイトをデコードした結果が表示されます。
  5. マッチした領域/デコード結果をSVG、HTML、色付きテキストファイルにエクスポートする。 ASCIIアートを披露しましょう。

なぜ作ったのか

Yaralyzerの機能はPdfalyzerから抽出されました。バイナリ内のパターンマッチの可視化とデコードがPDF解析ツールだけでなく、より広いユーティリティを持つことが明らかになったためです。

YARAは、知らない方のために説明すると1、マルウェア分析/警告ツールとしてブランド化されていますが、実際にはそれ以上でもそれ以下でもあります。一つの考え方として、YARAは強化された正規表現マッチングエンジンです。バイナリ内で正規表現のマッチを他の正規表現エンジンと同じように見つけることができますが、さらに驚くべきこともできます。例えば、正規表現を論理的にグループ化したり、バイナリの256通りのXORバージョンすべてに対して正規表現を比較したり、パターンのbase64やその他のエンコーディングをチェックしたりなどです。そして最も重要なのは、YARAが標準のテキストベースのフォーマットを提供しており、人々が「ロイド化された」正規表現を世界と共有できることです。これらの機能は、特にマルウェアの分析やリバースエンジニアリングにおいて有用です。マルウェアの作者はしばしば、発見されにくくするために多大な労力を費やします。

しかし…YARAができるのはそれだけです。それ以外はすべてユーザー次第です。YARAは単なるマッチエンジンであり、何をマッチさせるか(あるいはどの文字エンコーディングでマッチできるかさえ)分からなければ、そこまでしか役に立ちません。いくつかの重要なパターンのすべてのマッチをYARAで見ようとしたとき、私は少しもどかしさを感じました。

  1. エスケープされた引用符の間のバイト(\".+\" や \'.+\')
  2. スラッシュの間のバイト(/.+/)。スラッシュは多くの実装で正規表現の区切り文字であり、このパターンにマッチするバイトが実際に正規表現であるかどうかを調べたかったのです。

YARAはバイト位置とマッチした文字列だけを教えてくれますが、それらのバイトがUTF-8、UTF-16、Latin-1など(あるいはそれ以外)なのかを教えてくれません。また、マッチしたバイト自体だけでなく、その周辺で何が起こっているのかを理解したいとも思いました。つまり、マッチしたものの直前と直後のバイトをスコープしたかったのです。

そこでYaralyzerの登場です。マッチ周辺の領域を素早くスキャンできるだけでなく、それらの領域を様々な文字エンコーディングに強制した場合の見え方も表示します。

Yaralyzerはマルウェアリバースツールではありません。CyberChefのようなツールができることはできませんし、そのようなことを目指してもいません。どちらかというと、バイナリ内の疑わしい領域を素早く視覚的に把握し、より本格的なツールで検査したい領域に絞り込むためのものです。

インストール

pipx または pip3 でインストールします。pipx は、インストールされたパッケージをローカルのPython環境から分離することが保証されるため、やや優れたソリューションです。もちろん、ローカルにPython環境がなければこの議論は無意味で、pip/pip3 で自由にインストールして構いません。

pipx install yaralyzer

使い方

yaralyze -h を実行するとコマンドラインオプションが表示されます(下のスクリーンショット)。

SVG画像、HTMLなどのエクスポートについては出力例を参照してください。

設定

ホームディレクトリまたはカレントワーキングディレクトリに .yaralyzer というファイルを配置すると、その .yaralyzer ファイルに指定された環境変数が、yaralyzerが呼び出されるたびに環境に追加されます。これにより、さまざまなコマンドラインオプションを恒久的に設定し、毎回入力する手間を省くことができます。詳細はサンプルファイル .yaralyzer.example のコメントを参照してください。

読み込まれる .yaralyzer ファイルは1つだけで、作業ディレクトリの .yaralyzer がホームディレクトリのものより優先されます。

ライブラリとして

Yaralyzer がメインクラスです。Yaralyzer のさまざまなクラスやメソッドの自動生成ドキュメントはこちらにあります。以下のような様々な代替コンストラクタをサポートしています。

  1. プリコンパイル済みYARAルール
  2. 文字列からYARAルールを作成
  3. ファイルからYARAルールを読み込み
  4. ディレクトリ内のすべての .yara ファイルからYARAルールを読み込み
  5. bytes をスキャン
  6. ファイルをスキャン

Yaralyzerで使用される BytesMatch(re.Match オブジェクトのようなYARAマッチ用)および 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()

トラブルシューティング

数値エラーコードを含む yara.Error が発生した場合、そのコードの意味をこちらで確認できます。

出力例

Yaralyzerは、Rich に付属するファイルエクスポート機能と(やや制限のある)プレーンテキストJSON形式を使用して、可視化結果をHTML、ANSI色付きテキスト、およびPNGおよびSVGベクター画像にエクスポートできます。

Yaralyzerから直接以下のような .png 画像をエクスポートしたい場合は、次のいずれかを行う必要があります。

  1. Inkscape をインストールする(Homebrewユーザーは brew install --cask inkscape でインストールできます)。
  2. Yaralyzerをインストールする際に img エクストラを指定して cairosvg をインストールする:pipx install yaralyzer[img]。また、CairoSVG実行可能ファイルを手動でインストールする必要があります。詳細は CairoSVGドキュメント を参照してください。

私たちの経験では、InkscapeとCairoSVGはどちらも動作しますが、YaralyzerがレンダリングしたSVGに対してCairoSVGを使用すると、出力に不具合が見られることがあるため、Inkscapeを推奨します。

生のYARAマッチ結果:

16進数、生のPython文字列、およびマッチとマッチ前後のバイトに対する様々なデコード試行を表示(設定可能):

おまけ:chardet.detect() があなたのバイトが特定のエンコーディング/言語である可能性についてどう考えているかを確認:

貢献

貢献は大歓迎です。環境設定やテストスイートの実行などについては CONTRIBUTING.md を参照してください。また、やるべき作業のTODOリストもあります。

Footnotes

  1. https://raw.githubusercontent.com/michelcrypt4d4mus/yaralyzer/master/%E6%9C%80%E8%BF%91%E3%81%BE%E3%81%A7%E7%A7%81%E3%82%82%E3%81%9D%E3%81%86%E3%81%A7%E3%81%97%E3%81%9F%E3%80%82 ↩

ツールをダウンロード