PSIRT ブログ
影響を受けるプラットフォーム:FortiOS
影響を受けるユーザー:政府機関および大規模な組織
影響:データ損失、OS およびファイルの破損
深刻度:高
フォーティネットは、2022年12月12日にCVSS: Critical advisory FG-IR-22-398 / CVE-2022-42475を公開しました。以下に、このマルウェアの初回調査および進行中の分析で確認された追加のIoCについてご説明いたします。
アドバイザリで述べたように、私たちはこの問題を実際に検出し、関連するネットワークトラフィックとともにマルウェアのサンプルを収集しました。
このマルウェアは、FortiOS用にカスタマイズされた汎用Linuxインプラントの亜種でした。受信したアプライアンスのフォレンジックファイルシステムおよびバイナリ解析によって、以下の情報を収集しました。
Libips.bak
疑わしいバイナリは、/data/lib/libips.bak に存在しました。このファイルは、/data/lib/libips.so にあるフォーティネットの IPS Engine のコンポーネントとして偽装されている可能性があります。ファイル /data/lib/libips.so は存在しましたが、ファイルサイズはゼロでした。
以下は、/data/libディレクトリのイメージ図です。
Libgif.so、libips.bak、およびlibiptcp.soは、FortiOSコンポーネントまたはプロセスの一部ではありません。
Libips.bak は、通常 /data/lib/libips.so にある IPS Engine のトロイの木馬化したバージョンであるようです。同じ FortiOS ビルドの libips.bak とクリーンな libips.so を比較する diff が実行されました。約 0x1900 バイトの位置まで、ファイルは異なっています。それ以降は、同じファイルです。下図は、libips.bak(上)とクリーンなlibips.so(下)のスクリーンショットです。libips.bakにはデータが含まれていますが、libips.soには含まれていません。
最初の〜0x1900バイト以降は、同一のファイルです。
Libips.bak はips_so_patch_urldb と ips_so_query_interface という関数をエクスポートしています。これらは、クリーンなIPSエンジンのバイナリであるlibips.soで同じようにエクスポートされています。エクスポートされた両方の関数は、同じ悪意のあるコードにつながります。libps.bak が /data/lib ディレクトリにある libips.so という名前の場合、FortiOS のコンポーネントがこれらのエクスポートされた関数を呼び出すため、悪質なコードが自動的に実行されます。このバイナリは、クリーンな IPS エンジン コードに戻ろうとしないため、IPS 機能も侵害されます。以下は、悪意のあるコードを直ちに呼び出すエクスポート関数の例です。
主な悪質なコードを以下に示します。
悪意のあるコードは、まず、3から255までのファイル記述子をループします。ファイルディスクリプタを複製することができれば、複製とオリジナルのディスクリプタの両方を閉じます。
次に、/data/lib/libiptcp.soから読み込んで、/data/lib/libjepg.soにデータを書き込むことになります。/data/lib/libjepg.soは/data/lib/libips.soにリネームされ、fork()が使用されます。最初はアンチデバッグの手法として複数回使用されています。
そして、もう一度fork()を呼び出します。子プロセスは /data/lib/libgif.so からデータを読み込み、そのデータを /data/lib/libjepg.so に書き込んでいます。/data/lib/libjepg.so は /data/lib/libips.so としてリネームされます
親プロセスは、/var/. sslvpnconfigbk への読み取りアクセスをチェックします。このファイルは開かれ、すぐに閉じられます。最後に、/data/lib/libipudp.soが引数として実行されます。
このコードで参照されるファイルであるlibiptcp.so, libgif.so, .sslvpnconfigbk, libipudp.so は回収できませんでした。
Wxd.conf
この設定ファイルの形式は、https://github.com/fatedier/frp にある「Fast reverse proxy」に似ています。このツールは、"NATやファイアウォールの後ろにあるローカルサーバをインターネットに公開するのに役立つ高速リバースプロキシ "と説明されています。
ログにサーバーのIPアドレスの記録がある。サーバーのポート80、443、444にトラフィックを送信しています。188[.]34[.]130[.]40 のアドレスのサーバーにトラフィックを送信しています。
FortiGuard Labs脅威研究チームが取得・分析したネットワークパケットキャプチャーにより、103[.]131[.]189[.]143に向かう疑わしいトラフィックが特定されました。この解析の主な結果は以下のとおりです。
103[.]131[.]189[.]143サーバとの通信は、主に次の2つの目的で行われました。(1)ペイロードのダウンロード、(2)コマンドの受信と実行です。ペイロードは、ポート30080でリッスンしているPython(SimpleHTTP)サーバを使用して103[.]131[.]189[.]143でホストされました。
FortiGuard Labs脅威研究チームは、パケットキャプチャの大部分が切り捨てられたり欠落したりしていたため、ペイロードを復元することができませんでした。
TCPストリーム1894には、ポート30443でリッスンしている103[.]131[.]189[.]143への接続が含まれており、これは対話型シェルセッションでした。
PCAPを詳細に調査した結果、さらなるIoCが発覚を発見しました。
185[.]174[.]136[.]20
このIoCが判明したことで、関連する FortiGate ハードウェアのバージョンに特化し構築されたバイナリが含まれたサーバー上のフォルダーが特定されました。
FortiGuard脅威研究チームが作成したYaraルールを使用することで、類似のファイルサンプルを探し出すことができました。また、PCAPで実行されたものの、ファイルシステムから直接取得されなかった/var/wファイルを特定することができました。
収集した/var/wファイルサンプルの解析から、攻撃者は以下のように高度な機能を使用してFortiOSのログを操作していることがわかりました。
マルウェアの実行をエミュレートすることで、コマンド&コントロールサーバとの通信に、IPSシグネチャに利用可能な固有のバイト列を発見しました。
以下のネットワークインジケータは、元の解析および補足解析の一部として発見されました(元の IoC は太字)。 これらのインジケータの証拠をFortiGateデバイスで検索する方法の詳細については、次のナレッジベース記事を参照してください。
ファイルシステム内に以下の成果物が存在すること:
/data/lib/libips.bak
/data/lib/libgif.so
/data/lib/libiptcp.so
/data/lib/libipudp.so
/data/lib/libjepg.so
/var/.sslvpnconfigbk
/data/etc/wxd.conf
/flash
高信頼性
188[.]34[.]130[.]40 (ポート444を観測)
103[.]131[.]189[.]143 (ポート30080、30081、30443、20443を観測)
192[.]36[.]119[.]61 (ポート8443、444を観測)
172[.]247[.]168[.]153 (ポート8033を観測)
139[.]180[.]184[.]197
66[.]42[.]91[.]32
158[.]247[.]221[.]101
107[.]148[.]27[.]117
139[.]180[.]128[.]142
155[.]138[.]224[.]122
185[.]174[.]136[.]20
139[.]180[.]184[.]197
66[.]42[.]91[.]32
158[.]247[.]221[.]101
107[.]148[.]27[.]117
139[.]180[.]128[.]142
155[.]138[.]224[.]122
185[.]174[.]136[.]20
45[.]86[.]229[.]220
45[.]86[.]231[.]71
139[.]99[.]35[.]116
139[.]99[.]37[.]119
194[.]62[.]42[.]105
45[.]86[.]231[[.]71
45[.]86[.]229[[.]220
185[.]250[.]149[[.]32
137[.]175[.]30[.]138
146[.]70[.]157[[.]133
旧攻撃者IP
156[.]251[.]162[.]76
156[.]251[.]163[.122
156[.]251[.]163[.]19
156[.]251[.]162[.111
/var/wのファイル
移植後のハッシュ値-MD5
f68c3f72270800ea675889e82bb02fb8
e3f640d8785c0c864739529889b1863a
08cbaafb176ce6118f7e4e0b2d2d77cf
bdc2d2f5d5246f8956711bcce9f456b6
4548fa6625cb154ab320833186117393
e5d989b651b3eb351e10e408d5a062b3
3191cb2e06e9a30792309813793f78b6
12e28c14bb7f7b9513a02e5857592ad7
ae0839351721db5a9c269fd75dcb57ce
856341349dd954d82b112ba9165c4563
FortiGatesで見つかったサンプルとコードの類似性が高い、VTで見つかったWindowsのサンプル
54bbea35b095ddfe9740df97b693627b
マルウェアのSSL/TLSクライアント接続のJA3は、マルウェアに固有のものと思われ、攻撃を検知するために使用することが可能です。
bf2b95ac267823f6588b2436bc537b26.
この悪用の複雑さから、高度な脅威アクターであることが推測されます。
フォーティネットは、この脅威アクターの活動を引き続き追跡していきます。この問題を軽減するため、すべてのお客様に、クリティカルアドバイザリ「FG-IR-22-398」で推奨されている対処法を直ちに実行されることをお勧めします。 IoCを検索する方法については、ここに追加のガイダンスが提供されています。 お客様のシステムが侵害の指標を示していることを確認された場合は、フォーティネットまでご連絡ください。
フォーティネットは、この事件の監視を続け、情報が見つかり次第、このブログを更新していきます。
フォーティネットのアンチウイルスエンジンは、以下のAVシグネチャを使用して、このブログで取り上げたすべてのバイナリを検出します。
WebFilteringクライアントは、ネットワークベースのURIをすべてブロックします。
FortiAnalyzerが指定されたIoC範囲内のIPを行き来するすべてのトラフィックを検出しレポートするために、Fortinet Outbreak Alert Packageが作成され、Outbreak Alert Package DB 1.00082に含まれる予定です。
https://www.fortiguard.com/updates/outbreak-detection-service?version=1.00083
これらのIoCを検索する方法の詳細は、以下のフォーティネットコミュニティのTech Tipに記載されています。
フォーティネットは、エクスプロイトCVE-2022-42475とC&Cチャネルからお客様を積極的に保護するためのIPSシグネチャをそれぞれリリースしました。
FortiOS.SSL-VPN.Heap.Buffer.Overflow
Bakso.Linux.Backdoor