17章

Hands-on-1

ここでは、CDIR-Aに含まれる「usnjrnl.exe」により、調査対象のPCから保全したUSNジャーナルをパースして、特定のファイルに対する作成・削除・移動・リネームなどの操作履歴を調査するハンズオンを行います。

CDIR-A(Analyzer)は、以下のURL(株式会社サイバーディフェンス研究所の公式Githubリポジトリ)から入手できます(すでに最新版をセットアップ済みであれば、改めてダウンロードする必要はありません)。

https://github.com/CyberDefenseInstitute/CDIR-A


ハンズオンの概要

以下の流れで調査を行うハンズオンを実施します。

  • USNジャーナルをパースする(CSVファイルへ出力)。
  • MFTは、パース済みのCSVファイルを参照。 ※ 親フォルダID(ファイルID)検索用
  • USNジャーナルから、ごみ箱内の特定ファイルに関する操作(変更)履歴を調査し、ごみ箱へ入れる前の元のファイル名を特定する。
  • MFTパース結果から、USNジャーナルに記録された元のファイルの親フォルダIDを検索して、元のファイルパスを特定する。


ハンズオン手順

解析対象のUSNジャーナル

このハンズオンで解析対象とするUSNジャーナルおよびMFTのパース結果(CSV)は、演習用データの以下の相対パスに保存されています。

s17\h1\C_$UsnJrnl-$J

s17\h1\C_$MFT_output.csv

なお、このUSNジャーナルとMFTは、調査のサンプルとしたPCから、CDIR-C(CDIR Corrector)で保全したものです。CDIR-Cによる保全時に、それぞれ元のファイル名の先頭に、保全したドライブレターを示す「C_」が付与され、USNジャーナルのファイル名($UsnJrnl)とADS名($J)の区切りはハイフンになっています。


usnjrnl.exe の実行

usnjrnl.exeを使用して、上記解析対象のUSNジャーナルをパースし、CSVファイルへ出力します。

コマンドプロンプトを起動し、以下の手順で usnjrnl.exe を実行して下さい。


  • cdコマンドでCDIR-A の「parser」フォルダに移動
cd  <CDIR-Aの格納パス>\CDIR-A\parser


  • 出力先フォルダ(-o オプション)と解析対象アーティファクトのフォルダを指定して、usnjrnl.exe を実行
usnjrnl.exe -o %userprofile%\desktop\out\USNJ  <演習用データの格納パス>\s17\h1

※ 出力先フォルダは、任意のフォルダ名でも構いません。現存しないフォルダの場合は、新規作成しておく必要があります(現存しないフォルダを指定すると、末尾のフォルダ名がCSVファイル名として出力されます)。また、CDIR-Aの仕様上、出力先フォルダに同名のCSVファイルがあっても、警告なしにデータを書き込む(Append)ため、出力先フォルダは空にしておくことを推奨します。

 

  • 以下の処理結果メッセージが表示されれば完了
【usnjrnl.exe】
Saved: C:\Users(ユーザー名)\desktop\out\USNJ\C_$UsnJrnl-$J_output.csv

 

以上の結果、指定した出力フォルダに、

  • C_$UsnJrnl-$J_output.csv

が保存されます。


出力したUSNジャーナルのパース結果

上記で出力したUSNジャーナルのパース結果(C_$UsnJrnl-$J_output.csv)を、エクスプローラーからダブルクリックするなどで開きます。

以下、LibreOfficeの表計算アプリケーション(Calc)が、CSVファイルのデフォルト編集用アプリケーションとして設定されている想定で説明します。

「テキストのインポート」設定画面が表示されますので、「文字エンコーディング」には「Unicode(UTF-8)」、区切り文字には「タブ」を指定して下さい。

CSVファイルの表示後、列幅の調整、タイトル行の固定、オートフィルター有効化などの整形を行い、分析しやすいように準備をしましょう。

また、「Time」欄でソートを行い、履歴を時系列で並べ替えておきましょう。昇順/降順は、どちらでも結構です。


  • CSVから整形済みのCalcドキュメント例

t-1_01


また、同様にMFTのパース結果(C_$MFT_output.csv)も開いておきましょう。表示後の整形は任意で行って下さい。データ量が多いため、整形処理には少し時間がかかるかもしれません。このハンズオンでは、ファイルIDの参照に使用するだけですので、簡易な整形でも結構です。


USNジャーナルの分析例

次のファイルを調査対象とします。

  • $RPLWXXC.dat

USNジャーナルのパース結果を、このファイル名でフィルターして下さい。


  • 「File Name」欄を「$RPLWXXC.dat」でフィルターした結果

t-1_02


「$RPLWXXC.dat」は、2022年3月29日(以下、日付は省略)の15時19分18秒(1/10秒以下は省略、以下同じ)にリネーム(RENAME_NEW_NAME)されたことがわかりました。

MFTからファイルパスを確認してみましょう。「Parent Folder ID」(親フォルダID)の「99455」で、MFTパース結果のファイルIDを検索(フィルター)します。


  • MFTパース結果から、ファイルID「99455」を検索(フィルター)した結果

t-1_03


MFT検索の結果、ファイルパス(フルパス)は次のように判明しました。

  • C:\$Recycle.Bin\S-1-5-21-1746883600-3161894144-3576001046-1000\$RPLWXXC.dat

このフォルダ名から、ごみ箱に入れられたファイルを保存するシステムフォルダ($Recycle.Bin\<SID>)であることがわかります。つまり、「$RPLWXXC.dat」は、ごみ箱に入れられた際、このファイル名へリネームされ、USNジャーナルに「RENAME_NEW_NAME」(リネーム後)の操作履歴が記録されたもの考えられます。


次に、このファイルがごみ箱に入れられる前の、元のファイル名・ファイルパスを調査しましょう。

リネームやフォルダの移動が行われても、ファイルIDは不変ですので、「File ID」(ファイルID)の「102566」でUSNジャーナルをフィルターして下さい。


  • USNジャーナルを、ファイルID「102566」でフィルターした結果

t-1_04


フィルターの結果、15時17分29秒に作成されたファイル「exdf01.dat」がごみ箱に入れられて、15時19分18秒に「$RPLWXXC.dat」へリネームされたことがわかりました。

「exdf01.dat」は、元の格納場所から、ごみ箱へ移動されましたので、「Parent Folder ID」(親フォルダID)も「102560 → 99455」へ変更されています。このように、ごみ箱へ入れることにより、リネームと移動が同時に行われることがわかります。

MFTで「exdf01.dat」の「Parent Folder ID」である「102560」を検索し、元の格納場所のファイルパスを確認しましょう。


  • MFTパース結果から、ファイルID「102560」を検索(フィルター)した結果

t-1_05


MFT検索の結果、元のファイルパス(フルパス)は、次のとおり特定できました。

  • C:\Windows\Temp\ex3idwi-axdf-2dka\exdf01.dat


なお、先の図で紹介した、USNジャーナルをファイルID「102566」でフィルターした結果において、「exdf01.dat」と同じファイルIDとして抽出されたファイル「api-ms-win-core-sysinfo-l1-1-0.dll」については、「exdf01.dat」との相関関係はないものと考えられます。その理由は次のとおりです。

  • 11時00分19秒に、「api-ms-win-core-sysinfo-l1-1-0.dll」が「CLOSE|FILE_DELETE」(削除)された後、5時間以上経過した15時17分29秒に、「exdf01.dat」の「FILE_CREATE」(新規作成)が記録されている
  • この履歴から、「api-ms-win-core-sysinfo-l1-1-0.dll」の削除後に、空きとなったMFTレコードがたまたま再利用されたものと認められる

実際に、MFTパース結果からファイル名「api-ms-win-core-sysinfo-l1-1-0.dll」を検索しても、MFTレコードは存在しません。このように、MFT上からは完全に消滅したファイルでも、USNジャーナルによって、過去に存在したことが判明する場合もあります。

USNジャーナルを調査する際には、ファイルID/親フォルダID/理由に着目し、挙動パターンを論理的に分析して、より正確なタイムラインを把握しましょう。


問題

  • ごみ箱に入れられたファイル「exdf01.dat」が保存されていたフォルダ「C:\Windows\Temp\ex3idwi-axdf-2dka」には、同ファイルと同時にごみ箱へ入れられた、別のファイルがありました。

  • ごみ箱へ入れられた別のファイルについて、ごみ箱内フォルダ(C:\$Recycle.Bin\S-1-5-21-1746883600-3161894144-3576001046-1000)におけるファイル名を回答して下さい。

    • 回答例:$RXXXXXX.xxx


S17H01

results matching ""

    No results matching ""