メモリダンプからいろいろと情報を取得するフォレンジックツール「Volatility tool」というものがあるようなので、CentOS 7に試しにインストールしてみる。
メモリダンプを解析できるOSは結構種類があるようで、LinuxだけではなくWindows、Mac OS Xも解析可能なようだ。

1.インストール

まずは、以下のコマンドで前提となるパッケージ類を導入する。

yum install git

以下のコマンドでVolatility toolをインストールする。

git clone https://github.com/volatilityfoundation/volatility.git
cd volatility/
python ./setup.py install

2.メモリダンプの解析

インストールが完了したら、実際にメモリダンプの解析をしてみよう。
こちらに各OSのサンプルがあるので、適当に好きなファイルをダウンロードしてこよう。

vol.py imageinfo -f メモリダンプPATH
[root@BS-PUB-WEBTOOL-TEST01 volatility]# wget http://amnesia.gtisc.gatech.edu/~moyix/ds_fuzz_hidden_proc.img.bz2
--2016-08-22 18:26:11--  http://amnesia.gtisc.gatech.edu/~moyix/ds_fuzz_hidden_proc.img.bz2
amnesia.gtisc.gatech.edu (amnesia.gtisc.gatech.edu) をDNSに問いあわせています... 143.215.130.152
amnesia.gtisc.gatech.edu (amnesia.gtisc.gatech.edu)|143.215.130.152|:80 に接続しています... 接 続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 60878947 (58M) [application/x-bzip2]
`ds_fuzz_hidden_proc.img.bz2' に保存中

100%[=====================================================>] 60,878,947  3.35MB/s 時間 23s

2016-08-22 18:26:35 (2.52 MB/s) - `ds_fuzz_hidden_proc.img.bz2' へ保存完了 [60878947/60878947]

[root@BS-PUB-WEBTOOL-TEST01 volatility]# bzip2 -dc ds_fuzz_hidden_proc.img.bz2 > ds_fuzz_hidden_proc.img
[root@BS-PUB-WEBTOOL-TEST01 volatility]# vol.py imageinfo -f ds_fuzz_hidden_proc.img
Volatility Foundation Volatility Framework 2.5
*** Failed to import volatility.plugins.registry.shutdown (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.getservicesids (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.timeliner (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.malware.apihooks (NameError: name 'distorm3' is not defined)
*** Failed to import volatility.plugins.malware.servicediff (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.registry.userassist (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.getsids (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.registry.shellbags (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.evtlogs (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.tcaudit (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.registry.dumpregistry (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.registry.lsadump (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.malware.threads (NameError: name 'distorm3' is not defined)
*** Failed to import volatility.plugins.mac.apihooks_kernel (ImportError: No module named distorm3)
*** Failed to import volatility.plugins.registry.amcache (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.mac.check_syscall_shadow (ImportError: No module named distorm3)
*** Failed to import volatility.plugins.malware.svcscan (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.registry.auditpol (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.ssdt (NameError: name 'distorm3' is not defined)
*** Failed to import volatility.plugins.registry.registryapi (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.mac.apihooks (ImportError: No module named distorm3)
*** Failed to import volatility.plugins.envars (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.registry.shimcache (ImportError: No module named Crypto.Hash)
INFO    : volatility.debug    : Determining profile based on KDBG search...
          Suggested Profile(s) : WinXPSP2x86, WinXPSP3x86 (Instantiated with WinXPSP2x86)
                     AS Layer1 : IA32PagedMemoryPae (Kernel AS)
                     AS Layer2 : FileAddressSpace (/root/volatility/ds_fuzz_hidden_proc.img)
                      PAE type : PAE
                           DTB : 0x319000L
                          KDBG : 0x80545b60L
          Number of Processors : 1
     Image Type (Service Pack) : 3
                KPCR for CPU 0 : 0xffdff000L
             KUSER_SHARED_DATA : 0xffdf0000L
           Image date and time : 2008-11-26 07:46:02 UTC+0000
     Image local date and time : 2008-11-26 02:46:02 -0500

上のコマンドで、メモリダンプからOSの種類とCPUの数などが読み取れる。
ここで分かったOSの種類を指定して、動作していたプロセスなどを確認する。

vol.py --profile=OS種類 pslist -f メモリダンプPATH
[root@BS-PUB-WEBTOOL-TEST01 volatility]# vol.py --profile=WinXPSP3x86 pslist -f ds_fuzz_hidden_proc.img
Volatility Foundation Volatility Framework 2.5
*** Failed to import volatility.plugins.registry.shutdown (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.getservicesids (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.timeliner (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.malware.apihooks (NameError: name 'distorm3' is not defined)
*** Failed to import volatility.plugins.malware.servicediff (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.registry.userassist (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.getsids (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.registry.shellbags (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.evtlogs (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.tcaudit (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.registry.dumpregistry (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.registry.lsadump (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.malware.threads (NameError: name 'distorm3' is not defined)
*** Failed to import volatility.plugins.mac.apihooks_kernel (ImportError: No module named distorm3)
*** Failed to import volatility.plugins.registry.amcache (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.mac.check_syscall_shadow (ImportError: No module named distorm3)
*** Failed to import volatility.plugins.malware.svcscan (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.registry.auditpol (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.ssdt (NameError: name 'distorm3' is not defined)
*** Failed to import volatility.plugins.registry.registryapi (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.mac.apihooks (ImportError: No module named distorm3)
*** Failed to import volatility.plugins.envars (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.registry.shimcache (ImportError: No module named Crypto.Hash)
<span style="color: #ff0000;">Offset(V)  Name                    PID   PPID   Thds     Hnds   Sess  Wow64 Start                          Exit
---------- -------------------- ------ ------ ------ -------- ------ ------ ------------------------------ ------------------------------
0x819cc830 System                    4      0     51      254 ------      0                    
0x817e4670 smss.exe                360      4      3       19 ------      0 2008-11-26 07:38:11 UTC+0000
0x8181bd78 csrss.exe               596    360     10      322      0      0 2008-11-26 07:38:13 UTC+0000
0x8182b100 winlogon.exe            620    360     16      503      0      0 2008-11-26 07:38:14 UTC+0000
0x8183ba78 services.exe            672    620     15      245      0      0 2008-11-26 07:38:15 UTC+0000
0x817dbc30 lsass.exe               684    620     21      347      0      0 2008-11-26 07:38:15 UTC+0000
0x81859d70 svchost.exe             844    672     19      198      0      0 2008-11-26 07:38:18 UTC+0000
0x8183d360 svchost.exe             932    672     10      229      0      0 2008-11-26 07:38:18 UTC+0000
0x818a2300 svchost.exe            1064    672     63     1308      0      0 2008-11-26 07:38:20 UTC+0000
0x817f7da0 svchost.exe            1164    672      5       77      0      0 2008-11-26 07:38:23 UTC+0000
0x8180e6f0 svchost.exe            1264    672     14      209      0      0 2008-11-26 07:38:25 UTC+0000
0x817ca478 explorer.exe           1516   1452     12      362      0      0 2008-11-26 07:38:27 UTC+0000
0x816e75e8 spoolsv.exe            1648    672     12      112      0      0 2008-11-26 07:38:28 UTC+0000
0x816af860 VMwareTray.exe         1896   1516      1       26      0      0 2008-11-26 07:38:31 UTC+0000
0x816af448 VMwareUser.exe         1904   1516      1       28      0      0 2008-11-26 07:38:31 UTC+0000
0x816a13c0 VMwareService.e        1756    672      3       45      0      0 2008-11-26 07:38:45 UTC+0000
0x816557e0 alg.exe                 512    672      6      105      0      0 2008-11-26 07:38:53 UTC+0000
0x81643b28 wuauclt.exe            1372   1064      8      225      0      0 2008-11-26 07:39:38 UTC+0000
0x8164e3a8 wscntfy.exe             560   1064      1       31      0      0 2008-11-26 07:44:57 UTC+0000</span></pre>

…VMwareとか動かしてたのかな?  
そのほか、pstree(プロセスツリー)、connscan(netstatに相当する情報)、connections(プロセスの接続情報)などを指定して情報が得られる。

```shell
[root@BS-PUB-WEBTOOL-TEST01 volatility]# vol.py --profile=WinXPSP3x86 pstree -f ds_fuzz_hidden_proc.img | grep -v Failed
Volatility Foundation Volatility Framework 2.5
Name                                                  Pid   PPid   Thds   Hnds Time
-------------------------------------------------- ------ ------ ------ ------ ----
 0x819cc830:System                                      4      0     51    254 1970-01-01 00:00:00 UTC+0000
. 0x817e4670:smss.exe                                 360      4      3     19 2008-11-26 07:38:11 UTC+0000
.. 0x8182b100:winlogon.exe                            620    360     16    503 2008-11-26 07:38:14 UTC+0000
... 0x8183ba78:services.exe                           672    620     15    245 2008-11-26 07:38:15 UTC+0000
.... 0x816e75e8:spoolsv.exe                          1648    672     12    112 2008-11-26 07:38:28 UTC+0000
.... 0x81859d70:svchost.exe                           844    672     19    198 2008-11-26 07:38:18 UTC+0000
.... 0x8180e6f0:svchost.exe                          1264    672     14    209 2008-11-26 07:38:25 UTC+0000
.... 0x818a2300:svchost.exe                          1064    672     63   1308 2008-11-26 07:38:20 UTC+0000
..... 0x8164e3a8:wscntfy.exe                          560   1064      1     31 2008-11-26 07:44:57 UTC+0000
..... 0x81643b28:wuauclt.exe                         1372   1064      8    225 2008-11-26 07:39:38 UTC+0000
.... 0x817f7da0:svchost.exe                          1164    672      5     77 2008-11-26 07:38:23 UTC+0000
.... 0x816557e0:alg.exe                               512    672      6    105 2008-11-26 07:38:53 UTC+0000
.... 0x8183d360:svchost.exe                           932    672     10    229 2008-11-26 07:38:18 UTC+0000
.... 0x816a13c0:VMwareService.e                      1756    672      3     45 2008-11-26 07:38:45 UTC+0000
... 0x817dbc30:lsass.exe                              684    620     21    347 2008-11-26 07:38:15 UTC+0000
.. 0x8181bd78:csrss.exe                               596    360     10    322 2008-11-26 07:38:13 UTC+0000
 0x817ca478:explorer.exe                             1516   1452     12    362 2008-11-26 07:38:27 UTC+0000
. 0x816af448:VMwareUser.exe                          1904   1516      1     28 2008-11-26 07:38:31 UTC+0000
. 0x816af860:VMwareTray.exe                          1896   1516      1     26 2008-11-26 07:38:31 UTC+0000
[root@BS-PUB-WEBTOOL-TEST01 volatility]# vol.py --profile=WinXPSP3x86 connscan -f ds_fuzz_hidden_proc.img | grep -v Failed
Volatility Foundation Volatility Framework 2.5
Offset(P)  Local Address             Remote Address            Pid
---------- ------------------------- ------------------------- ---
0x019cfbf0 192.168.101.128:1035      192.168.101.1:445         4
0x01a4abd0 192.168.101.128:1040      192.168.101.1:139         4
0x01a52b38 192.168.101.128:31337     192.168.101.1:1158        1696
[root@BS-PUB-WEBTOOL-TEST01 volatility]# vol.py --profile=WinXPSP3x86 connections -f ds_fuzz_hidden_proc.img | grep -v Failed
Volatility Foundation Volatility Framework 2.5
Offset(V)  Local Address             Remote Address            Pid
---------- ------------------------- ------------------------- ---
0x81852b38 192.168.101.128:31337     192.168.101.1:1158        1696
0x817cfbf0 192.168.101.128:1035      192.168.101.1:445         4

問題の発生した際にメモリダンプを取るような運用が必要にはなるけど、いろいろなOSに対応しててこれだけ見れるなら中々よさそう。