・ZeroAccessはWindowsオペレーティングシステムに感染可能なルートキットです。感染すると、Windowsのシステムファイルを上書きし、自身を隠すため、カーネルフックをインストールします。フックをインストールすると、ターゲットのオペレーティングシステムがZeroAccessの管理下に置かれ、ルートキットはプロセス、ファイル、ネットワーク接続を隠し、ファイルやプロセスにアクセスするため、セキュリティツールを強制終了することができるようになります。ZeroAccessは32ビット、64ビットの両方のWindowsオペレーティングシステムに感染することが確認されています。
・ZeroAccessはシステムファイルにパッチを当て、悪質なコードをロードします。オリジナルのファイルの内容が上書きされますが、オリジナルのシステムファイルはZeroAccessが作成する暗号化された仮想ファイルシステムに保管されます。仮想ファイルシステムは怪しまれないようなファイル名でディスクに格納されます。
・通常、ZeroAccessは悪質な実行ファイルによってシステムにインストールされます。ZeroAccessのドロッパが実行されると、ルートキットをインストールし、以下の動作を実行します。
注:このマルウェアの詳細はこちらのThreat Advisoryのページを参照してください。
・以下のファイルがZeroAccessによって変更または作成されます。
- ZeroAccessは%SYSTEMROOT%\system32\config\[ランダム]<ランダム>またはc:\windows\prefetch\[ランダム]<ランダム>にランダムな名前でファイルを作成します。このファイルは、構成ファイルなど、動作に必要なファイルを格納するのに使う、仮想暗号化ファイルシステムを格納するのに使われます。
- 最近の亜種の中には、ファイルを格納するため、c:\windows\$NtUninstallKB[ランダム]<ランダム>$という名前の隠しフォルダを作成するものもあります。
- ZeroAccessはランダムに選ばれたシステムドライバファイルにパッチを当てます。パッチを当てたファイルをZeroAccessを再起動するメカニズムとして使用し、システム起動時に悪質なカーネルコンポーネントをロードします。
- システムをスキャンするセキュリティツールを検出するために監視するトリップワイヤファイルを作成します。トリップワイヤに触れたプロセスはすべて終了されます。以下の通り、このファイルはシステムデバイスまたはADS(代替データストリーム)として作成される場合があります。
\\??\Global\systemroot\system32\svchost.exe\svchost.exe
%SYSTEMROOT%\[ランダム]<ランダムな数字>:[ランダム]<ランダムな数字>.exe
(%SYSTEMROOT%はWindowsがインストールされているフォルダで、通常はC:\Window)
・以下のレジストリキーが変更または作成されます。
- サービスを作成し、サービスのImagePathキーが上記のファイルを指すようにし、システムが起動するたびにZeroAccessが動作するようにします。以下はキーの一例です。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\54e61bbc\Type: 0x00000001
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\54e61bbc\Start: 0x00000003
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\54e61bbc\ImagePath: "\systemroot\3155945044:2870600771.exe"
- また、以下のキーを作成する場合があります。
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\{f8cec7e5-22d1-631d-b463-054fb5b74060}
・新しい亜種は、プロセスを強制終了する以外に、(DACLを改変して)問題のファイルからすべてのNTFS許可を削除し、Image File Execution Optionをインストールして、ファイルの実行を無効化します。これにより、セキュリティ関連のツールとコンポーネントを無効にしようとします。
ネットワーク活動
・ZeroAccessはインストールおよびユーザの活動をリモートサーバに報告します。ルートキットは感染したマシンで動作しているすべてのツールのネットワーク接続を隠すため、システム管理者はネットワーク活動を監視するために外部の監視ツールを使用しなければならない場合があります。
・感染後、ZeroAccessはHTTPリクエストを使ってインストールおよびシステムの活動を報告します。これらのリクエストは通常、ポート80に対して行われますが、亜種の中には、ポート8083を使って通信するものもあります。
・リクエストの特徴は以下のとおりです。
GET /stat2.php?w=46&i=d5d6a3459af7a34558e98254eb873a62&a=11 HTTP/1.1
Host: <IPアドレス>
User-Agent: Opera/6 (Windows NT 5.1; U; LangID=416; x86)
GET /bad.php?w=109&fail=0&i=d5d6a3459af7a3457ce3916737df5160 HTTP/1.1
Connection: keep-alive
Host: <IPアドレス>
User-Agent: Opera/6 (Windows NT 5.1; U; LangID=416; x86)
・また、以下のユーザエージェントが使われる可能性があります。
GET /%s HTTP/1.0
Host: %s
User-Agent: NSIS_Inetc (Mozilla)
・テストでは、以下のIPアドレスへのアクセスが行われました。
- 95.64.46.44
- 193.105.154.210
- 69.50.212.157
- 85.17.226.180
ルートキットの動作
・ZeroAccessのルートキットコンポーネントは、高度な方法を使って自身を保護し、自身を検出、駆除しようとするセキュリティツールを無効化します。
・セキュリティツールがディスクの監視ファイルまたはメモリのサービスプロセスにアクセスしようとすると、ZeroAccessはアクセス試行を特定し、自身の保護システムを起動します。
・保護のため、カーネルモードからプロセスを強制終了しますが、これはあらゆるタイプのセキュリティツールに対して有効です。
・また、ZeroAccessはシステムAPIにフックします。以下は、一般提供されているGMERツールが作成したログに記載されていたフックの一例です。
-- Kernel code sections - GMER 1.0.15 ----
.text ntkrnlpa.exe!IoReuseIrp + 8B 804EE879 7 Bytes CALL F60880F5
.text atapi.sys F850384D 7 Bytes CALL F60838F0
.text mrxsmb.sys F6D93000 107 Bytes [06, 0F, 83, 2D, B5, 00, 00, ...]
.text mrxsmb.sys F6D9306C 101 Bytes [EC, 8B, 45, 08, 8B, 40, 40, ...]
.text mrxsmb.sys F6D930D2 52 Bytes CALL 386296E7
.text mrxsmb.sys F6D93107 31 Bytes [90, 90, 90, 90, 90, FF, 25, ...]
.text mrxsmb.sys F6D93127 42 Bytes [F6, 42, 08, 80, 0F, 84, C5, ...]
?
-- Kernel IAT/EAT - GMER 1.0.15 ----
IAT \SystemRoot\system32\DRIVERS\mrxsmb.sys[HAL.dll!HalGetAdapter] 840FFC4D
IAT \SystemRoot\system32\DRIVERS\mrxsmb.sys[HAL.dll!IoWritePartitionTable] 00008258
IAT \SystemRoot\system32\DRIVERS\mrxsmb.sys[HAL.dll!HalDisplayString] 0F01FE83