脅威動向 / THREATS / BACKDOOR / MALWARE
受動型バックドア「SLEEPWALKER」— 1つのパケットで目覚め、独自の23命令で動く(r136a1分析)
マルウェア研究者のDominik Reichel氏は2026年8月24日、1つの巧妙に細工されたパケットを受け取るまでメモリ上で沈黙し続けるWindows向け受動型バックドア「SLEEPWALKER」の解析を公開した。ファイル自体にはペイロードがなく、AES-256-CCMで暗号化された独自の23命令バイトコードだけが後から届く。ESET Management AgentへのDLLサイドローディングで潜伏し、C2への定期通信を一切行わないため、通常のネットワーク監視では検知が難しいという。
マルウェア研究者の**Dominik Reichel氏(ハンドル r136a1)は2026年8月24日、メモリ上で沈黙を保ち、1つの巧妙に細工されたネットワークパケットだけを合図に動き出すWindows向けバックドア「SLEEPWALKER」**の詳細な解析を公開した。ファイル自体には攻撃ペイロードが入っておらず、合図のパケットが運ぶ暗号化された小さなプログラム(バイトコード)だけが後から実行される。Reichel氏は「失われたVirusTotal Intelligenceへのアクセスをきっかけに積み残しを整理する中で、最初は目立たなかった検体が独特の設計を持つことが分かった」と経緯を説明している。
ESET Management Agentに偽装して潜伏、C2通信は一切なし
SLEEPWALKERの本体は59,904バイトの64ビットWindows DLLで、コンパイル時刻は2024年6月10日 09:18:27 UTCと記録されている。SHA-256は d347170752a28e2b8c4b8b9f3cab2e3a6541ba11682c94498d26eb9002779d60 だ。ファイルはMicrosoftのdpapi.dllを偽装し、ESET Management Agentのバージョン情報(CompanyName: ESET、ProductName: ESET Management Agent、OriginalFilename: dpapi.dll、11.2.2076.0)をコピーしている。7つのエクスポート関数(CryptProtectDataNoUIなど)も本物と同じ名前を持ち、呼び出しはポインタテーブル経由で存在しない dpapisvc.dll へ転送しようとする設計だ。
Reichel氏によると、このDLLはERAAgent.exe(ESET Management Agentの実行ファイル)へDLLサイドローディングされることを想定して作られている。起動時と、7つのエクスポート関数のいずれかが初めて呼ばれたときの2経路で、ホストプロセス名が ERAAgent.exe かどうかだけをチェックする。名前が一致しなければ何もせず終了し、一致した場合のみバックグラウンドスレッドを立て、128KBの作業領域を確保し、ファイル内にAES-256-CCMで暗号化されて埋め込まれた1つの初期命令を復号して内部インタプリタへ渡す。
この初期命令は「すべてのネットワークインタフェースで無期限に起動パケットを待ち受ける」ことだけを指示する。**SLEEPWALKERは自らC2サーバへ定期的に通信しない。**固定のドメインやIPアドレス、URLはファイル内に一切存在しない。ESET Management Agent自体は通常どおりESET PROTECTへチェックインするため、ホストプロセスの正規の通信は残るが、バックドア由来の発信は合図が届くまで生じない。
魔法のパケットと23命令の独自言語
バックドアはネットワークカードをpromiscuous(無差別)モードに置き、通過するすべてのパケットを検査する。パケットが48バイト以上あるか、末尾2つの16ビット値から導かれる長さが妥当な範囲にあるか、特定位置のバイトペアがチェックサムと一致するか、ブロックがCRC-32を通過するか——といった段階をすべて満たしたときのみ、AES-256-CCMで復号して命令として扱う。いずれかの検査に外れたパケットは無反応で破棄される。検査はWindowsがTCPやUDPを判別する前の生のパケットに対して行われるため、合図はほぼ任意のIPトラフィックの中に紛れ込ませることができる。別の隠しチャネルとして、DNSクエリの中に命令を忍ばせる経路も用意されている。
復号後の命令は人が読めるテキストではなく、SLEEPWALKERだけが解釈できる23命令のバイトコードだ。Reichel氏は「暗号鍵を取り出せても、この内部言語をリバースエンジニアリングしなければプログラムの意味は分からない」と指摘する。23命令は大きく分けて、スケジューリング、4種のデータ送信・隠蔽(任意のアドレス・ポートへのTCP送信、認証情報付きのSMB名前付きパイプへの書き込みなど)、5種の受信待機(TCP/UDPポートの開放や名前付きパイプの作成・接続)、5種のプログラム構築・実行(段階的なファイル配信とSHA-256検証、メモリ上でのシェルコード実行など)をカバーする。スケジューラの中にネットワークリスナを入れ子にするような使い方も可能だ。
Reichel氏が解析中に回収した鍵と初期設定用のnonce(12バイトの使い捨て値)は、AES-256鍵が 746531ff378dbb4bb51d2aa2b1d38d905350a959583... で始まることまで公開されている。ただし同氏は、鍵の公開が直ちに検知を容易にするわけではないとし、バイトコード自体の解読が必要だと注意を促している。
検知を避ける工夫と弱点
SLEEPWALKERは匿名のSMBアクセスを自ら有効化し、EveryoneとAnonymous Logonに権限を与えた名前付きパイプを作成する。これにより、認証なしのネットワーク経路でも命令を受け取れるようにする。暗号処理は実行時に読み込むのではなく、オープンソースのmbedTLSを静的にリンクして完結している。
一方で、Reichel氏は実装には弱点もあると評価する。たとえば2つの起動経路が互いの実行有無を確認しないため、ワーカースレッドが重複して生成され得る。またDLL_PROCESS_DETACH時に停止フラグを立てるものの、ワーカースレッドの終了を待たずにハンドルを閉じるため、動的なアンロード時に競合が生じ得るという。
Reichel氏は「標的型でリソースを投じた作戦の一部である可能性が高く、単なる日和見的な犯行ではない」と述べつつ、「収集コンテキストがなく、被害者や業種、国、攻撃者を特定する手がかりはこの1検体からは得られなかった。既知のグループに帰属させる根拠も見つかっていない」と明確に区別している。初期侵入経路や、SLEEPWALKERを運んだ他のコンポーネントの有無も不明だ。
Reichel氏は検知と対応を支援するため、YARAルールと読み取り専用のスキャナスクリプト、バイトコードを解読するツールキットを公開した。対象となり得る組織に対しては、同氏への連絡を呼びかけている。
私たちにできること
Reichel氏が公開した一次情報に基づけば、SLEEPWALKERは固定のC2通信を持たず、既知の悪性ドメインへの通信や通常の外向きトラフィック監視では検知できない。同氏は、ネットワーク監視で異常が見つからないことが感染していない証拠にはならないと注意を促している。
Reichel氏は対策として、ERAAgent.exeと同フォルダに不審なdpapi.dllやdpapisvc.dllが存在しないか確認すること、ESET Management Agentの正規の配置と署名を検証すること、公開されたYARAルールとスキャナでメモリやファイルシステムを検査することを推奨している。詳細なIoC(SHA-256、SHA-1、MD5、imphash)やYARAは一次情報に記載されている。
出典: SLEEPWALKER: A Passive Backdoor With Its Own Command Language — r136a1
この記事は、公開情報と編集部の調査・知見をもとに構成しています。内容は公開時点の情報に基づく解説であり、個別の環境への診断・対応を保証するものではありません。重要な判断では、記事内の出典や各提供元の最新情報もご確認ください。