ゴギッター、GitShellPad、GoShellを用いたAPT攻撃がインド政府を標的に | パート1
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
Zscaler ThreatLabz は、インドの政府機関を標的とするパキスタン関連のAPTグループによって実行される Gopher Strike と Sheet Attack の2つのキャンペーンを発見しました。この活動では、GOGITTER、GITSHELLPAD、GOSHELL などの Golang ベースのツールを導入してペイロードを準備し、プライベートな GitHub リポジトリを C2 として使用し、最終的に Cobalt Strike ビーコンを展開します。最初のアクセスは、マルウェアを含む ISO ファイルをダウンロードするように被害者を誘導するスピアフィッシングPDFを通じて行われます。オペレーターは、環境チェック、ファイルパディング、スケジュールされたタスクの永続化を含む、複数の回避方法を重ねています。
調査
分析によれば、GOGITTER は windows_api.vbs スクリプトの存在を確認し、存在しない場合はそれを作成し、50 分ごとに実行するようにスケジュールされたタスクを登録します。GITSHELLPAD は GitHub REST API を使用してコマンドの取得とデータの流出を行い、GOSHELL は選択されたホスト名でのみステージされた Cobalt Strike ビーコンを条件付きで読み込みます。ツールはハードコーディングされたURLとユーザーエージェント文字列を埋め込んで、分析自動化やサンドボックス化を妨げます。キャンペーンは、Adobe_update.zip などのサポートペイロードをホストするためにプライベートな GitHub リポジトリも使用します。
緩和策
信頼されていない/署名されていない Golang バイナリの実行をブロックし、スケジュールされたタスクの作成に対する厳格な許可リストとレビューを強制します。既知の悪意のあるドメインや GitHub を C2 として使用する GitHub リソースへのアウトバウンドトラフィックを監視し、開発者以外のエンドポイントからの異常な GitHub API 使用を含みます。PDF 添付ファイルの難読化をスキャンし、ISO ダウンロードにリダイレクトするリンクをブロックして、メールセキュリティを強化します。エンドポイントの検出は、windows_api.vbs の作成と 50 分間隔に一致する定期タスクの実行パターンで警告を発するべきです。
対応策
IOC が検出された場合、エンドポイントを隔離し、スケジュールされたタスクを停止および削除し、関連する悪意のあるアーティファクトを削除します。GitHub ベースの C2 アクティビティを法医学的にレビューし、コマンド実行ログを保存し、可能であれば流出またはアップロードされたコンテンツを削除します。影響を受けたアカウントの資格情報をリセットし、横移動を調査し、抽出されたインジケータで検出を更新して環境全体に関連する活動を特定します。
graph TB %% Class definitions classDef action fill:#99ccff classDef technique fill:#b3e5fc classDef tool fill:#ffe0b2 classDef malware fill:#ffcccb classDef process fill:#d5f5e3 classDef operator fill:#ff9900 %% Nodes – Attack Steps step1_initial_access[“<b>テクニック</b> – T1204.002 ユーザー実行: 悪意のあるファイル<br/><b>説明</b>: ソーシャルエンジニアリングにより配布された悪意のあるファイルをユーザーが実行する。<br/><b>詳細</b>: Adobe Acrobat の更新を装ったスピアフィッシング PDF。偽のボタンをクリックするとペイロードを含む ISO がダウンロードされる。”] class step1_initial_access technique step2_recon[“<b>テクニック</b> – T1593.003 公開ウェブサイト/ドメインの検索: コードリポジトリ<br/><b>説明</b>: 攻撃者は公開されているコードホスティングサイトから情報を収集する。<br/><b>詳細</b>: 脅威アクターは後に C2 やペイロードをホストするためのプライベート GitHub リポジトリを作成する。”] class step2_recon technique step3_exec_vbscript[“<b>テクニック</b> – T1059.005 コマンドおよびスクリプトインタープリタ: Visual Basic<br/><b>説明</b>: Visual Basic スクリプトを実行してコマンドを実行する。<br/><b>詳細</b>: GOGITTER は windows_api.vbs を配置・実行し、Web サーバーから追加コマンドを取得する。”] class step3_exec_vbscript technique step4_exec_cmd[“<b>テクニック</b> – T1059.003 コマンドおよびスクリプトインタープリタ: Windows コマンドシェル<br/><b>説明</b>: ネイティブの Windows コマンドシェルを使用して実行する。<br/><b>詳細</b>: GITSHELLPAD は net user、systeminfo、tasklist、curl などのコマンドを実行する。”] class step4_exec_cmd technique step5_persistence[“<b>テクニック</b> – T1053.005 スケジュールされたタスク/ジョブ: スケジュールされたタスク<br/><b>説明</b>: 悪意のあるコードを定期的に実行するためのスケジュールされたタスクを作成する。<br/><b>詳細</b>: GOGITTER は MicrosoftEdge_ConfigurationUpdate_<random> という名前のタスクを作成し、50 分ごとに VBScript を実行する。”] class step5_persistence technique step6_masquerade[“<b>テクニック</b> – T1036.008 偽装: ファイルタイプの偽装および T1036.007 二重拡張子<br/><b>説明</b>: ファイル名を正規のものに見せかけ、実際のタイプを隠す。<br/><b>詳細</b>: windows_api.vbs、adobe_update.zip、edgehost.exe という名前のファイルが配置される。”] class step6_masquerade technique step7_obfuscation[“<b>テクニック</b> – T1027.015 難読化されたファイルまたは情報: 圧縮<br/><b>説明</b>: 圧縮を使用して悪意のあるペイロードを隠す。<br/><b>詳細</b>: ペイロードはプライベート GitHub リポジトリに ZIP/RAR アーカイブとして配置される。”] class step7_obfuscation technique step8_account_disc[“<b>テクニック</b> – T1087.001 アカウントの発見: ローカルアカウント<br/><b>説明</b>: システム上のローカルユーザーアカウントを列挙する。<br/><b>詳細</b>: GITSHELLPAD は \”net user\” を実行してアカウントを一覧表示する。”] class step8_account_disc technique step9_network_disc[“<b>テクニック</b> – T1016.001 システムネットワーク構成の発見: インターネット接続の発見<br/><b>説明</b>: インターネット接続および到達可能な C2 エンドポイントを確認する。<br/><b>詳細</b>: curl を使用して攻撃者ドメインへの接続性をテストする。”] class step9_network_disc technique step10_collection[“<b>テクニック</b> – T1560.002 収集データのアーカイブ: ライブラリによるアーカイブ<br/><b>説明</b>: 収集したデータを後で使用するためにアーカイブに圧縮する。<br/><b>詳細</b>: 侵害後ツールは ZIP/RAR アーカイブとして配布される。”] class step10_collection technique step11_c2[“<b>テクニック</b> – T1102.001 Web サービス: Dead Drop Resolver<br/><b>説明</b>: Dead-drop として機能する Web サービスを介して C2 と通信する。<br/><b>詳細</b>: GitHub REST API を使用して info.txt をアップロードし、command.txt をポーリングする。”] class step11_c2 technique step12_exfil[“<b>テクニック</b> – T1567.001 Web サービス経由の情報流出: コードリポジトリへの流出<br/><b>説明</b>: データをコードリポジトリにアップロードすることで情報を流出させる。<br/><b>詳細</b>: 収集された info.txt は攻撃者が管理する GitHub リポジトリにアップロードされる。”] class step12_exfil technique %% Connections – Attack Flow step1_initial_access –>|につながる| step2_recon step2_recon –>|につながる| step3_exec_vbscript step3_exec_vbscript –>|につながる| step4_exec_cmd step4_exec_cmd –>|につながる| step5_persistence step5_persistence –>|につながる| step6_masquerade step6_masquerade –>|につながる| step7_obfuscation step7_obfuscation –>|につながる| step8_account_disc step8_account_disc –>|につながる| step9_network_disc step9_network_disc –>|につながる| step10_collection step10_collection –>|につながる| step11_c2 step11_c2 –>|につながる| step12_exfil
攻撃フロー
検出
可能なIPルックアップドメイン通信試行(via dns)
表示
不審なプロセスがコマンドラインでURLを使用(via cmdline)
表示
疑わしいCURL使用(via cmdline)
表示
システム列挙の可能性(via cmdline)
表示
アカウントまたはグループ列挙の可能性(via cmdline)
表示
アーカイブから抽出された疑わしいファイル(via file_event)
表示
システムネットワーク構成の発見の可能性(via cmdline)
表示
IOC(HashSha1)による検出:GOGITTER、GITSHELLPAD、および GOSHELL を使用した政府標的 APT 攻撃 | パート1
表示
IOC(HashMd5)による検出:GOGITTER、GITSHELLPAD、および GOSHELL を使用した政府標的 APT 攻撃 | パート1
表示
IOC(HashSha256)による検出:GOGITTER、GITSHELLPAD、および GOSHELL を使用した政府標的 APT 攻撃 | パート1
表示
GITSHELLPAD バックドアおよびクリーンアップコマンドの検出 [Windows プロセス作成]
表示
GOGITTER ダウンローダーおよび C2 通信の検出 [Windows ネットワーク接続]
表示
シミュレーション実行
前提条件:テレメトリー & ベースライン事前チェックが合格している必要があります。
理由:このセクションでは、検出ルールをトリガーするために設計された敵対者の手法(TTP)の正確な実行を詳述します。コマンドおよび物語は、特定されたTTPsを直接反映し、検出ロジックが期待する正確なテレメトリーを生成することを目的としています。抽象的または無関係な例は誤診につながります。
-
攻撃の物語とコマンド:
APTグループは、GITSHELLPADバックドア(edgehost.exe)を侵害された Windows ホストに展開します。予想されるシステムの挙動と 混ざり合うために、攻撃者はバックドアを Windows コマンドシェル(cmd /c)経由で起動します。そのペイロードを完了した後(例: 追加モジュールのダウンロード)、バックドアはtaskkill /F /PID <PID>を使用して自分のプロセスのクリーンアップを行います。これらの操作はいずれもプロセス作成イベントを生成し、バイナリ名と必要なコマンドラインサブストリングを含み、Sigmaルールを満たします。 -
回帰テストスクリプト:
# ------------------------------------------------- # GITSHELLPAD バックドアの実行とクリーンアップのシミュレーション # ------------------------------------------------- # 1. プレースホルダー edgehost.exe(任意の無害な実行ファイル)をドロップします $src = "$env:SystemRootSystem32notepad.exe" $dst = "$env:TEMPedgehost.exe" Copy-Item -Path $src -Destination $dst -Force # 2. cmd /c を通して edgehost.exe を起動します(cmd_cmd パターンに一致) $proc = Start-Process -FilePath "cmd.exe" -ArgumentList "/c `"$dst`"" -PassThru # 3. プロセスが生きていることを確認するために数秒待ちます Start-Sleep -Seconds 5 # 4. クリーンアップ:taskkill を使用して edgehost.exe プロセスを終了します(taskkill_cmd パターンに一致) $pid = $proc.Id cmd /c "taskkill /F /PID $pid" # 5. ドロップされたファイルを削除します Remove-Item -Path $dst -Force -
クリーンアップコマンド:
# 任意の生き残りの edgehost.exe インスタンスを終了する Get-Process -Name "edgehost" -ErrorAction SilentlyContinue | Stop-Process -Force # 一時バイナリがまだ存在する場合、削除 $tempPath = "$env:TEMPedgehost.exe" if (Test-Path $tempPath) { Remove-Item $tempPath -Force }