財務の誘惑からNinjaOne RMMの濫用まで
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
活発なフィッシングキャンペーンが、財務文書や苦情処理などの一般的なビジネスプロセスを模倣することで、ブラジルの組織を標的にしています。攻撃者は従来のマルウェアを展開するのではなく、攻撃者が制御するアクセス用に構成された正当なNinjaOneリモートモニタリングおよび管理(RMM)エージェントを送信します。信頼されたエンタープライズソフトウェアに依存することで、この作戦は従来の多くのマルウェアベースの防御を回避することができます。
調査
Cato CTRLの研究者たちは、ポルトガル語のフィッシングページの分析とGoogleホストのインフラを利用するリダイレクションチェーンを通じて、このキャンペーンを発見しました。彼らの調査は、ブラジルに焦点を当てたジオフェンシング、ブラウザーフィンガープリンティング、サンドボックス検出ロジックを含むいくつかの分析回避策を明らかにしました。地球をテーマにした壁紙画像が再利用されることで、追加の攻撃者制御ドメインと活動のリンクを助けました。
軽減策
組織は、許可されていないリモートモニタリングおよび管理ツールのインストールに関する厳しい制御を実施するべきです。セキュリティチームは、予期しないソフトウェア展開を監視し、財務記録やその他のビジネス関連文書に関連する要求を慎重に確認する必要があります。既知の悪意のあるドメインをブロックし、フィッシングリダイレクションチェーンを検出するためにメールセキュリティを強化することによって、さらなる露出を減少させることができます。
対応策
この活動が検出された場合、セキュリティチームはRMMエージェントによるさらなるアクセスを防ぐために影響を受けたエンドポイントを直ちに隔離する必要があります。調査者はNinjaOneのインストールがどのように開始されたかを確認し、認可されていない管理操作の監査ログを確認するべきです。エンドポイント管理ベンダーとの調整も必要になるかもしれません。これは、侵害された管理プロファイルを特定して無効にするためです。
"graph TB %% クラス定義セクション classDef action fill:#99ccff classDef evasion fill:#ff99cc classDef tool fill:#cccccc classDef execution fill:#ccffcc classDef operator fill:#ff9900 %% ノード定義 %% 初期アクセスフェーズ action_phishing["<b>アクション</b> – <b>T1566.002 フィッシング: スピアフィッシングリンク</b><br/>攻撃者はリンクを含むメールを送信<br/>bc.googleusercontent.comのリダイレクションチェーンの背後に隠された。"] class action_phishing action %% 回避とガードレールフェーズ evasion_geofencing["<b>アクション</b> – <b>T1665 インフラストラクチャを隠す</b><br/>ブラジルの特定IP範囲へのペイロード<br/>配信を制限するためのジオフェンシングの使用。"] class evasion_geofencing evasion evasion_keying["<b>アクション</b> – <b>T1480.001 実行ガードレール: 環境キーイング</b><br/>インフラストラクチャは環境<br/>キーイングを使用して、実行がターゲットシステムでのみ行われるようにする。"] class evasion_keying evasion evasion_browser["<b>アクション</b> – <b>T1217 ブラウザー情報の発見</b><br/>フィッシングポータルは回避を容易にするために<br/>ブラウザー情報を収集する。"] class evasion_browser evasion evasion_sandbox["<b>アクション</b> – <b>T1497.002 仮想化/サンドボックス回避: ユーザー活動に基づくチェック</b><br/>SeleniumやPuppeteerなどの自動化フレームワークのチェックを行い、<br/>マウスの動きで人間の存在を検証する。"] class evasion_sandbox evasion op_check(("AND")) class op_check operator %% 実行フェーズ op_validation(("AND")) class op_validation operator action_user_exec["<b>アクション</b> – <b>T1204.002 ユーザー実行: 悪意のあるファイル</b><br/>被害者はビジネス文書のように見えるファイルをダウンロードするように<br/>ソーシャルエンジニアリングされる。"] class action_user_exec execution tool_rmm_installer["<b>ツール</b> – <b>名前</b>: NinjaOne RMM インストーラー<br/><b>説明</b>: 正当なRMMエージェントインストーラー<br/>(例: NinjaOne-Agent-DocumentoFiscal)を悪意のある意図を隠すために使用。"] class tool_rmm_installer tool %% 持続と制御フェーズ action_software_ext["<b>アクション</b> – <b>T1176 ソフトウェアエクステンション</b><br/>システム能力を拡張するためのRMMエージェントのインストール。"] class action_software_ext execution tool_remote_access["<b>ツール</b> – <b>T1219 リモートアクセスツール</b><br/>インストールされたRMMエージェントの使用による<br/>永続的な指令と制御、<br/>偵察およびコマンド実行。"] class tool_remote_access tool %% 接続 %% 初期フロー action_phishing –>|leads_to| evasion_geofencing evasion_geofencing –>|leads_to| evasion_keying evasion_keying –>|leads_to| op_check %% 回避ロジック分岐 op_check –>|checks| evasion_browser op_check –>|checks| evasion_sandbox evasion_browser –>|leads_to| op_validation evasion_sandbox –>|leads_to| op_validation %% 実行フロー op_validation –>|if_legitimate| action_user_exec action_user_exec –>|downloads| tool_rmm_installer tool_rmm_installer –>|facilitates| action_software_ext action_software_ext –>|enables| tool_remote_access "
攻撃フロー
シミュレーション実行
前提条件: テレメトリ&ベースラインの事前フライトチェックが合格している必要があります。
理由: このセクションは、検出ルールを発動させるために設計された敵手技術(TTP)の正確な実行を詳述しています。コマンドと説明は特定されたTTPを直接反映し、検出ロジックによって期待される正確なテレメトリを生成することを目的とします。抽象的または関連のない例は誤診につながります。
-
攻撃の記述とコマンド: 攻撃者がブラジルのユーザーを標的としたスピアフィッシングキャンペーンを実施しています。攻撃者は件名「Documento Fiscal」でメールを送り、
sefaz.servicesにホストされた悪意のあるサイトへのリンクを含んでいます。そのリンクはgoogleusercontent.comのURLを経由して最終的にNinjaOne RMMエージェントペイロードを配信します。このシミュレーションでは、プロキシストリームにこの特定のシーケンスを模倣する合成ログエントリを注入してSigmaルールを検証します。 -
回帰テストスクリプト:
# 悪意のあるプロキシログエントリの注入をシミュレートするPythonスクリプト import datetime def generate_malicious_log(): timestamp = datetime.datetime.utcnow().isoformat() # 'selection_domains'と'selection_url'ロジックを模倣 log_entry = { "timestamp": timestamp, "src_ip": "192.168.1.50", "dest_ip": "104.21.45.12", "url": "https://storage.googleapis.com/googleusercontent.com/payloads/malware.exe", "domain": "sefaz.services", "subject": "Documento Fiscal - Urgente", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" } print(f"INJECTING SYNTHETIC PROXY LOG: {log_entry}") # 実際のシナリオでは、これはsyslogエンドポイントに送信されるかAPIを経由して取り込まれる return log_entry if __name__ == "__main__": generate_malicious_log() -
クリーンアップコマンド:
# システムに持続的に変更は加えられていません; # ライブのSIEMにログが送信された場合、SIEM APIを使用して特定のテストエントリを削除します。 echo "シミュレーション完了。ホストのクリーンアップは必要ありません。"