2017/04/29
みんなで振り返るFIT-HACK CTF
1
自己紹介
• 名前:福田隆誠
• 所属:福岡工業大学
• サークル:FIT-HACK
• 好きな言語:python,プロデル
2
FIT-HACK
近年、凶悪化するサイバー犯罪に立ち向かうため、攻撃
者の視点から様々なテクニックを学ぶ情報系サークルで
次世代のセキュリティスペシャリストになることを目標とし
ている
また、
プログラミングやネットワーク構築にも力を入れています
3
FIT-HACK
https://www.nw.fit.ac.jp/
4
主な活動内容
• CTFの学習
• プログラミングの学習
• ウェブページ制作
• サーバ管理
• 脆弱性や暗号アルゴリズムに関する学習
• SECCONやプログラミングコンテストへの参加
5
活動実績
SECCON 2016 九州大会(6月)
Team: Rosenburg Engel(2年) /Beginner(1年) /Avax(1年)
SECCON 2016 大阪大会(10月)
Team: 346(1・2年合同)
6
活動実績
SECCON 2016 オンライン予選(12月)
Team: FIT-HACK(サークルメンバー全員)62/1834位
7
CTFとは?
• Capture The Flagの略称
• セキュリティを中心に広い分野の知識が必要
• 大きく分けて攻防戦、問題形式の二つに分かれる
8
問題形式
• 別名Jeopardy(ジョパディー)
• 渡される問題からフラグ(文字列)を抜き取る
9
問題ジャンル
• Web
• Crypto
• Binary
• Forensic
• Recon
• Steganography
• Misc
• Trivia
10
問題ジャンル:Web
Webサイトに隠れている脆弱性を利用してフラグを抜き
出す問題がよく出題される
11
問題ジャンル:Crypto
古典暗号や現代暗号の復号、オリジナル暗号のソース
コードを渡されて復号処理を書かなければならない問題
が出題される
12
問題ジャンル:Binary
コンピューターがデーターを理解するには、「0」と「1」で
表現されているデーターに変換されます。しかし、CTFで
は「実行可能なデータファイル」を指します。このバイナリ
を実際に動かしてみて、どんな動きをしているのかを調
べることにバイナリ分野は主観をおいています。
13
問題ジャンル:Forensics
壊れたファイルの修復や削除されたファイルの復元を目
的とした問題が出題される
14
問題ジャンル:Recon
画像のGPS情報を頼りに場所を特定するような問題が
出題される
15
問題ジャンル:Steganography
ファイルの中に隠された情報を抜き出す問題が出題され
る
16
問題ジャンル:Misc
上記の問題に含まれない問題が出題される最近では複
合問題で出されることも
17
問題ジャンル:Trivia
知識量や、調べる力が必要な問題が出題される。
18
19
問題作成
1月 チーム結成、問題作成開始
2月 問題検証
3月 修正および新たな問題を作成
4月 CTF開催、CTF開催中に問題作成
20
1月:チーム結成、問題作成開始
• 問題担当の決定
• 問題作成に必要な環境の導入
• 当初は今の一年生に解かせる問題を作成
21
2月 問題検証
• 前半は試験により問題作成を休む
• 後半は問題作成
• 28日にこれまで作問した問題の検証
22
3月 修正および新たな問題を作成
• 問題の検証を行って修正できるものは修正
• 簡単すぎるものは没に…
• 新たに問題作成に取り掛かる
23
4月 CTF開催、CTF開催中に問題作成
• CTFの開催
• 開催中に新たな問題の作成
24
問題作成
• Confluenceを利用
25
出題形式
• 問題形式
• Jeopardy(ジョパディー)
26
今回出題した範囲
• Crypto
• Binary
• Web
• Steganography
• Forensic
• Recon
• Misc
27
Cryptography
• Flag
28
Crypto:Flag
Flag.zipのパスワードを解析する問題
29
Crypto:Flag
普通にパスワードを入力してもパスワードはわからない
ブルートフォース攻撃
fcrackzipコマンド
30
Crypto:Flag 31
fcrackzip
今回のパスワードは1864
数字だけしか含まれてないので解析はすぐ終わる
ただし
文字と数字を組み合わせ、かつ大文字と小文字を入れ
れば解析は膨大な時間を要する
とわいえ
fcrackzipコマンドには辞書ファイルを使った攻撃もできる
ため1234,asdf,qwerなどをパスワードに使うのは禁物
32
Binary
• EXE
• FITRPG
• Number
33
Binary:EXE 34
Binary:EXE 35
Binary:EXE
ELF 64-bit
36
Binary:EXE
• ELFを実行できる環境で実行すると
$./problem.exe
37
Binary:FITRPG
• Attack:攻撃
• Boost:ため
• Heal:回復
38
Binary:FITRPG 39
Binary:FITRPG
うさみみハリケーン
40
Binary:FITRPG
検索->メモリ範囲を指定して検索(64bit)
41
Binary:FITRPG 42
Binary:FITRPG 43
Binary:FITRPG
Flag is FIT{1sdf3a9f}
44
Binary:Number 45
Binary:Number
[root@kali]# file number
number: ELF 64-bit LSB executable, x86-64, version 1
(SYSV), dynamically linked, interpreter /lib64/ld-linux-
x86-64.so.2, for GNU/Linux 3.0.0,
BuildID[sha1]=9f41de34cf038d1aeedd774fbf57078c5c5a
62e1, not stripped
46
Binary:Number
64bit
ELF
47
IDA Demo
Olly Dbg
使えない…
Objdumpを使って解析
Binary:Number
Objdump:ELFからアセンブラのコードを吐き出すことがで
きる
4006bc: 83 e8 1a sub $0x1a,%eax
4006bf: 89 45 f0 mov %eax,-0x10(%rbp)
4006c2: 8b 45 f0 mov -0x10(%rbp),%eax
4006c5: 3d 66 04 00 00 cmp $0x466,%eax
48
Binary:Number
[root@kali]# ./number
hello!! Please collect number
1152
FIT{2.718281828}
49
Web
• 100count
• Fake
• Look_quickly
50
Web:100count
100回足し算を行う?
51
Web:100count 52
Web:100count 53
どうやって足し算のカウントを
管理している?
Web:100count
ChromのEdit This Cookie
54
Web:100count 55
Web:100count 56
Web:Fake 57
Web:Fake 58
Web:Fake 59
Web:Fake 60
Look_quickly 61
Look_quickly 62
Look_quickly
• 1秒以内にcookieの内容を見ると
63
Look_quickly 64
http://www.tagindex.com/tool/url.html より
Look_quickly 65
http://www.tagindex.com/cgi-lib/encode/url.cgi より
Look_quickly
• URLエンコードとは
URLでほんとは使えない文字を別の文字列に変化して
表現すること
例
} = %7D
{ = %7B
スペース = %20
66
Steganography
• MP3Stego
• Hide_flag
67
Steganography:MP3Stego
connection.mp3
ダイヤルアップ音が流れる
ダイヤルアップ接続
電話回線を使用してデータを音に変換しインターネットに
接続すること
68
Steganography:MP3Stego
問題名からMP3Stegoツールを使用
Decode.exe -X connection.mp3
69
Steganography:MP3Stego
$strings connection.mp3 | grep pass
The pass is dialup
70
Steganography:MP3Stego
Decode.exe -X -P dialup connection.mp3
connection.mp3.pcmファイルが生成される
71
Steganography:MP3Stego
FIT{PeePeeHyoroRorro}
72
Steganography:Hide_flag
Hide_flag.png
真っ白な画像を渡される。
Stegsolveツールを使用する
73
Steganography:Hide_flag
Stegsolve
DataMatrixと判明する。
74
Steganography:Hide_flag
https://online-barcode-reader.inliteresearch.com/ より
75
Steganography:Hide_flag
FIT{rtuw8Enj8f2D}
https://online-barcode-reader.inliteresearch.com/ より
76
反省
• 意味のない文字列だとわかりずらいが逆に意味のあ
る文字列だと簡単に推測されてしまうため対策が必要
• 十分な問題検証をできなかった
• 十分な連絡が取れていなかった
77
改善
• 意味のある文字列にLeet表現を使うとい推測されずら
くなる
• 問題の解説をもっと詳しく書く
• コミュニケーションツールをもっと上手使うことが大切
78
感想
ほとんど寝なしで作問したり
イベント開催中に作問したり
外出先で作問して歩いて帰ることになったり
大変なこともあったが、学べることが多かった
79
80
ご清聴ありがとうございました

FIT-HAC CTF