ブログ

Dridexがあなたを監視しています

F5 サムネイル
F5
2016 年 6 月 22 日公開

Dridex の作成者は、セキュリティ ベンダーによる検出および緩和技術を回避し続けるために、新しい関数の難読化や新しい構成のエンコードなどの更新を頻繁にリリースしています。 彼らは、マルウェアの標的を欧州の金融機関から米国の新興金融機関へと移した。

明らかに、このマルウェアの開発者は、難読化だけでなく、クライアントとサーバーのパラダイムに関しても優れた能力を発揮しています。 次の調査では、このスキルセットの概要を説明します。 Dridex の作成者がマルウェアの機能を継続的かつ頻繁に更新することに注力していることと相まって、Dridex は非常に機敏になり、その結果、検出、復号化、分析が困難になっています。

Dridex はどうやってあなたを監視しますか?

それで、Dridex があなたの許可なくあなたを監視していて、あなたがそれに気付いていないのはなぜでしょうか?

リモート セッションを使用して銀行取引中に、感染したユーザーのマシンに接続します。 このセッションは、マルウェアが VNC プロトコルを使用して開くデスクトップの別のインスタンスで保持されるため、ユーザーには見えません。 このインスタンスは複製されますが共有されません。つまり、攻撃者はユーザーのマウスとキーボードの動きを確認できず、その逆も同様です。

マルウェアは被害者のマシンにインストールされると、ボットネットのコマンド アンド コントロール (C&C) に「電話をかけ」、ターゲット リストを取得して次のモジュールを要求します。 VNC と SOCKS。

アクティベーション プロセスは、次の 2 つの方法のいずれかで開始できます。

  • C&Cからの指令により
  • 設定内のVNCフラグを検査した後のブラウザ関数フックによって

この研究は、注入モジュールアプローチに焦点を当てています。 (Dridex 構成内で VNC 開始がトリガーされる方法については、以前の F5 の記事で説明しました。)

VNC アクティベーションフロー

このフローには、感染したブラウザと感染した explorer.exe プロセス間のやり取りが含まれます。

ブラウザの役割

設定内の VNC フラグは、Dridex がブラウザに挿入したネットワーク機能フック内の悪意のあるコードによって検査されます。

  1. このフックにより、Dridex は各リクエストをネットワーク経由で送信される前に検査できるようになります。

このフックにより、Dridex は各リクエストをネットワーク経由で送信される前に検査できるようになります。
  1. リクエスト URL が「リダイレクト」設定内の URL と一致する場合、フックされたネットワーク機能から C&C に悪意のあるスクリプトのリクエストが送信されます。
  2. そのため、標的の URL にアクセスされ、悪意のあるスクリプトがユーザーに送信されました。 次は何ですか?

  3. スクリプトを受信すると、VNC フラグが検査されます。
    VNC フラグがオンの場合、マルウェアは暗号化されたデータを受信することを期待します。 この暗号化されたデータには、マルウェアが後で使用する情報が含まれています。

    • VNC IPとポート - VNCセッションを起動するときに接続するリモートアドレス
    • SOCKS IPとポート - SOCKSセッションを起動するときに接続するリモートアドレス
    • データはXORを使用して暗号化されます(最初の4バイトがキーです)
Dridex 図 1: 完全な復号ルーチン
図1: 完全な復号ルーチン

以下は、IP + ポートが追加されたサーバーからの単純な HTML 応答の例です (復号化ルーチンの後)。

alt="Dridex 図 2: 復号化されたスクリプトコンテンツ。IP とポートが追加されます。
図2: 復号化されたスクリプトコンテンツ。IPとポートが追加されます。

感染したブラウザは、これらの暗号化された IP レコードを、設定と同じキーの下、ただし別のサブキーの下のレジストリに保存します。
 

Dridex 図 3: IPおよびPORTレジストリレコード
図3: IPおよびPORTレジストリレコード

感染したブラウザは、Windows のイベント オブジェクト API を使用して、感染した explorer.exe に VNC を起動するように通知します。この時点から、感染した explorer プロセスがアクティベーション プロセスを引き継ぎます。


探検家の役割

  1. エクスプローラー内の悪意のあるコードは、VNC 接続を担当する専用スレッド内で無限ループで実行され、ブラウザーからのイベント信号を待機します。 この信号を受信すると、レジストリから IP + ポート レコードを抽出し、デコードします。
Dridex 図4: 感染したブラウザは、感染した explorer.exe がレコードを読み取る前にレコードを書き込みます。
図4: 感染したブラウザは、感染した explorer.exe がレコードを読み取る前にレコードを書き込みます。
  1. エクスプローラーは、Windows API「LoadLibrary」のカスタム実装を使用して vnc_x32.dll を読み込みます。
    • この時点より前では、VNC モジュールはエクスプローラーのメモリ内に生データとして存在します。
    • すべてのPEセクションをマッピングした後、vnc.dllのDllEntryPointを呼び出します(DLL_PROCESS_ATTACHフラグ付き)
    • この手法では、「LoadLibrary」を追跡することができないため、VNC モジュールがロードされる時点が難読化され、分析が非常に困難になります。
Dridex 図 5: explorer.exe – オリジナルのエクスプローラー コード、worker_x32.dll – メインの Dridex モジュール、vnc_x32.dll – vnc モジュール
図 5: explorer.exe – オリジナルのエクスプローラー コード、worker_x32.dll – メインの Dridex モジュール、vnc_x32.dll – vnc モジュール
  1. vnc_x32.dll は、サーバーを起動および停止するための 2 つの関数をエクスポートします。
  2.  

Dridex 図 6: VNCエクスポート機能
図6: VNCエクスポート機能

     

  1. エクスプローラーのワーカー モジュールは、VNC 接続を開始するために、IP とポートをパラメーターとして VncStartServer 関数を呼び出します。
     

     

Dridex 図 7: パラメータ付きVNCStartServerの呼び出し
図7: パラメータ付きVNCStartServerの呼び出し

     

  1. SOCKS モジュールを介さずに外部 VNC IP アドレスを受信した場合、VNC モジュールは攻撃者の VNC サーバーへの接続を開始します。 感染したマシンがリモート セッションを開始します。 通常、視聴者はサーバーとして機能するため、これはプロトコルを使用するユニークな方法です。
    • ローカル VNC アドレスを受信した場合、Dridex モジュールは攻撃者からの着信 VNC 接続をリッスンします。
  2.  

     

  3. VNC サーバーへの TCP 接続を確立した後、vnc_x32.dll は、VncStartServer ルーチンにパラメーターとして渡される bot_id 文字列を使用してチャレンジを生成します。 これは、VNC プロトコル ハンドシェイクが行われる前にサーバーの ID を確認するために使用されます。

     

  4.  

Dridex 図8: 被害者と攻撃者の通信スキーム
図8: 被害者と攻撃者の通信スキーム

この後、すべての段階が成功すると、VNC リモート セッションが開始され、詐欺師は被害者の知らないうちに被害者のマシン上でアクションを実行できるようになります。

この機能は通常、銀行内のセキュリティ製品を回避するために、資格情報を盗んだ後の補完的なアクションとして使用されます。 これらの製品は、ブラウザの固有のフィンガープリントを使用してユーザーを識別することを目的としています。

F5の研究チームはDridexを監視している

セキュリティベンダーとサイバー犯罪者との絶え間ない競争により、犯罪者はより難読化され、多くの異なる独立したコンポーネントを持つマルウェアを作成するようになっています。 これらのコンポーネントは、マルウェア作成者が銀行機関やセキュリティベンダーが導入した障害や安全対策を克服するのに役立ちます。 これらのコンポーネントにより、モジュール間の相互作用を理解する必要が生じるため、分析プロセスがさらに複雑になります。

この競争により、研究者である私たちは、Dridex の活動と進化を監視し、警戒する必要に迫られています。