【入門編】 Linuxメモリフォレンジック(LiMEの活用) – インシデントレスポンス & フォレンジック(DFIR)防御ガイド

こんにちは!SOCアナリストの現場へようこそ。

今日は、Linuxサーバーの「心臓部」とも言えるメモリの中身を覗き込む、少しエキサイティングな技術のお話をします。

システムに侵入した攻撃者は、まるで泥棒が部屋のどこかに隠し鍵を置くように、メモリという「作業机」の上に悪意あるプログラムや痕跡を残します。でも、電源を切ってしまえばその机は真っ白に消えてしまう……。だからこそ、現場のエンジニアにとって「メモリを丸ごとコピー(ダンプ)」する技術は、究極の証拠探しなんです。

今回は、そのために使われる強力なツール「LiME(Linux Memory Extractor)」を使った手順を、一緒に紐解いていきましょう!

—

そもそも、メモリフォレンジックって何?

家の防犯に例えてみましょう。泥棒が家に侵入したとき、彼らは「窓を割る(攻撃)」だけでなく、「部屋の中で作業(実行)」をしますよね。

  • ディスクフォレンジック: 泥棒が家を出た後に、床に残った足跡や、持ち去ったものの記録を調べること。
  • メモリフォレンジック: 泥棒がまだ中にいるかもしれない状態で、部屋の様子をカメラで撮影したり、机の上のメモを読み取ること。

メモリには、現在実行中のプログラム、入力したパスワード、暗号化キーなど、犯人の指紋がべったりと残っています。これを取り出すのが、今日の目的です。

—

ステップ1:LiMEでメモリを「まるっと」キャプチャする

LiMEは、Linuxの心臓部である「カーネル」に直接働きかけて、メモリの内容を吸い出すツールです。まずは対象サーバーでビルド(組み立て)作業を行います。

1. 準備とビルド

サーバーには、カーネルのソースコード(ヘッダー)が必要です。これがないと、「どこにメモリがあるか」という地図が読めません。

# 必要なパッケージをインストール(Ubuntu系の場合)
sudo apt update
sudo apt install linux-headers-$(uname -r) build-essential

# LiMEのソースをダウンロードしてきてビルド
git clone https://github.com/504ensicsLabs/LiME
cd LiME/src
make
# 成功すると 'lime.ko' というカーネルモジュールが生成されます!

2. メモリの吸い出し

ここでいよいよメモリをダンプします。insmodというコマンドで、LiMEという「特殊な掃除機」をサーバーの心臓部に接続するイメージです。

# メモリをファイルに出力するコマンド
# path: 保存先のファイル名
# format: raw(そのままの形式)
sudo insmod lime.ko "path=/tmp/mem_dump.lime format=raw"

これだけで、/tmp/mem_dump.limeというファイルに、サーバーの全メモリ情報が保存されます。※サーバーの容量によっては数GB〜数十GBになるので、ディスク容量には注意してくださいね!

—

ステップ2:Volatilityで「犯人の痕跡」を読み解く

吸い出したメモリデータは、人間が見てもただの数字の羅列(バイナリ)です。これを解析するための「翻訳機」がVolatilityというツールです。

例えば、メモリの中から「今動いている怪しいプロセス」をリストアップするには、以下のコマンドを使います。

# Volatility 3を使用する場合の例
# -f: ダンプしたファイル
# windows.pslist: (Linuxの場合はlinux.pslistなどのプラグインを使用)
python3 vol.py -f /tmp/mem_dump.lime linux.pslist

この結果を見ると、「なぜこのWebサーバー上で、見覚えのないpythonスクリプトが動いているんだ?」といった、侵入の決定的な証拠が見つかることがあります。

—

現場のエンジニアへ、3つのアドバイス

1. 「Live」を意識する: サーバーの電源をいきなり落とすと、犯人が仕掛けた「自滅プログラム」が作動したり、メモリ上の証拠が完全に消滅します。まずはLiMEでダンプを取る、これが鉄則です。
2. 検証環境で練習を: 本番環境でinsmod(カーネルモジュールの挿入)を失敗すると、システムがパニックを起こして停止することがあります。必ず検証用の仮想マシンで、一度成功させてから挑んでください。
3. 解析は隔離環境で: 吸い出したメモリダンプには、重要な個人情報やパスワードが含まれています。解析は、インターネットから切断された安全なPCやサーバーで行うようにしましょう。

—

最後に:恐れることはありません

最初は「カーネルモジュール」だの「バイナリ解析」だのと聞くと身構えてしまうかもしれません。でも、一つずつやってみれば、実はそんなに難しいことではないんです。

「泥棒がどこで、何をしているのか」を自分の手で突き止める。このスキルは、どんなに高度なセキュリティツールを導入しても決して代わりが効かない、あなたのエンジニアとしての「強力な武器」になります。

少しずつ、一緒に学んでいきましょう!何か不明点があれば、いつでも聞きに来てくださいね。

コメント

タイトルとURLをコピーしました