ごちゃごちゃしたIT勉強記録

自分用メモ。セキュリティ関連の内容を書いてます。

Zimmerman ToolsのKAPEを試してみた

デジタルフォレンジックの分野で色々ツールを作ってくださるEric Zimmerman先生が、KAPEという便利ツールを作ってくださったので、どんな感じかを簡単にまとめてみる。

ツールの簡単な概要

機能は大きく分けて2つ。 特定のファイルの収集パースツールによるデータのパースになる。

また、ツールの形態としてCUI(kape.exe)とGUI(gkape.exe)がある。どちらも実行する際には管理者権限が必要である。

特定のファイルの収集

フォレンジックを行う上で重要なファイルをすばやく収集することができる(いちいちディレクトリを移動する必要がない)。

収集できるファイルは、メインどころのファイルシステム関連($MFTや $J)やブラウザ関連データ(Edge, IE, Chrome, Firefox)、プログラム実行関連のファイル(Prefetch, Amcache, SRUMなど)、イベントログなどはおさえてあって、そのほかにも色々収集できる

また、VSC(Volume Shadow Copy)に関してもファイルの抽出ができる?(要確認)

収集したファイルは、そのままの形式で保存できるほかVHD,VHDX形式やZipで保存できる。

パースツールによるデータのパース

収集したファイルにたいしてパースツールをかけて、調査をする人にみやすい形で出力を行う。出力のフォーマットはhtml, csv, jsonなど。たぶんcsvjsonで出力しておけば、あとでPythonスクリプトとかで扱いやすくなる。

導入

ツールのダウンロードは、以下のURLにいって名前とかメールアドレスを書いて、メールアドレス宛にツールのダウンロードリンクが貼られたメールが届くのでそれをクリックしてダウンロードする。 https://learn.duffandphelps.com/kape?utm_campaign=2019_cyberitbn-KAPE-launch&utm_source=kroll&utm_medium=referral&utm_term=kape-gui-blogpost

ダウンロードしたzipを適当なディレクトリに展開して終了

使い方

ツールの流れとしては

  1. 対象となるsourceから収集したいファイルの種類を選択して、指定したディレクトリに出力
  2. 出力したファイルを対象としてパースツールを使い、ファイルの中から調査で有用なデータ(よくアーティファクトって言ったりする)を指定したフォーマットで出力

といった形。検証段階では、起動中のマシンのCドライブからファイルの収集・パースツールによるデータのパースを行っている。

もし、ちゃんとしたフォレンジックの手順としてやることを考えると、自分としては以下のような手順としてやりたい

  1. 調査対象のHDDをE01形式のイメージで取得し、FTK ImagerのImage Mountをやる
  2. マウントされたボリュームを対象にKAPEを使用してファイルの収集・パース

(これはまだ試せていないので、時間があったらイメージファイル作ってやってみたい)

gkapeを使った操作

GUIのほうであるgkapeを使って操作などを確認。 GUIを使った操作の方がわかりやすい、かつ、実行する際のコマンドラインが下のCurrent command lineに表示されるので、まず試すならgkape。慣れてきて、ある程度バッチなどで自動化させたい場合にはkapeを使うという感じがいいと思う。

gkapeの実行には管理者権限が必要。実行させると、以下のような画面が表示される f:id:motojiroxx:20190428002136p:plain

左側がデータの収集用。 f:id:motojiroxx:20190428002239p:plain

右側が収集したデータをパースツールにかける時に使う用。 f:id:motojiroxx:20190428002256p:plain

使う方にチェックをつけてそれぞれ収集・パースを行う。

データの収集

左側のUse Target optionsにチェックをつけて、各パラメータを指定。
Target sourceが収集の対象となるドライブになる(通常のマシンであればC:¥と入力していれば問題なさそう)
また、Target destinationの項目には収集したファイルの保存先を指定。その横にある「Flush」にチェックをつけると、データを取得する前にdestinationに指定したディレクトリの中にあるファイルを全て消す。 f:id:motojiroxx:20190428002423p:plain

右下にあるExecute!を押すと実際に指定したTarget sourceから指定のファイルの収集を開始。 f:id:motojiroxx:20190428002449p:plain

データは以下のような感じで収集される(EvidenceOfExecutionのカテゴリだとPrefetch, Amcache.hveを取ってくる形になる)
今回、収集したデータはzipで固めたのでそれを展開すると以下のようになる。 f:id:motojiroxx:20190428004542p:plain f:id:motojiroxx:20190428004604p:plain

パースツールを使って出力

右側のUse Module optionsにチェックをつけて、各パラメータを指定。これをやる時には、Use Target optionsのチェックを外しておく
(両方つけたら、データの収集とパースツールでの出力を一気にやってくれるのかな?)

Module sourceに「取ってきたデータのパス」を指定。その他、パースしたいデータや保存形式を選択。
Name, Category, Descriptionでそれぞれキーワードを入力して項目の検索を行うことも可能。 今回は、Categoryの「ProgramExecution」に該当するものに全てチェックを入れる f:id:motojiroxx:20190428002550p:plain

ファイルの収集をした時と同じようにExecute!を押してデータのパースを開始。 f:id:motojiroxx:20190428002537p:plain

完了すると、今回はcsvにしたので以下のようにパースしたデータがそれぞれcsv形式で保存されてる。 f:id:motojiroxx:20190428003213p:plain

ここではPECmdの結果(Prefetchの解析結果)を時系列で並べたものを表示(VS Codeプラグインを使ってみやすくしています) f:id:motojiroxx:20190428002905p:plain

使ってみた感想

フリーツールとしては非常に使いやすい。 複雑な操作や設定が必要なく、調べたいものを簡単に収集・データをみやすくして調べられるという印象。また、データの収集からデータをパースするまでの時間が非常に短い。
(いつもの「ディスクイメージを取って来て、イメージ全体に対してなんか色々処理をかける設定をしたり...」という手間がない)
ファイルを取ってくる部分についてはCDIRに任せてもいいかもしれない。

ただ、パースツールにかけた時に出力されるoutputはデータ量が結構多くなるため、次の段階としてPythonなどのコードを書いてデータを取り込み、指定した時間の範囲の部分だけ見るとか、特定のアプリケーションに関して見るなど、必要な部分だけをみていく感じの何かしらの対処が必要(さすがにそのままみていくとなると現実的に厳しい)
サイズが大きなcsvとかjsonをいい感じに見れるツールを探さないと...(この際、自分で作るのもありか...)

自分で運用するとなった時の「いい感じの方法」を見つけ出せたら、また記事として書こうと思う。 あとは、まだ他のmoduleをあまり試せていないのでそこらへんも確認しておこう。