サポート情報 | フォーカスシステムズ サイバーフォレンジックセンター

メールでのお問い合わせ
お問い合わせはこちら
東京証券取引所 プライバシーマーク ISMS JUSE

サポート情報

ホーム > サポート情報一覧 > マルウェア動作時のメモリ解析

マルウェア動作時のメモリ解析

目次へ

 では、ランサムウェアを実行している環境で、RAMのダンプを取得し、メモリ解析をしてみましょう。今度は、ダミーのファイルとランサムウェア、メモリキャプチャツールを用います。他のツールがない状態でメモリを取得するのは、メモリ上に余計な情報を残さないためです。解析系のツールがあると、それも怪しく見えてしまうのです。先ほどと同様にダブルクリックでランサムウェアを起動し、RAM取得ツールでメモリダンプを取得します。取得したメモリダンプは、「CounterTack Responder Professional Edition for Windows 3.0」で解析を行います。

 Responder PROでは、メモリ上に展開されていたプログラムを、様々な観点で見ることができます。特に特徴的なのは、TaintとDigital DNAの表示機能で、その中のコードから独自のスコアリング機能で点数付けをし、脅威度が高いと考えられるプログラム順に表示することができます。アンチウィルス製品などもスコアが高くなりがちですが、そういった既知のプログラムを除外していくと、不審なプログラムをピックアップすることができます。

 今回は、まずメモリ上のプロセス情報に着目します(【図15】参照)。Responder PROの上部メニューの「View」→「Panels」→「Processes」を選択すると、メインウィンドウの右側に「Processes」のタブが追加されます。Windowsのメモリ上のプロセスを解析したことのある人ならば、パッと見で「おや?」というものがあると思います。Explorerのプロセスが複数あり、さらに片方のプロセスからsvchost.exeとvssadmin.exeが起動されていることが分かります。また、そのExplorerのプロセスは、Exit Timeが設定されていることから、開始後ほどなくして終了していることが分かります。

 また、Explorerから起動され、すぐに終了しているvssadmin.exeというプログラムは、「システムの復元」機能を管理・操作するためのプログラムです。試しに、「システムの復元」の画面を確認したところ、ランサムウェアが起動する前にあった復元情報が、起動後利用できなくなっていることが確認できました(【図16】参照)。

CryptoWall_Responder_Processes

【図15】ランサムウェア実行時のメモリダンプのプロセス情報

 

CryptoWall_Recover1 CryptoWall_Recover2

【図16】ランサムウェアによる復元ポイントの削除状況

(上:ランサムウェア実行前、下:ランサムウェア実行後)

 

 これらのことから、このExplorerによる一連のプロセスがランサムウェアによるものである、と疑われます。もう一度、プロセスリストを見ると、Explorerの子プロセスのうち、svchost.exeについては、まだExit Timeが設定されていません。つまり、このプログラムはランサムウェア実行中のメモリダンプ取得時に、まだ動いていたことを示します。と、いうことは、これがランサムウェアの活動本体である可能性が高い、という推測ができます。

 なお、Explorerの親PID(4212)に対応するプロセスの情報は残っていませんでした。これは、メモリダンプをとる間にすぐに消えてしまったためと思われます。Responderは、VMWareのメモリスナップショットを取り込むこともできるので、VM回避していない検体、あるいはVM回避部分をnop等で無効化した検体を実行した場合は、そちらを利用することで、さらにクリティカルなタイミングのメモリを取得し、解析することも可能です。

 PID5072のsvchost.exeのオブジェクト情報を参照してみます(【図17】参照)。Modulesをみると、色々なDLLを利用していることが分かりますが、その中にメモリの参照情報がありました。そして、このメモリ情報は、実は最初に紹介したDigital DNAで、高いスコアを出していたメモリと合致するのです(【図18】参照)。このメモリの中のプログラムは、一体どのような内容なのでしょうか?Responderが解析した概要をTraits機能で参照してみることにします(【図19】参照)。

CryptoWall_Responder_Objects

【図17】ランサムウェア実行に関連するsvchost.exeに関するオブジェクト情報

 

CryptoWall_Responder_DigitalDNA

【図18】ランサムウェア実行に関連するメモリ領域に関するDigital DNA情報

 

CryptoWall_Responder_Traits

【図19】ランサムウェア実行に関連するメモリ領域に関するTraits情報

 

 Traitsには、参照しているメモリ上のプログラムに、どのような機能があるかが書かれており、脅威度によって色分けがされています。今回は、赤色で表示されているものと、ランサムウェアの挙動に大きく関係しそうな部分をピックアップしてみたいと思います。

CryptoWall_Responder_Traits_ProcMem

【図20】プロセスとメモリに関するTraits情報(抜粋)

 

 まず、プロセスとメモリに関するものを抽出してみました(【図20】参照)。Traitsの内容を要約してみましょう。他のプロセスに関連するメモリを取得したり、そこに書き込みを行ったりした上で、メモリインジェクションを行う可能性があることが分かります。プロセスに対し、何らかの操作をするようなコードがあることも注視されます。また、一般的でないDLLの起動方法を用いていることも、不審な挙動として判断できます。さらに、実行しているプロセスのコンテキストを書き換える機能があり、マルウェアの調査時には特にアンチデバッグ目的で使われている可能性には留意したほうが良いでしょう。

ほかに、他のプロセスを起動する機能があります。これは、一般的なアプリケーションでも行われるので、それ自体は不審とは言えませんが、何らかの処理を別プロセスで行っている可能性があるため、頭にいれておいたほうが良いでしょう。

CryptoWall_Responder_Traits_Network

【図21】ネットワーク接続に関するTraits情報(抜粋)

 

 次に、ネットワーク接続に関するTraitsを要約してみましょう(【図21】参照)。最大のポイントはアップロードを行っている可能性です。これにより、暗号化したときに使われた鍵をアップロードしている可能性が考えられます。また、INet APIを用いてインターネット接続し、HTTPかFTPを用いてデータのやりとりをしていることが分かります。これらは、「マルウェアを動作させてみる」で観察された、phpで作られたC&Cと思われるサーバとの通信の痕跡があることと一致します。また、リモートサーバからファイルをダウンロードして実行する機能がある可能性も伺えます。

CryptoWall_Responder_Traits_File

【図22】ファイルに関するTraits情報(抜粋)

 

 次に、ファイルに関するTraitsを要約してみましょう(【図22】参照)。一般的なプログラムでも、ファイルの操作を行うことが大半なので、その点については省略します。注目すべきところは、ネットワークや外部ストレージを含めたファイルシステムドライブを検索し、列挙していることです。このことから、ネットワーク上の共有ファイルや、接続中のUSBメモリのファイルも暗号化の対象になると考えられます。

CryptoWall_Responder_Traits_Registry

【図23】レジストリに関するTraits情報(抜粋)

 

 次に、レジストリに関するTraitsを要約してみましょう(【図23】参照)。一般的に行われる、レジストリのオープンや読み込みは、特に問題視せず割愛しています。ピックアップした部分から、自動起動のためにレジストリを新規に追加している可能性が考えられます。先の「マルウェアを動作させてみる」でも、実行時に自動起動のためのレジストリの追加が行われており、関連が疑われます。

CryptoWall_Responder_Traits_ProcEnd

【図24】プログラム等の終了に関するTraits情報(抜粋)

 

 最後に、プログラム等の終了に関するTraitsを要約してみましょう(【図24】参照)。特定のプロセスの終了と、OS自身のシャットダウンまたはリブートを行う機能があることが考えられます。これは、ランサムウェアが活動する上で、自身に都合の悪いプログラムを強制終了したり、設定を変えて再起動したりしている可能性があることを示唆しています。

CryptoWall_Responder_Traits_MemMap

CryptoWall_Responder_Traits_Binary

【図25】メモリマップの内容(抜粋)

 

 今度は、少し視点を変えて、Objectで問題のsvchost.exeのMemory Mapに注目してみます(【図25】参照)。すると、不審なURL情報を発見しました。これは、「マルウェアを動作させてみる」で問題となった通信のURLおよびphpの名前と一致します。つまり、このメモリ上に、通信先となるC&Cサーバのドメイン名が展開されていたのです。このメモリ情報を追っていくと、他に50以上のphpを宛先にするURLが見つかりました。実際に、複数回起動すると、通信先が同じでないことから、これらのURLのうち、恐らくランダムで通信先を決めて通信しているものと思われます。そのため、このメモリ上に展開されているURLへの接続をチェックすることで、他のPCが同じランサムウェアに感染していないかを確認することができます。RAT系のマルウェアでこのような情報が見つかった場合は、他のPCの感染調査のほか、マルウェアのC&Cとの通信の遮断にも活用できるでしょう。

 

< マルウェアを動作させてみる目 次マルウェアの内部を解析する >