2005-09-09 『 暗号化とフォレンジック調査 』
■調査技術ゼミ 資料メモ
2005年9月5日に開催された、第二回 調査技術ゼミ『 暗号化とフォレンジック調査 』の PDF 資料をネットエージェントの Web で公開しています。
・ハードディスクパスワード
・フォレンジック・イメージ作成の手順
この資料のうち、「フォレンジック・イメージ作成の手順」に関するメモを忘れないうちに書いておきます。
今回は、ハードディスク全体が暗号化されていたり、暗号化ファイルをボリュームとしてマウントしている状況で、フォレンジック・イメージを作成するにはどのようなアプローチを取ることができるのか?を主なテーマとして扱っています。
当たり前のことですが、まともな暗号化製品を使っている環境下で無理やり平文でイメージを取得できる魔法は恐らくありませんので、暗号化ツールが持っているリカバリ処理を使うことを前提にしています。
■スライド3「ディスクの複製」
このスライドの二つの図では、複製元はすでに電源が落とされ、オフラインで複製を作成することを想定しています。
(上段の図)ハードディスク全体が暗号化されている場合、このハードディスクを KingDEMI のような複製装置で複製した場合、暗号化されたディスク全体がそのまま別のディスクへ複製されます。*1
この場合、セクタ単位でまったく同一のイメージが作成されるので、ハッシュ値は複製元と複製先で一致します。正常に複製されことをコンペアでもハッシュ値でも簡単に確認できるというメリットがあります。
デメリットとしては、やはり暗号化されているという点があります。しかし、これは後からリカバリ処理を行えばよい為、リカバリが可能な暗号化*2を行っているのであればそれほど問題にはなりません。ただし、複製とリカバリ処理それぞれに必要な時間を事前に考えておく必要があります。
もし特定のハードウェアでなければリカバリが難しいケース(例:セキュリティチップを搭載したPCでそれを利用した暗号化を行っている)では、いったん別の HDD に複製を作成し、その複製*3を特定のハードウェアでリカバリ処理するなどの手順が必要になるかもしれません。
(下段の図)
暗号化されたデータを、リカバリ処理などを通して平文へ戻し、それを複製する形を示しています。この場合、複製元は暗号化されており、複製は平文となっているためコンペアやハッシュ値による同一性の確認は取れません。
この方法が必要になるケースとしては、ハードウェア(セキュリティチップ等)と連携して暗号化処理を行っている場合が考えられます。例えば別のハードディスクへ複製し、その複製した HDD を PC へ接続しリカバリ処理を行おうとしても、それが出来ないようなケースが想定されます。この場合(安全のため暗号化された状態の複製を取得した後)複製元でリカバリ処理を実行し、平文の状態へ戻してから複製を取得するという流れになると考えられます。
リカバリ処理が行えない仕組みだとすると、オフラインではお手上げになる可能性が高いです。
■スライド4「起動・複製・確認」
ディスク全体での暗号化を考慮しない場合、通常は黄色い項目「起動・複製・確認」で利用するツールに注意を払えばよいわけですが、ディスク全体が暗号化されている場合にはリカバリ処理「復号化」に使うツールにもフォレンジック的な視点を持つ必要があります。
特に、複製元をいきなりリカバリ処理することは、リカバリ処理が万が一途中で失敗した時のことを考慮するととても危険です。複製したフォレンジック・イメージに対してのリカバリ処理が可能となっているかを事前に十分確認する必要があります。
逆に、暗号化製品やツールを選択する場合には、リカバリ処理がどうなっているか十分検討してから選択したほうがよいかもしれません。リカバリ処理がまともにできないツールを使っている場合、アンチ・フォレンジックとしては有効かもしれませんが、調査したくてもできないという状況に陥る可能性があります。*4
いずれにせよ、一連の処理に使ったツールやファームウェアは記録として残しておく必要があります。
■スライド5「データ アクセス(稼働中)」
ディスク全体が暗号化されている状態で、その上で稼働中の OS を使いハードディスクのイメージを作成しようとした場合を想定しています。例えば、dd などを使い、稼働中システムのディスクイメージを取得するといった方法になります。この場合、ディスクへのアクセスが行われた段階で、暗号化処理を行っているアプリケーションやドライバにより透過的にデータが復号化され、dd は平文状態でディスクイメージを取得することが可能になります。
この方法は稼働中システムのディスクを複製した場合と同じく、様々な問題を抱えてはいますが、平文の状態でディスクイメージを取得できるメリットがあります。
しかし、逆に稼働中システムから暗号化された状態のディスクイメージを取得することは難しくなります。一般的にはディスクへアクセスしようとした段階で復号化処理が行われてしまい、暗号化された状態のセクタへはアクセスできません。稼働中システムで暗号化された状態のディスクイメージを取得したいケースがもしあれば、特殊なデバイスドライバなどが必要になるかもしれませんが、現状そのようなドライバを持つ取得ツールがあるのかわかりません。どうしてもという場合にはやはり電源を落としたほうが早いと思われます。
■スライド6 「FAU利用時(稼働中)」
ハードディスク全体が暗号化された状態で、Forensic Acquisition Utilities(FAU)に含まれるdd.exeを使い、物理ディスク0(\\.\PhysicalDrive0)を複製している状態を示した図になります。
この場合、dd.exe の実行ログと取得したディスクイメージのハッシュ値を記録に残すことが可能です。しかし、複製元となった(暗号化されている)ディスクのハッシュ値は OS が稼働中であるためハッシュ値を計算しても常に変化してしまいます。
全ての暗号化アプリケーションで試したわけではありませんので、使われている暗号化のアプリケーションによっては、この方法ではうまく平文イメージが取得できない可能性もあります。私が愛用している PGP はこの方法でイメージ作成が可能性ですから、何かおかしな動きがあったときても(システムを停止することなく複製を作成し)調べることが可能です。
暗号化処理は行いたい、システムは停止したくない、でも不正アクセス調査やフォレンジック調査はしたい!という場合に備えて、せめて稼働中に複製が取得可能かを事前に検証しておいたほうがいいですよ。
暗号化のアプリケーションは多数存在するので、「調査できる?」と聞かれても検証してみないと実際のところはわかりません...*5
■スライド7 「リカバリ処理」
ディスク全体が暗号化されている環境で、オフラインでリカバリ(復号化)処理を行った後、平文の状態でイメージを作成する方法について示した図になります。
リカバリの方法や手順は暗号化ツールにより異なりますが、例えば PGP Whole Disk Encryption のリカバリと複製は以下のような流れになります。
1.システムの電源を落とす
3.パスフレーズを入力しリカバリ処理を開始する
4.暗号化されていたデータ(セクタ)がリカバリ処理により平文へ戻される
5.リカバリが終了すると平文状態のディスクへ戻る
6.一旦、電源を落とし複製用のシステム(ENBDとかHELIX)で起動する
7.複製を取得する
恐らく他のディスク暗号化製品も似たようなリカバリ手順をとることになると思いますが、このリカバリ手順が取れるとフォレンジック的には嬉しかったりします。
ポイントとなるのは、6 の一旦電源を落とすことができるか?というところです。リカバリ処理が終了した段階またはリカバリ処理のためにシステムが起動してしまうと、タイムスタンプなどもろもろが変化してしまいます。そのため、リカバリが終了したらシステムを起動することなく複製作業に入りたいわけです。
なお、リカバリ処理は複製元(オリジナル)で直接実行する必要はなく、複製(コピー)に対してリカバリ処理を行うほうが安心です。リカバリ処理が複製に対して実行することができるかどうかも製品選択のポイントになるのかもしれません。一般的にはハードディスクに依存して暗号化しているわけではないでしょうから、複製したディスクにもリカバリ処理がかけられると思いますが...
なお、リカバリに必要なパスフレーズなどは管理者さんから教えていただくなどしないと戻せませんので、きちんと管理されていない環境ではこの方法は取れません。
■スライド8 「EnCase PDEを利用した変換」
暗号化された状態でハードディスクを複製し、dd イメージで保存したとします。(ddイメージは暗号化されたデータが記録されている)
この dd イメージに対してリカバリ処理を実行する方法としては、いったん物理的なハードディスクへ復元してからリカバリ処理を行うか、dd イメージを仮想的なハードディスクとしてシステムへマウントしリカバリ処理を実行する方法が考えられます。
dd イメージを Windows 上でマウントする方法は幾つかありますが、物理ディスクとしてエミュレートする方法として EnCase Physical Disk Emulator (PDE) を利用する方法があります。EnCase PDE を利用すると、dd イメージを物理ディスクのひとつとして Windows で認識することができます。*6
EnCase PDE でマウントした(仮想)物理ディスク(実体は dd イメージ)は、VMware のゲスト OS のディスクとして割り当てることができます。(仮想)物理ディスクを割り当てたゲスト OS を作成し、暗号化ディスクをリカバリするための CD-ROM または FD から起動します。これで、(仮想)物理ディスクに対して、リカバリ処理を実行することができるようになります。当然、平文に戻したデータをディスクへ書き戻す処理が入りますので、書き込み内容を反映(キャッシュ)する仕組みが必要になります。*7
(仮想)物理ディスクでのリカバリ処理が完了した段階で、dd などを使いこのディスクのイメージを取得すれば、平文の状態でディスクイメージを入手することができます。*8
この手法は、EnCase の証拠ファイル形式を dd イメージに変換するときに使う方法だったりもしますが、いずれにせよリカバリ処理と dd イメージの取得には時間が必要となります。(でもこれが終わらないと解析できない・・・)
■スライド10 「仮想ディスク ボリューム」
暗号化ファイルを、論理ドライブ*9やフォルダにマウントして利用するタイプへの対応です。
Windows 上で論理ドライブとして暗号化ファイルがマウントされている場合には、何も考えずにそのまま dd if=\\.\ドライブ文字: などと指定すればドライブイメージの取得が可能になると思います。*10
NTFS のジャンクションポイントを使いフォルダに暗号化ボリュームをマウントしている場合には、dd の入力パラメータとしてボリューム ID の指定が必要になります。*11
FAU の dd.exe は if= の値としてボリューム ID を指定することができますから、暗号化ファイルのボリューム ID さえ確認できれば取得することが(たぶん)できます。
現在のドライブリストなどを確認する方法については、スライド11で紹介していますので、そちらを参照してください。*12
なお、この暗号化されたファイルをボリュームとして利用する方法は、Linux などでも使われる方法になります。今回、調査している最中にid:wakatonoさんにいろいろと教えていただいたのでこの場をお借りしてお礼申し上げますm(_ _)m
ちょっと今回調べてきれなかったのですが、Mac OS X には FileVault という機能があり、ユーザーフォルダの内容を暗号化できるようです。この暗号化フォルダのイメージを稼働中に取得が可能かテストしてみたいところなのですが...あと Mac OS X には暗号化ディスクイメージの作成機能があるのでこちらも試してみたかったり...と Mac OS X への物欲がまたまたでちゃうわけです...orz
■スライド12 「仮想ディスクへのアクセス」
Windows でのお話になりますが、あるユーザーが暗号化ファイルを F: ドライブとしてマウントしている場合に、RunAS などを使い別のユーザーで起動した CMD.EXE から F: ドライブへのアクセスが可能か?というお話です。*13
最も確実な方法は、暗号化ファイルをマウントしている該当ユーザーで dd.exe なりを実行しイメージを作成することですが、セキュリティ上の理由から一般ユーザーに CMD.EXE の起動やプログラムの実行を許可していない場合があります。*14
この場合、管理者権限を持つユーザーに切り替えて作業する必要がありますが、そもそもそういった作業が想定されていなかったり、管理者ユーザーに切り替える為にログオフすると、暗号化ファイルのマウントが解除されてしまうなど、事前にいろいろと手順を考えておく必要があります。
セキュリティを高めるのはぜひやっていただきたいのですが、インシデント・レスポンスなどで使うツールは管理者権限で実行できるようにぜひ配慮をお願いしますm(_ _)m
■スライド13 「暗号化ファイル」
暗号化されたファイルを復号化し、暗号化されている状態のファイルと平文の状態とでコンペアをとったり、ハッシュ値を計算すると当然値が一致しませんよね〜というお話です。これは一致しないのが通常ですから、どれを復号化して平文のデータとしたのかを記録にしっかり残す、可能であれば暗号化された状態のファイルも保持しておく必要があるのか検討する必要がありますね、というのが上段の図です。
下段の図が示しているのは NTFS の暗号化ファイルシステム(EFS)のように OS が稼働中であれば透過的に復号化が行われ、コピー元(EFSで暗号化されている状態)とコピー先(EFSが解かれ平文の状態)の内容は、お互いをコンペアしたりハッシュ値を計算すると一致しますよね、というお話です。
■その他
ある日、突然やってきたシステム管理者に「君の暗号化ボリュームをいまから複製するからね」とか言われると、何も悪いことをしてなかったとしても良い気分はしませんよね。
できればそういった PC の利用者や社内の雰囲気、誤解による二次被害といったことへも配慮できるような保全(複製)の仕組みを、ディスクの暗号化等を導入する組織は考えておいていただけると、個人的には嬉しいなぁと思う今日この頃だったりします。
*1:複製の形態としては物理的な複製かddイメージ、いずれにせよ中身は暗号化された状態で複製される
*2:複製に対してもリカバリが行える必要があります
*3:複製のそのまた複製ということになるかもしれませんが
*4:もちろん誰でもリカバリできるようなものではなく、管理者が必要になった場合にはリカバリできるという意味です
*5:ご質問としてはよくでるのですが、全ての環境やアプリケーションでテストしているわけではないので大抵は「わかりません」という回答になってしまいます
*6:単にマウントするだけであれば他にもいろいろツールがあります
*7:EnCase PDE にはマウントしたイメージへの書き込みをキャッシュし、擬似的に反映する仕組みがあります
*8:ただし、これまた広く検証したわけではないので実際にリカバリ処理がうまくいくかどうかは試してみないとわかりません、物理ディスクへ戻してからリカバリしたほうが確実かもしれません
*10:例えば USB メモリの暗号化などへ対処するには、ドライブとして認識された状態で、論理ドライブに対してddを実行して複製が可能かを試してみることになると思いますが、これまた色々な実装があるので一概にうまくいくかは試してみないとわかりません
*11:例えば dd if=c:\temp のようにジャンクションポイントとして利用しているフォルダを指定してもうまくイメージを作成できません、単にフォルダ配下のファイルがコピーされます
*12:手元のXP SP2な環境で試したところ、PGP の仮想ディスクをジャンクションポイントを使いマウントしている場合、mountvolコマンドでボリュームIDを確認することはできますが、そのボリュームをどこにマウントしているかは取得できないようで、“マウントポイントなし”と表示されます
たこ
2006/07/14 11:36
pde形式の二つのメリットはなにですか??至急知りたいので。。。。。
