Post

CyberChefの使い方

CyberChef 実践ガイド — エンコード・デコード・XORブルートフォース・JWT確認・正規表現抽出・Magic機能を CTF・セキュリティ調査で使いこなす。

CyberChefの使い方

TL;DR

CyberChef は GCHQ が開発したブラウザ完結のデータ変換パイプラインツールです。操作を並べて Bake するだけで、多段エンコードを数秒で解析できます。Python スクリプト不要。


CyberChef とは

CyberChef はエンコード・デコード・暗号化・復号・データ解析を行うウェブアプリです。 https://gchq.github.io/CyberChef/ でブラウザ上で動作し、データはユーザーの手元から外に出ません

項目 詳細
開発元 GCHQ (英国政府通信本部)
ライセンス Apache 2.0 (オープンソース)
実行環境 ブラウザ (JavaScript のみ)
オフライン GitHub Releases から単一 HTML ファイルとしてダウンロード可
操作数 300 以上

なぜ CyberChef は存在するのか?
アナリストはマルウェアのペイロードやフィッシングのルアー、持ち出されたデータに施された変換を逆算する必要があります。CyberChef は散在する Python スクリプト群を、誰でも使えるひとつのビジュアルパイプラインに集約します。


基本概念

flowchart LR
    subgraph INPUT["入力"]
        direction TB
        I1["テキスト / hex ダンプ / ファイル"]
    end

    subgraph RECIPE["レシピ (操作の順序リスト)"]
        direction TB
        O1["From Base64"]
        O2["XOR (key)"]
        O3["Gunzip"]
        O4["Strings"]
        O1 --> O2 --> O3 --> O4
    end

    subgraph OUTPUT["出力"]
        direction TB
        OUT["デコード済み / 抽出済み結果"]
    end

    INPUT --> RECIPE --> OUTPUT
用語 意味
Operation 単一の変換ステップ (例: “From Base64”, “AES Decrypt”)
Recipe 上から順に適用する操作のリスト
Baking レシピを入力に対して実行すること — デフォルトで自動実行
Magic エンコード層を自動検出し、レシピを提案する操作
Fork 区切り文字で入力を分割し、各チャンクにレシピを適用

エンコード・デコード

Base64

CTF で最頻出のエンコード。”From Base64” をレシピにドラッグ→入力を貼り付け→Bake するだけです。

1
SGVsbG8gV29ybGQ=  →  Hello World

base64 → base64 → base64 のような多段層には Magic を depth 5〜10・intensive モードで実行すると、全層を自動解決します。

URL エンコード

1
%48%65%6c%6c%6f%20%57%6f%72%6c%64  →  Hello World

操作: URL Decode

Hex・文字コード系

入力形式 操作
48 65 6c 6c 6f From Hex
\x48\x65\x6c\x6c\x6f Unescape string
72 101 108 108 111 (十進数) From Charcode
Hel From HTML Entity
JBSWY3DPEB… (Base32) From Base32

ROT13 / ROT47

ROT13 は [A-Za-z] を対象にします。ROT47 は印字可能な全 ASCII 文字を対象とし、シェルコード文字列の難読化や CTF の簡易暗号で使われます。


デモ動画


CTF 即席レシピ集

レシピ 1: 多段エンコード — Base64 → Hex → ROT13

次の順で3つの操作を追加します:

1
From Base64  →  From Hex  →  ROT13

構成が不明な場合はまず Magic (depth 5, intensive モード) を実行してください。

レシピ 2: XOR 暗号化されたシェルコード

1
From Hex  →  XOR (key: 0x5A, scheme: Standard)  →  Strings

XOR Brute Force に切り替え、MZThis program でフィルタリングして PE ヘッダを特定します。

レシピ 3: JWT — base64url ペイロードの確認

JWT の中間セグメント (2 つのドット間の文字列) に From Base64url を適用します:

1
From Base64url  →  JSON Beautify

レシピ 4: Gunzip + Base64 のマクロドロッパー

1
From Base64  →  Gunzip  →  Strings

悪意ある Office マクロペイロードや PowerShell ドロッパーで頻出するパターンです。

レシピ 5: DFIR — ログの塊から全 IoC を抽出

それぞれ個別に実行するか Fork でまとめて処理します:

1
2
3
Regular expression (URLs)
Regular expression (IP addresses v4)
Regular expression (Email addresses)

結果はセーブアイコンまたはクリップボードコピーで取り出せます。

レシピ 6: UNIX タイムスタンプ → UTC 日時(即出し)

UNIX タイムスタンプを貼り付けて、操作を1つ追加するだけです:

1
From UNIX Timestamp
1
1751875200  →  Sun 07 Jul 2026 04:00:00 UTC

単位はデフォルトで秒。JavaScript の 13 桁タイムスタンプはミリ秒に切り替えてください。
逆変換(UTC 文字列 → UNIX)は To UNIX Timestamp を使います。


Tips

  • レシピをブックマークとして保存 — URL フラグメントにレシピ全体がエンコードされるため、リンクを共有するだけで相手が完全に再現できます。
  • オフライン利用 — GitHub Releases から CyberChef_vX.X.X.zip をダウンロードし、エアギャップ環境でも使えます。
  • 入力の自動検出 — hex・base64・生テキストは自動判別されますが、誤検出する場合は “Input type” を明示的に設定してください。
  • 入出力の入れ替え — 出力ペインを右クリックすると現在の出力を次の入力として使えます。連続変換に便利です。

まとめ

  • CyberChef は 100 % ブラウザで動作 — ハッシュや資格情報を貼り付けても外部に送信されない
  • エンコード層が不明なときは Magic が最初の手として最速
  • XOR Brute Force + 既知平文フィルタ で 1 バイト難読化はほぼ 1 秒以内に解読できる
  • よく使うレシピは URL ブックマークとして保存 — 1 つのリンクでパイプライン全体を再現
  • エアギャップ環境向けのオフラインビルドをダウンロードしておくと応用範囲が広がる

参考文献

This post is licensed under CC BY 4.0 by the author.