PSIRT ブログ
影響を受けるプラットフォーム: FortiGate
影響を受けるユーザー: 政府機関、サービスプロバイダー、コンサルタント業、製造業、大手重要インフラ企業
影響: データの損失、OSおよびファイルの破損
深刻度: 高
この追加調査では、フォーティネット製品の解決済みNデイ脆弱性の悪用について分析しています。「Nデイ脆弱性」とは、パッチまたは修正プログラムが利用可能であるが、組織ではパッチの適用による解決に至っていない既知の脆弱性を指します。
フォーティネットは、パッチが適用されていない既知の脆弱性を標的にした攻撃を継続的に監視しています。詳細については下記を参照してください。
フォーティネットは引き続き、すべてのお客様に対して、ガイダンスを確認して影響の有無を判断し、必要な場合はお知らせした方法でFortiGateデバイスをアップグレードすること、また、フォーティネットの公開アドバイザリに従っていただくことを強く推奨いたします。
フォーティネットは、お客様のセキュリティを第一とする理念と、リサーチャーの協力と透明性を重んじる企業文化とのバランスを保つよう心がけています。
私たちは、お客様および官民のサードパーティパートナーとの継続的な情報交換および共同作業を通じてマルウェアのサンプルを収集しており、一部の事例では上記の脆弱性に関連する特殊なネットワークトラフィックも確認できました。また、パートナー組織との協力の下、分析結果や推奨される対策をお客様ならびに世界的なサイバーエコシステムと共有しています。
フォーティネットはこの分析結果を共有することで、お客様が的確な情報とリスクに基づいた意思決定を行えるようにすると共に、その他の脅威調査機関やセキュリティ組織の皆様には、業界への支援にこの分析を活用し、攻撃活動の識別における連携や、さらなる攻撃の検知および防止などに役立てていただきたいと考えています。
本レポートは、Volt Typhoonの活動に関するCISAのレポートと時期を合わせて発表するものです。
「ゼロデイ脆弱性」とは、ソフトウェアベンダーがそれを特定して修正プログラムまたはパッチを公開する前に攻撃者が悪用するソフトウェアの脆弱性です。一方、この分析記事で取り上げる「Nデイ脆弱性」は既知の脆弱性であり、パッチまたは修正プログラムは利用可能ですが、組織ではパッチ適用の適切な措置を行っておらず、システムがエクスプロイトの危険にさらされている状態を意味します。
フォーティネットは、パッチが公開されているものの、組織がまだアップグレードを実施していないNデイ脆弱性の悪用を厳重に監視しています。
FortiOS:sslvpndにおけるヒープベースのバッファオーバーフロー
2022年12月:FG-IR-22-398 / CVE-2022-42475
FortiOSおよびFortiProxy - sslvpn事前認証におけるヒープバッファオーバーフロー
2023年6月:FG-IR-23-097 / CVE-2023-27997
Nデイ脆弱性に関する最大の防御は、修復ガイダンスや早期のパッチの適用など、適切なサイバーセキュリティ対策を実施することです。以前に報告したとおり、これらの脆弱性を悪用するのは簡単ではありません。エクスプロイトの複雑さは攻撃者の技術の高さを示唆しています。また、攻撃が国の重要インフラや製造業、政府に関連する業種のサードパーティプロバイダーなど、行政または戦略上重要な標的を対象としていることから、国家の支援を受けていることが窺えます。
このブログでは、最近観測されたNデイ攻撃を分析していきます。以下の調査結果は、確認されたマルウェアとIOC(Indicators of Compromise:侵害指標)を詳細に調べたもので、組織が攻撃者の活動を追跡するのに役立つでしょう。
フォーティネットは、お客様のセキュリティを第一とする理念と、リサーチャーの協力と透明性を重んじる企業文化とのバランスを保つよう心がけています。私たちはこの情報を共有することで、影響を受けた組織、ならびにこの攻撃者の活動を追跡している脅威リサーチャーやセキュリティ組織を支援したいと考えています。
これらのインシデントで使用されたマルウェアは、主としてFortiOS用にカスタマイズされたLinuxインプラントの亜種です。以下の情報は、侵害されたアプライアンスのファイルシステムとバイナリをフォレンジック分析して収集したものです。ただし、インシデントはすべて同じではないため、それらをクラスタに分類しています。
標的業種:製造業、コンサルタント業、地方自治体
このクラスタでは、/etc/ld.so.preloadに文字列/data2/libcrashpad.soが格納されていました。ld.so.preloadにリストされているファイルは、他のバイナリによってシステムにプリロードされます。これにより、すべてのFortiOSプロセスは、起動時に共有オブジェクトファイル「/data2/libcrashpad.so」を読み込んで実行します。一般的に、マルウェアはこのプリロードメカニズムを利用することで、プロセスが強制終了されても永続性を維持できます。
ファイルパス |
/data2/libcrashpad.so |
ハッシュ |
MD5: e3bb54fb78b70d50746082d077cfccba |
ファイルタイプ |
ASCII Text |
libcrashpad.soは以下の条件で/data2/tftpdを実行します。
libcrashpad.soが実行されると、/tmp/tftpd.lockが作成されます。
ファイルパス |
/data2/libcrashpad.so |
ハッシュ |
MD5: e9f64481280c964a6a5dbf551e9cf6f0 / SHA256: 7075c5595ac2b34c8f5cf99aeeae0a99b10df100cfb5362f9a2a033ce4451a0e |
ファイルタイプ |
ELF 64-bit LSB shared object, x86-64, dynamically linked |
これは主要な実行ファイルで、追加のマルウェアファイルとその他の悪意ある機能をドロップします。tftpdバイナリは以下のアクションを実行します。
ファイルパス |
/data2/tftpd |
ハッシュ |
MD5: cf3e6cb8ada288aa2d1bc39d1ce2ad54 SHA256: a322034e610aa07632ade4323d37d55c5c613b155ef51b05ab83de4159c231b2 |
ファイルタイプ |
ELF 64-bit LSB executable x86-64, version 1 (SYSV) dynamically linked, stripped |
libaprhelper.soはtftpdによってドロップされ、sslvpndプロセスに注入されます。そして、このプロセスの「Procedure Linkage Table」にシステムコールacceptとaccept4をフックします。フックされたaccept関数はまず、本物のacceptシステムコールを呼び出します。次に、ソケットから48バイトを受信し、接続を受け入れます。受信したデータからオフセット15の位置にある8バイトと、バイトシーケンスDA F3 64 13 C2 8D 63 C3が照合されます。パターンが一致した場合は、ファイルシステムソケット「/tmp/clientsDownload.sock」を介してソケットをtftpdプロセスと共有できます。
ファイルパス |
/lib/libaprhelper.so |
ハッシュ |
MD5: 9e898f389003f9141831856f021fda3a SHA256: 5bfe16360fb42fa50a56fe8b1140bec202e9345965ddb456a8311b2583d2fe48 |
ファイルタイプ |
ELF 64-bit LSB shared object x86-64, version 1 (SYSV) dynamically linked, stripped |
感染していないFortiOSシステムでは、/bin/smitは/bin/initへのシンボリックリンクです。スタンドアロンの不正なsmitバイナリは、正当なFortiOS機能を維持して自身の存在を隠蔽します。そのために、子プロセスを分岐し、/bin/smitに指定された引数を使用して/bin/initを実行します。子プロセスの終了後、smitは以下の不正なアクションを実行します。
ファイルパス |
/bin/smit |
ハッシュ |
MD5: 08039b1cbdf880a3d86f8646bb286709 SHA256: 2b1aa340384b5e889008839bc961fcb438379cc2de8be880664ae41fd9e77084 |
ファイルタイプ |
ELF 64-bit LSB shared object x86-64, version 1 (SYSV) dynamically linked, stripped |
toyboxバイナリはtftpdによってドロップされます。その後、tftpdは/bin/sh to /bin/toyboxに接続する新しいシンボリックリンクを作成します。
toyboxは静的なバイナリパッケージで、insmod、iotop、lsmod、lsusb、makedev、mkdir、mkfifo、nc、netcat、pivot_root、route、wget、ftpget、shredなどの関数とその他のユーティリティが含まれています。これらのバイナリはシステムとネットワークの設定を変更できるため、データ漏洩、他のデバイスへの切り替え、システム情報の追加取得など、後続のアクションを実行するのに役立ちます。toyboxは攻撃者のラテラルムーブメントにも重宝されています。
ファイルパス |
/bin/toybox |
ハッシュ |
MD5: d0a31975a436d0fe3b4f990c5003ca59 SHA256: |
ファイルタイプ |
ELF 64-bit LSB executable x86-64, version 1 (SYSV) statically linked, stripped |
標的業種:インターネットサービスプロバイダー
ld.so.preloadにリストされているファイルは、他のバイナリによってシステムにプリロードされます。その場合、/data/etc/ld.so.preloadには文字列/data2/flatkc_infoが含まれているため、他のバイナリが実行されると必ずflatkc_infoが実行されます。
ファイルパス |
/data/etc/ld.so.preload |
ハッシュ |
MD5: 2495159a80aafcdb80bcf8d913d4db80 SHA256: |
ファイルタイプ |
ASCII Text |
/data2/new_alert_infoを実行します。
ファイルパス |
/data2/flatkc_info |
ハッシュ |
MD5: 5d898fdbe0080f5c4437d834e8c23498 SHA256: 1029ff063f739ebbf8add74313f2cc454f5d14655327d1a1c190b115549173ed |
ファイルタイプ |
ELF 64-bit LSB shared object executable x86-64, version 1 (SYSV) dynamically linked, stripped |
new_alert_infoは、/bin/smit、/bin/httpsclid、および/bin/httpsngファイルを作成し実行します。binディレクトリ内にあるこれら3つのファイルは、再起動時には残っていません。ただし、smit、httpsclid、httpsngは永続化されます。これらのファイルは外部ソースからダウンロードされるのではなく、new_alert_infoに埋め込まれています。
new_alert_infoは/data/etc/ld.so.preloadファイルを作成し、そこに文字列/data/etc/flatkc_infoを追加することで、flatkc_infoも永続化します。
このマルウェアは、APT31がよく使用するRekoobeマルウェアと似ています。
ファイルパス |
/data2/new_alert_info |
ハッシュ |
MD5: 210fcaa8bf95c3c861ee49cca59a7a3d SHA256: 64932db564f8cd3a58f3d019d1967b981fdcf3c59f7f5ff6bb3bdf8ec736c31a |
ファイルタイプ |
ELF 64-bit LSB executable x86-64, version 1 (SYSV) statically linked, stripped |
httpsclidにはELFファイルが埋め込まれています。httpsclidは、このELFファイルを/tmp/busyboxという名前でデバイスに書き込みます。
プロセス間の通信用に、ローカルソケット「/tmp/ClientSessionData」が作成されます。httpsclidは、ソケット経由で送受信される内容に応じてさまざまなアクションを実行できます(1. プログラムの終了、2. データの漏洩、3. ファイルのダウンロード / 書き込み、4. リモートシェル)。このファイルは、LDAP経由でADサーバーにクエリを実行し、有効なユーザーアカウントをすべて識別したり、VMWare NSXのSecurityTag APIにクエリを実行してスイッチトラフィックをミラーリングしたりすることもできます。
ファイルパス |
/bin/httpsclid |
ハッシュ |
MD5: 944a31cf9936920a3fb947cb29171631 SHA256: 7ff5e0c2ecd6397dcbc013d4c343007f9ebb4099aabda9a7745ab1dd1b215c91 |
ファイルタイプ |
ELF 64-bit LSB executable x86-64 version 1 (SYSV) statically linked, stripped |
このマルウェアも、APT31がよく使用するRekoobeマルウェアと似ています。
httpsngは、プロセス名[ata/0]で動作することによって自身を偽装します。httpsngが別のマルウェアをシステムに取り込むこともあります。/bin/httpsngには、「/tmp/busybox tar -xvf」を使って/tmp/tarlog.tarを解凍するためのコードが含まれています。ただし、/tmp/tarlog.tarの発信元は不明で、どのシステムでも確認されていません。
httpsngはICMPリクエストを介してIPアドレスを取得し、そのIPアドレスとの接続を確立します。httpsngは、この接続で送受信される内容に応じてさまざまなアクションを実行できます(1. プログラムの終了、2. データの漏洩、3. ファイルのダウンロード / 書き込み、4. リモートシェル)。
ファイルパス |
/bin/httpsng |
ハッシュ |
MD5: 7454bb4b3dfe4f4386980b63f119c208 SHA256: 1b7af533f32a1c0bb62420be787d9e02c8a71bca77f2b0857dd20599f8833853 |
ファイルタイプ |
ELF 64-bit LSB executable x86-64 version 1 (SYSV) statically linked, stripped |
flatkc_infoへのファイルパスを格納した/data/etc/ld.so.preloadファイルを作成することで、/data2/flatkc_infoを永続化します。
ファイルパス |
/bin/smit |
ハッシュ |
MD5: fc78c1800fbe25e57a7333ca51e183b6 SHA256: b8bd746e4713e101266d74bbe8cfbf064b5979adb8df68076d295df9e0a215d0 |
ファイルタイプ |
ELF 64-bit LSB executable x86-64, version 1 (SYSV) dynamically linked, stripped |
これは正当なbusyboxバイナリです。
ファイルパス |
/tmp/busybox & httpsng |
ハッシュ |
MD5: ebce43017d2cb316ea45e08374de7315 SHA256: 6e123e7f3202a8c1e9b1f94d8941580a25135382b99e8d3e34fb858bba311348 |
ファイルタイプ |
ELF 64-bit LSB executable x86-64, version 1 (SYSV) statically linked, stripped |
標的業種:製造業、コンサルタント業
ld.so.preloadにリストされているファイルは、他のバイナリによってシステムにプリロードされます。その場合、/data/etc/ld.so.preloadには文字列/data2/libunwind.1.soが含まれているため、他のバイナリが実行されると必ずlibunwind.1.soが実行されます。
ファイルパス |
/tmp/busybox & httpsng |
ハッシュ |
MD5: 8644b8b1cec97b2f43c89526c3b8aaae SHA256: |
ファイルタイプ |
ASCII Text |
libunwind.1.soは以下の条件で/data2/httpdngを実行します。
libunwind.1.soが/data2/httpdngを実行すると、/tmp/httpdng.lockが作成されます。
ファイルパス |
/data2/libunwind.1.so |
ハッシュ |
MD5: e9c2a3efaa97462168790b2fe234a7ba SHA256: 5700a8d9f00ebeb52536d16701522ecf6a07deb660e442cd67acdfb768e17c39 |
ファイルタイプ |
ELF 64-bit LSB shared object x86-64, version 1 (SYSV) dynamically linked, stripped |
httpdngは、/data/etc/ld.so.preloadファイルを利用して/data2/libunwind.1.soを永続化します。httpdngは永続性のないディレクトリにもファイルをドロップします(これらのディレクトリに追加されたファイルは再起動時に削除されます)。/bin/toybox、/bin/smit、/data2/libunwind.1.so、/tmp/.ptyagent、/data/etc/ld.so.preloadはhttpdngによって作成されます。/tmp/.ptyagentを除き、これらのファイルのアクセスおよび変更のタイムスタンプは、/bin/initのタイムスタンプと一致するように変更されます。
httpdngは/lib/libaprsd.soファイルを作成する場合もあります。このファイルのアクセスおよび変更のタイムスタンプは、/lib/libc.so.6のタイムスタンプと一致するように変更されます。httpdngは、この共有オブジェクトをsslvpndプロセスに読み込むこともできます。そして、/lib/libaprsd.soを読み込んだプロセスから、ファイルシステムソケット「/tmp/clientsDownload.sock」を介してデータを受信します。さらに、フックされたシステムコールacceptとaccept4を介して、接続からデータを取得することもあります。
ファイルパス |
/data2/httpdng |
ハッシュ |
MD5: f84a5eff50af2a7bfae49345b3b3ce1e SHA256: 662dd91647c45df0625c011565a60f18e0de47b9e57653763868205f4026593f |
ファイルタイプ |
ELF 64-bit LSB executable x86-64, version 1 (SYSV) dynamically linked, stripped |
libaprsd.soは、プロセスの「Procedure Linkage Table」にシステムコールacceptとaccept4をフックします。フックされたaccept関数はまず、本物のacceptシステムコールを呼び出します。次に、ソケットから48バイトを受信し、接続を受け入れます。受信したデータからオフセット15の位置にある8バイトと、バイトシーケンスDA F3 64 13 C3 84 C2 80が照合されます。パターンが一致した場合は、ファイルシステムソケット「/tmp/clientsDownload.sock」を介してソケットをhttpdngプロセスと共有できます。
ファイルパス |
/lib/libaprsd.so |
ハッシュ |
MD5: dc95090cca508d1196b972c385dc3405 SHA256: 89e049fd0df33da453fe04d9b2f9619b46dac0fceb7a8156560cce08fce3d8b7 |
ファイルタイプ |
ELF 64-bit LSB shared object x86-64, version 1 (SYSV) dynamically linked, stripped |
smitは、文字列/data2/libunwind.1.soを格納した/data/etc/ld.so.preloadファイルを作成することで、マルウェアを永続化します。これにより、/data2/libunwind.1.soが定期的実行されるようになります。smitは/data/etc/ld.so.preloadのタイムスタンプを変更し、自身の存在を隠蔽します。
| ファイルパス | /bin/smit |
ハッシュ |
MD5: bc1bd24e32fb6a778c1e79840e8ec78f SHA256: 51d0d5d83735a3a63a2405b4f9909676fc572827693f34b80799b0786a5f1677 |
ファイルタイプ |
ELF 64-bit LSB executable ARM aarch64, version 1 (SYSV) dynamically linked, stripped |
これはhttpdngによってドロップされたtoyboxバイナリです。toyboxは、Linuxコマンドラインユーティリティを1つにまとめたものです。
ファイルパス |
/bin/toybox |
ハッシュ |
MD5: d0a31975a436d0fe3b4f990c5003ca59 SHA256: |
ファイルタイプ |
ELF 64-bit LSB executable x86-64, version 1 (SYSV) statically linked, stripped |
ptyagentはリモートシェルとして機能します。ネットワークソケットを作成およびリッスンできます。さらに、システムの状況に応じて/bin/bashまたは/bin/shを実行します。
ファイルパス |
/tmp/.ptyagent |
ハッシュ |
MD5: 2d88911f67a2cce7fa97cdf0ae59a027 SHA256: 910e7fc043560fbc2757304503de38a8824238765b2d91d87b974fefa253e311 |
ファイルタイプ |
ELF 32-bit LSB executable Intel 80386 version 1 (SYSV) statically linked, stripped |
これはファイル解凍ツールで、エンコードされたファイルを複数のファイルに解凍します。libpe.soはマルウェアの典型的な特徴を示しています。つまり、検知を回避するために、不規則な間隔で起動を遅らせることができます。
ファイルパス |
|
ハッシュ |
MD5: 90235445d07be98cd0f820b5 SHA256: 50451bb5b6d68115695a6cb277839a6dd2bad8f70bdb8b79670b18dcde188965 |
ファイルタイプ |
ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, stripped |
このファイル名は正当なファイル「/bin/smartctl」と同じです。しかし、このファイルの目的は、入力が/bin/shにリダイレクトされるときに、FortiGateコマンドラインからシェルコマンドを実行することです。
ファイルパス |
/bin/smartctl |
ハッシュ |
MD5: 205a8c6049061930490b2482855babcd SHA256: |
ファイルタイプ |
ELF 32-bit LSB executable Intel 80386 version 1 (SYSV) statically linked, stripped |
このバイナリは、実行中のプロセスにプロセスを注入する機能と、APIフッキングメカニズムを有しています。同様のプロセスインジェクション機能を持つ不正なバイナリは他にも確認されています。ただし、APIフッキングメカニズムが組み込まれていることから、このバイナリは若干進歩しているようです。
ファイルパス |
/bin/authd |
ハッシュ |
MD5: 9124ce75319514561156d2013fc9d3be SHA256: f40c04fb9e2d4157a0bc753925dbc5f757feb77cdd22f90fedf3cc5e095143bc |
ファイルタイプ |
ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-x86-64.so.2 |
このバイナリはC2通信機能を備え、構成の読み取りと書き込みが可能です。
ファイルパス |
/bin/httpsd |
ハッシュ |
MD5: 218a3525ab8e46f7afe252d050a86907 SHA256: 3ed99aad5922744b6a75ea90ea6ece81ba0d8eb9935aec38b897e44ac3b36c35 |
ファイルタイプ |
ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), statically linked, for GNU/Linux 2.6.32, stripped |
このサンプルに含まれていた興味深い文字列から、あるCERTパートナーはこのクラスタをCOATHANGERと名付けました。
「She took his coat and hung it up(彼女はコートを受け取りハンガーに掛けた)」
この文字列は、Roald Dahlの小説『Lamb to the Slaughter(おとなしい凶器)』から引用されたものです。Virus Totalでこの文字列を検索すると、同じ文字列が含まれた無害のPDFファイルへのリンクが1つ見つかりました。
このファイルが同書のPDF版のようであることを考えると、特に異常な点はなさそうでした。しかし、このような古い書籍にしては、アップロードの日付が最近のものであることに違和感がありました。念のためにファイルを分析しましたが、不正ファイルではないことが判明しました。
newcliは、「authd」バイナリを使って/lib/preload.soファイルを注入し、再起動関数を不正な関数に置き換えます。
ファイルパス |
/bin/newcli |
ハッシュ |
MD5: ab89139e3d47fbaba2da33040da95200 SHA256: 2acc6a2a931db63fe3a875780f00192a60955c9794df68fe0ace0012d309b04f |
ファイルタイプ |
ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked |
他のクラスタでは、pid=1のプロセスへのインジェクションにインジェクターバイナリが使用されていることが確認されています。
永続性とシステム関数を提供します。不正ファイルをメモリにコピーし、システムの再起動時にディスクに書き戻すことができます。newrebootという不正な関数も提供します。
「reboot」エクスポート関数 / APIフッキングを備えている点では以前のクラスタに多少似ていますが、その他の機能はこれまでに確認されていなかったものです。
ファイルパス |
preload.so |
ハッシュ |
MD5: a62377c01935f366761846b5ceed5a49 SHA256: 1c437dc9e929669e5a65a1c70afb3107fba471afb9ad35e3848334c9332f2b59 |
ファイルタイプ |
ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked |
悪意のないこのbusyboxバイナリは、他のキャンペーンで見られるような複数のツールを提供します。
ファイルパス |
/bin/sh |
ハッシュ |
MD5: 991461b86aebecfd096dc11ff2a04b4b SHA256: dcd9a5af1c6297ed1a66c851efa305000335d8ade068ba515125a6612f1d5300 |
ファイルタイプ |
ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, stripped |
liblog.soはAPIを読み取り、/dev/fgtlogを標的にし、/dev/fgtlogからの読み取りを無効にします。これまでのクラスタでは、/dev/fgtlogを標的にするマルウェアは確認されていませんでした。
ファイルパス |
/lib/liblog.so |
ハッシュ |
MD5: e24d14d3e6c6de0ed3db050dd5c935f0 SHA256: a79f80158ebbf9e34f6a7ec86b564de2fbee783fe6c1e20eefe2832226e2f827 |
ファイルタイプ |
ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, stripped |
これは不正ファイルを格納したコンテナファイルで、不正ファイルは必要に応じて解凍されます。これは以前のクラスタと異なる点です。
ファイルパス |
packfile |
ハッシュ |
MD5: 201ee76e996846d5ea3fc03bac3273dd SHA256: 4591b4fb1c93c27203b36c773597fd3f885338ad7641dcebf8ed2395acdf4a5f |
ファイルタイプ |
ELF 32-bit LSB executable Intel 80386 version 1 (SYSV) statically linked, stripped |
標的業種:コンサルタント業
ld.so.preloadにリストされているファイルは、任意のバイナリによってシステムにプリロードされます。/data/etc/ld.so.preloadには文字列/data2/lib/liblpmonitor.soが含まれているため、そのシステムでは他のバイナリが実行されると必ずliblpmonitor.soが実行されます。ただし我々の調査時点では、ディスクに/data2/lib/liblpmonitor.soファイルは見つかりませんでした。
ファイルパス |
/data/etc/ld.so.preload |
ハッシュ |
MD5: 0ef308bacbbc932fa24f10ae2b83a984 SHA256: |
ファイルタイプ |
ASCII Text |
このファイルは、オープンソースのトラフィックトンネリングツールであるChiselを基盤としており、HTTP経由のTCPおよびUDP接続をトンネリングし、リバースシェルを実行することができます。このツールについては、LorenzランサムウェアグループやUNC757など複数のAPTによる使用が確認されています。
ファイルパス |
/tmp/.ptyagent |
ハッシュ |
MD5: ca5184d43691ee8d8619377e600fa117 SHA256: 70372f95fa5cf917639007ae25a67a53d0297b67792b00bbea63ce0b170f95b8 |
ファイルタイプ |
Known malware - Linux/Chisel.D!tr |
標的業種: サービスプロバイダー
ld.so.preloadにリストされているファイルは、他のバイナリによってシステムにプリロードされます。/data/etc/ld.so.preloadには文字列/data2/liblink.so.1が含まれているため、そのシステムではすべてのFortiOSプロセスがliblink.so.1を読み込んで実行します。ld.so.preloadは永続化のメカニズムとしても機能します。
ファイルパス |
/data/etc/ld.so.preload |
ハッシュ |
MD5: ee50b080c6209e63a85c60cd3cee52b4 SHA256: |
ファイルタイプ |
ASCII Text |
liblink.so.1は/tmp/fortlinkd.lockファイルの有無を確認します。このファイルが存在していれば、処理を続行します。liblink.so.1のインスタンスがripdプロセスで動作していることを確認し、1つのインスタンスだけが不正活動を行うようにします。この確認作業により、複数のインスタンスが不正活動に関与するのを防ぐことができます。この後、liblink.so.1は/data2/fortlinkdバイナリを実行してから、/data2/fortlinkdがそれ以上実行されないよう、/tmp/fortlinkd.lockファイルを作成します。
ファイルパス |
/data2/liblink.so.1 |
ハッシュ |
MD5: 031e21168d7e783d26998e63217a365c SHA256: dfafeb3efaba2c8e5d80ec7a37c00805895df1a47333515082da54e49a388a59 |
ファイルタイプ |
ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, stripped |
fortlinkdプロセスは/bin/initプロセス(pid=1)に自身を接続し、/bin/initのメモリを仮想アドレス空間に読み取ります。fortlinkdは、文字列/bin/smitの場所を特定するまでこのプロセスを続行し、恐らくは/bin/initプロセスのメモリを変更しようとします。次に、オリジナルの/bin/smitバイナリを削除し、不正バイナリに置き換えて新しい/bin/smitとします。
すべての権限を利用するために、fortlinkdは不正な/bin/smitでchmodを使用します。/bin/fgfmファイルが存在する場合、そのファイルは削除され、その場所に新しい不正ファイルが/bin/fgfmとしてドロップされます。新たにドロップされたfgfmバイナリを/data2/fortlinkdが実行した後、/data2/liblink.so.1および/data/etc/ld.so.preloadファイルが作成されます。
| ファイルパス | /data2/fortlinkd |
ハッシュ |
MD5: d97bae365bd4c3fbf2eb834d678dbd11 SHA256: bfc20c8e21fa4674492576961baedae90f7794a8534d2ad3ef4e230de2fb38ab |
ファイルタイプ |
ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, stripped |
smitは、永続化メカニズムとして使用される/data/etc/ld.so.preloadファイルの存在を確認します。そして、/bin/initを実行する子プロセスを作成し、smitを引数として指定します。
ファイルパス |
/bin/smit |
ハッシュ |
MD5: 823ae2645869e4fc9ebcb046aa760440 SHA256: |
ファイルタイプ |
ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked |
fgfmは、プロセス名[ata/0]で動作することによって自身を偽装します。このマルウェアは、/tmp/tmplog.tarファイルなどの追加ペイロードをダウンロードできます。ペイロードファイルは/tmp/busybox tar -xvfを使って解凍されます。fgfmはシステム上のファイルを削除し、接続を確立し、接続を介して送受信される内容に基づいてさまざまなアクションを実行することができます。
ファイルパス |
/bin/fgfm |
ハッシュ |
MD5: 83d5c75bf1d2090a6cceaf2a80d906da SHA256: |
ファイルタイプ |
ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked |
標的業種: サービスプロバイダー
ld.so.preloadにリストされているファイルは、任意のバイナリによってシステムにプリロードされます。/data/etc/ld.so.preloadには文字列「/data/lib/libav.so」が含まれているため、そのFortiGateシステムでは他のバイナリが実行されると必ず/data/lib/libav.soが実行されます。
ファイルパス |
/data/etc/ld.so.preload |
ハッシュ |
MD5: 0d4b4c13a6ef8266ed5ef464c6883bf1 SHA256: |
ファイルタイプ |
ASCII Text |
libav.soは以下の条件で/data2/.vile/ketgを実行します。
/tmp/logxファイルが存在しない場合は作成されます。これは実行のマークとして使用される空のファイルです。libav.soは、/proc/kallsymsを使用してすべてのカーネルシンボルを抽出し、カーネルシンボル「fos_process_appraise」を探します。また、/dev/memファイルにアクセスして、
デバイスの物理メモリ内の数バイトを変更するようです。これらはセキュリティ機能を改変 / 回避するためです。
ファイルパス |
/data/lib/libav.so.new/libav.so |
ハッシュ |
MD5: 30009c9052e588b93fb12e918bbcecfb SHA256: 6584f614fb0ef864cd5aa5b6ec1b42299f2b639a23e4b1e853caf3b2f2254b14 |
ファイルタイプ |
ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, stripped |
これは主要な実行ファイルで、追加のマルウェアファイルとその他の重要かつ不正な機能をドロップします。ketgバイナリの機能は次のとおりです。
ファイルパス |
/data2/.vile/ketg |
ハッシュ |
MD5: e9ae2188d7a46fdac30b192b7405cba2 SHA256: 8f380a844011daa8854798bf31981b660bf752e95c2e41ae50c0306275b5c0ed |
ファイルタイプ |
ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, stripped |
共有オブジェクト「/SYSV64564856」は、不正な/data2/.vile/ithバイナリを使用して主要プロセスの/bin/initに注入されます。この共有オブジェクトはAPIフッキング機能を備えており、FortiOSの再起動関数をフックして、本来の再起動関数が呼び出される前に/data2/.vile/ketgバイナリを実行します。
ファイルパス |
/SYSV64564856 |
ハッシュ |
MD5: 8771305a111e1b38ada954513af4507c SHA256: |
ファイルタイプ |
ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, stripped |
この実行ファイルは、実行中のプロセスに共有オブジェクトを注入できます。プロセスインジェクションにはLinuxのptrace関数が使用されます。私たちは、ketgプロセスがexecve(「/data2/.ville/ith」、[1 –p 1 /SYSV64564856] [TERMINFO=/tmp/terminfo、TERM=vt220、PWD=/、TZ=GMT])を使用してithを実行し、その結果、/bin/initプロセスであるpid=1に不正な共有オブジェクトが注入されることを確認しました。
ファイルパス |
/data2/.vile/ith |
ハッシュ |
MD5: 8d4c9b498da847c3690260bb28f046f9 SHA256: 75ce32c1e3ba902f7dcbf5bce63347448a94537682cebdde6d93efb2ede3f81c |
ファイルタイプ |
ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, stripped |
このバイナリは/data2/.vile/lmcdleファイルの存在を確認し、正当なbusyboxバイナリと非常によく似たfmteldバイナリを実行します。fmteldは900秒待機した後、lmcdleという名前のプロセスをすべて強制終了します。
ファイルパス |
/data2/.vile/dnpfmn |
ハッシュ |
MD5: 3977f8b8f5ec13604819f45282fd9b71 SHA256: adb1b6fc93a0225a203ec64a48470072b5d5c43d8f15860ee03f24673d9d97fe |
ファイルタイプ |
ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, stripped |
このバイナリはカーネル情報を取得して保存するほか、ポート443でIP 146.185.214.63と通信できます。これはオーストラリアのクラウドプロバイダーのIPです。このIPはどのブロックリストにも記載されていません。接続が確立されると、lmcdleはエンコードされたデータをこのIPに送信します。サーバーからレスポンスを受信することもできます。調査時点では、リモートサーバーから有意な情報は送信されていませんでした。
ファイルパス |
/data2/.vile/lmcdle |
ハッシュ |
MD5: 3fba828577e745c8a51d657cc393f461 SHA256: 20de58db0cfb04ce0abde662ca84b00ca7135bb546e2d32865046c3e4acc1b92 |
ファイルタイプ |
ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, stripped |
fmteldとbrodelは拡張子が追加されておらず、正当なbusyboxバイナリのように見えます。
ファイルパス |
/data2/.vile/fmteld |
ハッシュ |
MD5: 46c59ceb4ded468d692a92e34df75988 SHA256: |
ファイルタイプ |
ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, stripped |
ファイルパス |
/data2/brodel |
ハッシュ |
MD5: 96e74f0f463eadeded69db5d0efde628 SHA256: |
ファイルタイプ |
ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, stripped |
3つの主要なアクティビティクラスタは、手法に以下のような共通点があります。
重要インフラ企業を標的にしている点や、環境寄生型(Living-Off-The-Land:LOTL)のバイナリ、使用されている手法の類似性などから、私たちはクラスタ1と3が同一の攻撃者または攻撃グループによるものであり、Volt Typhoon(G1017)が関係していると考えています。クラスタ2は、1および3と同様のエクスプロイト方式や以前に使用されたRekoobeマルウェアを利用する一方、手法や標的は大きく異なることから、発信源はVolt Typhoonとは別の、しかしながら連帯しているAPTグループであると推測できます。
クラスタ4は2回しか確認されておらず、発信源を特定するにはデータポイントが不足しています。クラスタ4の手法には、クラスタ1および3と共通する点があります。しかしながら、大きな相違点や標的の地域的特徴から、発信源は別のAPTであり、恐らく関係する攻撃者と戦術を共有していると思われます。クラスタ4の手法には、以前に観測されたAPT15による活動と類似する特徴が見られます。
このインスタンスには、他のケースのような特徴は見られません。Bashスクリプトと市販のChiselマルウェアの使用は、別の攻撃者(恐らくCISAの報告にあるUNC757)であることを示唆しています。
基本的インジケータに基づくと、このインスタンスはクラスタ1と3の攻撃者の特徴を示しています。ただし、証拠としては不十分です。
フォーティネットの企業文化であるプロアクティブで透明かつ責任あるPSIRT(Product Security Incident Response Team)の情報開示は、大規模サイバーセキュリティエコシステムの重責を担うメンバーとしての多数の活動の一環であり、正しい情報とリスクに基づいたお客様の意思決定を支援するという当社のコミットメントを実証するものです。フォーティネットは、この追加調査と関連情報を共有することで、業界が攻撃者の活動を特定するために協力し、さらなる攻撃を検知 / 防止できるよう支援したいと考えています。
これらの攻撃は、解決済みのNデイ脆弱性を悪用し、その後にLOTLの手法を使用することが確認されています。これは、Volt Typhoonとして知られるサイバー攻撃者またはグループによる活動を強く示唆しています。同グループは、これらの方法を用いて重要インフラやその他の関連企業に攻撃を仕掛けています。このレポートは、組織が強力なパッチ管理プログラムを導入し、安全なインフラストラクチャを構築するためのベストプラクティスを実践する必要性も浮き彫りにしています。
CISAは本日、ホワイトペーパー「Identifying and Mitigating Living Off the Land Techniques(環境寄生型手法の識別と減災)」のジョイントガイダンスで、上記の攻撃からネットワークを保護するための追加ガイダンスを発表しました。
本ブログは、フォーティネットが創設メンバーであるNetwork Resilience Coalitionの業界ガイダンスなど、適切なサイバーセキュリティ対策を実施する必要性も明確にしています。フォーティネットでは次の対策を強く推奨しています。
これは侵害後のマルウェアサンプルに関するフォレンジック静的分析であるため、ファイルサンプルのIOSのみを掲載し、IPのIOCは含まれていません。
ファイル |
ハッシュ |
検知 |
lamb_to_the_slaughter_story.pdf
|
MD5: a9fcd43714f33da1711dfb651fae5b17 |
N/A |
ld.preeload
|
MD5: 2495159a80aafcdb80bcf8d913d4db80 |
N/A |
| /data2/flatkc_info | MD5: 5d898fdbe0080f5c4437d834e8c23498 | ELF/Agent.3498!tr |
data2/new_alert_info
|
MD5: 210fcaa8bf95c3c861ee49cca59a7a3d | ELF/Agent.7A3D!tr |
| MD5: a5d4b0228beca0f5360049490882683f | ELF/Agent.683F!tr |
|
| MD5: a1192fca2299c57b122e1ffbadecef37 | ELF/Agent.EF37!tr |
|
/bin/httpsclid
|
MD5: 944a31cf9936920a3fb947cb29171631 |
ELF/Agent.E811!tr |
| MD5: 60057a831f3498751e37413c45c29c4a | TBC |
|
MD5: d84a95d19f19eeee2415f41c2c181db8 |
ELF/Agent.1DB8!tr |
|
MD5: 4c375c7ac9ee2f8a04c920381683e811 |
ELF/Agent.E811!tr |
|
/bin/httpsng |
MD5: 7454bb4b3dfe4f4386980b63f119c208 |
ELF/Agent.C208!tr |
MD5: f5caae23ace1ee0b48d02427b08f0bad |
ELF/Agent.0BAD!tr |
|
/bin/smit |
MD5: fc78c1800fbe25e57a7333ca51e183b6 |
ELF/Agent.83B6!tr |
MD5: 247139079d8a1c2534ef0d2b726d8ebb |
ELF/Agent.8EBB!tr |
|
MD5: 2fc1aa1ab1ecde77eb6724f7385d5749 |
ELF/Agent.C78F!tr |
|
MD5: 2fc1aa1ab1ecde77eb6724f7385d5749 |
ELF/Agent.C78F!tr |
|
MD5: cf49feb43667819b880422efbe89fd01 |
ELF/Agent.FD01!tr |
|
MD5: 08039b1cbdf880a3d86f8646bb286709 |
ELF/Agent.6709!tr |
|
MD5: bc1bd24e32fb6a778c1e79840e8ec78f |
ELF/Agent.C78F!tr |
|
| MD5: 823ae2645869e4fc9ebcb046aa760440 | TBC |
|
| /tmp/busybox | MD5: ebce43017d2cb316ea45e08374de7315 | N/A |
/data2/libcrashpad.so |
MD5: e9f64481280c964a6a5dbf551e9cf6f0 |
ELF/Agent.A7BA!tr |
MD5: 9db3c6c29b4028ccd63ee38b62620df7 |
ELF/Agent.0DF7!tr |
|
| MD5: 5b2882b0a4de3210e1bfa5db1ed63713 SHA256: ef7f71ea1c7f35c8a28fc2e98fa9e59b8e2d0f0bea84a527cf2c20ccc4f8b816 |
ELF/Agent.0DF7!tr |
|
MD5: aa53393374e3ec355c0071adeba535eb |
ELF/Agent.0DF7!tr |
|
| MD5: dbe0d8d612ad89229cd6175e37157f3c | TBC |
|
MD5: 604d909d4d8d69c07e3474ceaf379f20 |
ELF/Agent.0DF7!tr |
|
MD5: 78310bad651eff14e5ecefe674630e75 |
ELF/Agent.0DF7!tr |
|
| /data2/tftpd | MD5: cf3e6cb8ada288aa2d1bc39d1ce2ad54 |
ELF/Agent.AD54!tr |
| MD5: 0909a8ee77fbd40ab461df20600ddae0 SHA256: ba0b6b0c6b628dffcf0f34fa78fb61acb6c1b457f7b5addadbe4dba575bac5bd |
ELF/Agent.DAE0!tr | |
MD5: 953813bb2137e351709d98a91336eb25 |
ELF/Agent.EB25!tr |
|
MD5: b11faf42afeca35920a248001b90e997 |
N/A |
|
/lib/libaprhelper.so
|
MD5: 9e898f389003f9141831856f021fda3a SHA256: 80d03d5d35a7b9bde7e5e60f0df3baa0c51cbbd9214d875cd1967f589b9df183 |
ELF/Agent.DF0F!tr |
| MD5: 9d2bc4e59357b56199b709a599600fa7 |
|
|
MD5: 176220a8ac6f344aaf620efab5c6f276 |
ELF/Agent.DF0F!tr |
|
MD5: 2349d1d1acb69e91aea5be7767254f81 |
ELF/Agent.DF0F!tr |
|
| MD5: 9d7b6fc9a0702381062726f634d0df0f SHA256: 43c1905b2078a8de9d0fa42e16465692066825e3dcb42a17cbf40b77736527c2 |
ELF/Agent.DF0F!tr |
|
| MD5: b32ad75ce0494586a8b278c0413c0406 | N/A |
|
MD5: e7ab34f7df83ce3ed6bf287332f7ce73 |
ELF/Agent.DF0F!tr |
|
| MD5: 8b2c08f4e558626f34494b171e21f644 SHA256: a667edc691e9950ec0bc92e9f2cdcb7e99a086286063864040435f26537f9d9b |
|
|
| /data2/libunwind.1.so | MD5: e9c2a3efaa97462168790b2fe234a7ba SHA256: 5700a8d9f00ebeb52536d16701522ecf6a07deb660e442cd67acdfb768e17c39 |
ELF/Agent.A7BA!tr |
/data2/httpdng |
MD5: f84a5eff50af2a7bfae49345b3b3ce1e |
ELF/Agent.CE1E!tr |
| MD5: e1aff3203fd38fc4790157d908ef742a |
|
|
| MD5: f66c0c328d40cffdb0d8dfa0444fe923 |
|
|
MD5: 7aaaf17e4e3638d2f93b1cf5a1579ac6 |
ELF/Agent.CE1E!tr |
|
/lib/libaprsd.so
|
MD5: dc95090cca508d1196b972c385dc3405 |
|
| MD5: 834e542076e7c37e848fb68b3671f7a1 |
|
|
| MD5: 62ef5ec4adbd655adcc418d7ba2262ac |
|
|
MD5: 9d7a1a536eef0ff1e87ee1d78ac7bc69 |
ELF/Agent.DF0F!tr | |
| /bin/toybox | MD5: d0a31975a436d0fe3b4f990c5003ca59 | Clean |
/tmp/.ptyagent
|
MD5: 2d88911f67a2cce7fa97cdf0ae59a027 |
ELF/Agent.A027!tr |
MD5: ca5184d43691ee8d8619377e600fa117 |
Linux/Chisel.D!tr |
|
/data/lib/libav.so.new/libav.so |
MD5: 30009c9052e588b93fb12e918bbcecfb |
ELF/Agent.ECFB!tr |
| /data2/.vile/ketg | MD5: e9ae2188d7a46fdac30b192b7405cba2 |
Agent.CBA2!tr |
/SYSV64564856 |
MD5: 8771305a111e1b38ada954513af4507c |
ELF/Agent.507C!tr |
/data2/.vile/ith |
MD5: 8d4c9b498da847c3690260bb28f046f9 |
ELF/Agent.46F9!tr |
/data2/.vile/dnpfmn |
MD5: 3977f8b8f5ec13604819f45282fd9b71 |
ELF/Agent.9B71!tr |
/data2/.vile/lmcdle |
MD5: 3fba828577e745c8a51d657cc393f461 |
ELF/Agent.F461!tr |
| /data2/.vile/fmteld | MD5: 46c59ceb4ded468d692a92e34df75988 |
|
| /data2/brodel | MD5: 96e74f0f463eadeded69db5d0efde628 |
|
| /data2/liblink.so.1 | MD5: 031e21168d7e783d26998e63217a365c |
ELF/Agent.365C!tr |
| /data2/fortlinkd: | MD5: d97bae365bd4c3fbf2eb834d678dbd11 |
ELF/Agent.BD11!tr |
/bin/fgfm |
MD5: 83d5c75bf1d2090a6cceaf2a80d906da |
|
/data2/lib/* (Bash Scripts)
|
MD5: 33423931a013dfc4a41beb3c5faee2a8 |
N/A |
Authd |
MD5: 9124ce75319514561156d2013fc9d3be |
ELF/Agent.D3BE!tr |
Httpsd |
MD5: 218a3525ab8e46f7afe252d050a86907 |
ELF/Agent.6907!tr |
Liblog.so |
MD5: e24d14d3e6c6de0ed3db050dd5c935f0 |
ELF/Agent.35F0!tr |
Libpe.so |
MD5: 6c0adca790235445d07be98cd0f820b5 |
ELF/Agent.20B5!tr |
Newcli |
MD5: ab89139e3d47fbaba2da33040da95200 |
ELF/Agent.5200!tr |
Packfile |
MD5: 201ee76e996846d5ea3fc03bac3273dd |
Data/Agent.73DD!tr |
Preload.so |
MD5: a62377c01935f366761846b5ceed5a49 |
ELF/Agent.5A49!tr |
Sh |
MD5: 991461b86aebecfd096dc11ff2a04b4b |
NA |
Smartctl |
MD5: 205a8c6049061930490b2482855babcd |
NA |
フォーティネットPSIRTポリシーの詳細、および脆弱性の報告方法については、https://www.fortiguard.com/psirt_policyをご覧ください。