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

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

サポート情報

ホーム > サポート情報一覧 > 作成されたプロセス上のランサムウェアの追跡

作成されたプロセス上のランサムウェアの追跡

目次へ

 では、起動されているプロセスに対してアタッチして追跡する手法を紹介します。

 今回の例で挙げているCryptoWallでは、「イベントの登録とプロセスの起動」での調査で、Explorerを起動し、メモリ上にマルウェアをコピーしてスレッドを起動することが分かっています。そして、そのスレッドはNtResumeThreadを実行することで処理を開始します。

 そのため、NtResumeThreadを実行する前の状態で止めておき、Explorerのプロセスにアタッチしてみましょう。なお、この時、プロセスIDとスレッドの開始アドレスは必須となりますので、CreateProcessInternalWの戻り値とNtQueueApcThreadの実行開始アドレスをメモして控えておく必要があります(【図78】参照)。

IDA_Cryptowall_CreateProcessInternalW1

【図78-1】Explorerのスレッド起動に関するパラメータ(CreateProcessInternalW)

 

IDA_Cryptowall_NtQueueApcThread1

【図78-2】Explorerのスレッド起動に関するパラメータ(NtQueueApcThread)

 

 では、起動したプロセスに対しアタッチしてみましょう。

 まず、IDA Proを起動し、「New」をクリックします。実行プログラムファイルを調査する場合、ファイル選択画面でファイルを選択しますが、プロセスにアタッチする場合は「キャンセル」をクリックします。すると、空の状態でIDA Proが起動します。ここで、メニューの「Debugger」→「Attach」→「Local Windows debugger」を選択します。すると、プロセスの一覧が表示されるので、目的のプロセス(今回はプロセスID124(=0x0000007C))を選択し、「OK」をクリックします。すると、タイトルバーにアタッチした実行ファイル名(今回はexplorer.exe)が表示され、コードが表示されます(【図79】参照)。

IDA_Attach1

IDA_Attach2

IDA_Attach3

【図79】プロセスへのアタッチ

 

 今回はこの上でスレッドが実行されることが分かっており、かつ、開始位置が判明しているので、ここにブレークポイントを設定しておきます。そして、ランサムウェア本体の停止中のプログラムを再開し、NtResumeThreadが実行されると、ブレークポイントでプログラムが停止します(【図80】参照)。なお、Explorerにアタッチしたときに、デバッガ上でプログラムが停止して待ちになっているので、「Continue Process」(F9)で再開すると、設定したブレークポイントで処理を停止します。

IDA_Attach4

【図80-1】Explorer上のコードにブレークポイントを設定して停止(ブレークポイント設定)

 

IDA_Attach5

【図80-1】Explorer上のコードにブレークポイントを設定して停止(アタッチ直後でブレーク中)

 

IDA_Attach6

【図80-3】Explorer上のコードにブレークポイントを設定して停止

(設定したブレークポイントでブレーク)

 

 ここから先の追跡方法は、今までのIDA Proの使用方法と同じです。このようにして、他プロセスを起動したり、メモリインジェクションしたりして自身は終了するようなマルウェアであっても、対象のプロセスに対しアタッチし、ブレークポイントを設定することで、継続して追跡することが可能です。

 では、Explorer上のコードを追跡してみましょう。

 

< イベントの登録と別プロセスの起動 目 次ランサムウェアの自動起動設定 >