こんにちは!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やサーバーで行うようにしましょう。
—
最後に:恐れることはありません
最初は「カーネルモジュール」だの「バイナリ解析」だのと聞くと身構えてしまうかもしれません。でも、一つずつやってみれば、実はそんなに難しいことではないんです。
「泥棒がどこで、何をしているのか」を自分の手で突き止める。このスキルは、どんなに高度なセキュリティツールを導入しても決して代わりが効かない、あなたのエンジニアとしての「強力な武器」になります。
少しずつ、一緒に学んでいきましょう!何か不明点があれば、いつでも聞きに来てくださいね。
コメント