見出し画像

#109 Linux Memory Dump

 揮発性メモリは、ナマモノゆえ扱いが難しく、調査には専門的な技術が必要です。プロセスの情報や処理の内容など、重要な情報が手に入る可能性もあるので見過ごせません。

 メモリの調査をするには、まず、メモリのダンプを作成しなければいけません。それでは、やってみましょう!

Linuxのメモリダンプ

環境

手元のPCでやってみました。Ubuntuです。

$ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.3 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.3 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy

lmg

lmg (Linux Memory Grabber)は、Linuxのメモリダンプ用のツールを統合して、お手軽にダンプできるスクリプトです。いろいろとセットアップが必要です。

1. USBをセットアップ

メモリ調査の際は、対象のPCにできるだけ影響を与えないように追加のツールをインストールすることは避けます。USB内に必要なツールを準備していきます。

管理者権限でUSBをマウントします。

sudo su
mkdir -p /mnt/usb
mount /dev/sdc1 /mnt/usb


2. lmgを用意

lmgの実行ファイルをコピーします。

git clone https://github.com/halpomeranz/lmg.git
cp ./lmg/lmg /mnt/usb
cp ./lmg/lime-Makefile.patch /mnt/usb
cp static-dwarfdump.tgz /mnt/usb


3. avmlをビルド

avmlをクローンします。avmlはMicrosoftが開発するメモリのダンプツールです。

git clone https://github.com/microsoft/avml.git

Rustで作られているので、Rustのビルド環境が必要です。用意してください。以下の手順でビルドします。

cd avml
cargo build --release
mkdir /mnt/usb/avml
cp target/release/avml /mnt/usb/avml/avml-$(uname -m)
cp target/release/avml-convert /mnt/usb/avml/avml-convert-$(uname -m)


4.LiMEの用意

LiMEもavml同様のメモリダンプツールです。こちらもクローンしてきます。パッチをあてる必要があります。

cd /mnt/usb
git clone https://github.com/504ensicsLabs/LiME.git
cd LiME/src
patch < /mnt/usb/lime-Makefile.patch


5. dwarfdumpの展開

lmgに同梱されているdwarfdumpを展開します。

cd /mnt/usb
tar zxf static-dwarfdump.tgz


6.Volatilityの用意

最後に調査用のフレームワークのVolatirityをクローンします。

git clone https://github.com/volatilityfoundation/volatility.git

さあ、準備が整いました。

7. 実行

以下のコマンドでLinuxのメモリダンプが始まります。

./lmg -y

途中でエラーが出てしまいましたが、ダンプは作成されたみたいです。あとは煮るなり焼くなりですね。


まとめ

 メモリフォレンジックの一端に触れてみました。メモリダンプは、OSやカーネルのバージョンによっても方法が違います。かなり奥が深いので、一度ハマったら大変です… メモリの内容の調査のほうも近々やってみます!


EOF

いいなと思ったら応援しよう!