CodeGate2012 Forensics 100 解いてみる

もうすぐCodeGate2013開催ということで全体的に予習してみようと思います。

解いていった順番にブログに手順を書いていこうと思います。

※注意

・他の方のwriteupを参考に解いています。(許可とってないのでリンクは貼りませんが、ぐぐってすぐ出てくる海外の方のブログを色々参考にさせていただいています。)

・できれば全問触りたいのでwriteupを見ることを前提で解き初めてます。

まずは問題文

 In order to steal financial information of Company X, IU got a job under cover. She decided to attack CFO’s computer, and then insert malicious code to his computer in the way of social engineering. She figured out that he didn’t use to turn off his computer, when he gets off work. After he leaves the office, she obtains financial data from his computer to search EXCEL file. By checking installed application program, she can find the information in the file. She lacks the file externally. In order to remove all traces, she erases malicious code, event logs and recent file list.

The company X has to figure out what information she stole correctly to make an appropriate measure. These are files attacked from CFO’s computer. Find the full path and size of the file which she stole. On the day, CFO left the office at 14:00. The time is based on Korea Standard Time(UTC +09:00).
Answer: strupr(md5(full_path|file_size)) (‘|’ is just a character)

簡単に訳(クソすぎる翻訳ですが許してください・・・・)

IUはX社の財務情報を盗むために密かに仕事をしていました。彼女はX社のCFOのPCに攻撃することを決め、彼のPCにソーシャルエンジニアリングによって悪意のあるコードをインストールしました。CFOは職場から出るときにPCの電源をOFFにしていませんでした。彼がオフィスから出た後、財務情報のExcelファイルを取得します。インストールされたアプリをチェックし、情報を探すことができます。 全ての痕跡を消すために、彼女はコード、イベントログ、そして最近のファイルのリストを削除します。X社は彼女がどんな情報を盗んだのかを知らなければなりません。これらはCFOのコンピュータから攻撃されたファイルです。彼女が盗んだファイルのサイズとフルパスを見つけてください。その日、CFOは14:00に会社を出ました。時間は韓国標準時間に基づいています(UTC +09:00) 答えはstrupr(md5(対象ファイルのフルパス|ファイルサイズ))です

まずは対象ファイルをダウンロードします。

恒例のfileコマンド

Screen Shot 2013-02-13 at 8.27.11

7zipで圧縮されたアーカイブですね。

解凍するとWindowsのファイルシステムがずらり・・・・相当なファイル数だこれ・・・orz

最初に見せてもらったwriteupでは上記の問題文が書いてなくて、最初このファイル郡からどうやって答えにたどり着いたんだ・・・と悩みましたが、問題文を見つけて読んでみたら納得w

解凍したフォルダの中に”FindTheKey*****”と書かれたpdbファイルとappxファイルがあり、最初は「これヒントかも」なんてバイナリみたり、拡張子でぐぐったりしたけど、多分これは時間稼ぎだったかも・・・特に有力な情報はナシ。

ちなみにpdbファイルは開発時のデバッグ関連のファイル、appxはwindows app storeの配布形式の拡張子みたいですね。全く関係ないファイルなのかと言われればわかりませんが、解凍したファイル郡と問題文を見る限り、windows上のホームディレクトリが含まれているだけなので、ノータッチでオッケーだと思われます。(※他の方のwriteupでも、このファイルに関しては言及ナシ)

Usersフォルダの中にはAll Userや、Publicと、定番のフォルダのなかにproneerがありますね。

おそらくこれがCFOさんのホームディレクトリなのかな??この中に盗まれちゃった対象ファイルがあるんじゃないでしょうか??

Screen Shot 2013-02-13 at 13.44.27

ただ、莫大なファイル量なので、もちろんひとつひとつチェックしていくわけにはいきません。

手がかりは2つですね。1つは対象はExcelファイルであるということ、2つ目はCFOが14:00に会社を出たということ。(これ以降にハッカーの彼女がファイルを盗んだ、と思われる)

この手がかりを元に対象ファイルをすぱっと見つけたいところなんですが

  1. .xls(Excelの拡張子)を対象に検索しても対象ファイルなし
  2. 更新時間を対象に検索すると、ほとんど全てのファイルが該当する

これは困りました・・・。ここでwriteupをカンニング・・・。

一時ファイルを見に行くんですね。具体的にはUsersproneerAppDataRoamingMicrosoftOfficeRecentディレクトリ内

 

AppData/Roamingフォルダとはhttp://oshiete.goo.ne.jp/qa/6535208.htmlを見るとわかるように、バックアップ対象のファイルをアプリケーションが格納しておくファイルみたいですね。

なるほど・・・・。

ここにある、そのまんまヤバそうなファイル[Top-Secret]_2011_Financial_deals.lnkがお目当てのファイルのショートカットになってるみたいです。リンクファイルだから当然.xlsとかで検索しても出てこないですね。

しかしクリックしてもエラーで開けません。当然ですショートカットであって、本体ではないのです。このファイルのプロパティを見れば、対象ファイルへのフルパスはわかります。

C:INSIGHTAccountingConfidential[Top-Secret]_2011_Financial_deals.xlsx

ですね。ただ解答に必要なのはフルパスとファイルサイズ。ファイルサイズはどこで・・・。

これは何かしら、forensicsツールで確認ができるらしいのですが、writeupで紹介されていたのが

http://www.tzworks.net/prototype_page.php?proto_id=11でした。用途はショートカットファイルの解析に限定されますが、非常に見やすいです。他のwriteupで紹介されていた010Editorというのもbinaryのテンプレートが豊富で見やすかったです。(こちらは有料で一ヶ月無料体験版アリ)

Screen Shot 2013-02-13 at 11.13.06

Sweet Scape 010 Editor

010 Editor Binary Template

▼Sweet Scape 010 Editor + LNK Templateでbinaryを見た様子

Screen Shot 2013-02-13 at 13.46.56

このツールを使って対象ショートカットファイルを開くと情報が出てきます。ファイルサイズは9296byteですね。

一般的に使われているツールでも後ほど解析してみます。

これで準備OKですね。最後にこの2つをmd5でハッシュ化すれば答えみたです!

コードはGithubにあげておきます。writeupがPHPだったのでPythonで書いてみました。   Github forensics 100Screen Shot 2013-02-13 at 14.29.12

答え:d3403b2653dbc16bbe1cfce53a417ab1

問題文には大文字で(strcpy(***))と書かれていましたが、なぜか小文字で正解だそうです・・・むむむ・・・

ポイントとしては以下の点を感じました

  1. いかに早く一時フォルダの存在に気づき、対象のショートカットファイルを発見できるか(いつまでもExcelのファイルを探さない。更新時間に囚われない)
  2. ショートカットファイルのファイルフォーマットを知っている or 解析手段を用意できるか

ですね。この2点が素早くできればすぐに解ける問題だったと思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です