Cisco Japan Blog

CryptoLocker 4 ホワイト ペーパーを発表:進化を続けるランサムウェア

3 min read



Talos はこの度、ホワイト ペーパー「CryptoLocker 4」を発表しました。ここ数年、Talos はかなりの時間を割いて、ランサムウェアのしくみや他のマルウェアとの関係、およびその経済的な影響について理解を深めてきました。この調査は Talos にとって実り多いものとなり、サポート対象製品における検出手法の改善や攻撃の防止に役立っています。CryptoWall はランサムウェアの亜種の 1 つで、ここ数年、CryptoWall 2、CryptoWall 3 と、段階的な進化を遂げてきました。CryptoWall の流布を検出して防止しようとする取り組みが世界中で行われているにもかかわらず、攻撃者は、技術の革新と進化を続け、CryptoWall 4 をリリースするに至りました。効果的な検出方法を特定するため、Talos は CryptoWall 4 のリバース エンジニアリングを行い、その実行方法や動作、旧バージョンとの差異をより深く理解し、調査結果を関連するコミュニティと共有しています。

ホワイト ペーパーの内容は以下のとおりです。

ランサムウェア:

ファイルを身代金目的で暗号化し、その復号に金銭を要求する、悪意のあるソフトウェア。

背景

馴染みのない読者のために説明すると、ランサムウェアとは、ユーザの写真、ドキュメント、音楽などのファイルを身代金目的で暗号化し、その復号に金銭を要求する、悪意のあるソフトウェアです。一般的には、電子メールのフィッシング キャンペーンやエクスプロイト キットを通じてランサムウェアの被害を受けます。CryptoWall 4 の中核的な機能は、これまでと同様、ファイルを暗号化し、金銭を要求するメッセージを表示するというものです。しかし、CryptoWall 4 には、以前のバージョンから新たに発展した点がいくつか見受けられました。たとえば、ファイルを人質に取るために使用する暗号化のアルゴリズムが変更されています。また、CryptoWall 4 には Windows のすべての自動バックアップ メカニズムを無効化または削除する新たな手法が含まれているので、外部バックアップをとっていない限り、暗号化されたファイルの回復はほぼ不可能になります。最後に、CryptoWall 4 では、これまでに使われたことがなく文書化されていない API 呼び出しを利用して、侵害されたホストのローカル言語設定を特定していることが観察されました。これらは、CryptoWall が新たに繰り返されていることから Talos が得た発見の一部にすぎません。これについては、このホワイト ペーパーで、さらに詳しく説明します。

A1

図 A1. 攻撃対象を感染させることに成功したら、CryptoWall は自動的に 3 種類の形式でメッセージを開きます
(テキスト、画像(png)、HTML ドキュメント)。

感染のプロセス

CryptoWall 4 の背後に潜む攻撃者は、フィッシングやドライブバイダウンロード キャンペーンを用いてマルウェアを攻撃対象に配布します。CryptoWall 4 が正常に実行されると、ドロッパーはコマンド アンド コントロール(C&C)サーバから RSA 公開暗号キーをダウンロードします。すべてのファイルは、一時的な AES 暗号キーで暗号化されたのち、ダウンロードした RSA 公開キーで暗号化され、暗号化ファイルに組み込まれます。次に、身代金の支払い方法に関するメッセージが 3 つの異なる形式で表示されます。いずれかの形式がアンチウイルス ソフトウェアによってブロックされても、少なくとも 1 つの形式のメッセージが確実に表示されるようにしているのです。1 つ目はテキスト ファイル、2 つ目は画像(.png 形式)、そして 3 つ目は HTML ドキュメントです。いずれも、前ページの図 A1 に示すように、被害者のデスクトップに自動的に表示されます。下の図 A2 は、HTML ドキュメントの全文を示しています。

技術に精通した方は、この先も引き続き読むようにお勧めします。いつものように Talos は、推奨されるセキュリティ対策を実行するとともに、多層的な検出方法を採用して侵害のリスクを軽減することを強く推奨します。CryptoWall の最新バージョンを詳細に分析することにより、さらに効果的な検出方式を特定してユーザを保護できる可能性が高まります。身代金を払って自分のデータを回復するかどうかを最終的に決めるのはユーザ自身ですが、Talos は、身代金を払わないようにすることを強くお勧めします。なぜなら、それにより悪意のある活動に資金を提供することになるからです。また、警察機関にも通報すべきです。

A2

図 A2. 感染後の身代金の支払い指示を含む CryptoWall のメッセージの全文。

 

CryptoWall 4 を観察していると、興味深い点を発見しました。C&C サーバから公開 RSA 暗号キーを取得できない場合には、ループに入って公開キーのダウンロードを繰り返し試みるのです。キーを取得できなければ、CryptoWall は攻撃対象のコンピュータに「被害を与える」ことができません。Talos はまた、ホストに設定されたローカル言語がサポートされていない場合は感染プロセスを終了するなど、いくつかの付加的な安全性チェックが行われていることを観察しました。サポートされていない言語には、ロシア語、カザフ語、ウクライナ語、ウズベク語、ベラルーシ語、アゼリ語、アルメニア語、キルギス語、グルジア語などがあります。

これを見ると、特定の地域を感染から除外したいという攻撃者の意図がわかります。感染の技術的プロセスを、図 B で説明します。

B

図 B. CryptoWall 感染の技術的プロセス。

上の図の「すべてのシャドウ コピーを削除する」から始まるすべての機能は、svchost ホスト プロセスにインジェクトされた CryptoWall 4 コードから実行されます。このプロセスにインジェクトすることで、侵害されたマシンへのアクセス権限のレベルが高まります。それにより、管理者レベルのアクセス権限を持つエンド ユーザに対しても、UAC(ユーザ アカウント制御)ダイアログで削除を「承認」するプロンプトを出すことなく、利用可能なすべてのシャドウ コピーを削除することが可能になります。

ネットワーク通信について、図 C で説明します。

C

図C CryptoWall 4 と C&C サーバとのネットワーク通信プロセス。

 

ネットワーク通信は HTTP を使用しますが、ペイロードは暗号化されています。図 D および E を参照してください。

D_E

図 D および E

 

CryptoWall 4 は新規ファイル名生成アルゴリズムを使用します。これは暗号化ファイルに使用され、次のように動作します。

  1. ハード ドライブをスキャンしてディレクトリを探し、除外ディレクトリをスキップする。
  2. ディレクトリからオリジナル ファイルを取得し、除外対象のファイル名および拡張子をスキップする。
  3. ファイル名の文字列サイズに使用するランダム値を 5 から 10 までの値で生成する。
  4. a ~ z の文字セットを使って、このランダム値に従った文字数のファイル名文字列を生成する。(0 ~ 1000 の間でランダム値を取得し、MOD 26 の演算を行い、結果を ASCII 文字に変換する)。
  5. ファイル名の文字列を Null で終端する。
  6. 文字数の半分から文字列サイズまでの範囲で、ランダム値を取得する。
  7. 1 から手順 6 で取得したランダム値までの間で、ランダム値を取得する(この数値によって、次の手順で文字列に挿入される乱数の数が決まります)。
  8. 0 から 9 までの間でランダムな ASCII 番号(char)を生成し、文字列中のランダムな位置に挿入する。
  9. 手順 7 で取得した数値に応じた回数分、手順 8 を繰り返す。
  10. 同じアルゴリズムを使用して拡張子を生成する。文字数は 2 ~ 5 文字の間。
  11. ファイル名文字列に拡張子を付ける。

CryptoWall 4 は、CRC32 チェックサムを使用して、一部のディレクトリ、ファイル名、拡張子を除外します。表 1 は、暗号化から除外される対象のリストです。

拡張子 ディレクトリ ファイル
exe
dll
pif
scr
sys
msi
msp
com
hta
cpl
msc
bat
cmd
scf
windows
temp
cache
sample pictures
default pictures
Sample Music
program files
program files (x86)
games
sample videos
user account pictures
packages
help_your_files.txt
help_your_files.html
help_your_files.png
thumbs.db

表 1 : 除外されるファイル名。より詳細なリストについては、付録 A を参照してください。

これらのディレクトリ、ファイル、ファイル拡張子を回避するのは、オペレーティング システムの安定性を確保するためと思われます。つまり、侵害されたユーザに身代金を払わせるために引き続きマシンを利用できるようにしているのです。感染してしまったユーザが知っておくべきことがあります。それは、永続化が成功すると、次の再起動時に暗号化機能が再実行され、最初の感染後にユーザが作成したあらゆるファイルが暗号化されてしまうことです。

新しいファイルに対して名前が生成された後、ページ右側の図 F に示す暗号化アルゴリズムが開始されます。また、CryptoWall 4 によってファイルが暗号化されてしまうと、一時的な AES 暗号キーを復号する秘密キーがなければ元に戻る手立てがないということも、ここで明らかに示されています。被害者にとって残念なことに、秘密キーは攻撃者側にのみ存在し、被害者のコンピュータには決して転送されません。つまり、身代金を支払うか、あるいは攻撃者のインフラストラクチャを警察機関に取り押さえてもらうなど、その他の方法で攻撃者から秘密キーを取得しない限り、ファイルを回復する方法はありません。身代金を支払わなくてもこのようなタイプの攻撃から確実に復旧できるように、重要なファイルはバックアップしておくことを推奨します。

F

図 F:CryptoWall によって新しい暗号化ファイルの名前が生成されるプロセス。

技術詳細

ドロッパー

ドロッパーは圧縮されて、さまざまなカスタマイズ パッカーで暗号化されます。そこには、無意味なコード、API 呼び出し、奇妙なパラメータでランダム API を呼び出してエミュレーション エンジンを混乱させるなどの AV アンチエミュレーションのトリックが満載されています。図 G は、そのスナップショットです。

G

図 G

CryptoWall のドロッパーは、無意味なコード(上図参照)やアンチエミュレーションのトリックなど、さまざまな難読化手法を利用します。

第 2 段階では、ある種のスパゲッティ コードが次のように実行されます。

INSTRUCTION 1
INSTRUCTION 2
JNO nextStep

 

展開されたコード

メイン コードは CryptoWall の古いイテレーションとほぼ同様で、マルウェアがインポート アドレス テーブル(IAT)を構築し、必要なシステム情報をすべて取得し、メイン イベント オブジェクトを作成してプロセスの同期を行います(名前はワークステーション情報に MD5 をかけて生成します)。このイベントには 2 つの目的があります。実行中に他の CryptoWall 4 の感染が始まるのを防ぐことと、さまざまな関連プロセスと同期することです。

コードは、新たに作成された「explorer.exe」プロセスにインジェクトされます。実際のコードは、2 種類の技術のどちらかを使用して、ターゲット プロセスに書き込まれます。

  1. ZwCreateSection と ZwMapViewOfSection のネイティブ API
  2. ZwAllocateVirtualMemory、ZwWriteVirtualMemory、ZwProtectVirtualMemory のネイティブ API

 

最後にコードが正しく再配置され、新たな 2 種類の手法を使用してコードがインジェクトされます。

  1. ZwQueueApcThread 内部 API でターゲット プロセス内に APC をキューイング
  2. 標準的な CreateRemoteThread 手法

 

新たに作成された「explorer.exe」プロセスの中のコード(図 B 参照)の最終的な目標は、CryptoWall 4 を実行してシステムを感染させ、マシン上で永続化を成功させることです。ドロッパーは「%APPDATA%」フォルダにコピーされ、ローカル ユーザのレジストリのルート パスの標準的「Run」キーの中にレジストリ値が作成されます。

ドロッパーは、これまでに観察されていない新たな手法を使用して、すべてのシステム復元ポイントと Windows シャドウ コピーの無効化を試みます。0 から 1000 までのインデックスで、ERROR_INVALID_DATA を返すまで、SRRemoveRestorePoint API を呼び出すのです。これにより、「DisableSR」という名の値(1 に設定)が「HKLM\Software\Microsoft\Windows Nt\SystemRestore」レジストリ キーに書き込まれます。その目的は、Windows のシステム復元を完全に無効化することです。最後に、ボリュームのシャドウ コピーを削除する標準的なコマンドが起動されます。

vssadmin.exe Delete Shadows /All /Quiet

 

「Svchost.exe」プロセスの実行は続きます。コードは IAT を再構築し、別のイベント オブジェクト(「svchost.exe」インスタンスのみに使用)を作成し、コンフィギュレーション ファイルを生成してそれを開こうとします。コンフィギュレーション ファイルについては、後程詳しく説明します。この時点では、まだコンフィギュレーション ファイルがないため、ルーチンは失敗します。ドロッパーは、自身の中にある C&C URL リスト(LZ 圧縮アルゴリズムで圧縮)を開いて展開し、最終的には、アナウンスメント パケットを使用して C&C サーバの 1 つに接続しようと試みます。

ドロッパーの分析によって見つかった C&C サーバのリストを、IOC のセクションに掲載しています。
CryptoWall 4 ネットワーク パケットは、具体的には以下のように細工されています。

||crypt7|[|subRequest Id 1|subRequest 1 Data| … ]

 

本記事執筆の時点までに、5 種類のネットワーク パケット タイプ(リクエスト ID)の分離に成功しています。

1, 3 –   アナウンスメント パケット:新たな被害者の感染を C&C サーバに伝えるために使用される。

7 –  多目的パケット:最初のサブリクエスト ID によって区別される。

1 – 公開キー リクエスト:すべてのファイルを適切に暗号化するための新しい公開キー(および言語依存型の PNG 形式の壁紙)を C&C サーバに要求するために使用される。

2 – エンド アナウンスメント パケット:感染プロセスの終了を伝えるために使用される。もう 1 つのサブリクエスト ID により、感染プロセス終了の詳細が定義される。

1 – 成功

2, 3 -サポートされていない OS 言語パケット – 終了。

 

ネットワーク パケットが Web に送信されます。送信には標準の HTTP POST リクエストが使用されますが、直前に暗号化されています。暗号化アルゴリズムは、ランダムな文字列をキーとして使用するカスタム アルゴリズムで、以下のようなストリームを作成します。

|<Letter>|=|<encryption Key in Hex>|<encrypted stream>|

e.g. s=6975376e7a9b0fd24886fbd0c0de32d3ab4d- d97174462ca3b06af16a1c840ae893eddacafbd93e56847c23a41352d4f 45fc75468e4408

 

アナウンスメント プロセスは、C&C との接続に成功すると、公開キーの取得を試みます。ここに CryptoWall 4 の欠点があります。堅牢なファイアウォールまたは IPS が CryptoWall 4 パケットをインターセプトしてブロックすると、感染プロセスは続行しません。RSA-2048 公開キーは、ID を 7 に設定したパケットを使用して取得されます。C&C サーバは、以下のような構成のパケットで応答します。

  1. 支払いのための URL(ToR URL と標準 URL)のリスト。
  2. BASE64 でエンコードされた RSA-2048 公開キー。
  3. BASE64 でエンコードされた言語毎の PNG 画像(ローカル言語設定に応じて、英語、イタリア語、ドイツ語など)。
  4. (ローカル言語設定に応じた英語、イタリア語、ドイツ語の例を、図 H に示します)

 

H

図 H。さまざまなターゲット言語で提供される CryptoWall 復号手順の例。

 

公開キーは、CryptStringToBinary API を使用して復号されます。復号されたバッファはグローバル変数として保存されます。HTML ファイルとテキスト ファイル(LZ アルゴリズムで圧縮)がドロッパーから抽出され、最終的にコンフィギュレーション ファイルが生成および暗号化されて、次の場所に保存されます。

C:\Users\<Username>\AppData\Roaming\<Random 8 digits>

 

CryptoWall 4 のコンフィギュレーション ファイルには、マルウェアの実行を成功させるために必要な情報が含まれます。また、たとえば PC のシャットダウンなどのために暗号化プロセスが中断した場合でも、マルウェアによるファイルの暗号化が確実に継続できるようにしています。ファイルには、連続するさまざまなブロックが含まれ、いずれのブロックも、先頭の 4 バイトの値によってそのサイズが指定されています。

CryptoWall 4 は、コンフィギュレーション ファイル内に次の情報を保存します。

  • 受信した公開キーのバイナリ データ
  • ユーザに表示する、適切な言語の HTML ページ
  • ユーザに表示する、適切な言語のテキスト ファイル
  • 適切な言語にローカライズされた PNG 画像

最後の 3 つのファイルが、ファイル暗号化プロセス後に攻撃対象ワークステーションの各フォルダに書き込まれます。

コンフィギュレーション ファイルは、最終的に LZ アルゴリズムで圧縮され(RtlCompressBuffer API を使用。インデックスは 2 – COMPRESSION_FORMAT_LZNT1)、ディスクに書き込まれます。

すべてが順当に進むと、メイン スレッドが作成され、オリジナルのスレッドは終了します(RtlExitUserThread API を使用)。

 

メイン スレッド

公開キーのインポートによって、メイン スレッドが起動します。これにより、エンコードされた公開キーのバイナリ データが、Windows の Crypto API で使用できる適切なデータ構造に変換されます。CryptoWall 4 は、CryptDecodeObjectEx API を使用してこのプロセスを実行します。このようにして、バイナリ データを CERT_PUBLIC_KEY_INFO 構造に変換することが可能になるのです。最後に、CryptImportPublicKeyInfo 関数を使用して、新しいデータ構造が Crypto API にインポートされ、暗号化ハンドルが返されます。その後、公開キーの MD5 ハッシュが計算されます。これは、特定の攻撃対象者のファイルがすでに暗号化されているかどうかを確認するための、非常に重要な手順となります。

この時点で、実際の暗号化が行われます。攻撃対象システム内の各論理ドライブについて、以下のようにチェックが実行されます。

LPWSTR pngFilePath = new TCHAR[MAX_PATH];
// This produces something like “C:\HELP_YOUR_FILES.PNG”
ComposePngPath(driveName, “HELP_YOUR_FILES.PNG”, pngFilePath, MAX_PATH);if (!FileExists(pngFilePath) == TRUE) {

// Proceed with the encryption
// … … …

}

 

実は、ドライブのルート パスに「HELP_YOUR_FILES.PNG」という名前のファイルが含まれている場合、それはスキップされます。これがバグなのか意図的な動作なのかは不明です。テストを通過したドライブそれぞれについて、新しい暗号化スレッドが作成されます(スレッドの引数は、公開キーのコピーと、ドライブ名を伴った文字列へのポインタを含む、小さな構造で構成されます)。

メイン スレッドは、すべての暗号化スレッドが終了するまで待機し、復号手順を含む 3 つのファイルを 2 つの場所(「Start Menu」の「startup」フォルダ、攻撃対象ユーザのデスクトップ)に書き込みます。

最後に、エンド アナウンスメント ネットワーク パケット(タイプ 7、サブ ID 2、1)が構築されて C&C サーバに送信されます。コンフィギュレーション ファイルは削除され、ネイティブ API、ZwTerminateProcess を使用してプロセスが終了します。

I

図 I:MainThread が複数の子スレッドを使用してファイルを暗号化。

 

暗号化スレッド

暗号化スレッドは、2 つの主なタスクを実行します。最初に「DoFilesEncryption」ルーチンを呼び出してボリューム内のすべてのファイルを暗号化し、最終的に「HELP_YOUR_FILES.PNG」という壁紙をルート パスに書き込みます。

「DoFilesEncryption」ルーチンは、ターゲットのドライブの各フォルダおよびファイル間を巡回します。

サブフォルダに遭遇すると、それぞれについて名前をチェックして CRC32 でフィルタをかけ(このようにして、「windows」、「system32」、「temp」などの標準的なフォルダを無視します)、「HELP_YOUR_FILES.PNG」ファイルの有無をチェックし、なかった場合には自身を再度呼び出して新しいフォルダ パスを引数として指定します。

発見された各ファイル名には、それぞれ拡張子と名前を基準としてフィルタリングが 2 回実行されます。フィルタリング ルーチンによって名前に問題がないことが報告されると、「EncryptFile」ルーチンが呼び出されます。

「EncryptFile」は、名前が示すように、ターゲット ファイルを実際に暗号化するルーチンです。オリジナルのファイルを開き、その属性を照会します。「IsFileAlreadyEncrypted」関数は、ターゲット ファイルの最初の 16 バイトを読んで公開キーの MD5 ハッシュと比較することにより、ファイルがすでに暗号化されていることを確認します。

この時点で、マルウェアによってランダムなファイル名と拡張子が生成されます。アルゴリズムは、RtlRandomEx API を利用して、読み取り可能な各文字を生成します。次のページにアルゴリズムを示します。

新しいファイルが作成され、CryptGenKey と CryptExportKey Windows Crypto API を使用して、新しい AES-CBC 256 キーが生成されます。この 32 バイトのキーを使ってファイル全体が暗号化されます。

ここで CryptoWall 4 は巧妙な手口を用います。C&C から受け取った RSA-2048 公開キー(サイズは 256 バイト)を使用して生成された AES キーを暗号化するのです(CryptEncrypt API を使用)。これにより、犯人にのみ復号可能な暗号化 256 ビット ストリームが作成されます。

暗号化ファイルの先頭の 16 バイトに公開 RSA-2048 キーの MD5 ハッシュが書き込まれ、次に CryptoWall 4 によって 256 ビットの暗号化ストリームが書き込まれます。その次の 8 バイトには、元のファイル属性およびサイズが書き込まれます。元のファイル名は、生成された AES キーを使用して暗号化され、サイズ情報とともに新しいファイルの中に書き込まれます。

ここで実際のファイルの内容の暗号化が行われます。オリジナル ファイルが、512 KB のチャンクを 1 つのブロックとして、ブロック単位で読み取られます。各ブロックは、AES-CBC 256 アルゴリズムを使用して、生成されたキーで暗号化され、新しいファイルに直接書き込まれます(先頭の 4 バイトにブロック サイズが書き込まれます)。

終了すると、すべての CryptoWall 4 リソースがリリースされ、元のファイルが興味深い方法で削除されます。

//暗号化された新しいファイル名を、古いオリジナルの場所に移動させ、古いファイル名を置き換えます
bRetVal = MoveFileEx(newEncFileName, lpOrgFileName, MOVEFILE_WRITE_THROUGH | MOVEFILE_REPLACE_EXISTING);
if (!bRetVal)
//標準的な方法で古いファイルを削除します

DeleteFile(lpOrgFileName);

else {

//置き換えられたオリジナル ファイルの名前を、新しいランダムなファイル名に変更します
bRetVal = MoveFileEx(lpOrgFileName, newEncFileName, MOVEFILE_REPLACE_EXISTING);

}
//ランダム値を生成します
DWORD GenerateRandValue(int min, int max)

{ if (min == max) return max;
//ランダム値を取得します
DWORD dwRandValue = RtlRandomEx(&g_qwStartTime.LowPart);
DWORD dwDelta = max – min + 1;
dwRandValue = (dwRandValue % dwDelta) + min;
return dwRandValue;

}
//ランダムな Unicode 文字列を生成します
LPWSTR GenerateRandomUString(int minSize, int maxSize) {

DWORD dwStringSize = 0; //生成された文字列サイズ
DWORD dwNumOfDigits = 0; //文字列内の文字数
LPWSTR lpRandString = NULL; //ランダムな Unicode 文字列
//文字列サイズを生成し、バッファを割り当てます
dwStringSize = GenerateRandValue(minSize, maxSize);
lpRandString = new TCHAR[dwStringSize+1];
for (int i = 0; i < (int)dwStringSize; i++) {

DWORD dwLetter = 0; //生成された文字
dwLetter = GenerateRandValue(0, 1000);
dwLetter = (dwLetter % 26) + (DWORD)’a’;
lpRandString[i] = (TCHAR)dwLetter;

}
//文字列を Null で終端します lpRandString[dwStringSize] = 0;
//ここで、文字列内に数字を挿入します
DWORD dwUpperHalf = GenerateRandValue(dwStringSize / 2, dwStringSize);
dwNumOfDigits = GenerateRandValue(1, dwUpperHalf);
for (int i = 0; i < (int)dwNumOfDigits; i++) {

DWORD dwValue = 0, dwPos = 0; //生成された値と位置
dwValue = GenerateRandValue(0, 9) + (DWORD)’0′;
dwPos = GenerateRandValue(0, dwStringSize-1);
lpRandString[dwPos] = (TCHAR)dwValue;

}
return lpRandString;

}

//ファイルのフル パスから始まるランダムなファイル名を生成します
BOOLEAN GenerateRandomFileName(LPWSTR lpFileFullPath, LPWSTR * lppNewFileFullPath, LPWSTR * lppOrgFileName) {

LPWSTR lpRandFileName = NULL; //新しいランダムなファイル名(拡張子なし)
LPWSTR lpRandExt = NULL; //新しいランダムなファイル拡張子
LPWSTR lpNewFileName = NULL; //新しいファイル名(フルネーム)
DWORD dwSize = 0; //新しいファイル名のサイズ
//引数をチェックします
if (!lpFileFullPath || !lppNewFileFullPath || !lppOrgFileName)

return FALSE;

//新しいファイル名を生成します(拡張子なし)
lpRandFileName = GenerateRandomUString(5, 10);
//ランダムなファイル拡張子を生成します
lpRandExt = GenerateRandomUString(2,5);
//新しいファイル名と拡張子を組み合わせて、最終的な新しいファイル パスを生成します
// ….
dwSize = wcslen(lpRandFileName) + wcslen(lpRandExt) + 1;
lpNewFileName = new TCHAR[dwSize+1];
swprintf_s(lpNewFileName, dwSize+1, L”%s.%s”, lpRandFileName, lpRandExt);
// ….

}

図 J:暗号化スレッドが使用するアルゴリズム。

 

前のページの疑似コードからわかるように、クリーンなオリジナル ファイルに使用されるセクターをハード ディスク上で上書きすることにより、データを回復させる可能性のあるあらゆるプロセスを困難にしています。マルウェアの作成者は、この興味深い新たな手法により、身代金獲得の確率を上げています。失われたファイルの復元可能性を下げることが、攻撃者のビジネス モデルにメリットをもたらしています。下の図 K は、暗号化ファイルの構成を示しています。

K

図 K:暗号化ファイルの詳細な構成。

 

IOC の詳細

ダウンロード可能なコピーはhttp://blogs.cisco.com/wp-content/uploads/cryptowall-4-iocs.txt で入手できます。

分析したサンプル

3a73bb154506d8a9a3f4f658bac9a8b38d7590d296496e843503323d5f9b7801

 

発見された類似のサンプル

2d04d2a43e1d5a6920a806d8086da9c47f90e1cd25aa99b95af182ee9e1960b3 bf352825a70685039401abde5daf1712fd968d6eee233ea72393cbc6faffe5a2 299b298b433d1cc130f699e2b5c2d1cb3c7e5eb6dd8a5c494a8c5022eafa9223

 

THREATGRID レポート(ライセンスを持つユーザのみ)

https://panacea.threatgrid.com/samples/d25f94dc4f2ac59e0428f54d685ead38

 

 

C&C URL リスト

abelindia.com/1LaXd8.php
purposenowacademy.com/5_YQDI.php
mycampusjuice.com/z9r0qh.php
theGinGod.com/HS0ILJ.php
yahoosupportaustralia.com/8gX7hN.php
successafter60.com/iCqjno.php
alltimefacts.com/EiFSId.php
csscott.com/YuF59b.php
smfinternational.com/eRs70a.php
lexscheep.com/OIsSCj.php
successafter60.com/r_kfhH.php
posrednik-china.com/etdhIk.php
ks0407.com/VoZQ_j.php
stwholesaleinc.com/yL54uH.php
ainahanaudoula.com/GH09Dp.php
httthanglong.com/yzoLR7.php
myshop.lk/6872VF.php
parsimaj.com/60wEBT.php
kingalter.com/uVRfPv.php
shrisaisales.in/ZUQce4.php
cjforudesigns.com/E8B2gt.php
mabawamathare.org/WEAbCT.php
manisidhu.in/zJE0fD.php
adcconsulting.net/XEGeuI.php
frc-pr.com/dA91lI.php
localburialinsuranceinfo.com/
zDJRc8.phpsmfinternational.com/
AYNILr.php

 

まとめ

この分析では、CryptoWall 4 を詳細に調査しました。ドロッパーには、これといった目新しいものは特にありませんが、それでもいくつかの巧妙な機能を備えています。感染プロセスの弱点は、C&C サーバとの通信に大きく依存している点にあります。ファイアウォールや IPS が通信パケットの検出とブロックに成功すると、攻撃対象ファイルを適切に暗号化するのに必要な公開キーを入手できなくなり、感染を正常に動作させることはできません。しかし、いったん CryptoWall 4 によって攻撃対象ファイルが暗号化されてしまうと、身代金を支払うことなく秘密キーを取得して復号する方法は、わかっていません。RSA 秘密キーは被害者のワークステーションでは決して管理されないからです。秘密キーは攻撃者のインフラストラクチャにのみ存在します。

 

Talos の分析が示しているとおり、CryptoWall の背後に潜む攻撃者は、革新と進化を続け、ユーザに対する効力を維持してきました。ランサムウェアの脅威全般に対処するには、攻撃者が進化を続けていることを各組織が認識する必要があります。多層的な防御策を活用すれば、CryptoWall などの脅威を検出して防御するのに役立ちます。Talos は、進化する CryptoWall の監視をこれからも続け、より効果的な検出方式の特定と防御の構築により、お客様の保護を図っていきます。個々のユーザと組織に対しては、セキュリティ パッチが利用可能になったらすぐにインストールする、知らない第三者からメッセージを受信したときには用心する、信頼性の高いバックアップ ソリューションを確実に実施するなどの、推奨されるセキュリティ対策を実行することを強くお勧めします。これらの対策を取ることで、侵害による脅威の軽減が可能になり、そのような攻撃を受けた場合の復旧にも役立ちます。

 

付録 A:除外ファイル

*注:このリストはすべてを網羅したものではありません

除外ファイル CRC32 チェックサム EXCLUDED EXTENSIONS CRC32 CHECKSUMS EXCLUDED DIRECTORIES CRC32 CHECKSUMS
8E87F076h = help_your_files.txt
0A73B295Ch = help_your_files.html
11A8ACA3h = help_your_files.png
88068F93h
775DBED4h
60479578h
7BD40679h = iconcache.db
48F43013h = thumbs.db
95ED794Ah
884F3F52h
7DAC63A1h
4208466h
0BA069E4Ch
0EC619E8Dh
9B0FD8B3h
6B63B6F0h = exe
3DD3B336h = dll
0BB5EA5C1h = pif
592D276Fh = scr
9E07ED22h = sys
8F3272A8h = msi
0A45BDDC1h = no three letter ext
0B65F578Ah = no three letter ext
0EB59DA68h = msp
64B6C6E6h = com
0C863AEB6h = hta
0DEEBF8EEh = cpl
6FE79BB6h = msc
9F9C299Fh = bat
2F5C1CC0h = cmd
43F7F312h = scf
0E3E7859Bh = windows
0B5385CAh = temp
0ED4E242h
9608161Ch
41476BE7h = cache
0F5832EB4h
0D8601609h
1DF021B7h
0B91A5F78h = sample pictures
0A622138Ah = default pictures
3FF79651h = sample Music
62288CBBh = program files
224CD3A8h = program files (x86)
72D480B3h
0FF232B31h = games
0A33D086Ah = sample videos
78B7E09h = user account pictures
9BB5C0A7h = packages
24FA8EBDh

ユーザ保護

pasted image 0
Advanced Malware Protection(AMP)は、これらの脅威の攻撃者によるマルウェア実行を阻止するのに最適です。

CWS や WSA の Web スキャンは、悪意のある Web サイトへのアクセスを阻止し、それらの攻撃に使用されたマルウェアを検出します。

IPS のネットワーク セキュリティ保護や NGFW には、脅威の攻撃者による悪意のあるネットワーク アクティビティを検出する最新のシグニチャが備わっています。

 

 

本稿は 2016年5月2日に Cisco Blogspopup_icon のブログに投稿された「Cryptolocker 4 White Paper Available: The Evolution Continuespopup_icon」ならびに「White Paperpopup_icon」の抄訳です。

コメントを書く