ランサムウェアの作成者は、ペイロードの開発において様々な側面で実験を続けています。ランサムウェアの実装の歴史を振り返ると、単純な画面ロックからファイル暗号化のためのマルチコンポーネントモデルへ、そして初歩的なアプローチから洗練されたアプローチへと進化を遂げてきました。 ランサムウェア ツールとして野生で進化を遂げた個体がおり、その一つがクイックヒール研究所に持ち込まれました。このサンプルは LockerGoga 暗号化を実行するためのさまざまなオプションを提供するツールとして機能する点がユニークです。
他の標準的なコマンドラインツールと同様に、LockerGogaランサムウェアは参考のためにヘルプ情報を表示します。パラメータ-hを付けて実行すると、「-v」(LockerGogaの印刷版)や「-m」([メールIDを引数として指定])などのオプションが表示されます。これは、被害者が暗号化されたファイルを復号したい場合に、身代金の支払い先となる攻撃者のメールIDを指定するためのものです。身代金要求メッセージにも、復号ツールの価格を問い合わせるための同じメールIDが記載されています。

LockerGoga はコマンドライン引数の解析に Boost ライブラリを使用します。

コマンドラインツールの最後のオプション「-p」を使用すると、悪意のあるコードを挿入する必要があるプロセスを選択できます。プロセス名が指定されていない場合は、デフォルトで「winlogon.exe」にコードが挿入されます。
受信したサンプルには、次のような4つの実行可能コンポーネントが含まれています。
- 暗号化32.dll
- 暗号化64.dll
- {ランダム名}.exe (32 ビット)
- {ランダム名}.exe (64 ビット)
実行されると、マルウェアは、前述のシステムアーキテクチャに従って、%AppData%/Local/Temp の場所に dll コンポーネントをドロップします。
次に、シェルコードと1024ビットのRSA公開鍵をプロセス「winlogon.exe」または引数として指定されたプロセスに挿入します。挿入されたシェルコードは、ldrloaddllを利用して、ドロップされたencrypt**.dllをロードするために使用されます。
encrypt**.dll にはエクスポート関数「encryptStart」があります。この関数には、すべてのドライブとフォルダを列挙し、そこに含まれるファイルのリストを生成するコードが含まれています。すべてのファイルリストはファイル C:\cl.log に保存されます。

C:\cl.log にリストされているファイルごとに、システムの 64 ビット アーキテクチャまたは 32 ビット アーキテクチャに応じて %AppData%/Local/Temp または C:\Windows\Temp に {ランダム名}.exe の実行可能ファイルをドロップし、コマンド ライン引数として -k{公開キー} {ファイル パス (つまり、暗号化するファイル)} を使用して、ループでその {ランダム名}.exe を呼び出します。
LockerGogaランサムウェアのユニークな点は、ファイルごとに新しいプロセスを作成し、そのファイルを暗号化してそのプロセスを終了することです。この手法により、 ランサムウェア対策製品暗号化が行われている間、CPU リソースのほとんどがほぼ 90% 消費されます。

各ファイルの暗号化が終了すると、C:\cl.log にファイル名が書き込まれます。
暗号化プロセス:
ファイル コンテンツの暗号化には AES-128 ビット、ファイル コンテンツの暗号化に使用される AES キーの暗号化には RSA-1024 ビットの XNUMX つの暗号化アルゴリズムを使用します。
AES キーの生成:
まず、「CryptGenRandom」APIを使用して32(20h)バイトの乱数シードを生成しました。次に、リソースセクションからさらに32(20h)バイトを取得し、40hバイトのキースタックを作成し、これをAESキーの生成に使用しました。
LockerGoga は Boost ライブラリとともに、サンプルの逆コンパイルを非常に困難にする暗号化プロセス用の Crypto++ ライブラリを実装します。


Crypto++ ライブラリを実装すると、2009 年に Intel によって導入された AES の新命令セット (AES-NI) が有効になります。
AESKEYGENASSISTとAESENC命令はAES暗号化を実装するために使用されます。
AESKEYGENASSIST はラウンド キーの拡張に使用され、AESENC は AES の 1 ラウンドの暗号化を実行するために使用されます。


上記のすべての操作が完了すると、32 バイトのデータが生成され、そのうち 16 バイトはキーとして使用され、残りの 16 バイトは初期化ベクトル (IV) として使用されます。

マルウェアは、ファイルを暗号化する前にファイル拡張子を .locked に変更します。

![]()

暗号化に使用される公開鍵はPEM形式です

以下に示す Microsoft Blob 形式に変換します。


キー (10h) とともに、IV (10h) とファイル サイズ (つまり、暗号化されるファイル) として使用される 8h バイトが、'MGF1024 (SHA-1)' (つまり、OAEP パディング スキームのマスク生成関数) を使用して RSA-1 ビットで暗号化され、ファイルの末尾に追加されます。

その後、キー長 128 ビットの CTR モードの AES キーと IV を使用してファイルの内容を暗号化します。
まとめ:
LockerGoga は、1 つのマスター プロセスと複数のスレーブ プロセスを作成してファイルを暗号化する、ユニークで珍しいメカニズムを示しました。
主な特徴:
複雑な数学計算を処理するには Boost ライブラリを使用します。
暗号化にMicrosoft Crypto APIを使用する代わりに、Crypto++ライブラリ(Boost Software License)を実装しました。
IoC:
1E8A6AABF4ADF3AE1890A4C8A2CFF276 – LockerGoga
91976DBD489FEAE2D8719545C8DE304A- encrypt32.dll
174E3D9C7B0380DD7576187C715C4681-encrypt64.dll
E9E6EBC6A0D5183FC8E66472B3419F1E-{random_name}.exe-64 bit
A52F26575556D3C4ECCD3B51265CB4E6 – {random_name}.exe-32 bit
主題専門家:
ゴータム トリパシー、ラーフル シャルマ、マニシャ プラジャパティ |クイックヒールセキュリティラボ



