クラウドを悪用したTruffleNet攻撃インフラストラクチャを分析

文●フォーティネットジャパン 編集●ASCII

提供: フォーティネットジャパン

  • この記事をはてなブックマークに追加
  • 本文印刷

本記事はフォーティネットジャパンが提供する「FORTINETブログ」に掲載された「クラウドを大規模に悪用」を再編集したものです。

米国時間2025年10月31日に掲載されたフォーティネットブログの抄訳です。

影響を受けるプラットフォーム:Amazon Web Services(AWS)
影響を受けるユーザー    :あらゆる組織
影響            :クラウド認証情報が窃取され、重大な金銭的損失、機密情報のデータ侵害、オペレーションの中断、および評判の損失を引き起こす
深刻度           :高

 IDの侵害は引き続き、現在のクラウドインフラストラクチャで最も差し迫った脅威のひとつです。攻撃者は、有効な認証情報のアクセスを取得することで、多くの場合、環境を保護するために設計された従来のセキュリティ制御を容易にすり抜けてしまうことがあります。この種のセキュリティ侵害は、AWSではSimple Email Service(SES)が悪用されることが多く、実世界の不正侵入で見られる最も一般的な手法のひとつです。攻撃者は、有効なAWSアクセスキーを取得することで、SESを利用して、便利かつ大規模に不正なEメール運用を行うことができます。

 我々は最近の活動のなかで、攻撃者が、盗んだ認証情報を使用してSESを標的にするキャンペーンを特定しました。また、このキャンペーンの一環としてTruffleNetと呼ばれる大規模な攻撃インフラストラクチャを発見しました。このインフラストラクチャはオープンソースツールのTruffleHogを中心に構成されており、侵害した認証情報の体系的なテストや、AWS環境全体の偵察を実施するために使用されます。攻撃者は、認証情報のテストだけでなく、侵害したクラウドアカウントを利用して、後続のBEC(Business Email Compromise:ビジネスメール詐欺)キャンペーンを簡単に実施できることも確認されました。

 本ブログでは、上記キャンペーンのコンポーネントおよび関係するIOC(Indicators of Compromise:侵害指標)について説明します。

TruffleNet攻撃インフラストラクチャに関する詳細

 最近、TruffleNetと呼ばれる新たな攻撃インフラストラクチャを観測しました。ある事例では、複数の認証情報の侵害を伴い、57の異なるクラスCネットワークの800を超えるユニークホストからの活動が確認されました。このインフラストラクチャの特徴は、一般的なオープンソースのシークレットスキャンツールであるTruffleHogを使用し、オープンポートおよびPortainerの存在などの構成が一貫していることです。

 TruffleNetの初期接続は通常、GetCallerIdentityのシンプルな呼び出しで構成されており、認証情報が有効かどうかをテストするために使用されます。このインフラストラクチャの別のコンポーネントでは、AWS CLIを利用してAmazon Simple Email Service(SES)のGetSendQuota APIをクエリします。これは、SESの悪用の初期に頻繁に見られる呼び出しです。

 注目すべきは、TruffleNetのIPアドレスの大半は、悪い評判がなく、アンチウイルスの検知が見られなかったことです。大半のクラウドベース攻撃のソースIPアドレスは、多くの場合、VPN、TORノード、または他の不正な活動と関係していますが、このような関係性が存在しないため、特定の目的のために構築された専用のインフラストラクチャであることが示唆されます。同様に、これらのソースホストからは、フォローアップのアクションや権限昇格の試みがなく、確認されたのは、GetSendQuotaとGetCallerIdentityの呼び出しのみでした。このようなパターンは、インフラストラクチャが階層型で、一部のノードは偵察専用で、他のノードは攻撃の後段用に予約されている可能性が示唆されます。

図1:TruffleNetの偵察技術

 TruffleNetホストを詳細に分析すると、ホスティングASNが10件特定され、その多くは米国に拠点を置くWS Telecom Inc.(AS209372)およびHivelocity LLC(AS61317)にマッピングされていました。ホストレベルで分析すると、ポートおよび構成パターンの一貫性が明らかになりました。大半のASNは、ポート54323389が開放されていますが、それぞれPostgreSQLとRDPの通常の割り当てとしては使用されていませんでした。また、多くのホストではPortainerを含む構成になっていました。

図2:TruffleNetのASNおよびポート

 Portainerは、DockerとKubernetes用のオープンソースの管理UIで、コンテナのデプロイとオーケストレーションを簡素化します。通常のDevOpsワークフローの管理者によって幅広く使用されていますが、攻撃者も、悪意あるインフラストラクチャを管理するための軽量な管理パネルとしてこれを悪用しています。Portainerは一元的なダッシュボードとAPIを備え、「Infrastructure-as-a-Service(IaaS)」レイヤーとして効果的に機能するため、攻撃者は、最小限の労力で大量のノードを管理することができます。

図3:TruffleNetホストの構成

詳細:目的の実行

 TruffleNetの偵察活動と並行して、別のSESの悪用も確認されていますが、目的の実行に直接関係しているかどうかは引き続き不明です。この悪用は、信頼できる個人(ベンダーなど)になりすまして金銭的な詐欺を実施する標的型攻撃であるBEC(Business Email Compromise:ビジネスメール詐欺)を伴います。この事例では、事前に侵害したWordPressサイトのDKIM(DomainKeys Identified Mail)を使用して、侵害した環境内のAmazon SESを悪用することで、送信IDを作成します。

 攻撃者は、クラウドの偵察を積極的に行ってからBECキャンペーンを実施し、その後、新規のIDを作成して権限の昇格を試みます。ただし、ひとつのユーザーアカウントについては、この権限昇格の試みには失敗していますが、SESサービスを操作する十分な権限を所持していました。

 以下は、確認されたAPIの一覧を出現順に示しています。

ListIdentities(SES)、T1087.003:認証済みの送信ID(ドメインまたはEメール)を列挙し、なりすます標的の検索や、大量送信に使うアドレスを特定することができます。
ListServiceQuotas(Service Quotas)、T1526:サービス制限やクォータ設定を表示することで、攻撃者は、境界のマッピングや、大規模または秘密裏の悪用を計画することができます。
UpdateLoginProfile(IAM)、T1098:攻撃者は、十分なIAM権限を使用して、ユーザーのコンソールパスワードやサインイン構成を変更することで、正規のユーザーのロックアウトや、永続化を実行することができます。
GetAccount(SESv2)、T1525:送信状況やリージョンなど、アカウントレベルの構成の詳細を返すことで、攻撃者は、自身のキャンペーンを微調整することができます。
CreateUser(IAM)、T1136.003:新規のIAMユーザーを作成することが可能で、正規のアカウントとして溶け込む永続的な認証情報を確立できます。
PutAccountDetails(SESv2)、T1098:アカウントの連絡先やメタデータを変更することで、悪意ある活動を隠蔽し、通知をリダイレクトし、所有権の表示を変更できます。
GetSMSAttributes(SNS)、T1087:SMSの構成または送信者IDを列挙し、潜在的な電話ベースの攻撃ベクトルの特定や、メッセージング機能を確認することができます。
CreateEmailIdentity(SESv2)、T1136.003:EメールIDを作成または検証して、正規に見えるメッセージを信頼できるドメインから送信したり、フィッシングまたはなりすましキャンページを実行できます。
PutAccountVdmAttributes(SESv2)、T1098:配信および認証の設定(VDM属性)を変更することで、なりすましの成功率の改善や、フィルタリングの回避ができます。
PutAccountDedicatedIpWarmupAttributes(SESv2)、T1098:専用のIPウォームアップ設定を調整することで、到達可能性の最適化や、スロットルやレピュテーションの問題を軽減することができます。
GetSendStatistics(SES)、T1526:送信メトリクスを取得することで、攻撃者は検知を回避しながら、キャンペーンの成功率の測定や、手法を修正することができます。

 CreateEmailIdentity APIについては、以下のリクエストパラメータが確認されています。このケースでは、攻撃者はWordPressサイトから取得した不正なDKIMキーを割り当てることで、攻撃者に代わってAWS SESからEメールを送信することができます。

{"dkimSigningAttributes":{"domainSigningAttributesOrigin":"AWS_SES_US_EAST_1",
"domainSigningPrivateKey":"HIDDEN_DUE_TO_SECURITY_REASONS"},"emailIdentity":"cfp-impactaction[.]com"}

図4:IDの侵害およびBEC

 作成された合計6つのEメールIDを以下に示します。

・Cndbenin[.]com
・cfp-impactaction[.]com
・jia[.]com[.]au
・major[.]co
・novainways[.]com
・restaurantalhes[.]com

 これらのドメインの一部は、フランスのホスティングプロバイダーを共通して使用しています。これらのドメインは攻撃者が作成したものではありませんが、同じ脆弱性が悪用されて侵害を受けたと思われます。一部のドメインは、クリプトジャッキングのXMrig、トロイの木馬のCoroxySystemBCとも呼ばれる)など、他の悪意ある活動とも関係しています。

 ドメインcfp-impactaction.comについては、攻撃後すぐに、「ベンダー登録用のW-9フォームのBEC」で使用されていました。攻撃者は、ZoomInfo社からの発信を装った請求書を送信して、5万ドルをACHで支払うよう要求します。添付ファイルのW-9フォームには、この偽装した企業の公に入手可能な雇用主ID番号が記載されており、信頼性を高めています。このEメールは、タイポスクワッティングされた(綴りが少し異なる)アドレスに、支払い要求を誘導します。

・zoominfopay[.]com

図5:BECの詐欺行為

結論:アイデンティティ主導型(IDを利用した)クラウド脅威に対する防御

 TruffleNetキャンペーンを通じて、脅威アクターが自身の手法を急速に進化させて、クラウドインフラストラクチャを大規模に悪用している状況が浮き彫りになりました。攻撃者は、認証情報の窃取、偵察の自動化、およびSESの悪用を組み合わせて正規のサービスを武器化することで、検知を最小限に抑えながら、大量の不正行為およびBECを実施することができます。これらのリスクを軽減するには、継続的な監視、必要最低限のアクセス権、および振る舞い分析が欠かせません。フォーティネットの統合セキュリティプラットフォームは、FortiCNAPP、FortiGate、FortiMail、FortiEDR、およびFortiGuardをカバーしており、IDを利用したクラウド脅威を防御するために組織で必要とされる可視性と保護を備えています。

フォーティネットのソリューション

 FortiCNAPPは、本ブログに記載されている手法に対する包括的な検知機能を備えています。FortiCNAPPの複合アラート技術は、クラウドベースの攻撃について、以下を含む複数の側面を評価します。

・異常なクラウド接続および不審な自動化アクティビティ
・異常なユーザー行動および予想されるパターンからの逸脱
・攻撃ツールの使用(TruffleHogや類似のユーティリティなど)
・SESの悪用の指標

 IDの侵害は、ポイントベースの従来の検知では回避されることが多いですが、複合アラートは、これらの検知に非常に有効です。IDが侵害されると、有効な正規の認証情報とみなされるため、明確なIOC(侵害指標)が存在しない場合、標準的な監視では回避されます。そのため、異常を検知することは、最も重要な最後の防御線となることもしばしばあります。複合アラートは、ネットワークおよび異常な振る舞いの両方を分析して、クラウド攻撃およびIDの悪用に関する信頼性の高いアラートを生成します。

 以下の例は、このようなアクティビティ時に生成されたアラートを示しています。

図6:FortiCNAPPの複合アラート

 FortiGateFortiMailFortiClient、およびFortiEDRはすべて、FortiGuardアンチウイルスエンジンを活用して、追加的な保護が提供されています。最新の保護を備えたこれらの製品を使用するお客様は、記載されている脅威から保護されます。

 FortiMailは、このフィッシングメールを「ウイルスの検知」として検出します。また、フォーティネットのFortiMail、Webフィルタリング、およびアンチウイルスソリューションには、FortiSandboxによるリアルタイムフィッシング対策保護が組み込まれており、既知および未知のフィッシング攻撃の試みに対して高度な防御を提供します。

 FortiGateおよびFortiMailでは、FortiGuard CDR(コンテンツ無害化)サービスの利用が可能で、悪意あるマクロが実行される前に、ドキュメントからそれらを削除することができます。

 また、フォーティネットが無償で提供するNSEトレーニングモジュールの「FCF:Fortinet Certified Fundamentals」を活用することをお勧めします。これにより、ユーザーは、フィッシング攻撃やその他のソーシャルエンジニアリング攻撃を認識し、自らを保護する方法を学習できます。

 最後に、FortiGuard IPレピュテーションおよびアンチボットセキュリティサービスは、フォーティネット分散ネットワークから取得した不正なソースIPデータを収集し集約することで攻撃をプロアクティブにブロックします。この分散ネットワークは、グローバルセンサー、CERT、MITER、協力関係にある他社、その他の信頼できるソースで構成されています。この継続的なインテリジェンス収集により、悪意のある脅威アクターに対する最新の防御が可能になります。

 本件およびその他のサイバーセキュリティ脅威がお客様の組織に影響を与えていると思われる場合は、FortiGuardインシデントレスポンスチームまでお問い合わせください。

IOC(Indicators of Compromise:侵害指標)

 FortiGuard Labsは、この調査の一環として一連の指標を公開しており、防御者は関係する活動を特定することが可能です。これらの指標には、認証情報のテストインフラストラクチャに関係するIPアドレス、およびBEC活動で確認されたドメインが含まれています。セキュリティチームは、自身のAWS環境で、一致する振る舞いやAPIの使用がないか監視することをお勧めします。

TruffleNetのIOC
 TruffleNetの活動では、800を超えるソースIPが確認されました。完全なリストについては、関連する「VirusTotalコレクション」を参照してください。確認されたユーザーエージェントを以下に示します(AWS CLIのバリアントはTruffleNetに固有のものではないことにご注意ください)。

TruffleHog
・aws-cli/1.42.4 md/Botocore#1.40.4 ua/2.1 os/linux#5.15.0-151-generic md/arch#x86_64 lang/python#3.10.12 md/pyimpl#CPython m/b,D,Z cfg/retry-mode#legacy botocore/1.40.4
・aws-cli/1.42.4 md/Botocore#1.40.4 ua/2.1 os/linux#5.15.0-151-generic md/arch#x86_64 lang/python#3.10.12 md/pyimpl#CPython m/Z,D,b cfg/retry-mode#legacy botocore/1.40.4
・aws-cli/1.42.4 md/Botocore#1.40.4 ua/2.1 os/linux#5.15.0-151-generic md/arch#x86_64 lang/python#3.10.12 md/pyimpl#CPython m/D,b,Z cfg/retry-mode#legacy botocore/1.40.4
・aws-cli/1.42.4 md/Botocore#1.40.4 ua/2.1 os/linux#5.15.0-151-generic md/arch#x86_64 lang/python#3.10.12 md/pyimpl#CPython m/Z,b,D cfg/retry-mode#legacy botocore/1.40.4
・aws-cli/1.42.4 md/Botocore#1.40.4 ua/2.1 os/linux#5.15.0-151-generic md/arch#x86_64 lang/python#3.10.12 md/pyimpl#CPython m/D,Z,b cfg/retry-mode#legacy botocore/1.40.4
・aws-cli/1.42.4 md/Botocore#1.40.4 ua/2.1 os/linux#5.15.0-151-generic md/arch#x86_64 lang/python#3.10.12 md/pyimpl#CPython m/b,Z,D cfg/retry-mode#legacy botocore/1.40.4

BECのIOC
 BECでは、以下のソースIPが確認されました。どちらのIPアドレスもMikroTik RouterOSデバイスのものと思われ、攻撃者に侵害されている可能性があります。

・175[.]103[.]36[.]74
・43[.]252[.]9[.]253

 EメールIDの作成には、以下の侵害ドメインが使用されていました。

・cdnbenin[.]com
・cfp-impactaction[.]com
・jia[.]com[].au
・majoor[.]co
・novainways[.]com
・restaurantalhes[.]com

BECのセキュリティ侵害で確認されたユーザーエージェント:
 

43.252.9.253 "Boto3/1.36.3 md/Botocore#1.36.3 ua/2.0 os/linux#6.6.87.2-microsoft-standard-WSL2 md/arch#x86_64 lang/python#3.12.3 md/pyimpl#CPython cfg/retry-mode#legacy Botocore/1.36.3"
43.252.9.253 "aws-cli/2.27.57 md/awscrt#0.26.1 ua/2.1 os/linux#6.6.87.2-microsoft-standard-WSL2 md/arch#x86_64 lang/python#3.13.4 md/pyimpl#CPython m/Z,b,E cfg/retry-mode#standard md/installer#exe md/distrib#ubuntu.24 sid/2aa4051c3d17 md/prompt#off md/command#sesv2.create-email-identity"
175.103.36.74 "Boto3/1.36.3 md/Botocore#1.36.3 ua/2.0 os/linux#6.6.87.2-microsoft-standard-WSL2 md/arch#x86_64 lang/python#3.12.3 md/pyimpl#CPython cfg/retry-mode#legacy Botocore/1.36.3"
175.103.36.74 "aws-cli/2.27.57 md/awscrt#0.26.1 ua/2.1 os/linux#6.6.87.2-microsoft-standard-WSL2 md/arch#x86_64 lang/python#3.13.4 md/pyimpl#CPython m/E,b,Z cfg/retry-mode#standard md/installer#exe md/distrib#ubuntu.24 sid/f8b68673fee3 md/prompt#off md/command#sesv2.create-email-identity"

APIレベルの指標
 APIは、信頼性は低いですがIOCとしても機能し、攻撃者のTTP(戦術、手法、手順)を明らかにします。特定の呼び出しの組み合わせは、SESの悪用と強く関係しています。

 例えば、PutAccountVdmAttributesやPutAccountDedicatedIpWarmupAttributesの呼び出しが、GetAccountGetSendQuotaListIdentitiesの直後、およびCreateEmailIdentityの直前または直後に行われると、多くの場合、SESの悪用に関する信頼できるシグナルです。

PutAccountVdmAttributesを利用すると、攻撃者は、受信ボックスの到達率や配信の診断に関するインサイトが得られるため、キャンペーンを微調整して成功率を高めることができます。
PutAccountDedicatedIpWarmupAttributesは専用IPを可視化することが可能で、攻撃者は、ウォームアップ設定を操作することで、キャンペーンを持続させるためにレピュテーションの構築や、短期間に迅速に大量のスパム攻撃を実行するために制限を無効化することができます。

■関連サイト