ライブ・フォレンジックに関するネタのまとめ

先日のセミナーはなんとか無事に終えることができました。できれば資料を公開したいのですが、そのままだとちょっとまずそうなので(別に内容はたいしたことないのですが)、ポイントだけここにまとめておきたいと思います。(と言いながら、書いているうちに結構なボリュームになってしまいました。)

なお英語では "Live Forensics" や "Live Forensic Analysis" などと呼ばれることが多いようですが、ここでは「ライブ・フォレンジック」としました。

Agenda

  1. ライブ・フォレンジックの必要性
  2. ライブ・フォレンジックの特徴
  3. ライブ・フォレンジックの課題

ライブ・フォレンジックの必要性

これまでの伝統的なデジタル・フォレンジックでは、調査対象となるシステムをシャットダウン(または電源断)したあと、ディスクイメージを作成して、そのイメージファイルに対して文字列の検索や削除ファイルの復旧といった調査、分析を行うことが主流だった。この方法が有効なのは、証拠となる情報がなんらかのデータとしてHDD内に残されていることが多く、このデータを抽出することが重要であったからである。しかし最近ではこのようなディスクイメージの調査だけでは限界も見えてきた。これには攻撃側と防御側の 2つの要因があげられる。

攻撃側の要因

攻撃側の要因としては、攻撃手法が高度になることによって、HDDに代表される不揮発性情報の調査では不十分な場合が多くなってきたことがある。いくつか例を示す。

(1) メモリにしか証拠が残らないタイプの攻撃
例えば Metasploitプロジェクトで公開されている SAM Jucierというツールは、ターゲットのメモリ内の Lsassプロセスに対して直接 Injection攻撃を行うことによって、HDDに一切痕跡を残さずにパスワードハッシュ情報を取得することができる。[4]
また SELF(Shellcode ELF Loader)のように、HDD上にファイルを作成せずに直接ターゲットのメモリ上でバイナリを実行するというテクニックもある。[5]
このような攻撃ではメモリにしか証拠が残らないので、いくらHDDを調査しても無意味である。

(2) アンチ・フォレンジックによる妨害
攻撃側が意図的にフォレンジックに対する妨害工作を行った場合、ディスクイメージから得られるデータは必ずしも信用できない。たとえば、ファイルシステムを解析することにより、各ファイルのタイムスタンプ(作成日時や最後にアクセスされた日時など)を調べることができるが、このようなデータは攻撃者によって改竄することが可能である。[4]

防御側の要因

一方、防御側の要因では、ディスクイメージの取得自体が困難なケースも少くない。

  • HDD全体が暗号化されていて、ディスクイメージを取得しても復号しなければ読めない
  • ミッション・クリティカルなシステムの場合、そもそもシステムを停止することができない
  • 対象となるストレージ容量が非常に大きい場合、ディスクイメージの作成は現実的ではない
  • 調査には本来不要なデータもまとめて取得するため、プライバシーや機密性の観点で問題がある

こうした理由から、稼働中のシステムに対するフォレンジック(ライブ・フォレンジック)が求められるようになってきている。

ライブ・フォレンジックの特徴

ライブ・フォレンジックとは、揮発性情報(または不揮発性情報)をシステムが稼動状態のまま取得し、収集した情報を調査・分析する手法や技術のことである。このような調査技術自体はそれほど新しいものではなく、インシデント・レスポンスの中で稼働中システムから必要な情報を取得することはこれまでにも行われていた。しかし近年の攻撃手法の高度化や、メモリイメージ解析技術の発展などによって、あらためて注目されている分野である。

ライブ・フォレンジックには大きくわけて、(1)ライブ・レスポンスと(2)メモリイメージ解析の2つの手法がある。

揮発性の順序 (Order of Volatility)

ライブ・フォレンジックでは主に揮発性情報を取り扱うため、揮発性の順序(揮発しやすさ、失われやすさ)をよく考える必要がある。RFC3227(Guidelines for Evidence Collection and Archiving)[8]に順序の目安がのっている。また "Forensic Discovery"[7] にも同じく揮発性順序についての記述がある。その内容を以下の表に示す。

Registers, peripheral memory, caches, etc. nanoseconds
Main Memory nanoseconds
Network state milliseconds
Running processes seconds
Disk inutes
Floppies, backup media, etc. years
CD-ROMs, printouts, etc. tens of years

これを考慮すると、手順としてはまず最初にメモリイメージを作成し、そのあと他の情報を取得すべきである。

ライブ・フォレンジックの制約

ライブ・フォレンジックには伝統的なデジタル・フォレンジックの限界を補うさまざまな利点(攻撃側、防御側要因への対応)があり、必要な情報を効率よく取得できる。しかし同時に、制約も多い。

システムに与える影響
ライブでの証拠取得の行為は、それ自体が証拠を改変する危険性を伴う。なにをするにしてもメモリ内のデータが影響を受けることは避けられない。ただ乱暴な言い方をすれば、どっちみち失われる情報だから、なにもしないよりは取得したほうがよい。
証拠取得の時間
ライブでの証拠取得は時間との戦いでもある。OOVでも見たように1秒以内のごくわずかな間に状態が変化してしまう。そのため事前の準備が大事になる。
システムへのアクセス
稼働中のシステムから情報を取得するためには、なんらかの手段によってシステムにアクセスできることが必要になる。物理的あるいはネットワーク的にアクセス可能であることはもちろん、アクセスに必要な権限(管理者権限のクレデンシャルなど)も必要になる。
再現可能性
ライブ・フォレンジックはその手法の性質上、調査結果の再現性を保証することが難しい。そのため再現性がえられるメモリイメージ解析は重要である。
ライブ・レスポンス

ライブ・レスポンスは稼働中のシステム上で証拠収集を行うものである。取得できる証拠情報の主な対象は次のとおりである。

またHDDが暗号化されているような場合では、ディスクイメージを稼働中に作成することもある。

証拠情報の取得の方法としては、大きく2つに分類できる。
(1) Local Response
コンソールにアクセスして、コマンドを実行する。システム内のバイナリは改ざんされている可能性があるため、スタティックリンクされたバイナリをあらかじめCD-ROM等で用意しておくのが一般的である。
(例) Sysinternals[9], Helix[10], WFT[11], Rapier[12]

(2) Remote Response
対象システムの管理者権限をもっている場合、psexecやWMIを利用してリモートからコマンドを実行することができる。またツールによっては専用のリモートエージェントをあらかじめシステム上にインストールしておく方法もある。
(例) FSP[13], Mandiant[14], ProDiscover IR[15], Encase Enterprise[16]

ライブ・レスポンスとメモリイメージ解析との違い (ライブ・レスポンスの限界とメモリ解析の利点)

ライブ・レスポンスは稼働中のシステムに対して行うので、取得できる情報の元となるデータはほとんどメモリ内に存在する。従ってメモリイメージ解析によって得られる情報と比較すると、その種類についてはほとんど差がない。しかし両者には大きな違いがある。メモリイメージ解析による主な利点は次のとおりである。[17]

システムへの影響を最小限に抑えることができる
メモリイメージ取得の際に影響を及ぼすことは避けられないが、多数のコマンドを実行しなければならないライブ・レスポンスと比べれば限定的と言える。
rootkitなどによるアタッカーの影響を受けにくい
対象システムに rootkitがインストールされているとすると、ライブ・レスポンスで得られる情報は改ざん、隠ぺいなどによって正確ではない可能性がある。メモリイメージの解析であればそのような妨害をかなり避けることができる。
同じ解析を繰り返し実行することができる
ライブ・レスポンスは一回限りでやり直すことができない。また結果を再現することもできない。メモリイメージ解析は、一度イメージを取得してしまえば、解析は何度でもでき、結果に再現性もある。
あとから別の解析手法を追加することができる
ライブ・レスポンスではあとから追加情報がほしいと思っても不可能だが、メモリイメージを取得してあれば可能である。
メモリイメージの取得

取得する方法は、(1) ハードウェアによるもの、(2)ソフトウェアによるもの、(3)仮想環境によるもの、に区分できる。

(1) ハードウェアベースの方法
いくつかのアプローチがある。
(a) 専用のPCIカードをあらかじめ装着しておき、DMAでCPUを介さずに直接メモリからデータをコピーする。ただしまだ研究ベースのものがほとんどである。
(例) Tribble[18], CoPilot[19]

(b) FirewireIEEE1394)インタフェースを利用し、接続した外部機器から直接メモリのデータをコピーする。これが可能なのは Firewireの仕様である(読み込みだけでなく書き込みも可能)。これは見方をかえると稼働中のシステムのメモリに対する攻撃に利用できる。実際、スクリーンセーバーなどパスワードロックがかかった状態のWindowsマシンに対して、ロックを解除するツールも公開されている。
(例)1394memimage [20]

(c) システムの電源断のあと、専用ツールを起動してメモリデータを取得する。今年プリンストン大学の研究者から Coldboot Atackと呼ばれる攻撃手法が明らかにされた[21]。その研究の中で、システム停止の直後に強制的に低温にしたメモリはかなりの時間データを保持していることが確認された。そこでこれを利用すると、システム停止後にメモリイメージ取得用のツールを起動してデータを取ることができる。ただし BIOSの設定やメモリの種類(ECC)によっては再起動時にメモリの中身をクリアするため、その場合この手法は使えない。
(例) Coldboot[21], msramdump[22]

(2) ソフトウェアベースの方法
これもいくつかのアプローチがある。
(a) Crash dumpを利用する (windows, linux, *nix)
(例) crash[23], lkcd[24], Debugging tools for Windows[25], LiveKD[26]

(b) Windowsの場合
\Device\PhysiaclMemory オブジェクトやAPIを利用してメモリイメージを取得することができる。サポートしているOSのバージョンに違いがあるので注意が必要である。
(例) mdd[27], win32dd[28], FastDump[29], WinEn[30]

(c) Linuxの場合/dev/mem, /proc/kcore を利用する。

(d) ノートPCの場合hibernation ファイル(hiberfil.sys)を利用する。
ノートPCでは、サスペンドのほかに休止状態あるいはハイバネーションと呼ばれる機能をサポートしている。この場合、電源を切っても状態が保持されるように、その時点のメモリイメージをHDDにファイルとして書き出すようになっている。このファイルは他の方法で取得したRawイメージとは異なり Windows独自の形式をしているが、これを解析するツールが公開されている。
(例) Sandman Framework[31][32]

(3) 仮想環境による方法
VMwareなどの仮想環境を利用している場合、VMサスペンドすると、その時点でのメモリイメージがファイルとして作成されるのでこれを利用する。Rawイメージとは形式が異なるものの、大半のメモリ解析ツールは VMwareの形式をサポートしている。

メモリイメージの解析

次に取得したメモリイメージのファイルをツールを用いて解析する。この分野は近年最も研究が進んだ領域と言える。これまでは単純な文字列検索くらいしか方法はなかったが、現在ではメモリ内のOSのカーネル構造を解析して情報を収集することができるツールが多数公開されている。[33][34][35]

解析ツールの例

  • WMFT[36]
  • Windows IR/CF Tools[37]
  • PTFinder[38][39]
  • Volatility[40]
  • FACE(ramparser)[41]
  • HBGary Responder[42]
  • Kernel Memory Space Analyzer[43]

メモリイメージ内のカーネル情報を再構築するには主に2つの方法がある。[33][35]

Tree & List Traversal
たとえば、Windowsの EPROCESS構造体には二重リンクリストがあるため、これを順次たどることで、稼働中のプロセスに関する情報を得ることができる。しかし、DKOM(Direct Kernel Object Manipulation)の問題などがあり、正確な情報を取得できない危険性がある。(たとえば FU rootkitなどはDKOMを使ってプロセス情報を改ざんする。)
Fingerprint Search
上記手法に対して、メモリイメージから特定のデータ構造のパターンをくまなく検索する新しい手法が生まれた。最近の主流はこちらの方法である。(たとえば PTFinder, Volatilityなど)

課題として、メモリ内のデータ構造は OSの種類やバージョンに依存するので、ツール利用時の制約となる。また PAEモード(アドレス拡張)への対応も必要である。

ライブ・フォレンジックの課題

ライブ・フォレンジックに対する主な脅威には、「証拠取得に対する脅威」と「攻撃検出に対する脅威」がある。

証拠取得に対する脅威

(1) 証拠を改変するリスク
これはライブ・フォレンジックという手法の性質上、避けようがないものである。そのためできるだけ影響を少なくする工夫が必要になる。今のところ、最も影響が少ないのは以下の方法である。

  • ハードウェアベースのメモリイメージ取得
  • 仮想環境でのメモリイメージ取得
  • Hibernationファイルの取得

(2) カーネルルートキットによる隠蔽
システム稼働中でのディスクイメージ作成を妨害する rootkit(DDefy)[44]に関する研究がある。また同様に、その他のライブ・レスポンスに関しても rootkitの影響を受ける。これはメモリイメージ解析である程度回避することが可能である。

(3) メモリイメージ取得の妨害
Shadow Walker[45]という rootkitは、ページ・フォールト例外ハンドラの置き換えとTLBの改ざんにより、メモリ上のデータを隠ぺいする機能を持っている。これを使えばメモリイメージ取得を妨害できることになる。またAMDベースのシステムではDMAによるメモリイメージ取得を妨害できるという研究結果が報告されている[46]。

(4) プライバシー、機密性とのバランス
ディスクイメージ作成と同様に、メモリイメージ作成では、調査に不必要なデータを取得してしまう危険性がある。たとえば暗号化のためのキーやパスワードなどの情報、プライバシーにあたる情報などである。

攻撃検出に対する脅威

メモリイメージ解析によって、rootkitによる隠ぺいやその他のアンチ・フォレンジック手法の大部分に対抗することができる。しかし最近では、さらにこれを回避する攻撃もある。

メモリイメージ解析でも検出できない新しいタイプの攻撃としては、Malware Taxonomy[47]で Type 3に分類されるもので、これはVMM (Virtual Machine Monitor)を利用した攻撃である。対象となるハードウェアは限定されるものの、この攻撃が成功するとターゲットのシステムが強制的に仮想環境のゲストOSに移行してしまう。しかもシステムは稼働したままである。この分野は最近研究が盛んで、Bluepill[48][49], VMM rootkit[51], Vitriol[52]などがある。

ほかにもハードウェアベースの攻撃で、同様に検出が困難なものがある。Firmwareベースの攻撃[50]や SMM rootkit[54][55]などである。

このような攻撃は、通常の rootkit対策では検出することも回復することもできない。そのため専用の検出ツールを用いて対応する必要がある[53][56]。またこれらはターゲットとなるOSには依存しないものの、ハードウェア(ChipsetやCPUなど)に大きく依存する攻撃である。そのため影響範囲は限定的であり、個別に攻撃を検出するというアプローチでも現状では十分対応できる。

活用方法

ライブ・フォレンジックを有効に活用するためには、事前の準備が肝要である。環境、ツール、手順などを整備しておかないと、インシデント発生時に適切に対応するのは難しい。またフォレンジックはあくまで事後の「対応」にフォーカスしたものであり、「防止」や「検出」のセキュリティ対策とのバランスが要求される。ライブ・フォレンジック活用の第一歩としては、なにはともあれメモリイメージを取得できる準備をすることである。

今後の課題

ライブ・フォレンジックの活用が広まっていくには、より手軽に利用できる環境、ツール、手順が求められる。また最新の攻撃手法に対して、証拠となるデータ取得の信頼性をどのように確保するのか、検討が必要である。さらにメモリイメージ取得技術の向上とさらに効果的な解析技術の開発も重要である。

メモリイメージ解析の技術に関しては近年急速に研究がすすんでいる。今年この分野の研究者らによってOpen Memory Forensics Workshop (OMFW)[57]が開催されるなど、機運も高まっている。今後のさらなる発展に期待がもてる。

参考資料およびツール

本文中で参照している資料やツールに関する情報(URL)を以下に示す。ライブ・フォレンジック全般について、私が調べた範囲で一番よくまとまった資料は Live Forensics Tutorial[58]である。これはフォレンジック分野で著名な研究者らによるUsenixカンファレンスのチュートリアル資料である(らしい)。この分野に興味のある方に一読をおススメする。

[1] 情報セキュリティ白書2008 第II部
http://www.ipa.go.jp/security/vuln/20080527_10threats.html
[2] デジタル・フォレンジック研究会
http://www.digitalforensic.jp/wdfitm/wdf.html
[3] Extrusion Detection (ISBN 0321349962)
http://www.taosecurity.com/books.html
[4] Defeating Forensic Analysis
http://www.metasploit.com/data/antiforensics/CEIC2006-Defeating_Forensic_Analysis.pdf
[5] Advanced Antiforensics : SELF
http://www.phrack.org/issues.html?issue=63&id=11#article
[6] Top 7 New IR/Forensic Trends In 2008
http://forensics.sans.org/community/top7_forensic_trends.php
[7] Forensic Discovery (ISBN 020163497X)
http://www.porcupine.org/forensics/forensic-discovery/
[8] 証拠収集とアーカイビングのためのガイドライン (Guidelines for Evidence Collection and Archiving)
http://www.ipa.go.jp/security/rfc/RFC3227JA.html
[9] Sysinternals
http://technet.microsoft.com/en-us/sysinternals/default.aspx
[10] Helix
http://www.e-fense.com/helix/
[11] WFT(Windows Forensic Toolchest)
http://www.foolmoon.net/security/wft/
[12] Rapier
http://code.google.com/p/rapier/
[13] FSP(Forensic Server Project)http://sourceforge.net/project/showfiles.php?group_id=164158&package_id=191690
[14] Mandiant First Response
http://www.mandiant.com/software/firstresponse.htm
[15] ProDiscover IR
http://www.techpathways.com/ProDiscoverIR.htm
[16] Encase Enterprise
http://www.guidancesoftware.com/products/ee_index.asp
[17] Computer Forensics: Results of Live Response Inquiry vs. Memory Image Analysis
http://www.cert.org/archive/pdf/08tn017.pdf
[18] A Hardware-Based Memory Acquisition Procedure for Digital Investigations
http://www.digital-evidence.org/papers/tribble-preprint.pdf
[19] Copilot - a Coprocessor-based Kernel Runtime Integrity Monitor
http://www.usenix.org/events/sec04/tech/full_papers/petroni/petroni_html/
[20] pythonraw1394 (1394memimage)
http://storm.net.nz/projects/16
[21] Cold Boot Attacks on Encryption Keys
http://citp.princeton.edu/memory/
[22] msramdump
http://www.mcgrewsecurity.com/tools/msramdmp/
[23] crash
http://people.redhat.com/anderson/
[24] LKCD
http://lkcd.sourceforge.net/
[25] Debugging tools for Windows
http://www.microsoft.com/japan/whdc/devtools/debugging/default.mspx
[26] LiveKD
http://technet.microsoft.com/ja-jp/sysinternals/bb897415(en-us).aspx
[27] mdd
http://www.mantech.com/msma/MDD.asp
[28] win32dd
http://win32dd.msuiche.net/
[29] FastDump
http://www.hbgary.com/download_fastdump.html
[30] WinEn
http://www.guidancesoftware.com/
[31] Sandman Framework
http://sandman.msuiche.net/
[32] Windows Hibernation File for Fun and Profit.
http://www.blackhat.com/presentations/bh-usa-08/Suiche/BH_US_08_Suiche_Windows_hibernation.pdf
[33] Memory Analysis
http://www.qcert.org/news/memory_analysis.pdf
[34] Volatile Memory Forensics
http://layerone.info/archives/2008/Datagram%20and%20Vidiot%20-%20L1%202008%20-%20Volatile%20Memory%20Forensics.pdf
[35] Physical Memory Forensics
http://www.blackhat.com/presentations/bh-usa-06/BH-US-06-Burdach.pdf
[36] WMFT
http://forensic.seccure.net/
[37] Windows IR/CF Tools
http://sourceforge.net/project/showfiles.php?group_id=164158
[38] Searching for Processes and Threads in Microsoft Windows Memory Dumps
http://www.dfrws.org/2006/proceedings/2-Schuster.pdf
[39] PTFinder
http://computer.forensikblog.de/en/2007/11/ptfinder_0_3_05.html
[40] The Volatility Framework
https://www.volatilesystems.com/default/volatility
[41] FACE: Automated Digital Evidence Discovery and Correlation.
http://www.dfrws.org/2008/proceedings/p65-case.pdf
[42] HBGary Responder Professional
http://www.hbgary.com/responder_pro.html
[43] Kernel Memory Space Analyzer Version 8.1 http://www.microsoft.com/downloads/details.aspx?FamilyId=E84D3B35-63C3-445B-810D-9FED3FDEB13F&displaylang=en
[44] Low Down and Dirty: Anti-Forensic Rootkits
http://www.blackhat.com/presentations/bh-jp-06/BH-JP-06-Bilby-up.pdf
[45] “Shadow Walker”: Raising The Bar For Rootkit Detection
http://www.blackhat.com/presentations/bh-usa-05/bh-us-05-sparks.pdf
[46] Beyond The CPU: Defeating Hardware Based RAM Acquisition Tools (Part I: AMD case)
https://www.blackhat.com/presentations/bh-dc-07/Rutkowska/Presentation/bh-dc-07-Rutkowska-up.pdf
[47] Introducing stealth malware taxonomy
http://www.invisiblethings.org/papers/malware-taxonomy.pdf
[48] IsGameOver(), anyone?
https://www.blackhat.com/presentations/bh-usa-07/Rutkowska/Presentation/bh-usa-07-rutkowska.pdf
[49] bluepillproject.org
http://bluepillproject.org/
[50] Hacking the Extensible Firmware Interface
https://www.blackhat.com/presentations/bh-usa-07/Heasman/Presentation/bh-usa-07-heasman.pdf
[51] Hooking CPUID, A Virtual Machine Monitor Rootkit Framework
http://www.rootkit.com/newsread.php?newsid=758
[52] Hardware Virtualization Based Rootkits
http://www.blackhat.com/presentations/bh-usa-06/BH-US-06-Zovi.pdf
[53] Don't Tell Joanna, The Virtualized Rootkit Is Dead
https://www.blackhat.com/presentations/bh-usa-07/Ptacek_Goldsmith_and_Lawson/Presentation/bh-usa-07-ptacek_goldsmith_and_lawson.pdf
[54] Security Issues related to Pentium System Management Mode
http://cansecwest.com/csw06/csw06-duflot.ppt
[55] A New Breed of Rootkit: The System Management Mode (SMM) Rootkit
http://www.blackhat.com/presentations/bh-usa-08/Embleton_Sparks/BH_US_08_Embleton_Sparks_SMM_Rootkits_Slides.pdf
[56] Insane Detection of Insane Rootkits: Chipset Based Approach to Detect Virtualization Malware
http://www.blackhat.com/presentations/bh-usa-08/Bulygin/bulygin_Chip_Based_Approach_to_Detect_Rootkits.pdf
[57] Open Memory Forensics Workshop (OMFW)
https://www.volatilesystems.com/default/omfw
[58] Live Forensics Tutorial
http://www.cs.uno.edu/~golden/Tutorials/USENIXANNUAL2008/
[59] Real Digital Forensics (ISBN 0321240693)
[60] Windows Forensic Analysis (ISBN 159749156X)
[61] Malware Forensics (ISBN 159749268X)