前回に引き続き、デュプリケートしたE01イメージのマウントの記事です。
ツールによるマウント(続き)
SANS SIFT Workstation
SANSが公開している、Linux (Ubuntu) ベースで作られたフォレンジックツールです。
SANSのトレーニングでは使い方をみっちり教わりますが、いきなり何の予備知識も無いと、なかなかとっつきにくいかもしれません。
しかし!これを機に、ちょっと触ってみるといいかもしれません。
他のブログに、きっと有用な記事がでてる!・・・と思う。
触ってみて、本格的にやりたくなったらSANSのトレーニング受けるのもいいのではと思います。
(私も本当はGCFA取りたいんだけどなぁ・・・)
今回、私の環境は、ダウンロードできるovaイメージを用いてVMware上にゲストマシンとして構築されています。
(私の場合は有償のVMware workstationを持っているのでこれを使っていますが、VMware playerでも大丈夫です。)
このため、デバイスをこの仮想マシンに認識させるところから始まります。
VMware Workstationの場合、メニューの「VM」からUSBのデバイスをホストからゲストに接続することができます。
ここで問題が発生。
VMwareのステータスでは、確かにディスクが動いている裸族のお立ち台がVMに接続状態になっているのですが、VM側で認識しない?
USBメモリをつないだ時のように自動でマウントしてディスクが見えるようになるどころか、/dev/sdb (環境によってはsd*の*部分の文字が変わる)にも出てこない。もちろん、fdisk叩いても認識していない。
WindowsのVMゲストを立ち上げたところ、こちらもディスクとしてみえない。どうも、お立ち台とVMwareの相性が悪い?模様。
しかし、デバイスを認識できないのでは、マウントもできないので、その中にあるE01をマウントどころか参照すらできない。
これは、もうどうしようもない。
「あきらめたら、そこで試合終了ですよ・・・?」
ですよねぇぇええええええ、安西せんせぇえええええええええ!!
つうか、それで終わるなら、前回の記事から続くってしない!(なんてメタ発言を・・・)
「安西先生・・・!!E01のマウントがしたいです・・・。」
いや、それは絶対「知らんがな」と言われると思いますけれども。
というわけでまあ、今回はどうしたかというと。
ホスト側は認識できているので、VMwareの共有フォルダ機能を使いました。
今回の場合、DDイメージをマウントしたいのではなく、ディスクにあるファイルが参照できればいいので、結果オーライでこれでOK!
・・・まあ、分かれば調べておきます・・・。
共有フォルダで共有すると、/mnt/hgfsの下に設定した名前(このケースではH)で参照できるようになります。
うん、今回はこれでよしとしよう!
では、E01ファイルが見えるようになったところで、これをマウントしていきたいと思います。
まずは、E01ファイルをDDイメージのように取り扱えるようにする必要があります。
そのため、通常のマウントの前にewfmountを実行する必要があります。
ewfmountのコマンドラインは以下の通りです。
ewfmount (E01のファイル) (マウントポイント)
なお、アクセス権の問題が発生する場合は、sudoを使うかrootになる必要があります。
今回、私はsudoを使いました。
エラーメッセージがでず、指定したマウントポイントでファイルが参照できるなら、ewfmountは成功しています。
この例では、マウントポイントに指定した/mnt/ewfディレクトリにewf1(ファイル)として参照できるようになりました。
次はmountコマンドでマウントします。
この際注意が必要なのが、「マウントの開始位置の指定」です。
ディスクの内部は複数パーティションに分かれており、どの領域をマウントするか、を指定しないと上手くマウントできません。
Linux環境にディスクイメージをマウントする際の一つの重要なポイントになります。
マウントの開始位置を計算するためには、開始位置をバイト単位で知る必要があります。
これは、ディスク上のマウント対象のパーティションの開始位置のセクタ数と1セクタあたりのバイト数を知る必要があります。
これらに必要な情報を得るには、fdiskコマンドまたはThe sleuth kitに入っているmmlsコマンドを用います。
今回のディスクに対し、それぞれコマンドを打ってみます。
fdiskのコマンドは以下の通りです。
fdisk -l (ewfマウントしたファイル名)
fmmlsのコマンドは以下の通りです。
mmls (ewfマウントしたファイル名)
ディスクをマウントするために必要な情報は、いずれからも得ることができます。
今回は、Windows7のCドライブだったディスクをマウントしてみたいと思います。
この例から開始位置のセクタ数を得るには、fdiskの場合ewf1p2、mmlsの場合は003の行のStartを参照します。
この例では、206848となります。
また、オフセットはバイトで指定するため、この値をバイトに変換する必要があります。現在では、多くの場合1セクタ=512バイトとなっています。fdis、mmlsともセクタあたりのバイト数の値が出ているので、これも参考にするといいでしょう。
この例では、以下のように計算してオフセットを求めます。
206848 × 512 = 105906176
マウントしたいドライブのオフセットバイトは105906176が得られました。
では、イメージをマウントします。
mountのコマンドは以下の通りです。オプションは私がよく使っているものですが、もっといいのがあればそちらでOKです。
mount -o ro,loop,show_sys_files,offset=(オフセット値) (ewfマウントしたファイル名) (マウントポイント)
今回の例では、オフセットバイト値105906176、ewfマウントしたファイル名がewf1です。これを/mnt/windows_mountにマウントする場合は、以下のコマンドになります。
mount -o ro,loop,show_sys_files,offset=105906176 ewf1 /mnt/windows_mount
これで、普通のドライブとして参照することが可能になりました。
この先は、書き込みができない他は通常のファイル操作と変わりません。
様々なファイルを参照することが可能です。
(そして、何故か今回晒されまくる、手書きの下手くその絵・・・。だって他だと著作権とか色々な問題がががが)
SANS SIFTにマウントすれば、SIFT Workstarionにあるlog2timelineを始めとしたいろんなツールでの解析も可能になります。
それらのツールの使い方は、SANSのトレーニングを受けたり、色々なサイトを調べて学習していくことになるかと思います。
このあたりは毎回、大体同じパターンではあるものの、間を開けるとちょいちょい忘れますし、その度に調べるのも自分も面倒だったので、一通りメモしておきました。
ディスクフォレンジックの基本ともいえるディスクデュプリケートと、そのエビデンスのマウント。
このあたりをこれからやっていく人には、多少参考になれば、と思います。
環境によって多少やり方は変わると思うので、そこは上手く応用してくださいね。
さて・・・艦〇れでイベントが始まったな・・・。第二次南方作戦か・・・。今回は「丙!提督ゥ!」って言われそうだ・・・。