叉焼.log

札幌のこととか、ITの事とか

volatility始めました。メモリフォレンジックも。

メモリフォレンジックという言葉を聞いたことがあるだろうか。メモリダンプからデータを取得し解析することを指すのだが、それにはvolatilityというソフトを使う。こいつを試すことになった経緯から簡単な使い方までを書いていこうと思う。ちなみに、悪用厳禁だゾ


 
2/24(金)にサッポロファクトリーの一室で行われたAttack&Defence番外編SECCON2016オンライン予選を振り返ってみよう その2に参加してきた。大学の春休みで暇を持て余していた所にちょうどfacebookで予告の記事が舞い込んできたため、この機会にセキュリティでも勉強しておくかという事で足を運んだ。

こういった類のイベントはあんまり参加した経験がない(去年のセキュリティ・ミニキャンプ以来)ため、ワクワクと緊張で赴いたのだが、参加者は講師含め5人しかいなかった。facebookでは北海道の技術系コミュニティLOCALの記事としてこのイベントを知ったのだが、ガチもんのローカルイベントらしい。


今回の勉強会では、volatilityというソフトを用いたメモリフォレンジックというものに挑戦した。メモリフォレンジック(memory forensics)とは先述した通りメモリに残ったデータをもとに犯罪の捜査や分析をすることである。なるほど今回は解析系の問題らしい。

また、volatilityというのはBlack Hatというセキュリティ診断などをしている会社が公開し、今はThe Volatility Foundationという組織がサポートをしているOSSで、メモリに残っているデータを用いて、あるプロセスの実行時の状態を分析するのに用いられる。メモリフォレンジックにはこのソフトを使うのが一般的らしい。

www.volatilityfoundation.org


ちなみに、macユーザは上のサイトから落とすと使用時になぜかエラーを吐かれるのでbrewコマンドで落とした方が良い。

扱った問題はSECCON 2016 で出題されたMemory Analysis(Forensics 100)問題で「ファイル解析して偽のsvchostがアクセスしたサイトみつけろよ!」といった内容。volatilityのコマンドを利用して進めていく。

# volatility -f Desktop/forensic_100.raw imageinfo 

でOSなどの情報を取得。

# volatility -f Desktop/forensic_100.raw pstree
Volatility Foundation Volatility Framework 2.5
Name                                                  Pid   PPid   Thds   Hnds Time
-------------------------------------------------- ------ ------ ------ ------ ----
  0x8231f698:explorer.exe                             1556   1520     15    466 2016-12-06 05:27:10 UTC+0000
. 0x821f8438:vmtoolsd.exe                            1856   1556      3    129 2016-12-06 05:27:11 UTC+0000
. 0x819b4380:tcpview.exe                             3308   1556      2     84 2016-12-06 05:28:42 UTC+0000
. 0x82267900:rundll32.exe                            1712   1556      2    144 2016-12-06 05:27:16 UTC+0000
. 0x8216a5e8:DumpIt.exe                              3740   1556      1     25 2016-12-06 05:28:46 UTC+0000
. 0x82170da0:ctfmon.exe                              1872   1556      1     87 2016-12-06 05:27:11 UTC+0000
 0x823c8660:System                                      4      0     58    259 1970-01-01 00:00:00 UTC+0000
. 0x81a18020:smss.exe                                 540      4      3     19 2016-12-06 05:27:04 UTC+0000
.. 0x82173da0:winlogon.exe                            628    540     24    541 2016-12-06 05:27:07 UTC+0000
... 0x8216e670:services.exe                           672    628     15    286 2016-12-06 05:27:07 UTC+0000
.... 0x81f46238:alg.exe                              2028    672      7    104 2016-12-06 05:27:16 UTC+0000
.... 0x82312450:svchost.exe                          1036    672     87   1514 2016-12-06 05:27:08 UTC+0000
..... 0x81f2cb20:wuauclt.exe                         3164   1036      5    107 2016-12-06 05:28:15 UTC+0000
..... 0x82062b20:wuauclt.exe                          488   1036      7    132 2016-12-06 05:27:13 UTC+0000
..... 0x81e56228:wscntfy.exe                          720   1036      1     37 2016-12-06 05:27:18 UTC+0000
.... 0x82154880:vmacthlp.exe                          836    672      1     25 2016-12-06 05:27:08 UTC+0000
.... 0x82151ca8:svchost.exe                           936    672     10    272 2016-12-06 05:27:08 UTC+0000
.... 0x81e4b4b0:vmtoolsd.exe                          312    672      9    265 2016-12-06 05:27:13 UTC+0000
.... 0x81f92778:svchost.exe                          1088    672      7     83 2016-12-06 05:27:08 UTC+0000
.... 0x81f00558:VGAuthService.e                       196    672      2     60 2016-12-06 05:27:13 UTC+0000
.... 0x81e18da0:svchost.exe                           848    672     20    216 2016-12-06 05:27:08 UTC+0000
..... 0x81e89200:wmiprvse.exe                         596    848     12    255 2016-12-06 05:27:13 UTC+0000
.... 0x81e41928:svchost.exe                          1320    672     12    183 2016-12-06 05:27:10 UTC+0000
.... 0x81f0dbe0:spoolsv.exe                          1644    672     15    133 2016-12-06 05:27:10 UTC+0000
.... 0x81f65da0:svchost.exe                          1776    672      2     23 2016-12-06 05:27:10 UTC+0000
..... 0x8225bda0:IEXPLORE.EXE                         380   1776     22    385 2016-12-06 05:27:19 UTC+0000
...... 0x8229f7e8:IEXPLORE.EXE                       1080    380     19    397 2016-12-06 05:27:21 UTC+0000
.... 0x81e4f560:svchost.exe                          1704    672      5    107 2016-12-06 05:27:10 UTC+0000
... 0x81f8c9a0:lsass.exe                              684    628     26    374 2016-12-06 05:27:07 UTC+0000
.. 0x81ef6da0:csrss.exe                               604    540     11    480 2016-12-06 05:27:07 UTC+0000
 0x81e886f0:GoogleUpdate.ex                           372   1984      7    138 2016-12-06 05:27:13 UTC+0000

pstreeでプロセスのツリー構造を把握できる。
こんなのがたくさん出てくる。

# volatility -f Desktop/forensic_100.raw connections
Volatility Foundation Volatility Framework 2.5
Offset(V)  Local Address             Remote Address            Pid
---------- ------------------------- ------------------------- ---
0x8213bbe8 192.168.88.131:1034       153.127.200.178:80        1080

connectionsで通信時の状態を把握できる。Pid1080が怪しい・・・?
上のツリーでPid1080を見てみるとIEXPLORE.EXEが動いていたらしい。

# volatility -f Desktop/forensic_100.raw filescan | grep hosts
Volatility Foundation Volatility Framework 2.5
0x000000000217b748      1      0 R--rw- \Device\HarddiskVolume1\WINDOWS\system32\drivers\etc\hosts

filescanでダンプ内のファイル一覧を取得できる。今回はヒントにあったhostsファイルを抜き出してみる。

# volatility -f Desktop/forensic_100.raw dumpfiles -Q 0x000000000217b748 --name -D ./
Volatility Foundation Volatility Framework 2.5
DataSectionObject 0x0217b748   None   \Device\HarddiskVolume1\WINDOWS\system32\drivers\etc\hosts
# more file.None.0x819a3008.hosts.dat 
...snip...
127.0.0.1       localhost
153.127.200.178    crattack.tistory.com 

dumpfilesでファイルの内容が取得できる。-Q以下にはfilescanで取得したファイルのメモリアドレスを書く。
おおっ。最終行の153.127.200.178 が答えか。

今回はこのようなさわりの部分だけしかやらなかったが、電子犯罪捜査の流れが掴めたと思う。
セキュリティ初心者の私にはやや難解なところもあったが、丁寧に解説してくれた講師の方には感謝したい。
来年からはCTF参加したいなぁ