Sonarr誤DLのEXEを解析したら情報窃取マルウェアだった

原題: Someone on Torrent Sites Kept Fucking with My Sonarr

なぜ重要か

公開トラッカーを経由した自動メディア管理ツールへの攻撃は、ホームラボ普及とともにエンドユーザーの新たな侵入経路として定着しつつある。

2026年10月、あるホームラボ運営者がSonarrに自動取り込みされた「South Park S29E03」を装った887MBのEXEファイルを意図的に再DLして解析。実体は118KBのPEバイナリに886MBのゴミデータを付加した情報窃取型マルウェアで、2,392シーダーを持つ公開トラッカーに流通していた。ChaCha20で暗号化されたペイロードはPython数十行で復号可能だった。

ホームNASで*arrスタックを運用するエンジニアが、Sonarrのダッシュボードに異常を発見した。South Parkの新エピソードとして見せかけたEXEファイルがキューに詰まり、90秒ごとにインポート失敗を繰り返していたのだ。

qBittorrentは追加直後に「完了」と判定し、ダウンロード量はゼロ。ディスクには何も落ちていなかった。著者はいったんブロックリスト登録で処理したが、怒りに任せて意図的に再取得し、内部を解析した。

ファイルサイズは887MB。しかし実際のPEバイナリはわずか118KB(x64 GUIアプリ)で、残りの886MBはスキャナーを混乱させるための無意味なランダムデータだ。バージョン情報には「Freeware Developers」「SetupHelper.exe」と記載されていた。

IDAで解析すると、コード全体にXOR命令を二度かけて元に戻すだけの無意味な処理が大量に埋め込まれており、デコンパイル出力を読みにくくする目的以外に機能しない。こうした難読化を剥がすと、ロジックはたった6ステップ:自身のファイルを開く→末尾64バイトを読む→そこから鍵を取り出しペイロードを復号→手動でPEをメモリにマップ→PEBのImageBaseAddressを書き換えてジャンプ。ファイルへの書き込みは一切ない、ディスクレスな実行方式だ。

暗号化はChaCha20。定数をグローバル変数の計算で隠しているが、展開すれば標準の「expand 32-byte k」そのもの。flags=3でアンチデバッグ(PEB->BeingDebugged確認、デバッグポート問い合わせ)とサンドボックス検出が有効化され、いずれかに引っかかると静かに終了する。しかし復号鍵はファイル自体の末尾に埋め込まれており、Pythonで数十行書けば実行せずにペイロードを取り出せる。

復号された第2のPEは929KB、MSVC+C++20製でzlibを同梱。内容は典型的な情報窃取型マルウェア(Stealer)だった。

出典

thereallo.dev — 元記事を読む →