Cling マルウェア、Google の STUN 通信を装って侵害した IoT デバイスを遠隔操作

新たに確認された IoT ボットネット「Cling」は、コマンド&コントロール(C2)通信を正規の STUN トラフィックに偽装しています。Google の公開 STUN インフラから届いたように見せかけたパケットも使われています。

この手法により、攻撃者はインターネットに公開された侵害デバイスを操りながら、リアルタイム通信プラットフォームが日常的に使う NAT トラバーサルの通信に紛れ込むことができます。

Nozomi Networks Labs がこのキャンペーンを発見したきっかけは、CVE-2021-35394 を狙う悪用の試行が増えていたことでした。この脆弱性は、Realtek Jungle SDK の診断コンポーネント(一般に UDPServer としてコンパイルされます)に存在する、深刻なリモートコード実行の欠陥です。

Google の STUN 通信を装う Cling マルウェア

この脆弱性は Realtek Jungle SDK のバージョン 2.0 から 3.4.14B までに影響します。認証されていないリモートの攻撃者が、公開状態のデバイス上で任意のコマンドを実行できます。

CVEデータベースへのアクセス

攻撃者は、orf; で始まり、その後にシェルコマンドが続く UDP パケットを送りつけて、この欠陥を突きます。確認された攻撃では、ペイロードが BusyBox の wget で悪意あるバイナリを取得し、実行権限を付与したうえで、realtek.selfrep といった感染経路を示すタグを付けて起動していました。

Image

その後 Cling は、Realtek 製デバイス、LB-LINK ルーター、TBK DVR、Linksys 製機器、Eir ルーター、FiberHome 製デバイス、MVPower CCTV DVR に影響する欠陥のエクスプロイトを内蔵しており、これらを使って脆弱な機器へ感染を広げます。

MIPS ベースのマルウェアは、展開されると /root/.cling と /usr/local/bin/.cling に自身をコピーして永続化します。さらに /etc/inittab、/etc/init.d/rcS、/etc/rc.d/rc.boot に起動エントリを追記します。これにより、BusyBox や SysV 形式の組み込み Linux デバイスでは、再起動後も実行が維持されます。

Cling は wget も乗っ取ります。正規のバイナリを wget.r に移動し、元の保存場所を wget.p に記録したうえで、元の実行ファイルを自分自身で置き換えます。そのため、以後 wget が呼び出されるたびに、正規のユーティリティが実行される前にマルウェアが再起動する可能性があります。

Cling の最大の特徴は、STUN を使った C2 チャネルです。STUN は通常、アプリケーションが NAT トラバーサルのために外部にマッピングされた IP アドレスとポートを調べる仕組みで、WebRTC、Microsoft Teams、Zoom、Cisco Webex、ICE、TURN、SIP アプリケーションなどで広く使われています。

このため、企業や家庭のネットワークでは、STUN トラフィックがすぐに注意を引く可能性は低くなります。ボットは約 5 秒ごとに、13 台の公開 STUN サーバーへ STUN Binding Request を送信します。ただしトランザクション ID には、RFC 8489 が想定するランダムな識別子ではなく、すべてゼロの値を使います。

Image

ボットは、各サーバーが返す外部ポートを記録します。次に、それらのポートと感染タグを含む独自の登録データグラムを送信し、UDP パケットで届くコマンドを待ち受けます。

Nozomi の研究者らは、145.249.115[.]184:3478 を、攻撃者が運用している、または攻撃者と共謀している可能性が高い STUN サーバーだと特定しました。管理下で行った登録実験では、このホストにだけ通知したポートが、後に C2 の指示を受信しました。

マルウェアは、コマンドとそのパラメーターを、12 バイトの STUN トランザクション ID フィールドに格納します。これにより、ペイロードのダウンロード、インターネットのスキャン、新たなデバイスへの攻撃、TCP トンネリング、プロキシ中継、DoS 攻撃(フラッド攻撃)が可能になります。

一部のコマンドパケットは、stun.l.google.com に関連付けられた 74.125.250[.]129 から届いたように見えました。研究者らは、これは Google のインフラが生成したトラフィックではなく、UDP の送信元アドレス偽装である可能性が高いと説明しています。正規の STUN 応答と悪意あるコマンドパケットとで IP の TTL 値に差があることも、その根拠です。

防御側は、CVE-2021-35394 に該当するデバイスにパッチを適用するか隔離し、不要なインターネット公開を減らすべきです。あわせて、トランザクション ID がすべてゼロの STUN Binding Request が繰り返し送られていないか、監視する必要があります。

セキュリティチームは、組み込み Linux システムで .cling、wget.r、wget.p、改変された wget バイナリ、init スクリプトへの想定外の変更も調査してください。

エンドポイントセキュリティソリューション

IOC の種類 インジケーター 説明
SHA-1 ハッシュ 3b0ac6aaabb3bf8058ca14f9c8ccc613cfa3ea71 MIPS ベースのデバイスを標的とする Cling マルウェアのサンプル
SHA-1 ハッシュ 08636d09d9ffd1713bd6bcb965ad40b6ce3de1aa MIPS ベースのデバイスを標的とする、関連する Cling マルウェアのサンプル
ローダー URL hxxp://118.45.196[.]225:800/mipsel MIPSEL ペイロードを配布するローダーホスト
ローダー URL hxxp://120.193.219[.]210:800/mipsel MIPSEL ペイロードを配布するローダーホスト
ローダー URL hxxp://58.211.144[.]243:800/mipsel MIPSEL ペイロードを配布するローダーホスト
IP アドレス 145.249.115[.]184 Cling の登録・コマンド配信の流れで、共謀の疑いがある STUN サーバーと特定されたもの
ファイルパス /usr/local/bin/.cling 永続化に使われる Cling 実行ファイルのコピー
ファイルパス /root/.cling 永続化に使われる Cling 実行ファイルのコピー
ファイルパス /usr/bin/wget.r マルウェアによる置き換え後に移動された、正規の wget バイナリ
ファイルパス /usr/bin/wget.p 移動された正規の wget バイナリのパスを保存したファイル
ファイルパス /bin/wget.r マルウェアによる置き換え後に移動された、正規の wget バイナリ
ファイルパス /bin/wget.p 移動された正規の wget バイナリのパスを保存したファイル
ファイルパス /usr/local/bin/wget.r マルウェアによる置き換え後に移動された、正規の wget バイナリ
ファイルパス /usr/local/bin/wget.p 移動された正規の wget バイナリのパスを保存したファイル
ファイルパス /sbin/wget.r マルウェアによる置き換え後に移動された、正規の wget バイナリ
ファイルパス /sbin/wget.p 移動された正規の wget バイナリのパスを保存したファイル
ファイルパス /usr/sbin/wget.r マルウェアによる置き換え後に移動された、正規の wget バイナリ
ファイルパス /usr/sbin/wget.p 移動された正規の wget バイナリのパスを保存したファイル

注: IP アドレスとドメインは、誤って名前解決されたりハイパーリンク化されたりするのを防ぐため、意図的に無害化(例: [.])しています。元の形式に戻すのは、MISP、VirusTotal、お使いの SIEM といった管理された脅威インテリジェンスプラットフォーム内に限ってください。

SOC のアラート調査 1 件あたりの時間を 21 分短縮。即時の IOC コンテキストで SOC を強化し、迅速な対応を実現: SOC に TI Lookup を導入する

翻訳元: https://gbhackers.com/cling-malware-masquerades-as-google-stun-traffic/

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