Weird Wired World

Programming, Security

VolatilityでStuxnetのメモリダンプ解析 #1

揮発性メモリの分析(メモリフォレンジック)手法について学んでいる。

メモリフォレンジックの主な目的は,インシデント発生時にメモリダンプからその状況を解析することである。これを実現するために,フォレンジックツールはメモリダンプからプロセス,ライブラリやネットワークなどの状況を詳細に解析するコマンドを提供する。

利用するソフトウェアは,Volatility Framework(以下Volatility)やGoogleRekallが実質標準となっている。今回はVolatilityについて学んだことを解説記事として記載する。

本記事の内容

Volatilityの基本的な使い方を学習することを目的とする。Stuexnetに感染したVMに,Volatilityを使って種々の解析を行いマルウェアの特定を行う。なお,Stuxnetは2010年頃に発見されたWindowsマルウェアである。

準備

VMは当該マルウェアに感染してるため,取り扱いには十分注意されたい。個々の責任の下,Volatilityの学習目的のみにおいて使用すること。

環境はKali Linuxを推奨する。説明不要かもしれないが,Kali Linuxはセキュリティ関連ツールの揃ったLinuxディストリビューションである。Volatilityも起動すれば使える状態になっている。

1. 解析対象の識別をする

まずはimageinfoコマンドで解析対象の情報を得る。実行結果の抜粋を下図に,全文を末尾の章に示す。これにより解析対象のOSはWinXPSP2x86であることが分かる。

f:id:enufranz:20171022192656p:plain

2. 不審なプロセスを探す

不審なプロセスを探すためにまずプロセスの一覧の取得を行う。Volatilityの当該コマンドにはpstree, psscanがある。pstreeコマンドの抜粋を下図に,pstree, psscanの実行結果の全文を末尾の章に示す。

f:id:enufranz:20171022191415p:plain

この中から不審なプロセスを探す。手掛かりとなる情報は,名前,親子関係,重複起動している数などである。

上記の結果から次の2点が言え,pid1928, 868が不審なプロセスであると推定できる。

  • lsass.exeは本来1つしか起動しないはずだが,3つ(pid1928, 868, 680)重複起動しており不審である。
  • lsass.exeはwinlogon.exeを親プロセスとするため,pid680は正しいプロセスだと推定できる。

補足. pid680が正しいプロセスであることの推定は,起動時間が早いこと,pidが小さいことからも可能です。

このように,調査にはWindowsの基本的なプロセスについての情報が不可欠である。SANSの出している資料*1などで確認しておくと良い。

短いですがきりが良いのでここまでとします。次回はこの結果を踏まえてプロセスオブジェクト,ネットワークの解析を行っていく。

(参考) コマンドの実行結果

imageinfo

root@kali:~/Desktop/volatility/stuxnet# volatility -f stuxnet.vmem imageinfo
Volatility Foundation Volatility Framework 2.6
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/Desktop/volatility/stuxnet/stuxnet.vmem)
                      PAE type : PAE
                           DTB : 0x319000L
                          KDBG : 0x80545ae0L
          Number of Processors : 1
     Image Type (Service Pack) : 3
                KPCR for CPU 0 : 0xffdff000L
             KUSER_SHARED_DATA : 0xffdf0000L
           Image date and time : 2011-06-03 04:31:36 UTC+0000
     Image local date and time : 2011-06-03 00:31:36 -0400

pstree

root@kali:~/Desktop/volatility/stuxnet# volatility -f stuxnet.vmem pstree
Volatility Foundation Volatility Framework 2.6
Name                                                  Pid   PPid   Thds   Hnds Time
-------------------------------------------------- ------ ------ ------ ------ ----
 0x823c8830:System                                      4      0     59    403 1970-01-01 00:00:00 UTC+0000
. 0x820df020:smss.exe                                 376      4      3     19 2010-10-29 17:08:53 UTC+0000
.. 0x821a2da0:csrss.exe                               600    376     11    395 2010-10-29 17:08:54 UTC+0000
.. 0x81da5650:winlogon.exe                            624    376     19    570 2010-10-29 17:08:54 UTC+0000
... 0x82073020:services.exe                           668    624     21    431 2010-10-29 17:08:54 UTC+0000
.... 0x81fe52d0:vmtoolsd.exe                         1664    668      5    284 2010-10-29 17:09:05 UTC+0000
..... 0x81c0cda0:cmd.exe                              968   1664      0 ------ 2011-06-03 04:31:35 UTC+0000
...... 0x81f14938:ipconfig.exe                        304    968      0 ------ 2011-06-03 04:31:35 UTC+0000
.... 0x822843e8:svchost.exe                          1032    668     61   1169 2010-10-29 17:08:55 UTC+0000
..... 0x822b9a10:wuauclt.exe                          976   1032      3    133 2010-10-29 17:12:03 UTC+0000
..... 0x820ecc10:wscntfy.exe                         2040   1032      1     28 2010-10-29 17:11:49 UTC+0000
.... 0x81e61da0:svchost.exe                           940    668     13    312 2010-10-29 17:08:55 UTC+0000
.... 0x81db8da0:svchost.exe                           856    668     17    193 2010-10-29 17:08:55 UTC+0000
..... 0x81fa5390:wmiprvse.exe                        1872    856      5    134 2011-06-03 04:25:58 UTC+0000
.... 0x821a0568:VMUpgradeHelper                      1816    668      3     96 2010-10-29 17:09:08 UTC+0000
.... 0x81fee8b0:spoolsv.exe                          1412    668     10    118 2010-10-29 17:08:56 UTC+0000
.... 0x81ff7020:svchost.exe                          1200    668     14    197 2010-10-29 17:08:55 UTC+0000
.... 0x81c47c00:lsass.exe                            1928    668      4     65 2011-06-03 04:26:55 UTC+0000
.... 0x81e18b28:svchost.exe                          1080    668      5     80 2010-10-29 17:08:55 UTC+0000
.... 0x8205ada0:alg.exe                               188    668      6    107 2010-10-29 17:09:09 UTC+0000
.... 0x823315d8:vmacthlp.exe                          844    668      1     25 2010-10-29 17:08:55 UTC+0000
.... 0x81e0eda0:jqs.exe                              1580    668      5    148 2010-10-29 17:09:05 UTC+0000
.... 0x81c498c8:lsass.exe                             868    668      2     23 2011-06-03 04:26:55 UTC+0000
.... 0x82279998:imapi.exe                             756    668      4    116 2010-10-29 17:11:54 UTC+0000
... 0x81e70020:lsass.exe                              680    624     19    342 2010-10-29 17:08:54 UTC+0000
 0x820ec7e8:explorer.exe                             1196   1728     16    582 2010-10-29 17:11:49 UTC+0000
. 0x81c543a0:Procmon.exe                              660   1196     13    189 2011-06-03 04:25:56 UTC+0000
. 0x81e86978:TSVNCache.exe                            324   1196      7     54 2010-10-29 17:11:49 UTC+0000
. 0x81e6b660:VMwareUser.exe                          1356   1196      9    251 2010-10-29 17:11:50 UTC+0000
. 0x8210d478:jusched.exe                             1712   1196      1     26 2010-10-29 17:11:50 UTC+0000
. 0x81fc5da0:VMwareTray.exe                          1912   1196      1     50 2010-10-29 17:11:50 UTC+0000

psscan

root@kali:~/Desktop/volatility/stuxnet# volatility -f stuxnet.vmem --profile WinXPSP2x86 psscan
Volatility Foundation Volatility Framework 2.6
Offset(P)          Name                PID   PPID PDB        Time created                   Time exited                   
------------------ ---------------- ------ ------ ---------- ------------------------------ ------------------------------
0x0000000001e0cda0 cmd.exe             968   1664 0x0a9403a0 2011-06-03 04:31:35 UTC+0000   2011-06-03 04:31:36 UTC+0000  
0x0000000001e47c00 lsass.exe          1928    668 0x0a9403c0 2011-06-03 04:26:55 UTC+0000                                 
0x0000000001e498c8 lsass.exe           868    668 0x0a940360 2011-06-03 04:26:55 UTC+0000                                 
0x0000000001e543a0 Procmon.exe         660   1196 0x0a940260 2011-06-03 04:25:56 UTC+0000                                 
0x0000000001fa5650 winlogon.exe        624    376 0x0a940060 2010-10-29 17:08:54 UTC+0000                                 
0x0000000001fb8da0 svchost.exe         856    668 0x0a9400e0 2010-10-29 17:08:55 UTC+0000                                 
0x000000000200eda0 jqs.exe            1580    668 0x0a9401e0 2010-10-29 17:09:05 UTC+0000                                 
0x0000000002018b28 svchost.exe        1080    668 0x0a940140 2010-10-29 17:08:55 UTC+0000                                 
0x0000000002061da0 svchost.exe         940    668 0x0a940100 2010-10-29 17:08:55 UTC+0000                                 
0x000000000206b660 VMwareUser.exe     1356   1196 0x0a9402e0 2010-10-29 17:11:50 UTC+0000                                 
0x0000000002070020 lsass.exe           680    624 0x0a9400a0 2010-10-29 17:08:54 UTC+0000                                 
0x0000000002086978 TSVNCache.exe       324   1196 0x0a940180 2010-10-29 17:11:49 UTC+0000                                 
0x0000000002114938 ipconfig.exe        304    968 0x0a940380 2011-06-03 04:31:35 UTC+0000   2011-06-03 04:31:36 UTC+0000  
0x00000000021a5390 wmiprvse.exe       1872    856 0x0a9401c0 2011-06-03 04:25:58 UTC+0000                                 
0x00000000021c5da0 VMwareTray.exe     1912   1196 0x0a9402c0 2010-10-29 17:11:50 UTC+0000                                 
0x00000000021e52d0 vmtoolsd.exe       1664    668 0x0a940200 2010-10-29 17:09:05 UTC+0000                                 
0x00000000021ee8b0 spoolsv.exe        1412    668 0x0a9401a0 2010-10-29 17:08:56 UTC+0000                                 
0x00000000021f7020 svchost.exe        1200    668 0x0a940160 2010-10-29 17:08:55 UTC+0000                                 
0x000000000225ada0 alg.exe             188    668 0x0a940240 2010-10-29 17:09:09 UTC+0000                                 
0x0000000002273020 services.exe        668    624 0x0a940080 2010-10-29 17:08:54 UTC+0000                                 
0x00000000022df020 smss.exe            376      4 0x0a940020 2010-10-29 17:08:53 UTC+0000                                 
0x00000000022ec7e8 explorer.exe       1196   1728 0x0a940280 2010-10-29 17:11:49 UTC+0000                                 
0x00000000022ecc10 wscntfy.exe        2040   1032 0x0a9402a0 2010-10-29 17:11:49 UTC+0000                                 
0x000000000230d478 jusched.exe        1712   1196 0x0a940300 2010-10-29 17:11:50 UTC+0000                                 
0x00000000023a0568 VMUpgradeHelper    1816    668 0x0a940220 2010-10-29 17:09:08 UTC+0000                                 
0x00000000023a2da0 csrss.exe           600    376 0x0a940040 2010-10-29 17:08:54 UTC+0000                                 
0x0000000002479998 imapi.exe           756    668 0x0a940320 2010-10-29 17:11:54 UTC+0000                                 
0x00000000024843e8 svchost.exe        1032    668 0x0a940120 2010-10-29 17:08:55 UTC+0000                                 
0x00000000024b9a10 wuauclt.exe         976   1032 0x0a940340 2010-10-29 17:12:03 UTC+0000                                 
0x00000000025315d8 vmacthlp.exe        844    668 0x0a9400c0 2010-10-29 17:08:55 UTC+0000                                 
0x00000000025c8830 System                4      0 0x00319000