Cat.6(ねころっく)

脆弱性の金で焼肉が食べたい

katagaitai CTF勉強会 #8 関東 Brezn

先日、katagaitai CTF勉強会 #8 関東|med に参加してきました。前回の勉強会(tp)から引き続きの参加です。今回はWindowsのPwnということで、LinuxよりNT系の方が馴染みがあるので楽しめました。

事前にBreznを読んだ(厳密には触ったレベル……)部分と、復習も兼ねてその過程を残します。自分で触って得た結果が中心の感想文です。具体的なExploitコード等は資料にございます。

※午前のLinux Pwnはまた後日書こうと思います。 

 

●所感

端的に言うと、自身のスキルとの乖離が大きく、話の内容についていけたか怪しいです。自身のPwn, Revレベル感的には勉強が必要でした。とはいえ、兎にも角にも、場数と実践をこなさないことには強くなれないので精進します。「あ!この問題、katagaitaiでやったとこだ!」と、そういうのだけでも、今後のCTFへの点に繋げていきたいです。

 

●資料ほか

勉強会資料

katagaitai CTF勉強会 #8 pwnables編 - Hack.lu CTF 2013 Exploiting 500 Breznparadisebugmaschine / katagaitai CTF #8 // Speaker Deck

設問ページ

https://ctf.fluxfingers.net/2013/challenges/18

※証明書の有効期限が切れているので、下記にページのテキストを引用しておきます。

Breznparadisebugmaschine (Category: Exploiting) Author(s): martin, flandy
The robot forces modified our beloved Breznparadisebackmaschine. This machine stores our secret, traditional Brezn recipe. Yet, we forgot the last secret ingredient and cannot access the Breznparadisebackmaschine anymore. However, Brezn are crucial for our party, as only paradise Brezn provide us the nice and warm feeling in our guts.

We need you to recover the important ingredient! Here is everything we could remember from the recipe:

For The Dough
1 kg Plain White Flour (around 9 - 12 % protein)
260 ml milk (lukewarm)
260 ml water (lukewarm)
80 g Butter (unsalted)
1 tbsp malt extract (liquid or dried, or brown sugar)
2 tsp fast action dried yeast (or 42g fresh if using)
2 tbsp Salt (unrefined)
For The Finishing Solution
1 L Water
3 tbsp Baking Soda (or lye if your using it)
Secret Ingredient

Please, we need to know that ingredient to make everyone happy again!
https://ctf.fluxfingers.net/static/downloads/brezel/Brezelparadisebackmaschine.exe
ctf.fluxfingers.net:1340
Brezelparadisebackmaschinefirmware: Windows 2012

イベントページ

katagaitai CTF勉強会 #8 - 関東|med : ATND

 

●環境構築

構築方法や必要なツールは資料をご参照ください。

資料ではVMwareで説明されていますが、Parallelsで構築しました。VirtualBoxなどでも問題ないものと思われます。

OSはMincrosoftのTechNet Evaluation CenterからWindows Server 2012 評価版 ISOをダウンロードします。R2ではありません、ご注意ください。エディションはどれでも良いです。私はDatacenterでインストールしました。

試してみる Windows Server 2012 | TechNet Evaluation Center

設定は基本的にそのままで良いと思います。 必要なツールはインストールしておきます。なお、Windows ファイアウォールは無効にするか、ルールを定義する必要性があります。(無効にするのが楽です。)

※HiDPIで設定していたので、スクリーンショットは所々文字が小さすぎるところがあります。

 

●とりあえず動かしてみる

f:id:reinforchu:20170302194502p:plain

何も起きません。何か入力待ちのようです。設問のページにはnetcatで繋げてね、とあるので何かTCPで待ち受けているのでしょう。

 

●オープンポート調査

nmapで調査しました。

nmap -p 1024-65535 10.211.55.8

LocalのVMなので数分で終わりました。ウェルノウンポートは除外しています。

f:id:reinforchu:20170302194710p:plain

49152/tcp以降は違うので、検出サービス名から消去法で27015/tcpが非常に怪しいです。また、nmapを仕掛ける(変なパケット投げると)とAppCrashするようです。

f:id:reinforchu:20170302194658p:plain

資料ではAPI Monitorでバインドされているポートを調査されていたので、そちらが正攻法みたいですね…… 

 

●netcatで接続して挙動を見る

早速ncで接続します。

nc 10.211.55.8 27015

f:id:reinforchu:20170302200652p:plain

各種メニューが出てきます。プレッツェルとかをオーブンで焼いて、そしてサイレントに捨てるアプリケーションです。各メニューが何をするかは割愛します。

 

 ●各種ツールを噛ませて眺めてみる

x64dbgを使ってみます。exeが32bitなのでx32dbg.exeでアタッチします。

f:id:reinforchu:20170302213715p:plain

なるほど……(スキル差を実感)

なお、別のツールのAPI Monitorで補足していると、どうやら起動してリモートから接続があるとプロセス(子プロセス)が増えるようです。

f:id:reinforchu:20170302214014p:plain

Slack情報では、0x404510で処理分岐が追えるそうで、ここを読むと良いとのこと。

f:id:reinforchu:20170302221913p:plain

pestudioでどのような緩和策があるか確認できる。

f:id:reinforchu:20170303111150p:plain

 

●解析

IDA Proで分岐を眺めてたり、stringsを眺めていたり、各種ツールで開いてみてがちゃがちゃ触ってみたけど……SlackやTwitterのTLではヒープの破壊が出来たとか流れてきて、圧倒的スキル不足を実感。

勉強会では、スライドに絵があってふんわりながら……という感じでした。理解には時間がかかりそうです。

ハンズオンでは、最終的に配布されたExploitを実行するとシェル(cmd.exe)がとれます。

f:id:reinforchu:20170303112601p:plain

ただPythonを動かしただけ、かもしれないですが、 Windowsのバイナリとちょっと仲良くなったのような気がします。