私たちは7月末からNapolar活動を観察しています。 それ以来、何千もの感染が記録されており、その多くは南アメリカにあります。 ペルー、エクアドル、コロンビアなどの国では、感染数が最も多くなっています。 分布の地理に関する詳細は、 virusradarを参照してください 。
この悪意のあるコードを配布するキャンペーンを目撃することはできませんでしたが、間接的な証拠はFacebookがこの目的でソーシャルネットワークを使用していることを示しています。 NapolarにはFacebookアカウントの資格情報を盗む機能があるため、ボットネットオペレーターはこのデータを再利用して、侵害されたユーザーの連絡先にメッセージを送信できます。 以下は、攻撃者がNapolar配布キャンペーンで使用したファイル名のリストです。
- Photo_032.JPG_www.facebook.com.exe
- Photo_032.JPG_www.facebook.com.exe
- Photo_014-WWW.FACEBOOK.COM.exe
真のファイル拡張子を隠し、ユーザーを混乱させるために、二重名拡張子を使用しました(たとえば、* .JPG.EXE、*.TXT.EXE。AVASTの同僚は、分析でこれらの感染ベクトルを確認しました。
デバッグ対策
最初に気づいたのは、PEヘッダーにエントリポイントアドレスがないことです。
このようなファイルでは、OSが起動時に実行する機能は、 スレッドローカルストレージ(TLS)にあります。 ドロッパーには2つの登録済みTLS機能があります。 それらの最初は機能を実行しません。 2つ目は、RC4アルゴリズムと0xDEADBEEFキーを使用してコードを解読します。 この復号化されたコードは、前の関数が制御をOSに返す前に、3番目のTLS関数として登録されます。
3番目のTLS関数は、実行する前に残りのコードを解読します。 悪意のあるコードは、次のトリックを使用して分析を複雑にします。
- インポートテーブル内のインポートされた関数のすべてのアドレスは、実行中にこれらの関数の名前のハッシュを使用して入力されます。
- OSとのドロッパーの相互作用は、主に標準のAPIを使用する代わりに、文書化されていないntdll関数を直接呼び出すことによって行われます。
制御を復号化関数に転送するために、Win32 / Napolarはメモリ内の0x55オペコードを探します(プッシュebp命令、関数の予期される開始に対応)。 この命令が0xCCオペコードに置き換えられた場合(つまり、デバッグブレークポイントが設定された場合)、関数が呼び出されないため、コードの復号化は機能しません。 このようなアンチデバッグメカニズムにより、ドロッパー操作のプロセスでデバッガーを検出し、必要なアクションを実行できます。
動的分析を複雑にするために、Win32 / Napolarは、イメージに基づいて子プロセスを作成し、デバッグすることができます。
動的分析を複雑にするこの方法は、自己デバッグSirefef暗号の分析で言及されました 。 ただし、Napolarの場合、悪意のあるコードを使用して自身をデバッグする機能は、パッカーではなく本体で実現されます。
デバッグされたプロセスが開始されるとすぐに、トロイの木馬は、 WaitForDebugEvent関数によって返されたデバッグイベントの実行サイクルを開始します。 このサイクルの擬似コードをスクリーンショットに示します。
このコードで処理される最初のイベントはCREATE_PROCESS_DEBUG_EVENTです。 デバッグされたプロセスが開始されると、それに関する通知が来ます。 この場合、親(メイン)プロセスは、実行中のプロセスのイメージファイルのヘッダーを分析して、標準のMZおよびPEマーカーの存在を確認し、独立した位置(位置独立コード)のコードのオフセットとサイズを取得します。 次に、メモリブロックがデバッグプロセスに割り当てられ、そこでコードが実装されます。 したがって、同様の操作により、このプロセスで同じコードの2つのコピーが作成されます。
ループで処理される次のイベントはEXCEPTION_DEBUG_EVENTです。 このイベントの処理コードは最初のTLS関数を上書きするため、プッシュ/ ret命令を使用してコードの実行を実行可能ファイルの先頭にリダイレクトします。 次に、Napolarの本体が復号化され、その後の実行が(子プロセスのコンテキストで)行われます。 将来、子プロセスのコードは、ほぼすべての基本的な操作、つまり、プロセスでのコードの実装、子プロセスの起動、およびシステム内での存在を隠して必要な情報を傍受するためのさまざまな機能の傍受を担当します。
ループの最後のステップは、EXIT_PROCESS_DEBUG_EVENTイベントを受け取ることです。 その際、親コードはDebugActiveProcessStopを呼び出してデバッグを停止し、 NtTerminateProcessを使用して独自のプロセスを終了します。
Win32 / Napolarの主な機能の1つは、ブラウザーに表示されるWebページフォームから情報を盗む機能です。 トロイの木馬プログラムには、Trusteerセキュリティ製品を検出するための特別なコードが含まれており、特別な保護機能でユーザーのブラウザを補完します。 システムで実行中のプロセスを列挙するときに、名前に「trusteer」を含むプロセスが見つかった場合、プロセスは強制的に終了されます。
ネットワーク接続
C&Cコマンドサーバーと対話するために、Win32 / NapolarはHTTPプロトコルを使用します。 ボットがサーバーに送信する最初のメッセージには、次の情報が含まれています。
- ボットバージョン
- 現在のアカウントのユーザー名
- コンピューター名
- ボットID
- OSバージョン
- システムのタイプ(x32 / x64)。
その後、サーバーはタスクをボットに応答し、ボットは完了する必要があります。 これらのコマンドはRC4を使用して暗号化され、ボットIDは暗号化のキーとして使用されます。 ボットは多くのコマンドをサポートしています:
- 情報盗難
- SOCKSプロキシ
- DoS攻撃
- 追加モジュールをダウンロードする
- モジュールの実行
- ボットの更新。
各コマンドには固有の識別子があり、1バイトとして格納され、その後にコマンドパラメーターが続きます。 次のスクリーンショットは、ボットと管理サーバー間の対話中に使用されたトラフィックの一部を示しています。
次の図は、対応するキーを使用したこのコマンドの復号化を示しています。 最初のバイト「0xC」は、ボットの「sleep」コマンドのコードです。 パラメーターは文字列「600」で、ボットがスリープするまでの秒数を示します。
Win32 / Napolarで使用される少なくとも7つの異なるC&Cサーバーを見てきました。 それらのほとんどは数日だけオンラインにとどまりました。 その後、オペレーターはそれらを新しいネットワークに移動しました。 このような動作は、ボットが「野生」でアクティブに使用されている、つまりユーザーのコンピューターに多数のインストールが存在するという事実によって説明できます。 以下は、C&Cサーバーによって検出されたドメインのリストです。
- dabakhost.be
- terra-araucania.cl
- xyz25.com
- yandafia.com
- elzbthfntr.com
- alfadente.com.br
マルウェア構成ファイルでTORへのリンクが検出されました。 おそらく、攻撃者はこの機能を後で使用して、ネットワーク通信中にこの匿名ネットワークを利用するでしょう。
Win32 / Napolarの著者は、「製品」の販売に非常に興味があるようです。 ボットを宣伝するWebサイトは非常にクリエイティブに見え、潜在的な顧客向けの情報が含まれています。 C&CサーバーとSQLデータベースを操作するPHPスクリプトとのボットの相互作用の完全なコードは、そこにあります。 さらに、このサイトには、悪意のあるコードオペレーターが使用できるプラグインのさまざまな例が含まれています。 プラグイン自体はDelphiで作成する必要があります。
このサイトには、トロイの木馬プログラムのさまざまなバージョンで行われた変更に関する情報(changelog)が含まれています。 これらのデータに基づいて、7月14日に最初の変更が行われました。これは、8月初旬に最初のボットサンプルを観測したため、想定に対応しています。 これらのサンプルのドメイン登録日も8月の初めに対応しています。