時間が経つにつれて、一部の悪意のあるプログラムがサイバーデグランド環境のオリジナルブランドになります。 原則として、それらは他のマルウェアと比較して広く普及しており、さまざまな技術チップを使用しています。 これらには、Sality、Conficker、Waledac、Zeus、TDLなどの家族が含まれます。 彼らが言うように、アンチウイルス企業がそのような脅威とどのように戦っても、時々彼らは戻ってきます。 ねじれのない名前を攻撃者に使用するロジックを拒否することはできません。 次の「小動物」の機能を解析して、あなたは知らずに質問を自問します-いつそれがすべて始まったのですか? そして、1、2年前ではないことがわかりました。 そのようなファミリの1つについては、後で説明します。
開始する
ZeroAccess(別名MAX ++)の歴史は2009年6月に始まりました。 その後、\\?\ Globalroot \ Device \ __ max ++> \ [8桁の16進コード] .dllという形式のパスを使用するマルウェアサンプルが発見され、カーネルドライバーには「f:\ VC5 \ release \ ZeroAccess.pdb」という文字列が含まれていました。 。 したがって、ZeroAccessという名前は著作権です。 しかし、ご存じのように、一部のウイルス対策ベンダーは、著者の考えによるとマルウェアの呼び出しに抵抗しているため、MAX ++はSmiscerおよびSirefefとも呼ばれています。 2009バージョンでは、サービスとしてシステムに登録されたwin32k.sys:1およびwin32k.sys:2という名前で、NTFSファイルシステムの代替ストリーム(Alternate Data Streams-ADS)にバイナリコードを隠していました。 これらのファイルの最初はおとりで、ウイルス対策ソフトウェアがアクセスしようとした場合、ZeroAccessはすぐにスキャンプロセスを終了しました。 その後、OSの特別に作成されたオブジェクトに追跡技術を使用して、ウイルス対策ソフトウェアを「殺す」ことがその特徴的な機能になりました。
ステップブラザーTDL3
2010年1月、ZeroAccessの作成者は、新しいバージョンの頭脳を配布し始めました。 このために、Ecatel RBNのリソースが使用されました。 ZeroAccessの新しいバージョンの特徴は、TDL3のアイデアを明示的に借用することでした。つまり、ドライバーの感染によって起動し、そのコンポーネントに隠しストレージを使用することでした。
システムへのインストールは、たとえばkeygen.exeという名前のドロッパーファイルから始まりました。 通常の操作では、管理者権限が必要でした。これは、お気に入りのおもちゃのキー生成としての変装の条件では、特別な問題ではありませんでした。 ディスクにインストールするとき、一時的な作業ファイルは抽出されず、すべての操作はメモリで行われました。 OSの読み込み時に開始するために、ZwLoadDriver()関数を使用した起動方法を使用しました。 何よりもまず、システムに存在する被害者ドライバーが選択され、いくつかの必要な兆候に該当します:ドライバー名はNdis.sysからWin32k.sysの範囲である必要があり、サイズは0x4C10バイトを超えている必要があり、IMAGE_OPTIONAL_HEADER-> Export Table.RVAはNULLに設定されています(ドライバーは何もエクスポートしません)。 また、システムの起動時にドライバーが起動していないはずです。これは、サービスレジストリブランチの開始フラグ(0-ロードしない)によってチェックされました。 適切なドライバを選択すると、ZeroAccessはSFCを無効にした後、コードで完全に書き換えました。 次に、ランダムな名前とパラメーターType = 0x1、Start = 0x3の新しいサービスに関するレジストリエントリが作成されました。 トリックは、ImagePathがサービスに対して\ *に設定され、ZwCreateSymbolicLinkObject()関数を使用して\ *に書き換えられたドライバーへのシンボリックリンクが作成されたことです。 指定されたサービスは、ZwLoadDriver()を呼び出して開始しました。 起動されたルートキットは、ディスクサブシステムのミニポートドライバーパッケージのIRPレベルでI / O操作をインターセプトするために、OSドライバーとしてIoCreateDriver()呼び出しを介して登録されました。 次に、固定名\ ?? \ C2CAD972#4079#4fd3#A68D#AD34CC121074で仮想デバイスが作成され、以前に作成されたストレージファイルがname%system%\ Config \ [ランダムシンボル] .savの下にマウントされました。 これで、ドロッパーは仮想デバイスを介して自分のリポジトリにアクセスできました。 fmifs.dllライブラリ関数を使用して圧縮NTFSボリュームのストレージをフォーマットした後、クリーンドライバーのコピーを含む他のすべてのコンポーネントがそこに保存されました。 ファイル構造を図に示します。
ルートキットの機能は、上書きされたドライバーの内容を非表示にすることでした;読み取ろうとすると、ルートキットは保存されたソースファイルを表示しました。 さらに、ルートキットはB48DADF8.sysインジェクターの起動を開始し、max ++。00.x86という名前のメインDLLモジュールをAPC経由でブラウザーのアドレス空間に導入しました。 プロアクティブなウイルス対策保護操作をトリガーしないように、操作中にダイレクトスタート機能がまったく使用されないことに気付くかもしれません。 メインモジュールには、コマンドセンターと通信して検索結果をスプーフィングする機能があり、ユーザーを偽のウイルス対策(FakeAV)のダウンロードを提供する悪意のあるサイトにリダイレクトします。 接続パラメーターは、{49B474EB-92D0-464f-B1DD-1F37AABF9D95}など、CLSIDに類似した名前のリポジトリー内のファイルから取得されました。 シマンテックによると、2009年7月1日から2010年6月30日の間に、偽のウイルス対策ソフトウェアのインストールが約4,300万件発生しました。 30ドルから100ドルまでのこのような「ギフト」のコストを考えると、このビジネスは非常に収益性が高かったようです。
ZeroAccessとTDL3の関係
2010年1月に、ペイロードファイルがcmd.dllではなくZ00clicker.dllと呼ばれるバージョンがTDL3ファミリに登場しました。 ZeroAccessはどこにありますか? 問題は、Z00clicker行がこのマルウェアファミリに関連して何度か言及されたことです。 まず、2010年8月に、ZeroAccessのdesktop.iniモジュールの配布が明らかになりました。 このモジュールは、TDLリポジトリからcfg.ini構成ファイルとcmd.dllモジュールを削除することにより、TDL3(TDL4などの名前を持つ最新バージョン)の動作をブロックしました(TDL4がターゲットの場合、cmd64.dllも削除する必要があります)。 「Kill TDL」機能に加えて興味深い事実は、サイト訪問を促進するために設計されたZ00clicker2.dllモジュールの配布です。 ZeroAccessの最新バージョンには、クリック詐欺の原因となるモジュールが含まれており、z00clicker3というクラスが作成されます。 したがって、その後、ZeroAccessとTDL3の間に接続があるかどうかを考えてください。
WebrootのスポークスマンJacques Erasmusなどの一部の専門家は、TDL3ソースコードがZeroAccess開発者に販売されたと言います。 2009年末から2010年初頭にかけて発生しました。 そのため、Z00clicker.dllおよびZeroAcessを含むTDL3バージョンは、TDL3ソースコードに基づいたサードパーティ開発の結果である可能性があります。 同時に、Kaspersky Labの従業員は、TDL3とZeroAcessの間に関係がないと言います。 彼らによると、むしろ、リバースエンジニアリングとTDL3からのアイデアの借用について話すことができます。
WebrootのスポークスマンJacques Erasmusなどの一部の専門家は、TDL3ソースコードがZeroAccess開発者に販売されたと言います。 2009年末から2010年初頭にかけて発生しました。 そのため、Z00clicker.dllおよびZeroAcessを含むTDL3バージョンは、TDL3ソースコードに基づいたサードパーティ開発の結果である可能性があります。 同時に、Kaspersky Labの従業員は、TDL3とZeroAcessの間に関係がないと言います。 彼らによると、むしろ、リバースエンジニアリングとTDL3からのアイデアの借用について話すことができます。
2011年に、更新されたバージョンが登場しました。 ルートキットをロードするために、ZwLoadDriver()経由で同じ変更方法を少し変更して使用しました。 現在、ドライバーはclasspnp.sysからwin32k.sysまでの範囲から選択されており、そのサイズは0x7410以上です。 ドロッパーコードでは、64ビット環境での実行のチェックがありました。この場合、実行はすぐに完了しました。 リポジトリにアクセスするデバイスの名前は、\\?\ ACPI#PNP0303#2&da1a3ff&0という形式でした(リリースごとに変わる可能性があります)。 サイズ%system%\ Config \ [ランダムシンボル]の16メガバイトのストレージファイルは今回は圧縮されませんでしたが、128ビットの静的キーRC4で暗号化され、ストレージに含まれるファイルにアクセスするときにルートキットドライバーによって暗号化がオンザフライで実行されました。 顕著なモジュラー構造が登場し、
モジュールはリモートサーバーからロードされました。 コマンドセンターと通信するために、ポート13620で接続が確立されました。要求と応答自体は暗号化された形式で送信されました。
x64および自己防衛のトリックで作業する
2011年4月まで、64ビットバージョンのOSはZeroAccessに感染していませんでした。 5月に、この迷惑な省略は修正されましたが、それが非常に技術的なものになるとは言いません。 実際、x86の場合、操作アルゴリズムは以前のバージョンと同様であり、ルートキットはカーネルレベルで機能していました。 対照的に、x64では、すべてがユーザーモードで機能しました。
ご存知のように、WindowsのVistaでは、UACが登場しました。UACは、管理者権限を必要とするアクションの確認を要求するシステムのコンポーネントです。 UACはもちろん、Windowsセキュリティのレベルをわずかに上げましたが、いつものように、邪悪なハッカーがすべてを台無しにしました。 UACでは、信頼できるプログラム(explorer.exeなど)などの多くのシステムプログラムはハードコード化されているため、他のアプリケーションをトリガーするコードは、デフォルトで構成されている場合は機能しません。 この機能は、システムの特権を管理者レベルに上げるためにドロッパーZeroAccessで使用され、UACウィンドウはユーザーに表示されませんでした(このバグは時間が経つにつれて修正されました)。
HTTP HOSTリクエストヘッダーのトラフィック監視ツールをバイパスするために、ドメインジェネレーターアルゴリズム(DGA)を使用して生成された.cnゾーンで生成されたドメイン名が使用されました;実際にはDNSサーバーに解決されません。 無効なHOSTヘッダーを含む要求への応答で、サーバーは空の応答を返しました。 つまり、サーバーは同じ方法で値を生成し、それをボットからのものと比較しました。 これらのアクションは、たとえば検索ロボットによるスキャンからサーバーを保護する一種の疑似認証システムでした。
x86のインストール手順は既に説明されているため(ドライバーの感染)、ここでは説明しません。 7月のストレージ形式の次の変更に注目する価値があります。ファイルではなく、C:\ WINDOWS \ $ NtUninstallKBxxxxx $という形式のディレクトリになりました。xxxxxは5桁の数字です。 この名前は、Windows OSを更新するための作業ディレクトリとして偽装するために選択されました。 $ NtUninstallKBxxxxx $から%systemroot%\ system32 \ configへのシンボリックリンクを作成すること、およびACLルールを設定することにより、アクセスがブロックされました。 ディレクトリ内の各ファイルはRC4で暗号化され、キーはコードで定義されていませんが、いくつかのOSパラメーターを使用して生成されました。
インターネットからダウンロード可能なコンポーネントの簡単な説明:
@ 00000001-ドロッパーのバックアップコピー。
@ 80000000-感染統計を収集するために設計された追跡モジュール、感染したシステムに関する情報はcounter.yadro.ruに送信されました。
@ 800000c0-WinSocks関数をインターセプトし、それらを監視してFTPパスワードとログインを盗み、HTMLページにJavaScriptを実装するための偽のmswsock.dllライブラリ。
@ 000000c0-モジュールはJavaScriptを実装して検索クエリの発行を変更し、FTPアカウントのデータをリモートサーバーに送信します。
@ 800000cb-モジュールはsvchost.exeに実装され、トラフィックを増やすために使用されます(クリック詐欺)。
@ 800000cf-コマンドセンターと通信するためのモジュールは、winlogon.exeに実装され、その後コンピューターにインストールされたブラウザーに実装されます。 ブラウザのアドレス空間では、固定IPアドレスおよびポート13620でコマンドセンターと通信するコードが実行されます。 IPリストは、CLSIDに類似した名前のファイルにあります。
x64モードでは、イノベーションは観察されませんでした。 ブートモジュールは%windir%\ system32 \ consrv.dllとして保存され、レジストリブランチHKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ SubSystemsが編集されて起動され、「consrv:ConServerDllInitialization」という文字列が「Windows」キーの値に挿入されました。 ファイルをマスクするために、$ windir \アセンブリタイプのグローバルアセンブリキャッシュ(GAC)システムディレクトリがストレージとして使用されました。これは、インストールされている.Netコンポーネントを表示するために使用され、FARおよびTotalCommanderでロールしないExplorerでその内容を直接表示しません。 ストレージ用に、モジュールが暗号化された形式で配置されている$ windir \ assembly \ tmpディレクトリが作成されました。
このバージョンのZeroAccessの興味深い機能は、ライブベイトにフィッシングを使用してアンチウイルスを破壊することです。 メインのルートキットドライバーに加えて、ZeroAccessには、「ベイト」を作成するための追加のカーネルドライバーがありました。これは、ウイルス対策ツールが突っ込んでいたオブジェクトです。 このドライバーは、デバイス\ Device \ svchost.exeを作成し、偽のPEファイルを\ Device \ svchost.exe \ svchost.exeとして保存しました。これへのアクセスはルートキットによって監視されていました。 アプリケーションがアクセスを試みた場合、ZeroAccessはすぐに終了しました。 アプリケーションフローを完了するために、APCメソッドを使用してExitProcess()が呼び出した約200バイトのコードがそこに挿入されました。 しかし、それだけではありません。完了したアプリケーションのその後の起動を防ぐため、実行可能ファイルZeroAccessは、ファイルの読み取りと実行を許可するACLアクセスルールをリセットしました。 したがって、いったんフックに引っかかると、ウイルス対策ソフトウェアは起動できなくなります。
P2Pをプレゼント!
存続可能性を高めるために、開発者はさまざまなトリックを使用し始めました。 主な重点は、ZeroAccessを任意のアクセス権で動作させる能力と、コマンドセンターのブロックに対する反作用にありました。 Windows Vista / Sevenで起動すると、その権利を高める試みが行われました。 explorer.exeのインジェクションを介してUACをバイパスするバグが修正されたため、権限を上げるためにハイジャックDLLが使用されました。その本質は、OSが最初に現在のディレクトリで必要なDLLを探し、次にシステムで、したがって、正当なプログラムの名前でDLLを配置することですインポートされたライブラリのいずれかの名前と一致すると、悪意のあるコードを起動する可能性があります。 埋め込みCABファイルでドロッパーにこのメソッドを実装するには、
fp.exeファイルが存在していました。 これはAdobe Flash Playerの合法的なオンラインインストーラーであり、デジタル署名VeriSignを備えていました。 インストーラーはtempディレクトリにFlashPlayerInstaller.exeという名前で保存され、msimg32.dllファイルはインポートされたDLLの1つと一致するため、以前は同じディレクトリに配置されていました。
x86モードのルートキットは、以前と同様に、システムにトラップを設定します。 今では、\ systemroot \ 3439254774:153289011.exeファイルを実行したサービスでしたが、3439254774ファイルはサイズがゼロで、1533289011.exeはADSに保存され、wsc32から取得されました。
Windows Vista / Seven 64ビットモードでは、管理者権限があれば、consrv.dllと$ windir \ assemblyのスキームが使用されました。 そのような権利がなければ、XP環境を含め、致命的ではありませんでした。 実際、最も重要な革新は「X」ファイルです。これは、モジュールを配布するためのTCPプロトコルに基づいてP2Pを実装し、「@」、「U」および「L」ディレクトリという名前のブートストラップリストは、ユーザーが記録できる場所に配置されました権利:
XP-%UserProfile%\ Application Data \ [8桁の16進コード];
Vista / Seven-%UserProfile%\ AppData \ Local \ [8桁の16進コード]。
マルウェアのサービスでのP2Pテクノロジー
P2Pを使用すると、ボットネットのコントロールセンターの概念を完全に放棄することができ、ボットの新しいバージョンの管理または配布は、感染したコンピューターから行うことができます。 P2P(ピアツーピア、ピアツーピアネットワーク)は、多数のコンピューターで構成され、各コンピューターには、他のそのようなコンピューターに関する情報、特にIPアドレスが含まれています。 このようなコンピューター(ピア、ピア、ノード、ノード)のリストは、ブートストラップリスト(初期初期化リスト)と呼ばれます。 このリストがどこから来たかによって、部分的に分散されたP2Pネットワークと完全に分散されたP2Pネットワークが区別されます。
部分的に分散されたP2Pネットワークでは、既知のサーバーからブートストラップリストをロードする必要があるため、uTorrrentは機能します。 このようなシステムには弱点があります。ブートストラップリストを含むサーバーへのアクセスをブロックするだけで十分です。 そのため、マルウェアは多くの場合、完全に分散化されたスキームを使用します。 マルウェアの完全に分散されたP2Pネットワークは、配布が2段階で行われることを意味します。 最初の段階では、ボットは空のブートストラップリストまたはP2P機能なしで配布され、定期的にコマンドセンターを呼び出して、ボットのIPアドレスを修正します。 ボットネットオペレーターは、IPアドレス自体に加えて、ボットがゲートウェイの背後にあるのかファイアウォールの背後にあるのかという情報にも関心があります。 そうでない場合、ボットはスーパーピア(スーパーピア、スーパーノード)として機能できます。つまり、他のピアがボットに接続できます。 必要な数のスーパーピアが収集されるとすぐに、それらのリストがブートストラップリストに入力され、攻撃者によって新しいバージョンのボットが拡散し始めます。 配布後、すべてのボットは近隣の情報を交換し、独自のブートストラップリストを作成します。 その結果がP2Pネットワークです。 近隣のリストが絶えず変化しているため、一定数のボットの消失に耐性があります。 交換中に、ボットはバージョンに関する情報も交換します。 ボットが自身またはそのモジュールが「最新ではない」ことを検出した場合、新しいバージョンがいずれかのネイバーからダウンロードされます。 ダウンロード時には、原則として、ファイルのデジタル署名がチェックされ、「外来」ファイルの配布の可能性が排除されます。 したがって、P2Pのすべてのボットは最新の状態を保ちます。
部分的に分散されたP2Pネットワークでは、既知のサーバーからブートストラップリストをロードする必要があるため、uTorrrentは機能します。 このようなシステムには弱点があります。ブートストラップリストを含むサーバーへのアクセスをブロックするだけで十分です。 そのため、マルウェアは多くの場合、完全に分散化されたスキームを使用します。 マルウェアの完全に分散されたP2Pネットワークは、配布が2段階で行われることを意味します。 最初の段階では、ボットは空のブートストラップリストまたはP2P機能なしで配布され、定期的にコマンドセンターを呼び出して、ボットのIPアドレスを修正します。 ボットネットオペレーターは、IPアドレス自体に加えて、ボットがゲートウェイの背後にあるのかファイアウォールの背後にあるのかという情報にも関心があります。 そうでない場合、ボットはスーパーピア(スーパーピア、スーパーノード)として機能できます。つまり、他のピアがボットに接続できます。 必要な数のスーパーピアが収集されるとすぐに、それらのリストがブートストラップリストに入力され、攻撃者によって新しいバージョンのボットが拡散し始めます。 配布後、すべてのボットは近隣の情報を交換し、独自のブートストラップリストを作成します。 その結果がP2Pネットワークです。 近隣のリストが絶えず変化しているため、一定数のボットの消失に耐性があります。 交換中に、ボットはバージョンに関する情報も交換します。 ボットが自身またはそのモジュールが「最新ではない」ことを検出した場合、新しいバージョンがいずれかのネイバーからダウンロードされます。 ダウンロード時には、原則として、ファイルのデジタル署名がチェックされ、「外来」ファイルの配布の可能性が排除されます。 したがって、P2Pのすべてのボットは最新の状態を保ちます。
「X」ファイルの起動は、HKEY_CURRENT_USER \ Software \ Microsoft \ Windows NT \ CurrentVersion \ WinlogonブランチのShellパラメーターに登録されました。 したがって、ZeroAccessの機能は、ルートキット機能がなくても、制限された権限を持つアカウントでサポートされていました。
ソフォスによると、P2P TCPベースバージョンのアクティブな配布は2011年9月から11月に始まり、最初のサンプルは7月下旬に登場しました。 アンチウイルスアナリストは、このバージョンでは、クリック詐欺とスパムボットの2つの主な種類のペイロードをダウンロードしたことに注意しています。これらは、使用するポート(それぞれ、21810、22292および34354、34355)で簡単に識別できます
ブートストラップリストには256個のIPアドレス値が含まれており、それぞれに最後の呼び出しのタイムスタンプ(POSIX)が示されていました。 すべてのP2Pネットワークパケットは、RC4アルゴリズムと静的キーを使用して暗号化されました。
次のタイプのコマンドがサポートされました。
「GetL」-ブートストラップリストの取得要求。
「RetL」は、ブートストラップリストの内容を含む応答です。
「GetF」-ファイルのリクエスト。
「SetF」-ファイルの内容を含む応答。
「Srv?」-ファイルのリストの要求。
ちなみに、コマンドのタイプは文字列ではなく、4バイトのワードなので、それらを比較する方が簡単です。 8つの16進数文字のモジュールファイル名も4バイトでエンコードされました。
現在のブートストラップリストの各ノードに対して、getLコマンドが送信されました。 リモートコンピューターは、「retL」コマンドで応答し、ブートストラップリストを転送する必要があります。 現在のリストと送信されたリストに基づいて作成された結果のリストには、現在のノードに最も近いアクセス時間のノードが含まれていました。 「srv?」リクエストへの応答として、ファイルのリストが送信されました。リストの各エントリには、4バイトのファイル名とファイルを作成するためのタイムスタンプという2つのフィールドが含まれていました。 「新鮮な」ファイルが見つかると、「getF」、「setF」コマンドで更新されました。 各ロード可能モジュールには、512ビットキーのデジタル署名RSAを含む「33333」リソースを含める必要がありました。 ファイルを実行する前に署名が検証されました。
P2Pプロトコルにはいくつかの実装上の欠陥がありました。 現在の時間よりも既知のタイムスタンプ値が大きい256 IPのブートストラップリストを作成すると、すべてのノードのブートストラップリストを「ポイズニング」することができ、P2Pネットワークでモジュールを配布できなくなります。 リポジトリに任意のファイルを配置した場合(注-ファイルのtime_field構造体のミリ秒フィールドの値はゼロであるはずです)、署名の検証のために起動できませんでしたが、リモートピアによってポンプアウトされました。 これにより、ネットワークに負荷をかけ、ZeroAccessをさらに検出および削除して、コンピューターの異常なネットワークトラフィックに注意を引くことができました。 これらの欠陥は、次のP2P実装で修正されました。
ルートキットをペンで振る
2012年5月-それはZeroAccessがカーネルレベルのドライバーを組み込んだ時期であり、現在はすべての作業がユーザーモードで行われています。 CABファイルの内容を見ると、rtk32およびrtk64コンポーネントがそこから消えていることがわかりますが、w32、w64、e32、e64が追加されています。
ルートキットコンポーネントはありません。このバージョンのWindowsドライバーは上書きされません。システムの起動時に起動します。2つの方法のいずれかを使用できます-システムレジストリを使用するCOMハイジャック技術とservices.exeファイルの変更。
COMハイジャックを使用すると、P2Pネットワークの操作を担当する「n」(n32またはn64)という名前のファイルが実行のために起動されます。 ドロッパーは、次の2つの場所に2つの同一の「n」ファイルを作成します。
%Windir%\ installer \ [UID];
%UserProfile%\ローカル設定\アプリケーションデータ\ [UID](XP以下の場合)または%UserProfile%\ AppData \ Local \ [UID](Vista以降の場合)。
ここで、UIDは、システムディスクが作成され、CLSIDのようにフォーマットされた時点からのMD5ハッシュに基づいてドロッパーによって生成される値です(例:{e051c979-bddd-5d1f-8953-4b8c940e9b4d})。 サブディレクトリ「U」(追加モジュール用)と「L」(一時ファイル用)、およびファイル「@」(s32またはs64)もこれらのディレクトリに作成されます。
1つの「n」ファイルはWMIに関連付けられたハイジャックCOMオブジェクトを使用し、次のレジストリキーが変更されます。HKCR\ CLSID \ {F3130CDB-AA52-4C3A-AB32-85FFC23AF9C1} \ InprocServer32。
別の「n」ファイルは、ブランチでCOMオブジェクトを使用してCOMを開始します。
HKCU \ソフトウェア\クラス\ clsid \ {42aedc87-2188-41fd-b9a3-0c966feabec1}。
services.exeファイルの変更は興味深い方法で実行されました。小さなシェルコード(w32またはw64)がファイルに挿入され、ZwQueryEaFile()関数を呼び出して、ZwSetEaFileを使用して以前に保存された拡張属性ファイルから悪意のあるコード(e32またはe64)の「テール」をロードしました()。 e32およびe64コンポーネントのPEファイルの機能は、n32およびn64と同じでした。
それ以降のバージョンでは、C:\ $ Recycle.BinまたはC:\ RECYCLER内のファイルを非表示にします。
コンピューターユーザーのCLSIDに対応する名前でディレクトリが作成されました。 管理者権限があった場合、CLSID S-1-5-18(LOCAL_SYSTEM)で別のディレクトリが作成されました。 内部には、現在時刻のMD5ハッシュによって形成されたランダムな名前でサブディレクトリが作成されました。 「n」ファイルの2つのコピーのそれぞれを開始するために、次のCOMオブジェクトが作成されました。
HKCU \ソフトウェア\クラス\ clsid \ {fbeb8a05-beee-4442-804e-409d6c4515e9}-制限された権限を持つユーザー向け。
HKCR \ CLSID \ {5839FCA9-774D-42A1-ACDA-D6A79037F57F}-管理者権限を持つユーザー用。
P2Pネットワーク操作アルゴリズムにいくつかの変更が加えられました。 OSビットに応じて異なるポートが使用されました:x32の場合は16464および16470、x64の場合は16465および16471。 したがって、4つの独立したP2Pネットワークが編成され、それぞれが独自のRSAキーを使用し、その長さは512ビットから1024ビットに増加しました。 以前と同様に、ペイロードのタイプによる分離があり、ポート16464および16465は、クリック詐欺ペイロードを伴うリリース、16470および16471-ビットコインマイナーペイロードを伴うリリースで使用されました。
以前のP2PがTCPのみを使用していた場合、IPアドレスのリストはUDPを介して要求され、ファイル(モジュール)のリストはTCPを介して要求されました。 「retL」コマンドは、ブートストラップリストから16個の値のみを返し(ブートストラップリストの「中毒」に対応)、利用可能なモジュールに関する情報が同じデータブロックで送信されました。 ブートストラップリストは、タイムスタンプの絶対値ではなく、現在の時刻と最後の呼び出しの時刻の差を示します。 使用されるモジュールに関する情報は、ファイル名、タイムスタンプ、サイズのフィールドで構成されるヘッダーの形式で送信されました。 ヘッダーにデジタル署名が添付されました(攻撃者の秘密鍵で暗号化されたMD5ハッシュ)。 署名は、ロード時に正しいかどうかチェックされ、拡張属性ファイルに保存されました。 したがって、改ざんに対する暗号保護は、コンテンツレベル(以前のバージョンのように、デジタル署名を含む「33333」リソース)と名前、作成日、およびファイルサイズの両方のレベルで利用できました。 ファイル自体は、送信中にRC4キーで暗号化されました。 ブートストラップリストを強制的に変更するために、NewLコマンドが導入されました。これは、シンクホールディテクターがピアリストでアンチウイルス会社を検出して現状を復元するときに使用できます。 以前のバージョンのP2P実装とのこれらの違いはすべて、ボットネットを混乱させる可能性を排除するために設計されました。
ダウンロード可能なモジュールの構成は、バージョンによって異なります。 たとえば、16464のP2Pポートを持つクリック詐欺バージョンは、通常3つのファイルをダウンロードします。
800000cb。@-詐欺モジュールをクリックし、z00clicker3という名前のクラスを登録します。
00000001. @-リソースのストレージとして使用されるdll(800000cbのデータ。@)。
80000000。@-感染統計を収集するように設計された追跡モジュール。感染したシステムに関する情報がlivecounter.co/count.phpに送信されます。
ビットコインマイナーバージョンは、わずかに異なるモジュールのセットを使用しました:
000000cb @-クリック詐欺モジュール。
80000000。@-追跡モジュール。
80000032。@、80000064。@-ビットコインマイナーモジュール(x32およびx64)。
00000004. @、00000008。@-リソースのストレージとして使用されるdll(80000032. @および80000064. @のデータ)。
示されたものに加えて、検索クエリのリダイレクト、スパミング、および任意のファイルのダウンロードのためのモジュールのロードが注目されました。
おわりに
ZeroAccessの例は、Occamのカミソリの原理をよく示しています-エンティティを不必要に増やしたり、簡単な方法で増やしたりしないでください-複雑になりません。技術開発として始まり、その進化の過程でルートキットコンポーネントを失ったにもかかわらず、ZeroAccessは存在し続け、P2Pのようなファッショナブルな機能を取得しました。
ソフォスによると、2012年8月末のZeroAccessボットによるコンピューター感染件数は900万件を超え、アクティブなボットは約100万件でした。 2012年第3四半期のKindsightセキュリティラボ「マルウェアレポート」のレポートでは、220万件の感染システムが既に言及されており、そのうち685千(31%)が米国にあります。専門家によると、ZeroAccessベースのボットネットは2012年に最も活発でした。
これらの数字に照らして、ZeroAccesがスティックなしでゼロでないことを疑う人は誰もいないと思います。Ring-0は使用されなくなりましたが、疑いを持たないユーザーのコンピューティングパワーへのアクセスは、攻撃者による常緑のアメリカの論文の束をもたらし続けています。これは、ウイルス対策会社が取り組むべきことを意味します。読者はもう一度思い出してください-トロイの木馬の逆境からあなたの鉄の友人を救うことはあなたの良心に完全にあります、注意してください。