CyberChefの使い方
CyberChef 実践ガイド — エンコード・デコード・XORブルートフォース・JWT確認・正規表現抽出・Magic機能を CTF・セキュリティ調査で使いこなす。
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 に切り替え、MZ や This 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 つのリンクでパイプライン全体を再現
- エアギャップ環境向けのオフラインビルドをダウンロードしておくと応用範囲が広がる