サイバーテロ ランサムウェアに夏休みはない!!



Cerbeの名で知られているランサムウェアは、夏に入ってますます活動が増してきています。cryptolockerのファイルサイズは約244〜292KBで、新しいビルドは、エンタープライズを対象にして偽のメールを送ったりするスピアフィッシングキャンペーンを行い拡散しています。最新のランサムウェアCerberは、従来の防御を簡単に回避します。分析されたCerberのサンプル(MD5:cfd2d6f189b04d42618007fc9c540352)は、Virustotalへ最初に提出された64種類のウイルス対策ソフトウェアのうち9製品しか疑わしい悪質な物として検出しませんでした。検出率が低いことは、cryptolockerが多型暗号化装置とAPIコールの難読化を使用して、そのコピーをアンチウイルスによって検出されないように保護するということで説明できます。

スタティック解析
PE EXEファイルには、偽のタイムスタンプ、インポートアドレステーブル、さらにエクスポートアドレステーブルがあります。 


 
エクスポートアドレステーブル 



ペイロードを隠す
Cerberのコードの最新のビルドは、APIコールの難読化によってさらに保護されています。実際のインポートを非表示にするには、実行時にCerberがロードします。 



実際のインポートアドレステーブルは次のようになります。 



構成データの復号化
JSONデータのコンフィギュレーションは暗号化され、RCDATA(置換可能文字データ)としてリソースセクションに格納されます。



設定データを復号化するには、Cerberは 次の手順を実行します。
1. ハード・コーディングされたRC4 128ビット・キーを、28バイトのBLOBデータからインポートします。
 

1st byte: BLOB type = PLAINTEXTKEYBLOB (0x08)
2nd byte: version = CUR_BLOB_VERSION (0x02)
5-8 bytes: algorithm id =  CALG_RC4 (0x00006801)
9-12 bytes: key size in bytes = 16 (0x00000010)
13-28 bytes: key data ‘ ADBCCC55D6FB379BDA0E3262FF004E1D’


2. 復号化後、メモリから128ビットの暗号化キーをゼロで消去します。



3. CryptEncrypt()関数を呼び出して、サイズが107 171バイトのJSONコンフィグを復号化します。



コンフィギュレーションパラメータ
Cerber設定には、次の情報が含まれています。

ブラックリスト 暗号化されないファイルのファイル拡張子 bat、 cmd、com、cpl、dll、exe、hta、msc、msi、msp、pif、scf、scr、sys
ファイル ・  Bootsect.bak
・  Iconcache.db
・  Ntuser.dat
・  thumbs.db
ファイルを暗号化する際にcryptolockerが避けるべきフォルダ ・ ":\\$getcurrent\\",
・ ":\\$recycle.bin\\",
・ ":\\$windows.~bt\\",
・ ":\\$windows.~ws\\",
・ ":\\boot\\",
・ ":\\documents and settings\\all users\\",
・ ":\\documents and settings\\default user\\",
・ ":\\documents and settings\\localservice\\",
・ ":\\documents and settings\\networkservice\\",
・ ":\\intel\\",
・ ":\\msocache\\",
・ ":\\perflogs\\",
・ ":\\program files (x86)\\",
・ ":\\program files\\",
・ ":\\programdata\\",
・ ":\\recovery\\",
・ ":\\recycled\\",
・ ":\\recycler\\",
・ ":\\system volume information\\",
・ ":\\temp\\",
・ ":\\windows.old\\",
・ ":\\windows10upgrade\\",
・ ":\\windows\\",
・ ":\\winnt\\",
・ "\\appdata\\local\\",
・ "\\appdata\\locallow\\",
・ "\\appdata\\roaming\\",
・ "\\local settings\\",
・ "\\public\\music\\sample music\\",
・ "\\public\\pictures\\sample pictures\\",
・ "\\public\\videos\\sample videos\\",
・ "\\tor browser\\"
OSをcryptolockerから保護する言語 1049:ロシア語、
1058:ウクライナ語
1059:ベラルーシ語
1064:タジク語
1067:アルメニア語
1068:アゼリ語(ラテン)
1079:グルジア語
1087:カザフ語
1088:キルギス語(キリル)
1090:トルクメン語
1091:ウズベキスタン語(ラ テン)
1092:タタール語(ロシア)
2072:ルーマニア語(モルド バ)
2073:ロシア語(モルドバ)
2092:アゼリ語(キリル)
2115:ウズベキスタン語(キ リル)

 

ホワイトリスト 暗号化されるべきフォルダ ・  "\\bitcoin\\",
・  "\\excel\\",
・  "\\microsoft sql server\\",
・  "\\microsoft\\excel\\",
・  "\\microsoft\\microsoft sql server\\",
・  "\\microsoft\\office\\",
・  "\\microsoft\\onenote\\",
・  "\\microsoft\\outlook\\",
・  "\\microsoft\\powerpoint\\",
・  "\\microsoft\\word\\",
・  "\\office\\",
・  "\\onenote\\",
・  "\\outlook\\",
・  "\\powerpoint\\",
・  "\\steam\\",
・  "\\the bat!\\",
・  "\\thunderbird\\",
・  "\\word\\"


Global RSA 2048-bit public key:

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvkty5qhqEydR9076Fevp
0uMP7IZNms1AA7GPQUThMWbYiEYIhBKcT0/nwYrBq0Ogv79K1tta04EHTrXgcAp/
OJgBhz9N58aewd4yZBm2coeaDGvcGRAc9e72ObFQ/TME/Io7LZ5qXDWzDafI8LA8
JQmSz0L+/G+LPTWg7kPOpJT7WSkRb9T8w5QgZRJuvvhErHM83kO3ELTH+SoEI53p
4ENVwfNNEpOpnpOOSKQobtIw56CsQFrhac0sQlOjek/muVluxjiEmc0fszk2WLSn
qryiMyzaI5DWBDjYKXA1tp2h/ygbkYdFYRbAEqwtLxT2wMfWPQI5OkhTa9tZqD0H
nQIDAQAB
-----END PUBLIC KEY-----




ハードディスク上のトレース
解凍されると、CerberはTempフォルダ内のMachine GUIDの最初の部分を使用して命名されたサブフォルダに一時データと暗号化キーを保存します。
例えば:%Temp%\ c36ab9c2

暗号化
Cerberは、暗号化にRC4アルゴリズム とRSAアルゴリズムを使用します。すべてのファイルは、ユニークな128ビットキーを持つRC4アルゴリズムを使用して暗号化されています。ファイルのRC4キーは、被害にあったマシンで生成された公開セッションキーRSA-880を使用して暗号化されています。公開セッションキーRSA-880を計算するために使用される素数(pおよびq)は、cryptolockerのファイルに埋め込まれた構成データで提供されるRSA-2048マスター公開キーを使用して暗号化されます。

プライベートキー指数(d)を、拡張ユークリッドアルゴリズムを使用して計算することにより、RSA-2048マスタキーで素数を復号化して、RSA-880セッションプライベートキーを復元することができます。

新しいファイルには、このファイルの暗号化に使用される暗号化されたRC4キーと、暗号化された元のファイルのデータ、元のファイル名、および特定の順序で格納されたチェックサムが含まれています。 またCerberは、ランダムに生成されたデータの60バイトのブロックをファイルの中央に追加して、暗号化されたファイル構造をさらに複雑にします。

キーの暗号化
はじめに構成ファイルからのRSA-2048 公開キーがBase64からPEM形式にデーコードされ、次にPUBLICKEYBLOBにデコードされます。



一度デコードされると、CERT_PUBLIC_KEY_INFO構造体には、公開キーとそのアルゴリズム(OID_RSA_RSA "1.2.840.113549.1.1.1" - RSAはコンテンツの暗号化と署名の両方に使用されます)が含まれています。



RSA-2048公開キーは PUBLICKEYBLOBとしてインポートされます。


1st byte: BLOB type = PUBLICKEYBLOB (0x06)
2nd byte: version = CUR_BLOB_VERSION (0x02)
5-8 bytes: algorithm id =  CALG_RSA_KEYX (0x0000A400)
9-20 bytes: RSAPUBKEY {magic = ‘RSA1’, key length = 2048 bits, public exponent = 65537}
21-276 bytes: key data 256 bytes

 
次に、Cerberは880ビットのモジュラスで別のRSA公開キーを作成し、それを一時ファイルに保存します。



RSA-2048公開キーは、各ブロック '37003700'のサイズを指定したRC4キーと、4バイトヘッダーを暗号化するために使用されるRSA-880公開鍵用に生成された2つの素数(各55バイト)からなる114バイトのデータブロックを暗号化するために使用されます。



暗号化されたブロックは、%TEMP%フォル ダ内のtmpファイルに格納され、すべての暗号化ファイルの末尾に追加されます。



ファイルの暗号化
Cerberは、暗号化されるすべてのファイルに対して生成された128ビットのキーを使用して、RC4アルゴリズムを使用してファイルを暗号化します。
暗号化の後、ファイルには次のデータブロックが含まれます。

オフセット データ
0
1800
元のファイルデータ( 'skip_bytes' = 1800)
1800
1860
ランダムに生成されたデータ(60バイト)
1860
...
オフセット1860('skip_bytes' + 60)から元のファイルの最後までの暗号化データ
  元のファイル名、チェックサム、およびRC4キー(48バイ ト)を含む暗号化されたデータ
  ランダムに生成されたデータ(110バイト)で置き換えられた 'skip_bytes'(オフセット1800)の後に位置する元のファイルのヘッダー(39バイト)と60バイトを含む暗号化された99バイト。
ヘッダー(39バイト)には、magic = FrbR、データのサイズ、16バイトのRC4キー
   RSA-2048で暗号化されたRSA- 880素数pとq(256バイト)




暗号化されたデータを含むファイルの名前は、次のように変更されます。

<Random characters>.<4th part of the Machine GUID>


ランソムノート
身代金メモは、暗号化されたファイルと一緒にフォルダに保存され、次の形式で名前が付けられます。

_R_E_A_D___T_H_I_S___<RAND>_.hta
_R_E_A_D___T_H_I_S___<RAND>_.txt






暗号化が終了するとcryptolockerは、おなじみのCerberスタイルの壁紙を設定します。



壁紙のビットマップは、構成データに記載されているパラメータに基づいて生成されます。

  "wallpaper": {
    "change_wallpaper": 1,
    "background": 139,
    "color": 16777215,
    "size": 13,
    "text": "   \n   CRBR ENCRYPTOR ...  }

コミュニケーション
Cerber CIDRで指定されたIPの6893ポートに接続します。

77.12.57.0/27
19.48.17.0/27
87.98.176.0/22

通信パケットは、マシンGUID: {MD5_KEY}と{PARTNER_ID} {OS} {IS_X64} {IS_ADMIN} {COUNT_FILES} {STOP_REASON} {STATUS}で終わるハッシュで始まります。
たとえばCerberは、被害者のマシンIDを送信して、構成データで指定された範囲からリモートサーバーへの接続を開始しようとします。
 


デクリプタ
Decryption Serviceは、Torのhttp://xpcx6erilkjced3j.onion/<MACHINE_ID>から入手できます。
例:http://xpcx6erilkjced3j.onion/AA8A-60D2-7EC2-0446-A314 
 


CAPTCHAを解決する必要があります
 


5日間で0.045ビットコインの支払いが必要です。さもなければ価格は2倍になります。
 


支払い
攻撃に使用されたBitcoinAddressは、まだトランザクションを受け取っていません。



まとめ
•    Cerberは企業を対象としたスピアフィッシングメールキャンペーンを通じて広がっています。
•    Cerberは、ポリモーフィックな暗号化とAPIコールによる難読化を使用して、ウイルス対策保護を回避します。
•    以前のバージョンと同様に、JSON形式で格納された暗号化された構成データを使用します。
•    マスターRSA-2048キー→セッションRSA-880→RC4-128の暗号化方式を使用します。
•    マスタープライベートRSA-2048キーを知らなくてもファイルを解読することはできません。
•    Cerberは、暗号化統計情報を送信するために、構成データで指定されたIPを使用してC&Cに接続しようとします。

Acronis True Image 2018 Betaは、Cerberをブロックします
Acronis True Image 2018 Beta(英語サイト、日本発表時期未定)一部であるAcronis Active Protectionの新しいバージョンは、Cerberのランサムウェアを検出し、影響を受けたファイルを直ちに復元します。
Acronis Active Protectionは、システム上のデータファイルの変更パターンを常に監視します。
例えば、あるふるまいは典型的な動作であると予想する一方で、別の振る舞いについては、疑わしいプロセスにファイルに対して敵対的な行動をとることを通知します。Acronisのアプローチは、これらのふるまいを調べて、 悪意のある行動パターンと比較します。このアプローチは、まだ報告されていないランサムウェアの亜種であっても、ランサムウェア攻撃を識別する際に非常に有効です。