SlideShare a Scribd company logo
1 of 42
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

More Related Content

What's hot

20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン
yohhoy
 

What's hot (20)

Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説
 
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫
 
TLS, HTTP/2演習
TLS, HTTP/2演習TLS, HTTP/2演習
TLS, HTTP/2演習
 
Scapyで作る・解析するパケット
Scapyで作る・解析するパケットScapyで作る・解析するパケット
Scapyで作る・解析するパケット
 
暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学
 
ctfで学ぼうリバースエンジニアリング
ctfで学ぼうリバースエンジニアリングctfで学ぼうリバースエンジニアリング
ctfで学ぼうリバースエンジニアリング
 
CTF for ビギナーズ バイナリ講習資料
CTF for ビギナーズ バイナリ講習資料CTF for ビギナーズ バイナリ講習資料
CTF for ビギナーズ バイナリ講習資料
 
katagaitai CTF勉強会 #5 Crypto
katagaitai CTF勉強会 #5 Cryptokatagaitai CTF勉強会 #5 Crypto
katagaitai CTF勉強会 #5 Crypto
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
 
PWNの超入門 大和セキュリティ神戸 2018-03-25
PWNの超入門 大和セキュリティ神戸 2018-03-25PWNの超入門 大和セキュリティ神戸 2018-03-25
PWNの超入門 大和セキュリティ神戸 2018-03-25
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
 
Format string Attack
Format string AttackFormat string Attack
Format string Attack
 
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
 
セキュリティを楽しむ(CTFとbugbountyの始め方)
セキュリティを楽しむ(CTFとbugbountyの始め方)セキュリティを楽しむ(CTFとbugbountyの始め方)
セキュリティを楽しむ(CTFとbugbountyの始め方)
 
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話すWebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話す
 
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
 
ELFの動的リンク
ELFの動的リンクELFの動的リンク
ELFの動的リンク
 

Similar to CyberChefの使い方(HamaCTF2019 WriteUp編)

DXライブラリでMMO作ったよ!
DXライブラリでMMO作ったよ!DXライブラリでMMO作ったよ!
DXライブラリでMMO作ったよ!
h2so5
 
Man-in-the-Middle Attack for SSH with Scala and JSch
Man-in-the-Middle Attack for SSH with Scala and JSchMan-in-the-Middle Attack for SSH with Scala and JSch
Man-in-the-Middle Attack for SSH with Scala and JSch
Atsuhiko Yamanaka
 
LPICレベル1技術解説セミナー(2012/11/11)
LPICレベル1技術解説セミナー(2012/11/11)LPICレベル1技術解説セミナー(2012/11/11)
LPICレベル1技術解説セミナー(2012/11/11)
Kazuko Kanai
 

Similar to CyberChefの使い方(HamaCTF2019 WriteUp編) (20)

Hyperledger Fabric 1.0 概要
Hyperledger Fabric 1.0 概要Hyperledger Fabric 1.0 概要
Hyperledger Fabric 1.0 概要
 
IDAの脆弱性とBug Bounty by 千田 雅明
IDAの脆弱性とBug Bounty by 千田 雅明IDAの脆弱性とBug Bounty by 千田 雅明
IDAの脆弱性とBug Bounty by 千田 雅明
 
DXライブラリでMMO作ったよ!
DXライブラリでMMO作ったよ!DXライブラリでMMO作ったよ!
DXライブラリでMMO作ったよ!
 
HashiCorp Terraform Enterprise 紹介
HashiCorp Terraform Enterprise 紹介HashiCorp Terraform Enterprise 紹介
HashiCorp Terraform Enterprise 紹介
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
 
Sensibleを試してみた@FxOSコードリーディングミートアップ#16
Sensibleを試してみた@FxOSコードリーディングミートアップ#16Sensibleを試してみた@FxOSコードリーディングミートアップ#16
Sensibleを試してみた@FxOSコードリーディングミートアップ#16
 
Serfが面白いと俺の中で話題にwwwwww 【改訂版】
Serfが面白いと俺の中で話題にwwwwww 【改訂版】Serfが面白いと俺の中で話題にwwwwww 【改訂版】
Serfが面白いと俺の中で話題にwwwwww 【改訂版】
 
俺のセキュリティを超えてゆけ
俺のセキュリティを超えてゆけ俺のセキュリティを超えてゆけ
俺のセキュリティを超えてゆけ
 
Man-in-the-Middle Attack for SSH with Scala and JSch
Man-in-the-Middle Attack for SSH with Scala and JSchMan-in-the-Middle Attack for SSH with Scala and JSch
Man-in-the-Middle Attack for SSH with Scala and JSch
 
アクセス・ログ取得システム導入の考察(完全版)
アクセス・ログ取得システム導入の考察(完全版)アクセス・ログ取得システム導入の考察(完全版)
アクセス・ログ取得システム導入の考察(完全版)
 
第11回ACRiウェビナー_東工大/坂本先生ご講演資料
第11回ACRiウェビナー_東工大/坂本先生ご講演資料第11回ACRiウェビナー_東工大/坂本先生ご講演資料
第11回ACRiウェビナー_東工大/坂本先生ご講演資料
 
NSG フローログを支える技術 - NVF Advanced Flow Logging
NSG フローログを支える技術 - NVF Advanced Flow LoggingNSG フローログを支える技術 - NVF Advanced Flow Logging
NSG フローログを支える技術 - NVF Advanced Flow Logging
 
Klocwork C/C++解析チューニング 概要
Klocwork C/C++解析チューニング 概要Klocwork C/C++解析チューニング 概要
Klocwork C/C++解析チューニング 概要
 
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps OnlineGKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
 
使い捨て python コードの書き方
使い捨て python コードの書き方使い捨て python コードの書き方
使い捨て python コードの書き方
 
LPICレベル1技術解説セミナー(2012/11/11)
LPICレベル1技術解説セミナー(2012/11/11)LPICレベル1技術解説セミナー(2012/11/11)
LPICレベル1技術解説セミナー(2012/11/11)
 
ソフトウェア工学2023 14 ビルド
ソフトウェア工学2023 14 ビルドソフトウェア工学2023 14 ビルド
ソフトウェア工学2023 14 ビルド
 
高調波計算ツール
高調波計算ツール高調波計算ツール
高調波計算ツール
 
Touch the mahout
Touch the mahoutTouch the mahout
Touch the mahout
 
エンジニアという職業について
エンジニアという職業についてエンジニアという職業について
エンジニアという職業について
 

More from Shota Shinogi

More from Shota Shinogi (11)

LLM App Hacking (AVTOKYO2023)
LLM App Hacking (AVTOKYO2023)LLM App Hacking (AVTOKYO2023)
LLM App Hacking (AVTOKYO2023)
 
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptxネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
 
HamaCTF WriteUp (Unpack category)
HamaCTF WriteUp (Unpack category)HamaCTF WriteUp (Unpack category)
HamaCTF WriteUp (Unpack category)
 
ドラえもんの秘密道具「夜ランプ」を作ろうとした話(ネタ)
ドラえもんの秘密道具「夜ランプ」を作ろうとした話(ネタ)ドラえもんの秘密道具「夜ランプ」を作ろうとした話(ネタ)
ドラえもんの秘密道具「夜ランプ」を作ろうとした話(ネタ)
 
AndroidとPCのみでスマート電球BLEハッキング
AndroidとPCのみでスマート電球BLEハッキングAndroidとPCのみでスマート電球BLEハッキング
AndroidとPCのみでスマート電球BLEハッキング
 
Honeypot Spotted
Honeypot SpottedHoneypot Spotted
Honeypot Spotted
 
Sigcheck option memo
Sigcheck option memoSigcheck option memo
Sigcheck option memo
 
RISEconf 2015 UNOFFICIAL Schedule
RISEconf 2015 UNOFFICIAL ScheduleRISEconf 2015 UNOFFICIAL Schedule
RISEconf 2015 UNOFFICIAL Schedule
 
Hexdump memo
Hexdump memoHexdump memo
Hexdump memo
 
ShinoBOT Suite
ShinoBOT SuiteShinoBOT Suite
ShinoBOT Suite
 
Introduction of ShinoBOT (Black Hat USA 2013 Arsenal)
Introduction of ShinoBOT (Black Hat USA 2013 Arsenal)Introduction of ShinoBOT (Black Hat USA 2013 Arsenal)
Introduction of ShinoBOT (Black Hat USA 2013 Arsenal)
 

CyberChefの使い方(HamaCTF2019 WriteUp編)

Editor's Notes

  1. 以下のデータを復号せよ。 VGhlIGZsYWcgaXMgIkhhbWFDVEZ7QmFzZTY0fSIu
  2. From_Base64('A-Za-z0-9+/=',true)
  3. 以下のデータを復号せよ。 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
  4. 以下のデータを復号せよ。 Vmtkb2NHTjVRbkJqZVVKb1NVaFNiR1ZJVVdkYVZ6VnFZakpTY kZwRFFubGFXRUpzV1ZoU2JGcEhlRFZKU0ZaNllWYzFia2xGU21 oak1sVXlUa00wWjFaSGFHeEpSMXB6V1ZkaloyRllUV2RUUjBaM FdWVk9WVkp1ZEU1a1YzZ3dZVlZXZFZreU9XdGhWelZ1WmxNMFB RPT0=
  5. これらは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
  6. Find_/_Replace({'option':'Regex','string':'\\s'},'\\n',true,false,true,false) Change_IP_format('Hex','Dotted Decimal')
  7. Split(' ','\\n') Change_IP_format('Hex','Dotted Decimal')
  8. Detect_File_Type(true,true,true,true,true,true,true/disabled) Unzip('',false)
  9. Label('start') From_Base64('A-Za-z0-9+/=',true) Jump('start',20)
  10. 以下はマルウェアの通信で、先頭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を作成せよ。
  11. 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
  12. 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)