BFT(Sherlock) Writeup

概要

難易度リリースカテゴリー
Very Easy2024年4月4日DFIR

Sherlock BFTではMFT(マスター・ファイル・テーブル)のフォレンジックを実施します。主にツールの使い方に習熟するのが目的だと思われ、問われる内容としては難しくないですが、初めてツールを使う人にはツールの使い方で少し悩む場面があるかと思われます。

MFTについて

MFTはMicrosoftによれば下記の記載があります。

MFT には、NTFS ファイル システム ボリューム上のすべてのファイル (MFT 自体を含む) に対して少なくとも 1 つのエントリがあります。 ファイルに関するすべての情報 (サイズ、時刻、日付スタンプ、アクセス許可、データ コンテンツなど) は、MFT エントリまたは MFT エントリによって記述される MFT の外部の領域に格納されます。

ここで、NTFSとはNT File SystemのことでWindowsで用いられるファイルシステムの1つです。ここではMFTのフォレンジックにより悪意のあるアクティビティがどのファイルに関連して実行されたのかを分析、特定します。

使用するツールについて

下記のシナリオに記載の通り、3つのツールを使用します。

  • MFTECmd:EricZimmerman氏が開発したものが公開されています。左のリンクからツール一覧が確認できます。
  • TimeLine Explorer:上記同様です。
  • Hex Editor : これは特に指定のツールはないと思います。私はKali Linuxに標準で入っていたHxD Hex Editorを使用しました。

シナリオ

このSherlockでは、MFT(マスター・ファイル・テーブル)フォレンジックについて学びます。MFTアーティファクトを分析し、悪意のあるアクティビティを特定するための有名なツールや手法を紹介します。分析では、MFTECmdツールを使用して提供されたMFTファイルを解析し、TimeLine Explorerを使用して解析されたMFTの結果を開いて分析し、Hexエディタを使用してMFTからファイル・コンテンツを復元します。

QUESTION 1

サイモン・スタークは2月13日に攻撃者に狙われた。彼は電子メールで受け取ったリンクからZIPファイルをダウンロードした。彼がリンクからダウンロードしたZIPファイルの名前は?

回答

MFTECmdツールにてMFTファイルをパースしCSV形式にした後、該当の時間にダウンロードしたZIPファイルを探します。
まずはMFTECmdツールのダウンロードが必要です。リンクからダウンロードしてください。
後は適宜ツールを配置した後、下記のコマンドでパースが可能です。

MFTECmd.exe -f {MFT_FILE_PATH} --csv {CSV_DIRECTORY_PATH} --csvf {CSV_FILE}

TimelineExplorerでパースしたCSVファイルを開きます。左上のタブからFile > Openでファイルを開けます。

ダウンロードしたZIPファイルの名前を答えるので、Extensionの列を.zipでフィルターします。少し見づらいですが右上にフィルターのマークがありますのでそこをクリックするとフィルタ設定ができます。

フィルタの結果5つのファイルが確認できますが、この中で2月13日にダウロードし、最も作成が早いファイルStage-20240213T093324Z-001.zipがQUESTION1の答えとなります。

QUESTION 2

最初にダウンロードされたZIPファイルのZone Identifierの内容を調べます。このフィールドは、ファイルがダウンロードされたHostUrlを明らかにし、調査/分析において貴重な侵害の指標(IOC)として機能します。このZIPファイルがダウンロードされた完全なHost URLは何ですか?

回答

問題文の通り、Q1で明らかにしたZipファイルのZone Identifierの内容を調べます。File Nameの列で先ほどのzipファイルの拡張子を除いた部分でフィルタすることで該当のファイルを発見できます。

Zone IdentifierファイルからはZone Id Contentsの中身が確認でき、そこからHostUrlを取得可能です。

QUESTION 3

悪意のあるコードを実行し、C2サーバーに接続した悪意のあるファイルのフルパスと名前は何ですか?

回答

確実な裏付けはMFTファイルからは取得できませんが、自然な流れとしてはQ1のZipファイルをダウンロードし、それを解凍した中身を実行したことにより悪意のある振る舞いが開始したと考えられます。
そのため、Parent Path列に該当のパスを指定してフィルタします。今回はDownloadsフォルダ内のStage-20240213T093324Z-001.zipを解凍しているため、考えられるパスは.¥Users¥simon.stark¥Downloads¥Stage-20240213T093324Z-001となります。最終的にinvoice.batというファイルが展開されたことがわかります。

QUESTION 4

先に特定したファイルの$Created0x30のタイムスタンプを分析します。このファイルがディスク上に作成されたのはいつですか?

回答

Q3で特定したファイルの$Created0x30列を確認するだけです。

QUESTION 5

MFT レコードの 16 進オフセットの検索は、多くの調査シナリオで役立ちます。問 3 のステージャー ファイルの 16 進オフセットを検索します。

回答

ここから用いるツールが変わります。元のMFTファイルをHex Editorで開きます。私はKali Linuxに元々入っていた
HxD Hex Editorを使用しています。

ここでMFTファイルの構造の話になるのですが、MFTファイルの中には各レコードが連続したバイト列として格納されています。そこで、特定のファイルやディレクトリのMFTレコードを探すために、そのレコードがどこに格納されているか、つまりその16進オフセット(Hex Offset)を知ることが重要になってきます。
各レコードは特定の構造を持っており、以下のような情報が含まれています。

  • ‘FILE’シグネチャ(4バイト)
  • Fixup Array
  • ファイル属性(標準情報、ファイル名、データ属性など)
    今回はQ4のファイル名を元にこのレコードの先頭アドレス、Hex Offsetを探ります。

ツールによって多少やり方は異なるかと思いますが、検索からファイル名の文字列を探ります。注意が必要なのが、オプションの文字エンコードをエディタのエンコードからユニコード(UTF-16リトルエンディアン)に変える必要があるということです。

これにより該当のレコードを見つけることができました。回答はレコードのHex Offsetなのでここではレコードの先頭である’FILE’シグネチャが始まっている場所16E3000が回答となります。

QUESTION 6

各 MFT レコードのサイズは 1024 バイトです。ディスク上のファイルのサイズが1024バイトより小さい場合は、MFTファイル自体に直接保存できます。これをMFT Resident Fileと呼びます(Residentは常駐といった意味です)。Windowsファイルシステムの調査では、MFTにResidentしている可能性のある悪質/不審なファイルを探すことが重要です。こうすることで、悪意のあるファイル/スクリプトの内容を見つけることができます。質問3で特定した悪意のあるステージャのコンテンツを検索し、C2 IPとポートを答えなさい。

回答

実はQ5の回答で見えているのですが、invoice.batのレコードのデコードされたテキストを見るとバッチファイルの中身が直接保存されています。これがMFTの中に直接書かれたMFT Resident Fileです。見えているC2のIPアドレスとポートを答えれば正解となります。お疲れ様でした。

まとめ

内容自体はそこまで難しくなく、いい具合にMFTファイルの仕組みを理解し意識しながらもツールに慣れることができた問題だと感じています。皆様の参考になれば幸いです。

参考図書

特になし

コメント

Copied title and URL