狠狠撸

狠狠撸Share a Scribd company logo
颁罢贵でアレコレ
Fukui Tech 7.5
2017/02/25 (Sat)
@hama7230
WHOAMI
? @hama7230
? 東京の大学生
? 元福井の高専生
? CTF歴 1年6ヶ月
? CTFチーム
「TokyoWesterns」のpwn
要員
今日の内容
? CTFについて紹介
? CTFとは?
? CTFのメリット
? CTFの問題解説
1.forensic系問題
2.web系問題
3.時間余ったらlive ctfやるかも
CTFの紹介 (1/4)
? Capture The Flag (CTF)
? セキュリティ系の技術?知識を競うコンテスト
? コンテスト形式は複数あるが、問題を理解し攻略
してフラグを得ることが大きな目標
? Jeopady (クイズ形式)
? Attack & Defence (参加者同士の攻防戦)
? King of the Hills (陣地取り)
? 世界中でほぼ毎週開催されている
? (現在もBoston Key Party 2017が開催中)
CTFの紹介(2/4)
? 出題されるジャンル
? IT技術に関わる幅広い分野から出題される
? Web
? Forensic
? Reversing
? Recon
? Exploitation(Pwn)
? PPC
? Crypto
? Steganography
? Misc
CTFの紹介 (3/4)
? CTFをやると何が嬉しいか?
? 情報技術の勉強になる(建前)
? セキュリティ技術の勉強になる(建前)
? 純粋に楽しい娯楽(本音)
CTFの紹介 (4/4)
? 今日は、僕が見てきた問題の中から「勉強になっ
た」「面白い」と思った問題を幾つか紹介します
? 環境はLinuxを想定してます
? 問題を解くためにpythonなどを使用します
DEADNAS (1/13)
? Rescue Data 1: deadnas
? Forensicの問題
? Tokyo Westerns/MMA CTF 2nd 2016で出題
? ハードディスクの中身を復旧できるかどうかを問
うた問題
? 問題セットは下記URLからダウンロード可能
? https://github.com/tokyowesterns/twctf-2016-
problems
? この問題のファイルは下記からダウンロード可能
DEADNAS (2/13)
? 問題文
Today, our 3-disk NAS has failed. Please recover
flag. [attachment:deadnas.7z]
ディスクを3台載せたNASが故障してしまいました.
フラグを復元してください.
[attachment:deadnas.7z]
DEADNAS (3/13)
? 与えられたファイルを解凍して中身を見てみる
? 7z x [filename]で解凍可能
? 中にはdisk0, disk1, disk2の3つのファイル
? fileコマンドの結果
DEADNAS (4/13)
? xxd disk0の結果の先頭部分
? mkfs.fatやFAT12 といった文字列
? ファイルシステムっぽい?
DEADNAS (5/13)
? disk1の中身は?
? 诲颈蝉办1はクラッシュしているよう
DEADNAS (6/13)
? xxd disk2の先頭部分
? よくわからない
? disk0, disk2の中身をスクロールしていくと読める
箇所と読めない箇所が出てくる
DEADNAS (7/13)
? disk0, 2はハードディスクをダンプしたものっぽ
い?
? disk1は破損している
? disk0, 2の一部部分では人間が読める文字列が登場
している
? しかし、文章の途中から始まっていたり、途中で
切れている
? 問題文は、「復元してください」とある
?破損しているdisk1が復元できる?
RAID
? Redundant Arrays of Inexpensive Disks
? 複数台のハードディスクを組み合わせて運用する
ことで、冗長性、信頼性、アクセス速度を向上す
る仕組み
? RAIDの方式は複数存在
? RAID0
? RAID1
? RAID01
? 問題で与えられたファイルは3つ
? 3つ(3つ以上)のハードディスクを使用するRAID
は?
RAID5
? データは分割して保存される
? パリティ(冗長コード)が生成されて保存される
? ハードディスクが1台破損しても復旧可能
?今回のケースもdisk1のみが破損している
? 最低3台で構成可能
? A*, B*, C*はデータ
? P*がパリティ
https://ja.wikipedia.org/wiki/RAID
RAID5
? RAID5では、パリティはデータブロックごとでの
XOR
? 復元は簡単にできる
? データブロックのサイズは?
? 与えられたファイルを観察することで特定する
? printableな文字列が始まってから終わるまでの長さから
求められる
? 今回は512byteだった
? パリティの位置はどうやって決まっているのか?
? 3通りしかないので、すべて試せばいい
DEADNAS (8/13)
? なぜ、RAIDだと考えたのか
?disk0の先頭でのファイルシステムを思わせる文
字列
?disk0とdisk2のサイズは同じ
?disk1は破損している -> (もしかして復元可能?)
?問題文の「復元してください」
DEADNAS (9/13)
? 何をすればいいか?
? disk1を復元する
? disk0とdisk2をXORすればdisk1になる
? 3つのdiskから本来のハードディスクを生成する
? パリティを除いた部分を連結すればよさそう
DEADNAS (10/13)
? disk1を復旧するpythonスクリプト
? disk0とdisk2をバイトずつでxorしてるだけ
? xorした結果をdisk1に書き込み
DEADNAS(11/13)
? 3つのdiskから1つのハードディスクを復元する
? パリティの位置はdisk2から始まりdisk1、disk1、
disk2と繰り返されると予想(外れたら別の方法を試
す)
DEADNAS (12/13)
? あとはmountして中身を確認するだけ
? sudo mount ./disk /mnt
DEADNAS (13/13)
? 破損したディスクを復旧しデータを取り出すこと
ができた
?与えられたデータから予測を立てる
?とりあえず試してみる
? [別解] XorFilsというソフトを使用すれば瞬殺だっ
た
THE-YEAR-2000 (1/10)
? the-year-2000
? BSides SF CTFで出題
? web系で比較的セキュリティよりな問題
? まだサイトが生きているので実際にアクセスして
みてください
? http://theyear2000.ctf.bsidessf.net/
THE-YEAR-2000 (2/10)
? html, notepad++, git, apacheを使っているらしい
THE-YEAR-2000 (3/10)
? web系の問題で、web上にないか確認してみるこ
と
1. robots.txt
2. .htaccess
3. .git
? 重要な情報が含まれていることが多い
THE-YEAR-2000 (4/10)
? .git/はForbiddenだった
? ディレクティブは無効化されている
? .git自体は存在している
? .gitよりも下で確実にあるファイルを試してみる
? .git/HEADや.git/confgなどなど
? commit logなどが分かるファイルはないのか?
? http://theyear2000.ctf.bsidessf.net/.git/logs/HEAD
THE-YEAR-2000 (5/10)
? commit logを確かめてみる
? http://theyear2000.ctf.bsidessf.net/.git/logs/HEAD
0000000000000000000000000000000000000000
e039a6684f53e818926d3f62efd25217b25fc97e Mark Zuckerberg
<thezuck@therealzuck.zuck> 1486853661 +0000 commit (initial): First
commit on my website e039a6684f53e818926d3f62efd25217b25fc97e
9e9ce4da43d0d2dc10ece64f75ec9cab1f4e5de0 Mark Zuckerberg
<thezuck@therealzuck.zuck> 1486853667 +0000 commit: Fixed a spelling
error 9e9ce4da43d0d2dc10ece64f75ec9cab1f4e5de0
e039a6684f53e818926d3f62efd25217b25fc97e Mark Zuckerberg
<thezuck@therealzuck.zuck> 1486853668 +0000 reset: moving to HEAD~1
e039a6684f53e818926d3f62efd25217b25fc97e
4eec6b9c6e464c35fff1efb8444dd0ac1ae67b30 Mark Zuckerberg
<thezuck@therealzuck.zuck> 1486853672 +0000 commit: Wooops, didn't
want to commit that. Rebased.
THE-YEAR-2000 (6/10)
? 存在するobjectファイルは3つ
? e039a6684f53e818926d3f62efd25217b25fc97e
? first commit
? 9e9ce4da43d0d2dc10ece64f75ec9cab1f4e5de0
? first commitからスペルエラーを直したcommit
? 4eec6b9c6e464c35fff1efb8444dd0ac1ae67b30
? resetしてfirst commitへとcommitしたもの
? 最終commit
? resetされたcommitが怪しそう
THE-YEAR-2000 (7/10)
? http://theyear2000.ctf.bsidessf.net/.git/logs/object
s/9e/9ce4da43d0d2dc10ece64f75ec9cab1f4e5de0
? 適当なディレクトリでgit initして仮のリポジトリ
を作成
? .git/objects に9eディレクトリを作成し、ダウン
ロードしてきたファイルを配置
THE-YEAR-2000 (8/10)
? bd72ee2c7c5adb017076fd47a92858cef2a04c11も
存在しているらしい
? ダウンロードして、git cat-file –pしてみる
? 芋づる式に関わりのあるobjectを探していく
THE-YEAR-2000 (9/11)
? ファイル名などを格納
するのがtree
? ファイルの内容を格納
するのがblob
https://git-scm.com/book/ja/v2/Git%E3%81%AE%E5%86%85%E5%81%B4
%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83
THE-YEAR-2000 (10/11)
? git cat-file -p
7baff32394e517c44f35b75079a9496559c88053
THE-YEAR-2000 (11/11)
? ソースコードの流出は、情報の流出?攻撃の手が
かりとなる
? .git/配下はアクセスできないようにする
? gitに関する詳しいことは下記参照
? https://git-
scm.com/book/ja/v1/Git%E3%81%AE%E5%86%85%E5%81
%B4-
Git%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E
3%82%AF%E3%83%88
? https://git-
scm.com/book/ja/v2/Git%E3%81%AE%E5%86%85%E5%81
%B4-
Git%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E
オススメ常設CTF
? 常設CTFはいつでもチャレンジ可能
? 初心者向けのオススメを紹介
? picoCTF 2013
? https://2013.picoctf.com/
? picoCTF 2014
? https://picoctf.com/
? CpawCTF
? https://ctf.cpaw.site/
? ksnctf
? http://ksnctf.sweetduet.info/

More Related Content

颁罢贵でアレコレ