GandCrabは2018年4.0月の最終週から活動を開始しました。その間、GandCrabは失敗から学び続け、そのアジャイルな開発は多くのセキュリティ研究者の注目を集めました。最初の侵入後、サーバーをNamecoinベースのトップレベルドメイン(.BIT TLD)サーバーに移転し、その後も暗号化や通信プロセスシーケンスにおける些細なミスから学び、進化を続けました。最近の観察によると、バージョン5.0に続き、新しいバージョンXNUMXも多数のマシンに感染し、現在までに多くの亜種が確認されています。
バージョン5.0.9は2018年5.0月の第XNUMX週に初めて報告され、他のGandCrab XNUMXバージョンと同様の動作を示しました。しかし、新年を迎える前にGandCrabが過去のものにならないように、このバージョンでは「We will come back very soon! ;)」というメッセージボックスが表示されています。様々な指標から、作成者はロシア人で英語を母国語としていないため、この不適切な文章構成になっていると考えられます。正しいメッセージは「We will come back very soon! ;)」であると推測できます。

図1. メッセージボックス
感染ベクトル
GandCrabは、悪意のある添付ファイルを含む悪意のあるメールキャンペーンや、セクストーションキャンペーンを通じて拡散します。メールには、一見本物のように見えるファイル名のdocファイルが添付されており、ユーザーはマクロの有効化やプラグインのアップデートのダウンロードを強いられます。この操作によってGandCrabに感染します。
最初に、ユーザー名、コンピュータ名、ワークグループ、IP アドレスなど、ユーザーに関連するすべてのデータを収集します。この情報は暗号化された形式で「PCData」として保存され、マシンの識別に使用されます。
メイン実行部分に移動する前に、実行中のすべてのプロセスで一般的なウイルス対策サービスをチェックします。

図2. AVプロセスリスト
マシン上に存在するドライブを確認するため、ドライブのアルファベット順にドライブ名を列挙します。PCDataからマシンに関する必要な情報をすべて収集した後、これらの情報はIV文字列「jopochlen」を持つRC4アルゴリズムで暗号化されます。さらに、このデータは再びbase64形式に変換され、PCDataセクションの身代金要求メッセージに添付されます。
GandCrabは拡張として、過去13つの亜種から固定長のランダム文字列を採用しています。この形式は本バージョンでも継承され、最大XNUMX文字のランダム長文字列が使用できます。
キー暗号化
メインペイロードには、salsa20アルゴリズムで暗号化されたRSA公開鍵が含まれており、この暗号化鍵はバイトキー5でXOR演算されます。この鍵は復号された後、CryptExportKey関数でエクスポートされます。Salsa20アルゴリズムは、Daniel Bernstein氏(Twitterハンドル:@hashbreaker)によって開発されました。このサンプルでは、salsa20のカスタマイズ版が使用されています。ファイルには、「@hashbreaker Daniel J. Bernstein let's dance salsa <3」というカジュアルなコメントが見られます。
![]()
図3. サルサ識別子。
2 つのレジストリ キーが作成されます。
SOFTWARE/key__dats/dats (以前のバージョンではSOFTWARE/key__data/dataでした) SOFTWARE/ext_data/data
暗号化されたファイルに追加されるランダムに生成された拡張子は、レジストリ キーの 'ext' 値に保存されます。
ソフトウェア/ext_data/データ
Microsoft Enhanced Cryptographic Provider CryptoAPI CryptGenKey を使用して、RSA-2048 の新しいキー ペアが生成されます。

図4. CryptGenKey RSA-2048
この鍵ペアのRSA秘密鍵は、SALSA20アルゴリズムで暗号化されます。この公開鍵と暗号化された秘密鍵のペアは、「SOFTWARE/key__dats/dats」レジストリに「public」と「private」の値で保存されます。このために使用されたSalsa20鍵は、ファイル自体から復元されたRSA公開鍵で再度暗号化されます。
暗号化された身代金要求書はペイロードの.dataセクションに保存されます。この要求書は、バイト列を0x10でXOR演算することで復号されます。この身代金要求書は、「extension_name-DECRYPT.txt」という形式でドロップされます。
ファイル暗号化
ファイルの暗号化を開始する前に、ドキュメント、Excelシート、データベースなどのファイルを使用している可能性のあるいくつかの重要なプロセスを終了します。これは、使用中のファイルが暗号化されずに残らないようにするためです。

図6. 終了するプロセスのリスト
また、暗号化されるすべての拡張子のリストがファイル内に記載されています。GandCrabは暗号化の実行中、Program Files、Windows、TOR(マルウェア作成者への連絡に必要)などの重要なディレクトリを回避します。また、boot.in、ntuser.datなどのファイルも暗号化から除外されます。

図7. 暗号化ファイルの構造
暗号化中、ファイル全体がSalsa20で暗号化されます。Salsa20鍵はCryptGenRandomで生成され、ファイルごとに異なります。暗号化に使用されるSalsa20鍵は、ローカルで生成されたRSA公開鍵で再度暗号化されます。
すべてのファイルが暗号化された後、100を超えるドメインへの接続を試みます。ホスト名を見ると、これらは正規のウェブサイトであり、何らかの形で侵害されていることが明らかです。侵害されたURLを生成するために、リストからドメイン名を取得し、7つの定義済み文字列のいずれかを追加します。さらに、この文字列に、さらに8つの定義済み文字列(images、image、pictures、graphic、assets、pics、imgs、tmp)から選択された4番目の文字列を追加します。最後に、この文字列にランダムに生成された画像名と、XNUMXつのリストから選択された拡張子(jpg、gif、png、bmp)を連結します。
例:https://[正規ドメイン名]/content/graphic/dekakadake.jpg

図8. URLの形成
URL 全体を取得した後、PCData に保存されている暗号化されたユーザー情報をホストに送信します。

図9. HttpSendRequest
身代金注記
GandCrab v5.0.9の身代金要求メッセージは次のようになります

結論
GandCrab は最初からモジュール型のアプローチを採用しており、時間の経過とともに進化してきました。
主な機能は次のとおりです。
- 人気の AV サービスが実行されているかどうかを確認する
- すべてのファイルを暗号化するアプリケーションの終了
- RSA 2048を使いながらサルサを使ってパフォーマンスを向上
- 侵害されたサイトを通信に使用する
冒頭に表示されるメッセージボックスは、新しい亜種の次回の大規模なリリースを示唆しています。そのため、私たちはこれに対抗するために常に注意を払う必要があります。
IOC
44C289E415E4C12B883003082194D76C
主題専門家:
ジェイシュ・B・クルカルニ | クイックヒール・セキュリティ・ラボ




