久しぶりにSECCONオンライン予選にじっくりと参戦してみました。exploit 100の問題が手元の仮想環境でEIPを奪うところまではできたのですが、その先で詰まってしまい久しぶりに徹夜をするも解けず・・・。おかげで他の問題にもほとんどとりかかれず、問題だけダウンロードしておくことも忘れてしまいました・・・。
準備不足もありコテンパンにやられてしまいましたが、楽しかったです。
取り急ぎ、私が解いた問題だけWriteupを記載します。
Binary 100 Anti-Debugging
問題ファイルは、PEフォーマットのプログラムです。まずは仮想環境で実行してみると、パスワードを入力するように言われます。
IDAで問題ファイルを見てみると、素直にパスワード「I have a pen.」が見えるのですが、その後に解析環境で動作していないかチェックするルーチンが延々と続きます。(解析環境であることを検知すると、もちろんそこでプログラムが終了します)
デバッガでコツコツやるのは面倒なので、IDAでざっとコードを読んでみたところ、解析環境であることを検知したら素直に終了するだけの処理のようです。(解析環境検知ルーチンの途中で暗号化されたフラグをデコードするような処理があると(時間的に)面倒なことになるとドキドキしていたので、ホッとしました)
フラグを表示するためには、デバッガでプログラムを起動してパスワードを入力した後、アドレス 0x00401663 に強制ジャンプすればフラグが表示されます。
フラグ: SECCON{check_Ascii85}
Forensic 100 Memory Analysis
問題ファイルのメモリイメージをvolatilityで解析する問題です。次の手順でプラグインを使って解析を進めます。
(1)imageinfo
プロファイルとして「WinXPSP2x86」を利用すればよいことが分かります。
(2)connections
PID 1080のIEが,153.127.200.178:80 にアクセスしていることが分かります。しかし、この段階ではアクセスしたURLまでは特定できません。
(3)pstree
IE(PID 1080)の親プロセスは,PID 1776のsvchost.exeであることが分かります。これは怪しいですね。
.... 0x81f65da0:svchost.exe 1776 672 2 23 2016-12-06 05:27:10 UTC+0000 ..... 0x8225bda0:IEXPLORE.EXE 380 1776 22 385 2016-12-06 05:27:19 UTC+0000 ...... 0x8229f7e8:IEXPLORE.EXE 1080 380 19 397 2016-12-06 05:27:21 UTC+0000
(4)filescan
hostsファイルを探せというヒントが出されているため探します。hostsファイルはメモリイメージの 0x000000000217b748 にあることが分かります。
(5)dumpfiles
hostsファイルを抽出し内容を確認すると「crattack.tistory.com」が、不審IPアドレス 153.127.200.178 に紐づけられていることが分かります。 なお、上記ホスト名をフラグとしてサブミットしても不正解だったため、153.127.200.178にアクセスし、バーチャルホスト名として「crattack.tistory.com」を指定すればフラグが表示されると推測し試してみましたがフラグは表示されませんでした。
(6)memdump
PID 1080のIEのプロセスメモリを抽出し、プロセスメモリ内の文字列をstringsコマンドで抽出すると、次のURLにアクセスしていることが分かります。
http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
(7)netcatで不審サイトにアクセスするとフラグが表示されました。
C:\WORK>nc 153.127.200.178 80 GET /entry/Data-Science-import-pandas-as-pd HTTP/1.0 Host: crattack.tistory.com HTTP/1.1 200 OK Server: nginx/1.10.0 (Ubuntu) Date: Sat, 10 Dec 2016 09:58:46 GMT Content-Type: application/octet-stream Content-Length: 36 Last-Modified: Tue, 06 Dec 2016 07:11:29 GMT Connection: close ETag: "584664a1-24" Accept-Ranges: bytes SECCON{_h3110_w3_h4ve_fun_w4rg4m3_}
フラグ:SECCON{_h3110_w3_h4ve_fun_w4rg4m3_}
以上です。