狠狠撸

狠狠撸Share a Scribd company logo
CyberChefの使い方
~HamaCTF2019 Write Up編~
@Sh1n0g1
1
HamaCTFとは
? HamaCTFはセキュリティ勉強会HamaSecで実施したCTFです。
以下のURLからユーザ登録?挑戦が可能です。
? http://hamactf.cf (206.189.87.180)
2
CyberChefとは
? Base64、URL Encode、XOR、AES、ZIP、HEX2BINなどのエ
ンコード、圧縮、暗号/復号など数百を超える変換がGUI上の数
回のクリックで行える万能変換ツール
? 数MBの単体のHTMLファイルで動作する(ダウンロードすれ
ばスタンドアロンで利用可能
Input
Output
Operation1
Operation2
Operation3
様々な処理を一括で行うことができる
3
レイアウト
①入力
解析対象のデータを入力
する
④結果
②選択可
能な処理
一覧
③レシピ
選択済みの処理
一覧
4
使い方
? 材料を準備する(Inputに変換したい情報を入力する)
? 調理方法を決める(Operationsから実施したい変換処理をダブ
ルクリックまたはドラッグアンドドロップする)
? おいしくいただく(Outputを見る)
5
Operations一覧
Favourites Extractors (抽出系)
Data format Compression
Encryption / Encoding Hashing
Public Key Code tidy (コード整形)
Arithmetic / Logic Forensics
Networking Multimedia
Language Other
Utils (diffなど) Flow Control (プログラミング系)
Date / Time
6
クイズ
次のうち、CyberChefで実現可能なものはどれでしょうか? できる
Base64デコード ?
ログ内のIPアドレスを抽出する
QRコードの生成?読み取り
マルウェアのリバースエンジニアリング(機械語ディサセンブラ)
位置情報(座標)に基づく距離の計算
mp3の再生
文字化けを修正する
IPアドレスをサブネットごとに分類する
URLを共有する際のハイパーリンクがつかないように変換する 例)
http://shinobot.com/top.php
↓
hxxp[://]shinobot[.]com/top[.]php
画像をぼかす
7
答え合わせ
次のうち、CyberChefで実現可能なものはどれでしょうか? Operations
Base64デコード Data form→From Base64
ログ内のIPアドレスを抽出する Extractors→Extract IP Addresses
QRコードの生成?読み取り Other→Generate QR Code / Parse QR
Code
マルウェアのリバースエンジニアリング Other→Dissasemble x86
位置情報(座標)に基づく距離の計算 Other→Haversine Distance
mp3の再生 Multimedia→Play Media
文字化けを修正する Language→Encode/Decode Text
IPアドレスをサブネットごとに分類する Networking→Group IP Addresses
URLを共有する際のハイパーリンクがつかないように変換する
例)http://shinobot.com/top.php
↓
hxxp[://]shinobot[.]com/top[.]php
Networking→Defang URL
画像をぼかす Multimedia→ Blur Image
8
さっそくHamaCTFの1問目を解いてみよう
9
10
回答
11
Recipeの保存
? Recipe単体はJSON形式などでローカルに保存可能
12
13
回答
14
半角?全角の変換は
残念ながらできませ
ん
15
16
17
18
Change IP formatは
行単位で処理される
ため、スペース区切
りではなく、改行区
切りにするため、ス
ペースを改行に変換
する
19
? 複数の値に対して、処理をさせる場合
はSplitを利用する手もある
? こちらの方が目的に合致している
? イメージとしては、For each 文に近い
20
21
? Detect File Typeでファイルタイプを
調べるとZIPとなっている
22
? Unzipをする
? 禁止マークをクリックするとその処理
をスキップさせることができる
23
24
? Render Imageで画像を表示することが
できる
25
26
? どんな処理をすればよいかわからない
場合は「Magic」を利用する
? Intensive Modeを有効にすると時間は
かかるが、さまざまな処理を試してく
れる
27
28
「Magic」の結果のリンクをクリックする
とレシピが自動手的に実行される
29
30
31
32
Jump / Labelを利
用することで栗生
返し処理を実現で
きる
33
最初の4バイトを取得する
? Registerを用いることでInputの一部を取得し、後の演算で利用
できる
? Registerが保持している値は「$R0」で参照できる
34
アプローチ
35
暗号データ先頭の4バイト
? 16進数をバイトに変更(From Hex)
? 先頭のバイトをRegisterに格納(Register)
? 先頭の4バイトを削除(Drop bites)
? XOR処理する(Xor)
36
戦略
? 値を分ける(Fork)
? 値が「0x」で始まっていたら(Conditional Jump + Label)
? 0xを取って、(Drop bytes)
? 16進数から10進数に戻す(From Base 16)
? 最後の処理に飛ぶ(Jump)
? 値が「b」で始まっていたら
? bを取って、(Drop bytes)
? 2進数から10進数に戻す(From Base 2)
? 最後の処理に飛ぶ(Jump)
? 同様の処理を8進数に行う
? 10進数をASCIIに戻す(From Decimal)
37
38
10進数に変換
ループ
16進
数?
8進
数?
2進
数?
10進数に変換
10進数に変換
10進数からアス
キーに変換
明示的なJump
16進数の処理例
39
「0x」を削除
10進数変換
40
注意
? 大きいファイル
(>10MB)はほぼ利用
できない
? XSSの脆弱性多め。他の
コンテンツを持つWebサ
イトにホストするのはお
勧めしません
41
ご清聴ありがとうございました。
42
Ad

Recommended

RSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjp
sonickun
?
顿辞肠办别谤から肠辞苍迟补颈苍别谤诲への移行
顿辞肠办别谤から肠辞苍迟补颈苍别谤诲への移行
Kohei Tokunaga
?
例外设计における大罪
例外设计における大罪
Takuto Wada
?
初心者向け颁罢贵の奥别产分野の强化法
初心者向け颁罢贵の奥别产分野の强化法
kazkiti
?
本当は恐ろしい分散システムの话
本当は恐ろしい分散システムの话
Kumazaki Hiroki
?
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
?
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
Masahito Zembutsu
?
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
驰补丑辞辞!デベロッパーネットワーク
?
TLS, HTTP/2演習
TLS, HTTP/2演習
shigeki_ohtsu
?
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
Fixstars Corporation
?
katagaitai CTF勉強会 #5 Crypto
katagaitai CTF勉強会 #5 Crypto
trmr
?
ゼロからはじめる碍痴惭超入门
ゼロからはじめる碍痴惭超入门
VirtualTech Japan Inc.
?
セキュリティを楽しむ(颁罢贵と产耻驳产辞耻苍迟测の始め方)
セキュリティを楽しむ(颁罢贵と产耻驳产辞耻苍迟测の始め方)
kazkiti
?
笔谤辞尘别迟丑别耻蝉入门から运用まで彻底解説
笔谤辞尘别迟丑别耻蝉入门から运用まで彻底解説
貴仁 大和屋
?
ネットストーカー御用达翱厂滨狈罢ツール叠濒补肠办叠颈谤诲を触ってみた.辫辫迟虫
ネットストーカー御用达翱厂滨狈罢ツール叠濒补肠办叠颈谤诲を触ってみた.辫辫迟虫
Shota Shinogi
?
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
Masahito Zembutsu
?
组み込み関数(颈苍迟谤颈苍蝉颈肠)による厂滨惭顿入门
组み込み関数(颈苍迟谤颈苍蝉颈肠)による厂滨惭顿入门
Norishige Fukushima
?
分散システムの限界について知ろう
分散システムの限界について知ろう
Shingo Omura
?
ソーシャルゲームのためのデータベース设计
ソーシャルゲームのためのデータベース设计
Yoshinori Matsunobu
?
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
?
顿辞肠办别谤と笔辞诲尘补苍の比较
顿辞肠办别谤と笔辞诲尘补苍の比较
Akihiro Suda
?
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
Yasuhiro Mawarimichi
?
Javaコードが速く実?される秘密 - JITコンパイラ??(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実?される秘密 - JITコンパイラ??(JJUG CCC 2020 Fall講演資料)
NTT DATA Technology & Innovation
?
GPU仮想化最前線 - KVMGTとvirtio-gpu -
GPU仮想化最前線 - KVMGTとvirtio-gpu -
zgock
?
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
モノビット エンジン
?
搁别诲颈蝉の特徴と活用方法について
搁别诲颈蝉の特徴と活用方法について
Yuji Otani
?
LLM App Hacking (AVTOKYO2023)
LLM App Hacking (AVTOKYO2023)
Shota Shinogi
?
HamaCTF WriteUp (Unpack category)
HamaCTF WriteUp (Unpack category)
Shota Shinogi
?

More Related Content

What's hot (20)

At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
驰补丑辞辞!デベロッパーネットワーク
?
TLS, HTTP/2演習
TLS, HTTP/2演習
shigeki_ohtsu
?
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
Fixstars Corporation
?
katagaitai CTF勉強会 #5 Crypto
katagaitai CTF勉強会 #5 Crypto
trmr
?
ゼロからはじめる碍痴惭超入门
ゼロからはじめる碍痴惭超入门
VirtualTech Japan Inc.
?
セキュリティを楽しむ(颁罢贵と产耻驳产辞耻苍迟测の始め方)
セキュリティを楽しむ(颁罢贵と产耻驳产辞耻苍迟测の始め方)
kazkiti
?
笔谤辞尘别迟丑别耻蝉入门から运用まで彻底解説
笔谤辞尘别迟丑别耻蝉入门から运用まで彻底解説
貴仁 大和屋
?
ネットストーカー御用达翱厂滨狈罢ツール叠濒补肠办叠颈谤诲を触ってみた.辫辫迟虫
ネットストーカー御用达翱厂滨狈罢ツール叠濒补肠办叠颈谤诲を触ってみた.辫辫迟虫
Shota Shinogi
?
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
Masahito Zembutsu
?
组み込み関数(颈苍迟谤颈苍蝉颈肠)による厂滨惭顿入门
组み込み関数(颈苍迟谤颈苍蝉颈肠)による厂滨惭顿入门
Norishige Fukushima
?
分散システムの限界について知ろう
分散システムの限界について知ろう
Shingo Omura
?
ソーシャルゲームのためのデータベース设计
ソーシャルゲームのためのデータベース设计
Yoshinori Matsunobu
?
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
?
顿辞肠办别谤と笔辞诲尘补苍の比较
顿辞肠办别谤と笔辞诲尘补苍の比较
Akihiro Suda
?
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
Yasuhiro Mawarimichi
?
Javaコードが速く実?される秘密 - JITコンパイラ??(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実?される秘密 - JITコンパイラ??(JJUG CCC 2020 Fall講演資料)
NTT DATA Technology & Innovation
?
GPU仮想化最前線 - KVMGTとvirtio-gpu -
GPU仮想化最前線 - KVMGTとvirtio-gpu -
zgock
?
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
モノビット エンジン
?
搁别诲颈蝉の特徴と活用方法について
搁别诲颈蝉の特徴と活用方法について
Yuji Otani
?
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
Fixstars Corporation
?
katagaitai CTF勉強会 #5 Crypto
katagaitai CTF勉強会 #5 Crypto
trmr
?
ゼロからはじめる碍痴惭超入门
ゼロからはじめる碍痴惭超入门
VirtualTech Japan Inc.
?
セキュリティを楽しむ(颁罢贵と产耻驳产辞耻苍迟测の始め方)
セキュリティを楽しむ(颁罢贵と产耻驳产辞耻苍迟测の始め方)
kazkiti
?
笔谤辞尘别迟丑别耻蝉入门から运用まで彻底解説
笔谤辞尘别迟丑别耻蝉入门から运用まで彻底解説
貴仁 大和屋
?
ネットストーカー御用达翱厂滨狈罢ツール叠濒补肠办叠颈谤诲を触ってみた.辫辫迟虫
ネットストーカー御用达翱厂滨狈罢ツール叠濒补肠办叠颈谤诲を触ってみた.辫辫迟虫
Shota Shinogi
?
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
Masahito Zembutsu
?
组み込み関数(颈苍迟谤颈苍蝉颈肠)による厂滨惭顿入门
组み込み関数(颈苍迟谤颈苍蝉颈肠)による厂滨惭顿入门
Norishige Fukushima
?
分散システムの限界について知ろう
分散システムの限界について知ろう
Shingo Omura
?
ソーシャルゲームのためのデータベース设计
ソーシャルゲームのためのデータベース设计
Yoshinori Matsunobu
?
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
?
顿辞肠办别谤と笔辞诲尘补苍の比较
顿辞肠办别谤と笔辞诲尘补苍の比较
Akihiro Suda
?
Javaコードが速く実?される秘密 - JITコンパイラ??(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実?される秘密 - JITコンパイラ??(JJUG CCC 2020 Fall講演資料)
NTT DATA Technology & Innovation
?
GPU仮想化最前線 - KVMGTとvirtio-gpu -
GPU仮想化最前線 - KVMGTとvirtio-gpu -
zgock
?
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
モノビット エンジン
?
搁别诲颈蝉の特徴と活用方法について
搁别诲颈蝉の特徴と活用方法について
Yuji Otani
?

More from Shota Shinogi (10)

LLM App Hacking (AVTOKYO2023)
LLM App Hacking (AVTOKYO2023)
Shota Shinogi
?
HamaCTF WriteUp (Unpack category)
HamaCTF WriteUp (Unpack category)
Shota Shinogi
?
ドラえもんの秘密道具「夜ランプ」を作ろうとした话(ネタ)
ドラえもんの秘密道具「夜ランプ」を作ろうとした话(ネタ)
Shota Shinogi
?
础苍诲谤辞颈诲と笔颁のみでスマート电球叠尝贰ハッキング
础苍诲谤辞颈诲と笔颁のみでスマート电球叠尝贰ハッキング
Shota Shinogi
?
Honeypot Spotted
Honeypot Spotted
Shota Shinogi
?
Sigcheck option memo
Sigcheck option memo
Shota Shinogi
?
RISEconf 2015 UNOFFICIAL Schedule
RISEconf 2015 UNOFFICIAL Schedule
Shota Shinogi
?
Hexdump memo
Hexdump memo
Shota Shinogi
?
ShinoBOT Suite
ShinoBOT Suite
Shota Shinogi
?
Introduction of ShinoBOT (Black Hat USA 2013 Arsenal)
Introduction of ShinoBOT (Black Hat USA 2013 Arsenal)
Shota Shinogi
?
LLM App Hacking (AVTOKYO2023)
LLM App Hacking (AVTOKYO2023)
Shota Shinogi
?
HamaCTF WriteUp (Unpack category)
HamaCTF WriteUp (Unpack category)
Shota Shinogi
?
ドラえもんの秘密道具「夜ランプ」を作ろうとした话(ネタ)
ドラえもんの秘密道具「夜ランプ」を作ろうとした话(ネタ)
Shota Shinogi
?
础苍诲谤辞颈诲と笔颁のみでスマート电球叠尝贰ハッキング
础苍诲谤辞颈诲と笔颁のみでスマート电球叠尝贰ハッキング
Shota Shinogi
?
RISEconf 2015 UNOFFICIAL Schedule
RISEconf 2015 UNOFFICIAL Schedule
Shota Shinogi
?
Introduction of ShinoBOT (Black Hat USA 2013 Arsenal)
Introduction of ShinoBOT (Black Hat USA 2013 Arsenal)
Shota Shinogi
?
Ad

Recently uploaded (7)

PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
NTT DATA Technology & Innovation
?
勉強会_ターミナルコマント?入力迅速化_20250620. pptx. .
勉強会_ターミナルコマント?入力迅速化_20250620. pptx. .
iPride Co., Ltd.
?
Protect Your IoT Data with UbiBot's Private Platform.pptx
Protect Your IoT Data with UbiBot's Private Platform.pptx
ユビボット 株式会社
?
色について.pptx .
色について.pptx .
iPride Co., Ltd.
?
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
フォーガンシー
?
Vibe Codingを始めよう ?Cursorを例に、ノーコードでのプログラミング体験?
Vibe Codingを始めよう ?Cursorを例に、ノーコードでのプログラミング体験?
iPride Co., Ltd.
?
础滨技术共有会2025-06-05冲顿别别辫搁别蝉别补谤肠丑の理解と実践.辫诲蹿
础滨技术共有会2025-06-05冲顿别别辫搁别蝉别补谤肠丑の理解と実践.辫诲蹿
Takuma Oda
?
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
NTT DATA Technology & Innovation
?
勉強会_ターミナルコマント?入力迅速化_20250620. pptx. .
勉強会_ターミナルコマント?入力迅速化_20250620. pptx. .
iPride Co., Ltd.
?
Protect Your IoT Data with UbiBot's Private Platform.pptx
Protect Your IoT Data with UbiBot's Private Platform.pptx
ユビボット 株式会社
?
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
フォーガンシー
?
Vibe Codingを始めよう ?Cursorを例に、ノーコードでのプログラミング体験?
Vibe Codingを始めよう ?Cursorを例に、ノーコードでのプログラミング体験?
iPride Co., Ltd.
?
础滨技术共有会2025-06-05冲顿别别辫搁别蝉别补谤肠丑の理解と実践.辫诲蹿
础滨技术共有会2025-06-05冲顿别别辫搁别蝉别补谤肠丑の理解と実践.辫诲蹿
Takuma Oda
?
Ad

CyberChefの使い方(HamaCTF2019 WriteUp編)

Editor's Notes

  • #11: 以下のデータを復号せよ。 VGhlIGZsYWcgaXMgIkhhbWFDVEZ7QmFzZTY0fSIu
  • #12: From_Base64('A-Za-z0-9+/=',true)
  • #14: 以下のデータを復号せよ。 ef bc a6 ef bc ac ef bc a1 ef bc a7 e3 80 80 ef bd 89 ef bd 93 e3 80 80 22 ef bc a8 ef bd 81 ef bd 8d ef bd 81 ef bc a3 ef bc b4 ef bc a6 ef bd 9b ef bc a2 ef bd 81 ef bd 93 ef bd 85 ef bc 91 ef bc 96 ef bc 9d ef bc a8 ef bd 85 ef bd 98 ef bd 9d 22 e3 80 80 ef bd 89 ef bd 8e e3 80 80 ef bd 93 ef bd 89 ef bd 8e ef bd 87 ef bd 8c ef bd 85 e3 80 80 ef bd 82 ef bd 99 ef bd 94 ef bd 85 e3 80 80 ef bd 83 ef bd 88 ef bd 81 ef bd 92 ef bd 81 ef bd 83 ef bd 94 ef bd 85 ef bd 92 ef bd 93 ef bc 8e
  • #16: 以下のデータを復号せよ。 Vmtkb2NHTjVRbkJqZVVKb1NVaFNiR1ZJVVdkYVZ6VnFZakpTY kZwRFFubGFXRUpzV1ZoU2JGcEhlRFZKU0ZaNllWYzFia2xGU21 oak1sVXlUa00wWjFaSGFHeEpSMXB6V1ZkaloyRllUV2RUUjBaM FdWVk9WVkp1ZEU1a1YzZ3dZVlZXZFZreU9XdGhWelZ1WmxNMFB RPT0=
  • #18: これらはIPアドレスを表しています。通信のドット付きのIPアドレスに変換してください。最後のIPアドレスを「xxx.xxx.xxx.xxx」という形式に変換してください。フラグは「HamaCTF{IPアドレス}」です。 31621080 cb8acbda cb8acb62 cb8acb57 316210d4 3162102a cb8acb7a 316210be cb8acb3a 316210dc cb8acb28 31621026 cb8acbd0 cb8acb99 316210f3 cb8acb28 cb8acb5e cb8acb32 3162105d 3162107f cb8acb9f 31621087 cb8acb09
  • #19: Find_/_Replace({'option':'Regex','string':'\\s'},'\\n',true,false,true,false) Change_IP_format('Hex','Dotted Decimal')
  • #20: Split(' ','\\n') Change_IP_format('Hex','Dotted Decimal')
  • #23: Detect_File_Type(true,true,true,true,true,true,true/disabled) Unzip('',false)
  • #33: Label('start') From_Base64('A-Za-z0-9+/=',true) Jump('start',20)
  • #34: 以下はマルウェアの通信で、先頭4バイトがXORの暗号鍵、その後ろに実際のデータが格納されている。 01 20 15 16 55 48 70 36 67 4c 74 71 21 49 66 36 49 41 78 77 42 74 53 6d 46 52 70 77 75 6a 7a 74 7c 0e。 このマルウェアの通信を解くRecipeを作成せよ。
  • #37: 0x59 0145 115 32 0164 0150 b1101001 115 040 b1101001 0x73 0x20 b1110100 104 0x65 b100000 0x72 105 b1100111 0150 0x74 040 97 0x6e 0x73 b1110111 0145 0x72 041 040 b1010100 b1101000 101 040 0x66 0x6c 97 103 b100000 0x69 0x73 0x20 72 97 b1101101 0x61 b1000011 b1010100 0x46 0x7b 0123 0105 0x43 b1000011 b1001111 b1001110 0x32 060 b110001 b110100 69 0x41 83 0x59 0103 0x49 0120 72 0105 0122 b1011111 82 b1000101 0x53 0120 b1000101 b1000011 b1010100 125 0x2e
  • #41: Fork(' ','',false) Conditional_Jump('^0x',false,'hex',10) Conditional_Jump('^0',false,'oct',10) Conditional_Jump('^b',false,'bin',10) Jump('dec',10) Label('hex') Drop_bytes(0,2,false) From_Base(16) Jump('dec',10) Label('oct') From_Base(8) Jump('dec',10) Label('bin') Drop_bytes(0,1,false) From_Base(2) Label('dec') From_Decimal('Space',false)