KBバックドア、Windowsのdesktop.iniの空白を悪用

ある極めて異例なWindowsバックドアが、1台の企業向けコンピューター上で何年もの間検出されずに潜伏していました。驚くべきことに、このマルウェアは指令サーバー(C2)のアドレスを、信じがたいほど目立たない場所に隠していました。標準的なdesktop.iniシステムファイル内に埋め込まれた、連続する空白文字の具体的な個数を利用していたのです。Gen Digitalのセキュリティ専門家らは最近、この悪意あるプログラムを発見しました。Windows Management Instrumentation(WMI)を悪用した不審な永続化メカニズムを積極的に調査している最中に見つかったものです。

概要:感染範囲と偽装手口

調査担当者は、企業ドメインに接続された1台のみの孤立したコンピューターでこのバックドアを発見しました。この特定のマシンは、旧式の64ビット版Windows 7 SP1を稼働させていました。悪意あるプログラムのサイズは非常に小さく、ディスク上でわずか12KBしか占有していませんでした。さらに巧妙なことに、正規のRealtekオーディオソフトウェアに偽装していました。加えて、そのデジタル署名はグローバルなデータベース内のいかなる既知のマルウェアサンプルとも一致しませんでした。

WMIによる永続化と実行の遅延

継続的な実行を確保するため、攻撃者は「Realtek」と明示的に名付けた欺瞞的なWMIサブスクリプションを作成しました。このサブスクリプションは、毎日正確に19:50になるとRtkNGUI64.exeファイルを起動していました。このファイルは、本物のRealtekソフトウェアのフォルダーを巧妙に模倣したディレクトリ内に置かれていました。この高度な永続化メカニズムはシステムの再起動を乗り越えて生き延びました。しかし、Windows起動直後には意図的にプログラムを実行しませんでした。その結果、悪意ある活動は夜間の時間帯にのみ開始されていました。

巧妙な空白ステガノグラフィー

このバックドアの最も特徴的な点は、指令サーバーのアドレスを安全に保存するための巧みな手法でした。プログラムは静かにC:\ProgramData\desktop.iniファイルを開きます。そして、Windowsの標準的なシステムファイルヘッダーに相当する最初の174バイトを意図的に読み飛ばします。このヘッダーに続いて、ファイルにはすべて空白文字のみで構成された行が多数含まれていました。

サーバーアドレスの復号

バックドアは各行に存在する空白文字の正確な個数を丹念に数え上げました。そして、その結果得られた数値を巧妙に文字コードとして解釈しました。例えば、ちょうど100個の空白は文字「d」に、105個の空白は「i」に、97個の空白は「a」にそれぞれ変換されました。10行が連続して組み合わさることで、文字列「diagrtrack」が形成されました。最後に、プログラムは単純に「.com」という接尾辞を付加し、完全なアドレスdiagrtrack.comを導き出していました。

標準的な検出手法の回避

このドメイン名は、診断テレメトリーに主に関連する正規のWindowsシステムサービスであるDiagTrackを意図的に模倣していました。標準的なテキストエディタで開いた場合、悪意あるdesktop.iniファイルはほぼ完全に空に見えました。さらに、実行ファイル内で不審な文字列を通常の方法で検索しても、まったく効果がありませんでした。マルウェアはdesktop.iniというファイル名そのものすら、2つの断片化された文字列に分割して保存していました。

コマンド実行とC2通信

実行に成功すると、プログラムはコンピューター固有の8桁の識別子を計算によって生成しました。この識別子は、有効なユーザー名、ネットワークドメイン、そして特定のデバイス名に基づいて導出されていました。続いて、指令サーバーへ初期確認リクエストを送信します。応答が成功として返ってくると、標準的なHTTPプロトコルを用いたデータ交換へと移行しました。

組み込まれたコマンドセットは比較的限定的でしたが、非常に効果的でした。遠隔の攻撃者は、Windowsのコマンドラインインターフェースを通じて任意のコマンドを実行できました。また、新しいファイルをディスクに書き込んだり、デフォルトで5秒に設定されているサーバーへのポーリング間隔を動的に変更したりすることも可能でした。バックドアは実行結果を日常的にエンコードした上で、攻撃者側に送り返していました。

ファイル書き込みにおける難読化

新しい実行ファイルを実際に書き込む際、プログラムは一時的に先頭2バイトを変更していました。そのため、ファイルは作成時およびその後のリネーム段階において、Windowsプログラムの標準的な署名を持たない状態になっていました。書き込み処理が完了すると、バックドアは元のバイトを丹念に復元しました。この巧妙な手口により、新しいファイルがディスク上に出現したまさにその瞬間を狙う単純なファイルスキャンツールを、容易に出し抜くことができました。

タイムラインと未解明の謎

攻撃者は当初、2020年7月にdiagrtrack.comドメインを登録しました。その後、まさに同じ年の12月2日に、発見されたバックドアをコンパイルしています。重要な設定ファイルは、その約3時間後に感染したコンピューター上に出現しました。残念ながら、管理者が専用のセキュリティソフトウェアを導入したのは、それから21日後のことでした。その結果、最初の主要な感染経路を特定することは、まったく不可能となってしまいました。

ドメイン登録は2021年7月に正式に失効し、そのアドレスはその後機能を停止しました。それでも、この頑強なバックドアはシステム内部で静かに存続し続けました。再起動のたびに、正確に19:50になると、プログラムは律儀に空白文字から失効したドメインを再構築していました。そして、存在しないサーバーへの接続を空しく試み続けていたのです。

セキュリティ専門家らは現時点で、この興味深い発見をいかなる既知の脅威グループや大規模なキャンペーンとも結び付けられていません。感染したコンピューターが1台のみであったこと、極めてカスタマイズされた設定形式であったこと、そして類似サンプルが皆無であったことは、非常に標的を絞った作戦であったことを強く示唆しています。最終的に、この感染の具体的な目的を明確に特定することは不可能でした。攻撃者が発した本来のコマンドや、追加の悪意あるモジュールは、システム上に一切保存されていませんでした。

翻訳元: https://meterpreter.org/kb-backdoor-desktop-ini-spaces/

本記事は meterpreter.org の記事を翻訳・要約したものです。