Tenguは、現代版Miraiベースのマルウェアファミリーで、セキュリティ対策が不十分なIoT機器や組み込みLinuxデバイスを標的とし、ファイルレス実行、暗号化されたコマンド&コントロール(C2)通信、そして強力な自己防衛機能を備えています。
セキュリティ研究者らは、Tenguが従来のMiraiボットネットのモデルを拡張している点から、独自の脅威として位置づけています。
Mirai亜種は一般的に分散型サービス拒否(DDoS)攻撃に使われますが、Tenguはこれに加えてプロキシの実行、デバイスおよびネットワーク情報の収集、新規ペイロードのダウンロード、競合マルウェアの削除、さらには防御側が駆除を試みた後も持続する機能を備えています。
このマルウェアはTelnetのブルートフォース攻撃を通じてデバイスに到達することが確認されています。
シェルスクリプト形式のドロッパーがHTTP経由でアーキテクチャ別のバイナリをダウンロードするため、ルーター、カメラ、組み込みシステム、さらにはAndroidベースのTVボックスまで、幅広いLinuxベースのハードウェアに感染することが可能です。
活動を開始すると、Tenguはポート993199319931経由で64[.]89.163.864[.]89.163.864[.]89.163.8にあるコマンド&コントロールサーバーに接続します。
このマルウェアはXOR難読化によってこのアドレスを隠蔽しており、休眠状態のドメイン生成ロジックも備えています。初回登録通信、ハートビート通信、コマンド実行結果の送信は平文で行われます。
一方で、サーバーから感染デバイスへ送信されるコマンドは、独自のChaCha20/Poly1305類似の認証付き暗号化方式によって保護されています。
Tenguの最も注目すべき回避手法の一つが、信頼されたLinuxプロセスを装いながらメモリ上で動作する能力です。
このマルウェアは自身がディスクから実行されているのか、それとも匿名メモリ領域から実行されているのかをチェックします。その上でmemfd_createを使い、systemd-journalという名前でメモリ上にファイルを作成しようと試みます。
このLinux機能が利用できない場合、Tenguは/dev/shm/.journalに隠しファイルを作成し、ファイルシステムからは削除しつつ、ファイルディスクリプタは開いたまま保持します。
このマルウェアは自身をこのメモリ上の場所にコピーし、execveを使って再度実行します。この過程で、表示されるコマンドライン名を/usr/lib/systemd/systemd-journaldに変更します。
これにより、基本的なプロセス監視ツールやpsコマンドの出力上では、このマルウェアが正規のsystemd-journaldサービスであるかのように表示されてしまうことがあります。また、Tenguは[kworker/0:0]など、Linuxカーネルワーカーに似た名前も使用し、検知をさらに困難にしています。
このマルウェアは複数の永続化手法に対応しています。偽のsystemdサービスを作成したり、init.dサービスをインストールしたり、起動スクリプトを改変したり、cronベースの永続化を試みたりすることが可能です。
研究者らは、cronによる実装は不完全、あるいは信頼性に欠けるようだと指摘しています。しかし、それ以外の手法は再起動後にマルウェアを再始動させる助けとなり得ます。
Tenguはまた、メインのマルウェアプロセスが生存しているかどうかを監視する、独立したガーディアンプロセスも起動します。主プロセスが停止した場合、ガーディアンはインストール済みのバイナリを再起動しようと試みます。
さらに、デバイスのウォッチドッグを駆除対策のツールとしても利用しています。防御側がマルウェアを強制終了させると、ウォッチドッグがキープアライブ信号を受信できなくなり、感染デバイスが強制的に再起動させられる場合があります。これにより、Tenguの永続化機構が再びマルウェアを起動する機会を得ることになると、nozominetworksは述べています。
注: IPアドレスおよびドメインは、誤った名前解決やハイパーリンク化を防ぐため、意図的に無効化表記(defang、例: [.])としています。再度有効な形式に戻す場合は、MISP、VirusTotal、あるいは自組織のSIEMなど、管理された脅威インテリジェンス基盤内でのみ行ってください。
SOC調査の死角を解消し、脅威をより早期に封じ込めることで、ANY.RUNにより対応コストと事業への影響を削減しましょう。
翻訳元: https://cyberpress.org/tengu-masquerades-as-journald/