CARBANAK バックドアの裏側

Configuration file that adds new C2 server and forces the data-stealing backdoor to use it news

このブログでは、CARBANAK (別名Anunak ) として知られる強力で用途の広いバックドアを詳しく見ていきます。具体的には、構成、サンプルごとに観察された小さな変化、およびその進化を含む、過去数年間の使用の運用上の詳細に焦点を当てます。これらの詳細を使用して、CARBANAK の演算子についていくつかの結論を導き出します。 CARBANAK バックドアに関するその他の背景については、Kaspersky と Group-IB および Fox-It の論文を参照してください。

テクニカル分析

このブログの本題に入る前に、背景を説明するためにバックドアの簡単な技術分析を行う必要があります。 CARBANAK は、データ盗用機能とプラグイン アーキテクチャを備えたフル機能のバックドアです。その機能には、キー ロギング、デスクトップ ビデオ キャプチャ、VNC、HTTP フォーム グラビング、ファイル システム管理、ファイル転送、TCP トンネリング、HTTP プロキシ、OS 破壊、POS および Outlook データの盗難、リバース シェルなどがあります。これらのデータ窃取機能のほとんどは、私たちが確認した最も古い CARBANAK の亜種に存在し、一部は時間の経過とともに追加されました。

スレッドの監視

表 1 に示すように、バックドアはオプションで、さまざまな目的で継続的な監視を実行する 1 つ以上のスレッドを開始する場合があります。

スレッド名

説明

キーロガー

構成されたプロセスのキー ストロークをログに記録し、それらをコマンド アンド コントロール (C2) サーバーに送信します。

フォームグラバー

フォーム データの HTTP トラフィックを監視し、C2 サーバーに送信します。

POSモニター

C:NSBCoalitionLogs および nsb.pos.client.log に保存されているログへの変更を監視し、解析されたデータを C2 サーバーに送信します。

PST モニター

ユーザー ディレクトリ内で新しく作成された Outlook Personal Storage Table (PST) ファイルを再帰的に検索し、それらを C2 サーバーに送信します。

HTTP プロキシ モニタ

HTTP プロキシに送信されたリクエストの HTTP トラフィックを監視し、将来の使用のためにプロキシ アドレスと資格情報を保存します。

表 1: 監視スレッド

コマンド

ファイル管理機能に加えて、このデータを盗むバックドアは、C2 サーバーから受信できる 34 個のコマンドをサポートしています。復号化後、これらの 34 個のコマンドは、コマンド ラインのようにスペースで区切られたパラメーターを含むプレーン テキストになります。コマンドとパラメーターの名前は、バイナリによって比較される前にハッシュされるため、コマンドとパラメーターの元の名前を復元することは困難です。表 2 に、これらのコマンドを示します。

コマンドハッシュ

コマンド名

説明

0x0AA37987

loadconfig

構成ファイルで指定された各コマンドを実行します (「構成」セクションを参照)。

0x007AA8A5

状態値を更新します (「構成」セクションを参照)。

0x007CFABF

ビデオ

デスクトップビデオ録画

0x06E533C4

ダウンロード

実行可能ファイルをダウンロードし、新しいプロセスに挿入します

0x00684509

アミー

Ammyy 管理ツール

0x07C6A8A5

アップデート

自己更新

0x0B22A5A7

klgconfig の追加/更新 (分析が不完全)

0x0B77F949

httpproxy

HTTP プロキシを開始します

0x07203363

キロス

MBR をワイプしてコンピュータを起動不能にする

0x078B9664

リブート

オペレーティング システムを再起動します

0x07BC54BC

トンネル

ネットワーク トンネルを作成します

0x07B40571

管理者

疑似 HTTP プロトコル用の新しい C2 サーバーまたはプロキシ アドレスを追加します。

0x079C9CC2

サーバ

カスタム バイナリ プロトコル用の新しい C2 サーバーを追加

0x0007C9C2

ユーザー

Windows ユーザー アカウントを作成または削除します

0x000078B0

rdp

同時 RDP を有効にします (分析が不完全)

0x079BAC85

安全

通知パッケージを追加 (分析が不完全)

0x00006ABC

デル

ファイルまたはサービスを削除します

0x0A89AF94

startcmd

構成ファイルにコマンドを追加します (「構成」セクションを参照)。

0x079C53BD

ランメム

実行可能ファイルをダウンロードし、新しいプロセスに直接挿入します

0x0F4C3903

ログオンパスワード

Windows アカウントの詳細を C2 サーバーに送信する

0x0BC205E4

スクリーンショット

デスクトップのスクリーンショットを取得し、C2 サーバーに送信します

0x007A2BC0

寝る

バックドアは指定された日付までスリープします

0x0006BC6C

二重

わからない

0x04ACAFC3

ファイルを C2 サーバーにアップロードする

0x00007D43

vnc

VNC プラグインを実行します

0x09C4D055

実行ファイル

指定された実行可能ファイルを実行します

0x02032914

キルボット

バックドアをアンインストールします

0x08069613

リストプロセス

実行中のプロセスのリストを C2 サーバーに返します

0x073BE023

プラグイン

プラグインが使用する C2 プロトコルを変更する

0x0B0603B4

指定したアドレスからシェルコードをダウンロードして実行する

0x0B079F93

キルプロセス

名前で指定された最初に見つかったプロセスを終了します

0x00006A34

コマンド

C2 サーバーへのリバース シェルを開始します。

0x09C573C7

ランプラグ

プラグイン コントロール

0x08CB69DE

自動実行

バックドアを更新する

表 2: サポートされているコマンド

構成

構成ファイルは、バックドアのインストール ディレクトリの下にある .bin 拡張子のファイルにあります。このファイルには、表 2 にリストされているものと同じ形式のコマンドが含まれており、バックドアが開始されたときにバックドアによって自動的に実行されます。これらのコマンドは、loadconfig コマンドの発行時にも実行されます。このファイルは、バックドアの起動スクリプトに例えることができます。 state コマンドは、ASCII 値 ‘0’ または ‘1’ として表される一連のブール値を含むグローバル変数を設定し、それ自体を構成ファイルに追加します。これらの値の一部は、使用する C2 プロトコル、バックドアがインストールされているかどうか、PST 監視スレッドが実行されているかどうかを示します。状態コマンドを除いて、構成ファイル内のすべてのコマンドは、プレーン テキスト名ではなく、ハッシュの 10 進数値によって識別されます。特定のコマンドは、実行されると構成に追加されるため、再起動後も保持されます (または再起動の一部になります)。 loadconfig および state コマンドは初期化中に実行され、設定ファイルが存在しない場合は効果的に作成され、state コマンドが書き込まれます。

図 1 と図 2 は、調査で見つけたサンプルのデコードされた構成ファイルを示しています。

Configuration file that adds new C2 server and forces the data-stealing backdoor to use it
図 1: 新しい C2 サーバーを追加し、データを盗むバックドアにそのサーバーを強制的に使用させる構成ファイル
TCP トンネルを追加し、デスクトップ ビデオを記録する構成ファイル
図 2: TCP トンネルを追加してデスクトップ ビデオを記録する構成ファイル

コマンドと制御

CARBANAK は、疑似 HTTP またはカスタム バイナリ プロトコルを介して C2 サーバーと通信します。

疑似 HTTP プロトコル

疑似 HTTP プロトコルのメッセージは「|」で区切られます。キャラクター。メッセージは、コンピュータのホスト名と MAC アドレスから生成されたハッシュ値を、キャンペーン コードとして使用される可能性が高い文字列に連結することによって構成されるホスト ID で始まります。メッセージがフォーマットされると、ランダムに生成された大文字と小文字のアルファベット文字列の追加の 2 つのフィールドに挟まれます。コマンド ポーリング メッセージと listprocess コマンドへの応答の例を、それぞれ図 3 と図 4 に示します。

コマンド ポーリング メッセージの例
図 3: コマンド ポーリング メッセージの例
コマンド応答メッセージの例
図 4: コマンド応答メッセージの例

メッセージは、Microsoft の RC2 実装を CBC モードで使用し、PKCS#5 パディングを使用して暗号化されます。暗号化されたメッセージは Base64 でエンコードされ、すべての「/」および「+」文字が「.」に置き換えられます。それぞれ「-」文字。 8 バイトの初期化ベクトル (IV) は、大文字と小文字のアルファベット文字で構成されるランダムに生成された文字列です。これは、暗号化およびエンコードされたメッセージの先頭に追加されます。

エンコードされたペイロードは、エンコードされたペイロード内のランダムな位置にランダムな数の「/」文字を挿入することにより、URI のように見えます。次にマルウェアは、スクリプト拡張子 (php、bml、または cgi) にランダムな数のランダム パラメーターを追加するか、次のリストのファイル拡張子 (パラメーターなし) を追加します: gif、jpg、png、htm、html、php。

この URI は、GET または POST 要求で使用されます。 POST リクエストの本文には、キャビネット形式に含まれるファイルが含まれる場合があります。 GET 要求のサンプルを図 5 に示します。

疑似 HTTP ビーコンのサンプル
図 5: 疑似 HTTP ビーコンの例

疑似 HTTP プロトコルは、HTTP プロキシ モニタリング スレッドによって検出されたプロキシ、または adminka コマンドによって追加されたプロキシを使用します。また、バックドアは、HKCUSoftwareMicrosoftWindowsCurrentVersionInternet Settings のレジストリで使用するプロキシ構成を検索し、%AppData%MozillaFirefox<ProfileName>prefs の Mozilla Firefox 構成ファイルで各プロファイルを検索します。 js.

カスタム バイナリ プロトコル

図 6 は、マルウェアのカスタム バイナリ プロトコルの構造を示しています。メッセージが 150 バイトを超える場合、未確認のアルゴリズムで圧縮されます。メッセージが 4096 バイトを超える場合は、圧縮されたチャンクに分割されます。このプロトコルは何年にもわたっていくつかの変更を受けており、各バージョンは何らかの方法で以前のバージョンに基づいています。これらの変更は、既存のネットワーク署名を無効にし、署名の作成をより困難にするために導入された可能性があります。

バイナリ プロトコル メッセージ形式
図 6: バイナリ プロトコル メッセージ形式
バージョン 1

バイナリ プロトコルの最も初期のバージョンでは、<chunkData> フィールドに格納されているメッセージ本文がホスト ID と単純に XOR されていることがわかりました。最初のメッセージは暗号化されておらず、ホスト ID が含まれています。

バージョン 2

このバージョンでは、ホスト ID をキーとして使用するのではなく、セッションごとに生成される長さ 32 ~ 64 バイトのランダム XOR キーを使用します。このキーは最初のメッセージで送信されます。

バージョン 3

バージョン 3 では、ヘッダーに暗号化が追加されています。メッセージ ヘッダーの最初の 19 バイト (<hdrXORKey2> フィールドまで) は、メッセージごとにランダムに生成され、<hdrXORKey2> フィールドに格納される 5 バイトのキーと XOR されます。メッセージ ヘッダーの <flag> フィールドが 1 より大きい場合、メッセージ本文の暗号化に使用される XOR キーは、メッセージの暗号化および復号化の際に逆方向に繰り返されます。

バージョン 4

このバージョンでは、ヘッダー暗号化スキームが少し複雑になります。ヘッダーは、<hdrXORKey1> と <hdrXORKey2> を組み合わせて反転させた XOR 暗号化されています。

バージョン 5

バージョン 5 は、これまでに見た中で最も洗練されたバイナリ プロトコルです。 256 ビットの AES セッション キーが生成され、メッセージ ヘッダーと本文の両方を個別に暗号化するために使用されます。最初に、メッセージ全体とヘッダーが RSA 鍵交換アルゴリズムで暗号化された状態で鍵が C2 サーバーに送信されます。以降のすべてのメッセージは、CBC モードの AES で暗号化されます。公開鍵暗号化を使用すると、C2 サーバーの秘密鍵がないとセッション鍵の復号化が不可能になります。

ラウンドアップ

CARBANAK バックドアの 220 のサンプルを切り上げ、抽出できた興味深い詳細をまとめた表を作成しました。これらのケースのほとんどで、バックドアはパックされたペイロードとして別の実行可能ファイルまたは何らかの武器化されたドキュメント ファイルに埋め込まれていることに注意してください。 MD5 ハッシュは、最終的に CARBANAK を起動する元の実行可能ファイル用ですが、各サンプルの詳細は実行中にメモリから抽出されました。このデータは、CARBANAK の運用面に関する独自の洞察を提供し、ここからダウンロードできます

プロトコルの進化

前述のように、CARBANAK のバイナリ プロトコルは、何年にもわたっていくつかの重要な変更を受けてきました。図 7 は、コレクションにあるサンプルのコンパイル時間に基づく、この進化の大まかなタイムラインを示しています。可視性が完全ではないため、これは完全に正確ではないかもしれませんが、変更がいつ発生したかについての一般的なアイデアを提供します。このデータを盗むバックドアの一部のビルドでは、古いバージョンのプロトコルが使用されていることが確認されています。これは、複数のオペレーター グループが、このデータを盗むバックドアの独自のビルドを個別にコンパイルしていることを示唆している可能性があります。

バイナリ プロトコル バージョンのタイムライン
図 7: バイナリ プロトコル バージョンのタイムライン

*バージョン 3 を使用した以前のビルドが欠落している可能性があります。

ビルドツール

CARBANAK の文字列のほとんどは、分析をより困難にするために暗号化されています。すべての暗号化された文字列のキーと暗号文は、同じコンパイル時間のサンプル間でも、遭遇したサンプルごとに変更されていることがわかりました。 HTTP プロトコルに使用される RC2 キーも、同じコンパイル時間のサンプル間で変化することが確認されています。設定が必要なキャンペーン コードの使用と組み合わせたこれらの観測結果は、ビルド ツールが存在する可能性が高いことを示しています。

ラピッドビルド

ビルド ツールの可能性はありますが、サンプル セットで 57 の固有のコンパイル時間が見つかりました。一部のコンパイル時間は非常に近いものでした。たとえば、2014 年 5 月 20 日、2 つのビルドが約 4 時間間隔でコンパイルされ、同じ C2 サーバーを使用するように構成されました。繰り返しますが、2015 年 7 月 30 日に、2 つのビルドが約 12 時間間隔でコンパイルされました。

ビルド ツールでは見られないような短い時間間隔で、コードのどのような変更を確認できますか?あるケースでは、1 つのビルドは wi.exe という名前のファイルに対して runmem コマンドを実行するようにプログラムされていましたが、もう 1 つのビルドはそうではありませんでした。このコマンドは、C2 から実行可能ファイルをダウンロードし、メモリ内で直接実行します。別のケースでは、一方のビルドは Internet Explorer の信頼済みサイト リストにドメイン blizko.net が存在するかどうかをチェックするようにプログラムされていましたが、もう一方のビルドはそうではありませんでした。 Blizko はオンライン送金サービスです。また、表 1 のさまざまな監視スレッドがビルドごとに有効になっていることも確認しました。これらのマイナーな変更は、特定のターゲットに対するオペレーターのニーズに適応するために、コードが迅速に変更およびコンパイルされることを示唆しています。

キャンペーン コードとコンパイル時間の相関関係

場合によっては、CARBANAK サンプルのコンパイル時間が、特定のキャンペーン コードで指定された月に非常に近いことがあります。図 8 は、データ セットで観察できる関係の一部を示しています。

キャンペーンコード

コンパイル日

8月

2015 年 7 月 30 日

12月

12/8/14

7月

2016 年 7 月 2 日

じゅん

5/9/15

六月

2014 年 5 月 25 日

六月

6/7/14

ジュネヴンク

2014/6/20

ジャスパム

7/13/14

ジュード

7/13/14

五月

5/20/14

五月

2015 年 5 月 19 日

じゅんじゅん

6/7/16

セップ

2014 年 9 月 12 日

スパマグ

8/1/14

スパーグ

8/1/14

図 8: 時間関係をコンパイルするためのキャンペーン コード

最近の更新

最近、バックドアの 64 ビット版が発見されました。最近のブログ投稿で、そのような亜種に関する詳細を共有しました。これらの亜種の一部は、構成されたアクティベーション日までスリープするようにプログラムされており、アクティブになります。

歴史

「カルバナックグループ」

CARBANAK マルウェアに関連して公開されたレポートの多くは、対応する「Carbanak グループ」に言及しています。このグループは、このデータを盗むバックドアに関連する悪意のある活動の背後にいるようです。 FireEye iSIGHT Intelligence は、CARBANAK ツールと、DRIFTPIN (別名Toshliph ) などの関連するバックドアを使用するいくつかの個別の包括的なキャンペーンを追跡しました。現時点で入手可能なデータでは、これらのキャンペーンがどの程度相互に関連しているかは不明です。これらのキャンペーンがすべて同じ犯罪者グループによって直接組織されているのか、それともこれらのキャンペーンがマルウェアや技術を共有する緩やかに関連するアクターによって実行されたのかは不明です。

FIN7

CARBANAK バックドアが発見されたこれまでの Mandiant のすべての調査で、この活動は FIN7 脅威グループによるものでした。 FIN7 は、2015 年半ば以降、米国のレストランおよびホスピタリティ業界に対して非常に積極的でした。

FIN7 は、侵入の後のフェーズで CARBANAK をエクスプロイト後のツールとして使用して、ネットワーク内で足場を固め、アクセスを維持します。ビデオ コマンドを頻繁に使用してユーザーを監視し、被害者のネットワークについて学習し、トンネル コマンドを使用して接続をプロキシします。被害者環境の隔離された部分に。 FIN7 は、合法的に購入したコード署名証明書を一貫して利用して、CARBANAK ペイロードに署名しています。最後に、FIN7 は、他の CARBANAK 関連のアクティビティでは確認されていないいくつかの新しい手法を活用しています。

最近の FIN7 の活動については、以前の公開ブログ投稿で取り上げました。

FireEye iSIGHT インテリジェンスの MySIGHT ポータルには、FIN7 の活動に関する調査と観察に関する追加情報が含まれています。

米国、中東、アジア全体に広がる広範な銀行の標的

Proofpoint は、2016 年の初めに、米国および中東全体の銀行および金融機関を標的とした広範なキャンペーンについて最初に報告しました。これらの地域のほか、東南アジアおよび南西アジアのいくつかの組織が同じ攻撃者の標的になっていることを特定しました。

この一連の活動は、2014 年後半から 2016 年初頭にかけて持続しました。最も注目すべきは、このキャンペーンで利用されたインフラストラクチャが、これらの地域の同様の金融機関を標的とする LAZIOK、NETWIRE、およびその他のマルウェアと重複していたことです。

ドリフトピン

DRIFTPIN (別名Spy.Agent.ORMおよびToshliph ) は、以前にさまざまなキャンペーンで CARBANAK に関連付けられていました。 2016 年前半に FIN7 による最初のスピア フィッシングで展開されたことが確認されました。また、2015 年後半に、 ESET は CARBANAK 関連の攻撃について報告し、DRIFTPINを悪意のあるペイロードとして使用して、ロシアおよび東ヨーロッパの銀行を標的としたスピア フィッシング キャンペーンを詳述しました。 Cyphort Labs は、この一連の活動に関連する DRIFTPIN の亜種が、侵害された 2 つのウクライナの銀行の Web サイトに配置された RIG エクスプロイト キットを介して展開されたことも明らかにしました。

FireEye iSIGHT Intelligence は、このスピア フィッシングの波が、米国の金融機関や、ビットコインの取引やマイニング活動に関連する企業など、さまざまな標的を狙っていることを確認しました。この一連の活動は現在も活発に行われており、同様のエンティティを標的にしています。この最新の活動に関する詳細は、FireEye iSIGHT Intelligence MySIGHT ポータルで入手できます。

以前のCARBANAK活動

2014 年 12 月、Group-IB と Fox-IT は、東ヨーロッパの銀行、米国とヨーロッパの POS システム、およびその他のエンティティを標的とした「Anunak」と呼ばれるマルウェアを使用する組織犯罪グループに関するレポートをリリースしました。 Kaspersky は、2015 年 2 月に「Carbanak」という名前で同じグループに関する同様のレポートをリリースしました。「Carbanak」という名前は、このレポートで Kaspersky によって造られました。

この活動は、2014 年のウクライナでの ATM の悪用にも関連していました。さらに、この初期の活動の一部は、現在の FIN7 操作と類似しています。横方向の移動に Power Admin PAExec を使用することです。

結論

CARBANAK から抽出できる詳細情報から、このデータを盗むマルウェアの背後にある操作の詳細について独自の洞察が得られます。上記で説明したように、このようなデータをまとめて見ると、いくつかの推論を行うことができ、次のように要約できます。

  1. 私たちが観察した情報に基づいて、CARBANAK のオペレーターの少なくとも一部は、ソース コードに直接アクセスして、それを変更する方法を知っているか、開発者と密接な関係にあると考えています。
  2. 一部のオペレーターは、バックドアの独自のビルドを独自にコンパイルしている可能性があります。
  3. これらの攻撃者は、オペレータが C2 アドレス、C2 暗号化キー、キャンペーン コードなどの詳細を構成できるビルド ツールを使用している可能性があります。このビルド ツールは、バイナリの文字列をビルドごとに新しいキーで暗号化します。
  4. さまざまなキャンペーン コードは、独立系または緩やかに提携している犯罪者が、さまざまな業界を標的とする幅広い侵入に CARBANAK を使用していることを示していますが、特に世界中の金融機関や、米国内のレストランおよびホスピタリティ セクターを対象としています。

参照: https://www.mandiant.com/resources/blog/behind-the-carbanak-backdoor

Comments

Copied title and URL