NewbieCTF 2019 Forensic writeup
11/2 0:00(JTC) ~ 11/3 2:00 に開催されたNewbieCTF2019のForensicの中で、時間内に解けた問題のWriteupを記す。
Top Secret 643pt [127 Solves]
He stole the virtual machine file containing the top secret of the enemy country. However, due to the shortage of USB memory, I dumped only the memory that seemed to be the most important. What is the secret of an enemy country? (Fake Flag file exists.)
まず、「NewbieCTF2019_Top_Secret.zip」というファイルをDLする。
このファイルを解凍すると、「Windows 7 Enterprise K-b94208dd.vmem」というファイルがある。
たぶんメモリダンプだと思ったので、volatilityしかないっしょ。ということで開こうとすると失敗した。分けわからんという状態になり、なんとなくバイナリエディタで開き、flag formatの「KorNewbie」を検索したら、
KorNewbie{OH..You_Know_B4sic_0F_M3mory_Forensics!}
なんでvolatility上手くいかなかったのか分からん。
Contact point 728pt [111 Solves]
After a police investigation, he caught a buyer trying to buy drugs. You try to catch a drug dealer with a drug buyer, but the buyer doesn't say where you are meeting. If you seized this man's smartphone, can you find out where it is? Flag Format: KorNewbie{Contact point}
「backup.ab」というファイルをDLする。.abというファイルを触ったことがないので、調べてみるとandroid端末のアプリやシステムのバックアップファイルであることが分かった。
始めは「Contact point」が連絡先のことだと思っていたので、それを探す方針でAndroid Studioでエミュレートした端末にbackup.abをrestoreしてみたり、エミュレートした端末をroot権限で覗いてみたりしたがダメだった。
皆さまお察しの通り、「Contact point」は麻薬取引のバイヤーとディーラーが会う場所という意味なのでそちらで探すべきだった。(これに気付くまでにかなりかかった俺のアホ)
とりあえず、backup.abを解体するツールがあるようなのでこれを使用する。
DLした「android-backup-tookit-20180521.zip」を解凍し、
android-backup-tookit-20180521/android-backup-tookit/android-backup-extractor/android-backup-extractor-20180521-bin/abe.jar
というjarファイルがExtractツールになっている。使用法は以下を参考にした。
今回の場合であれば、例えばこんな感じで
$ java -jar abe.jar unpack backup.ab backup.tar
作成したbackup.tarを見ると、「apps」ディレクトリしかない!
ということは、このバックアップファイルはAndroid端末の「apps」のみのバックアップだったのか?「apps」ディレクトリをみると、
androidのシステムアプリ系がズラッと見える。
ここで何を見るべきか。問題に戻ると「Contact point」は麻薬取引のバイヤーとディーラーが会う場所であり、これがflagとなる。ここで、自分だったら誰かと会うときに事前に場所を下調べするのでは。なので、「com.android.browser」を見てみる。何か三つあってよく分からんけど、とりあえずブラウザ履歴とか入ってそうな「db」ディレクトリを見てみる。
またよく分からん。とりあえず、全部中身見てみるか。流し見すると、ブラウザの履歴が見えて、ebayとか何か検索しているのが見える。「browser2.db」を見ると、
完全に行き方を調べてるこれしかないのでは。ということで、これがflag。
KorNewbie{Jeju_international_airport}
国際空港か、まさに麻薬取引の場所ぽい。
Chat 980pt [31 Solves]
Confidential information came and went through chat. Find the email of the user who used the chat.
Flag: KorNewbie{email_address}
「VM.zip」をDLする。これを解凍すると「VM」というディレクトリがある。仮想マシンのディスクイメージを解析する問題だと分かる。仮想ディスクイメージを解析するまでのくだりは、たまたま扱ったことがあるものだったのでこちらを参照。
そして、Autopsyで「NewbieCTF2019_KakaoTalk.vmdk」をrawイメージに変換したものを開く。まず、Basic dataのUsersにNewbieCTF2019というユーザが見えるのでここを解析していくと思われる。
問題文に戻ると、チャットを使ってる人のメールアドレスを見つける。つまり、チャットアプリケーションを見つける必要がある。ここで、この人が何のアプリケーションを使っているかは分からないので、タイムラインを参照してみる。
最もイベントの多い2019を覗いてみると、
一覧のなかに「C:\Users\NewbieCTF2019\AppData\Local\Kakao\KakaoTalk\users\last_pc_login.dat 」
「C:\Users\NewbieCTF2019\AppData\Local\Kakao\KakaoTalk\users 」へのアクセスが見られる。「KakaoTalk」というからには、これがチャット利用だろう。該当ファイルをチェックしてみる。
C:\Users\NewbieCTF2019\AppData\Local\Kakao\KakaoTalk\users\last_pc_login.datを見てみると、
形式は分からないがおそらくログイン情報だろう。そして、ここにはログインに利用したと思われるメールアドレスも見受けられる。チャットを利用しているユーザのメールアドレス。つまり、これがflag。
KorNewbie{renek@it-simple.net}
終わりに
Forensicの問題は、残り「Find The Plain」「REC」の2問があるが時間内に答えに辿り着けなかった。全体的に、割とNewbie?なCTFでとっつきやすかったので満足ちゃ満足。31 teamしか解いてない問題を解けたのは嬉しい。
やっぱCTFは最高だわ