Hesperbot Bankingトロイの木馬-詳細な分析

すでにHesperbotについて書いていますが 、この脅威は新しい銀行マルウェアであり、モジュールアーキテクチャを備えています。 攻撃者はこれを使用して、トルコ、チェコ共和国、ポルトガル、英国など、さまざまな国のユーザーを攻撃しました。 攻撃の主な目的は、ユーザーのオンラインバンキングから機密データを盗み、Symbian、Android、Blackberryを実行しているデバイスに悪質なコードのモバイルコンポーネントをインストールすることでした。 サイバー犯罪者は説得力のあるフィッシングスキームを使用してユーザーを悪意のあるリンクに誘導し、そのアプローチをさらに実用的にしました。







悪意のあるリンクをクリックすると、ユーザーの侵害が発生します。 以下は、サイバー犯罪者が使用する図です。





図 ユーザー侵害スキーム。



ドロッパーの主なタスクは、explorer.exe信頼済みプロセスのコンテキストにペイロード(ペイロードまたはコア)を導入することです。 次に、このコードはネットワークからダウンロードし、追加のモジュールを実行します。







Win32 / Spy.Hesperbotはクロスプラットフォームの脅威であり、リストされているさまざまなモジュールはx86およびx64バリアントで利用可能です。 一部のモジュールのさまざまな内部機能は、仮想メソッドの特別なテーブル(vtable)を介して他のモジュールで使用できます。 HesperbotコードのほとんどはCで記述され、ランタイムライブラリを使用せずにVisual Studio 2010を使用してコンパイルされます。



ペイロード



ドロッパーは、次のいずれかの方法を使用して、 コアコンポーネントをexplorer.exeアドレススペースに挿入できます。





実装が成功すると、コアコンポーネントはシステムでの作業を開始します。C&Cサーバーの管理、補助モジュールの起動、マルウェアスタートアップパラメーターのシステムレジストリへの書き込みを担当します。 C&Cを使用するために、Hesperbotは、ボディに固定されたURLのリスト(国やボットネットによって異なる)を使用するか、特別なDGAアルゴリズムを使用して新しいアドレスのリストを生成します。 悪意のあるコードは、次の情報をC&Cサーバーに送信します。







図 チェコのボットネットの識別子。



サーバーの応答には、次の情報またはファイルが含まれる場合があります。





悪意のあるコードは、 SCardEstablishContextSCardListReaders、およびSCardConnectの APIを使用して、システム内のアクティブなスマートカードのリストを取得します。 他のより複雑な脅威のケース[ 1、2 ]とは異なり、Win32 / Spy.Hesperbotはスマートカードの名前のみを収集し、スマートカードと対話することはできません。



ダウンロードされたファイル(構成ファイルとプラグイン実行可能ファイル)は、 Twofishアルゴリズムを使用して暗号化されます 。このアルゴリズムの 256ビットハッシュはデータに基づいています。





C&Cおよび他の補助ファイル(キーロガーログファイルなど)からダウンロードしたデータを保存するために、Hesperbotは%APPDATA%フォルダーに任意の名前のディレクトリを作成します。



Coreモジュールには、explorer.exeだけでなく、実行中の他のプロセスにもコードを埋め込む機能があります。 悪意のあるコードはcsrss.exe内でUserNotifyProcessCreateインターセプトを使用して文書化されていないトリックを使用し、実行中のすべてのプロセスでコードがアクティブであることを確認します。



キーロガーコンポーネントは、 GetMessageおよびTranslateMessage関数を介してキーストロークをインターセプトします。 次に、文字はプロセスに関する情報と入力されたウィンドウの名前とともにログファイルに保存されます。 その後、ファイルは攻撃者のサーバーに送信されます。



スクリーンショットとデスクトップキャプチャモジュールはhttpiと呼ばれます。 ビデオキャプチャは、Zeusバンキングトロイの木馬プログラムでも使用されました。 この機能により、攻撃者はシステム内のユーザーで何が起きているかをより完全に把握できます。 この機会は、Avifil32.dllライブラリのAPI AVIFileCreateStreamAVIFileMakeCompressedStreamAVIStreamWriteを使用して実装されます。





図 ビデオ作成コード。



デスクトップのスクリーンショットの作成は、Gdi32.dllライブラリの機能を使用して実行されます。



VNC接続は以前 、有名なCarberpトロイの木馬で見られました。 攻撃者がアクセスできる感染したコンピューターの側にVNCサーバーを作成できます。 RDPとは異なり、VNCはユーザーのログオフ操作を実行しないため、攻撃者は操作中に被害者に接続できます。 これは、ユーザーには見えない補助デスクトップ( CreateDesktop )を作成することで実現されます。 このモジュールは、攻撃者がシステムにインストールされているブラウザプロセスを起動できるようにします。 この場合、攻撃者は保存されたデータ(Cookie、セッションなど)にアクセスします。



ネットワーキングとWebインジェクション



Hesperbotは、WinSockライブラリ( sendWSASendなど)およびWinInetライブラリ( HttpSendRequestInternetReadFileなど)のフックを使用してユーザーのHTTP / HTTPSネットワークトラフィックを完全に制御する最初の銀行マルウェアではありません。 よく知られているトロイの木馬ZeusとSpyEyeでも同様のメカニズムが使用されました。 このアプローチを使用すると、攻撃者はWebインジェクションを実行し、フォーム取得データを取得し、攻撃者がWebブラウザで開かれたページに入るために必要な情報を盗むために他の操作を実行できます。 これらの方法は、「Man-in-the-Browser」攻撃と呼ばれます。 Win32 / Spy.Hesperbotは、ユーザーに攻撃を行う際にわずかに異なるアプローチを取ります。これは、別のWin32 / Gatakaバンキング型トロイの木馬で既に確認されてます。



HTMLコードのトラフィックの傍受と実装は、上記のコンポーネントテーブルで説明したnethk、httphk、およびhttpiモジュールによって実行されます。





図 さまざまなHesperbotモジュールの相互作用。





nethkモジュールは、ダウンロード可能な最初の悪意のあるコードプラグインです。 コアコンポーネントによってダウンロードされます。 Win32 / Spy.Hesperbotは、ブラウザプロセスによって開始されたすべての接続を制御できるローカルプロキシを作成することにより、中間者攻撃を実行します。





図 プロキシ作成コード。





図 インストールされたHesperbotプロキシを介したInternet Explorerネットワーク接続。



nethkモジュールを使用するトロイの木馬プログラムは、アドレス127.0.1.1の任意のポートにプロキシを作成し、mswsock.dllライブラリの次の機能をインターセプトします: WSPSocket 、WSPIoctl、 WSPConnectWSPCloseSocket 。 これらの関数へのポインターは、テーブルWSPPROC_TABLEで変更されます。 このリダイレクトの仕組みを理解するために、 WSPConnectの悪意のあるバージョンを以下に示します。





図 WSPConnect APIの悪意のあるバージョン。



たとえば、ユーザーがオンラインバンキングシステムにログインしたい場合、ブラウザーが銀行のウェブサイトへの安全な接続を確立しようとすると、接続リクエストはHesperbotコードによってインターセプトされ、ローカルプロキシが作成されます。その後、オンラインバンキングシステムは攻撃者のソケットを処理します





図 悪意のあるプロキシの操作スキーム。



httphkモジュールのコールバック関数は、プロキシが実サーバーに送信する前にブラウザーからの要求をインターセプトするたびに呼び出されます。 さらに、プロキシが実サーバーからの要求への応答をインターセプトしてブラウザーに送信する前に、httphkが呼び出されます。 次に、httphkは引き続きトラフィックを処理します。



HTTPトラフィックとHTTPSトラフィックの処理には違いがあります。 単純なHTTP接続の場合、要求/応答モードのデータは単純にhttphkから送信され、その逆も同様です。 安全なHTTPS接続の場合、悪意のあるコードはnethkモジュールの機能を使用して「暗号化を解除します」。 ブラウザーによって開始されたHTTPS要求がインターセプトされると(要求データは偽の証明書を使用して既に暗号化されています、以下を参照)、復号化され、このデータはコールバック関数を介してhttphkモジュールに送信され、その後、実サーバー証明書を使用して暗号化されます(つまり、銀行のウェブサイトの証明書)、その後、意図したとおりに送信されます。 サーバーの応答、つまりHTTPS応答が到着すると、プロキシはこの証明書を使用してそれを復号化し、偽の証明書で暗号化するためにこのデータをhttphkに転送してからブラウザに送信します。



したがって、「man-in-the-middle」プロキシを使用すると、Win32 / Spy.Hesperbotは、この証明書で暗号化される前に被害者の発信HTTPSトラフィックにアクセスできます。 ZeusとSpyEyeは同様のアプローチを使用しますが、MitBの実装はHesperbotで使用されるものとは異なります。



悪意のあるコードは、ブラウザにHTTPS接続をシミュレートする証明書を与えます。 nethkモジュールには、独自の自己署名SSL証明書が搭載されています。





図 nethk内のSSL証明書。





図 偽のHesperbot証明書を使用する例。 通常のシステムでは、偽の証明書の代わりに実際のGoogle証明書を見ることができます。



ブラウザの証明書検証コンポーネントをだますために、悪意のあるコードは対応する証明書検証機能を傍受します。 このような傍受の実装は、被害者のブラウザに依存します。 以下の表は、Win32 / Spy.Hesperbotでサポートされているブラウザーと、インターセプトされた機能を示しています。







悪意のあるコードの作成者は、文字列ベースの比較ではなくプロセス名のハッシュを使用して分析を複雑にしました。







以下のスクリーンショットは、 CertVerifyCertificateChainPolicyインターセプトコードを示しています







httphkモジュール 、HTTPプロトコルデータの分析を担当します。 このモジュールのコールバック関数が呼び出されると、HTTPヘッダー、データを解析し、内部データ構造を埋めます。 将来、この構造はhttpiモジュールを介して利用可能になります。 httphkは、httpiを呼び出すための2つのコールバック関数、httpi_request_callbackおよびhttpi_response_callbackを提供します。



httpiモジュール 、構成ファイルの設定に従ってHTTPプロトコルデータを変更します。 httpi_request_callbackを呼び出すと、次のアクションが実行されます。





httpi_response_callbackが呼び出されると、トロイの木馬はHTTP応答コードの値200(OK)をチェックします。 その後、構成ファイルが読み取られ、Webインジェクションがサイトに設定されている場合、それらはWebページに挿入されます。



次の図は、ポルトガルのボットネットで使用された復号化された構成ファイルを示しています。 ドメインの最初のグループがhttpiモジュールによって無視されることに気付くかもしれません。 これは、FacebookおよびGoogleアカウントのデータは、サイバー犯罪者にとって、オンラインバンキングシステムのアカウントデータほど価値のあるものではないと見なされることを示唆しています。







付随するコメントから明らかなように、Web挿入スクリプトコードを書いた人はロシア語を話しているようです。 ただし、スクリプトはWin32 / Spy.Hesperbotの作成者とはまったく異なる人によって作成された可能性があることに注意してください。 Webインジェクションスクリプトは、マルウェアのさまざまなファミリで非常によく似ており、サイバー犯罪者の間での使用は非常に一般的です。



モバイルコンポーネント



Hesperbotは、モバイルコンポーネント(ZitMoまたはSpitMo)を使用してSMS Transmission Authentication Number認証システムをバイパスした最初のマルウェアではありません。 銀行取引の確認の同様のシステムは、ヨーロッパおよびロシアの多くの国で広く使用されています。



Hesperbotは、Webページに特別なJSスクリプトを実装します。これにより、ユーザーは携帯電話用のアプリケーションをインストールするように求められます。 侵害されたユーザーには、電話モデルの特別なリストが提供され、電話番号を入力すると、悪意のあるモバイルアプリケーションをダウンロードするためのリンクが提供されます。 このアプリケーションは、Symbian、Android、およびBlackberryのバージョンに存在します。







SymbianおよびAndroidプラットフォームの悪意のあるコンポーネントを分析することができました。 それらは同様の機能を備えています。 まず、「アクティベーション手順」です。 感染したコンピューターへの特別なWebインジェクションにより、ランダムな「アクティベーション番号」が生成され、ユーザーに表示されます。 次に、モバイルアプリケーションによってこのようなアクションが提供された場合、彼はデバイス上でこの番号を複製する必要があります。 モバイルアプリケーションは、アクティベーションコードを介して計算される「応答コード」を表示します。 ユーザーは確認するために、このコードをWebページに再度入力する必要があります。 悪意のあるスクリプトには、コードを計算するためのモバイルアルゴリズムと同じアルゴリズムがあります。 したがって、ユーザーのモバイルデバイスで信頼できるアプリケーションをシミュレートし、コンピューターで偽のWebページを使用すると、攻撃者はコード確認システムをバイパスしてオンラインバンキングに関連する操作を実行できます。





図 Android用の悪意のあるコンポーネントのスクリーンショット[ Android / Spy.Hesperbot.A ]。



この悪意のあるモバイルアプリケーションは、着信SMSメッセージを待機して攻撃者の番号に送信する特別なサービスを登録します。 したがって、攻撃者はこのコードを受信して​​、トランザクションまたはその他の銀行業務を実行します。



ESETウイルス対策アプリケーションは、 Android / Spy.Hesperbot.ASymbOS9 / Spy.Hesperbot.Aなどのモバイルの悪意のあるコードを検出します。



All Articles