出典: SANS Internet Storm Center – https://isc.sans.edu/diary/rss/32432
原題: How to collect memory-only filesystems on Linux systems, (Wed, Oct 29th)
Linuxのメモリ専用ファイルシステムからのフォレンジックデータ収集方法
Linuxシステムにおけるtmpfsやdev/shmなどのメモリ専用ファイルシステムは、揮発性の一時ストレージとして広く利用されています。攻撃者がこれらの領域に痕跡を隠すケースが増加しているため、迅速かつ正確なフォレンジックデータ収集が求められています。本記事では、これらのファイルシステムから効果的に証拠を収集する方法を解説します。
主要なポイント
- メモリ専用ファイルシステムの性質:tmpfsやdev/shmは物理メモリ上に構築される揮発性ファイルシステムであり、システム再起動やアンマウントでデータが消失します。
- マウントポイントの特定:「mount | grep tmpfs」コマンドで現在マウントされているtmpfsの場所を確認し、対象領域を特定します。
- メタデータの先行収集:ファイルのinode情報(タイムスタンプやアクセス権など)を先に収集し、後からファイル内容をコピーすることで、アクセス時刻の更新を防ぎます。
- ファイル内容の安全なコピー:「cp -a」や「tar」コマンドを用いて属性を保持しつつファイルをバックアップし、証拠の改変を防ぎます。
- 揮発性の考慮と迅速な対応:データは揮発性であるため、システムのシャットダウンや再起動前に速やかに収集を行う必要があります。
技術的な詳細や背景情報
Linuxのtmpfsは物理的なブロックデバイスに依存しないため、「dd」コマンドなどでブロック単位のイメージを取得することができません。これはフォレンジック的に完全なイメージングが困難であることを意味します。したがって、ファイル単位でのメタデータおよび内容の収集が現実的な手法となります。
具体的には、まず以下のコマンドでメタデータを収集します。これはファイルのinode情報を取得し、タイムスタンプやアクセス権限を含む詳細な情報を記録するものです。
find /dev/shm -exec stat -c '0|%N|%i|%A|%u|%g|%s|%X|%Y|%Z|%W' {} \; | \
sed -e 's/|W$/|0/' -e 's/|?$/|0/' | \
ssh foo@system "cat - > $(hostname)-dev-shm-bodyfile"
このコマンドは、statコマンドの出力を加工し、リモートシステムへ安全に転送します。作成時刻(birth time)を取得できない古いstatバージョンにも対応しています。出力はThe Sleuth Kitのmactimeプログラムでタイムライン解析に利用可能なbodyfile形式です。
次に、ファイル内容を収集します。以下のコマンド例は、/dev/shm内の通常ファイルのみをtarで圧縮し、ssh経由でリモートに転送します。
find /dev/shm -type f -print | tar czvO -T - | ssh foo@system "cat - > $(hostname)-dev-shm-fs.tgz"
この方法により、ファイル名や内容を保持しつつ効率的に収集が可能です。ファイルのハッシュ値を収集先で計算し、証拠の整合性を検証します。
影響や重要性
攻撃者は一時的な痕跡を隠すためにtmpfsやdev/shmを悪用することが増えています。これらの領域は揮発性であるため、適切なタイミングでのデータ収集が不可欠です。従来のブロックデバイスイメージングが使えないため、ファイル単位でのメタデータと内容の両方を確実に取得する手法は、フォレンジック調査の成功率を大きく向上させます。
また、この手法はLinuxだけでなく、FreeBSDやSolarisなど他のUnix系システムでも応用可能であり、幅広い環境でのインシデントレスポンスに役立ちます。
まとめ
Linuxのメモリ専用ファイルシステム(tmpfsやdev/shm)からのフォレンジックデータ収集は、揮発性の特性とブロックデバイス非依存のために特殊なアプローチが必要です。まずinodeメタデータを収集し、その後ファイル内容を安全にコピーすることで、証拠の改変を防ぎつつ効率的にデータを取得できます。迅速な対応と適切なツールの活用により、攻撃者の痕跡を見逃さない強力なフォレンジック調査が可能となります。
この手法は多くの実績があり、今後のLinuxインシデントレスポンスにおいて重要な技術となるでしょう。





