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

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

サポート情報

ホーム > サポート情報一覧 > 通信先URLの展開

通信先URLの展開

目次へ

 処理が進んでいくと、通信のための準備処理として、通信先のURLを展開する処理が行われます。String解析からURLの文字列が得られてないことからお察しのとおり、難読化のために圧縮を行っています。これを復号して展開している処理がありました。

 [150BA]以降(1468バイト)に格納されているデータを、オリジナルの256バイトのマップのマップに対しインデックスされた位置のパラメータを取得し、xorをとって復号する独自の変換処理を行っています(【図96】参照)。このデータの先頭4バイトには、解凍後のサイズ(0x00000779 = 1913バイト)が格納されており、このサイズを用いてメモリを確保した上で、更にRtlDecompressBufferを行いURLの文字列に戻しているのです(【図97】参照)。これは、RtlDecompressBufferで解凍する前のデータでも一部URL情報らしき情報が見えて、これを検知される恐れがあること、オリジナルの256バイトのマップを変更することで、解凍元の[150BA]以降のデータが変わり、これも検知逃れに利用できることが理由として考えられます。

IDA_Cryptowall_CompressedUrl1

【図96-1】独自の変換処理を行われる元データ

 

IDA_Cryptowall_CompressedUrl2

【図96-2】独自の変換処理を行った結果

 

IDA_Cryptowall_CompressedUrl3

【図97-1】解凍処理の実行

 

IDA_Cryptowall_CompressedUrl4

【図97-2】解凍処理の結果

 

 URLが明らかになったため、いくつかピックアップしてURLのサーバの所在を調べてみると、いろんな国のサーバが使われていることが分かりました。また、多くは正規のサイトとみられるものでした。C&Cサーバに仕立てるのは、特定の国のサーバを対象にするというより、C&Cのサーバアプリケーションが動作し、かつ改ざんが可能な正規サイトを利用している、と考えられます。このことは、Webサイトを運営している側も管理をしっかり行わなければ、知らず知らずのうちに加害者に加担してしまう可能性がある、ということを示唆しています。

 解凍が終わったら、今度は一つのURLごとに分割し、それぞれメモリを確保してURL文字列を格納していきます。データのレイアウトはサイズ4バイト、サイズ分のURL・・・の繰り返しのため、データが終了するまでメモリに展開します。「マルウェア動作時のメモリ解析」でURL情報がメモリ上にあることが分かっていますが、この処理によって作られたものであると考えられます。

 こうして得られたURLは、それぞれのポインタをマップの上で管理されています。この処理は先頭から順に行われるため、マップ上のデータは当然、解凍時と同じ並びになっています。一方、CryptoWallはネットワークアクセスする際に、展開されたURLからランダムにアクセスすることが分かっています。では、どのようにしてランダムなアクセスを行っているのでしょうか?

 その答えが、続きの処理にありました。RtlRandomExで乱数を得て、その2つの乱数値をインデックスとしてアドレスの入れ替えを行っているのです。こうすることで、あとは先頭から順にアクセスしても、その時々で順番がランダムになるという仕組みになっています(【図98】参照)。なお、最初のURLでアクセスし、予定していたパラメータが得られなければ次のURLへ・・・と先頭から順に所定の通信が成功するまでURLを変えていくようになっています。

IDA_Cryptowall_UrlMap1

【図98-1】変換前のURL文字列アドレスマップ

 

IDA_Cryptowall_UrlMap2

【図98-2】変換後のURL文字列アドレスマップ

 

<  svchost上のImportテーブル目 次 CryptoWallの通信(1回目) >