イラン系のサイバースパイグループ「Mirage Kitten」が、LinkedInや求人検索プラットフォーム上で偽の採用担当者を装い、ソフトウェアエンジニアを標的にしていることが判明しました。
攻撃者はトロイの木馬化したコーディング課題を利用し、これまで報告されていなかった2種類のクロスプラットフォーム型リモートアクセス型トロイの木馬(RAT)「NodeRabbit」と「PollCat」を展開しています。
このキャンペーンはWindows、Linux、macOSにまたがる開発者のワークステーションを標的としており、エジプト、エチオピア、アフガニスタンの航空、航空宇宙、フィンテック関連組織で被害が確認されています。
Kasperskyの研究者は、アフガニスタンで最初のNodeRabbit感染事例を特定した後、エジプトとエチオピアでさらに高度な亜種を発見し、今回の攻撃活動を突き止めました。
攻撃はまず、偽の採用担当者がソフトウェアエンジニア職を提示し、候補者に技術課題への取り組みを求めるところから始まります。
ある誘導手口では、「Front-Technical-Challenge.zip」という名前のファイルに、Express、React、Viteを使った一見正当なアプリケーション「TaskFlow」が含まれていました。
付属のREADMEには、フロントエンドのバグを修正するよう指示があり、「server.jsは安全なので変更しないように」と明示的に記載されていました。
この指示自体が欺瞞の一部でした。server.jsの最初の行では、悪意のあるパッケージ「colorized_terminal」バージョン2.1.0をインポートしていましたが、これはnpmレジストリに公開されたものではなく、アーカイブに同梱されたnode_modulesディレクトリに直接配置されたものでした。
このパッケージが実行されると、隠しキャッシュパスからNodeRabbitがバックグラウンドの隠れたプロセスとして静かに起動されます。後続のサンプルでは、別のトロイの木馬化された依存パッケージ「pretty-log」を使ってインプラントを起動させる手口も確認されています。
これらの誘導では3時間という締め切りが設定され、AIアシスタントの使用を禁じる指示も含まれていました。これにより候補者に焦りを与えつつ、コードのレビューを避けさせる狙いがあったとみられます。
この手口は、見慣れないソースコードをダウンロードし、依存パッケージをインストールし、アプリケーションをローカルで実行するという、開発者にとってごく普通の作業フローを悪用したものです。
NodeRabbitはNode.jsベースのRATで、ホスト情報の収集、プロセスやネットワークインターフェースの列挙、シェルコマンドの実行、ファイルの読み書き、ディレクトリの作成、そして攻撃者が指定したJavaScriptの実行などの機能を備えています。
ホスト名、ユーザー名、OSバージョン、アーキテクチャ、MACアドレスなどの情報からホスト識別子を生成し、AES-256-GCMで保護された通信によってAzureにホストされたコマンド&コントロール(C2)基盤と通信します。
より高度な亜種では、メモリの少なさ、CPUコア数の少なさ、稼働時間の短さ、解析ツールのプロセス、不審なユーザー名やホスト名などを検出する分析回避チェック機能が追加されています。
Polyswarmの研究者によれば、今回の攻撃活動は、Mirage KittenがNode.jsおよびJavaScriptベースのマルウェアを使用していることが公式に確認された初めての事例であり、これまでネイティブのC、C++、GoツールをDLLサーチオーダーハイジャッキングで配布する手法を主に用いてきた同グループにとって、大きな方針転換を意味します。
マルウェア分析ツール
偽のLinkedIn求人情報
これらの条件が検出された場合、NodeRabbitはC2サーバーに接続する前に、Google、Microsoft、Cloudflareへ一見無害なHEADリクエストを送信してから終了します。
また、企業内プロキシの検出やHTTP CONNECTトンネリングにも対応しており、Basic認証、NTLM認証、Negotiate認証にも対応しています。
特に注目すべきは、NodeRabbitの第3の亜種が、信頼された開発ワークフローを悪用して永続化を図る点です。「GitHub Copilot Helper」を装った不正なVisual Studio Code拡張機能をインストールし、VS Code起動後に有効化されるよう設定することができます。
このマルウェアはまた、一般的な開発用ディレクトリや最近使用されたVS CodeワークスペースをスキャンしてGitリポジトリを探し、post-mergeおよびpost-checkoutフックにランチャーを追記します。これにより、通常のGit操作がRATを再起動させる引き金になります。
もう一つの難読化されたJavaScript製RAT「PollCat」は、「RankChallenge-react」というReactベースのコーディング課題を通じて配布されていました。
このプロジェクトにはワンタイムパスワード(OTP)システムが組み込まれており、課題を特別かつ緊急性の高いものに見せかける狙いがあったとみられます。
しかし実際には、マルウェアはアプリケーションの初期化中、標的がOTPを入力する前に起動を開始するため、認証に失敗してもインプラントがC2基盤へ登録し、コマンドのポーリングを開始する動作は止まりません。
PollCatは、ファイル転送、ディレクトリおよびドライブの列挙、プロセス制御、シェル実行、ZIP操作、隠しプロセスの作成、Windows DLLの実行、そしてEVAL_JSコマンドによる任意のJavaScript実行に対応しています。
SYSTEM_CHECK機能は、Microsoft、Cisco、Fortinet、CrowdStrike、SentinelOne、Sophos、ESET、Bitdefender、Malwarebytesを含む24のセキュリティ・テクノロジーベンダーに関連するプロセスやファイルシステム上の場所を洗い出します。
Mirage Kittenは、Microsoft Azure Websitesに加え、Cloudflareを利用したドメインや攻撃者が管理するドメインを併用しており、悪意ある通信を通常のクラウドサービス通信に紛れ込ませています。
Kasperskyの調査によれば、攻撃者は標的組織の名称をAzureのサブドメインに組み込むことがあり、これによって企業のログ上でC2通信がより正当なものに見えるよう仕向けている可能性があるとしています。
研究者らは、今回の攻撃活動に関連するインフラ資産をさらに約11件特定しました。
Mirage Kittenは「UNC1549」「Smoke Sandstorm」「Nimbus Manticore」の名でも追跡されており、これまで中東・アフリカ地域の戦略的に重要な組織を標的にしてきた実績があります。
今回の攻撃活動は、開発環境が価値の高い侵入経路になりつつあることを示しています。エンジニア1人が侵害されるだけで、ソースコードリポジトリ、ビルドパイプライン、認証情報、クラウドリソース、社内システムへのアクセスが攻撃者の手に渡りかねません。
組織としては、依頼していないコーディング課題を潜在的な脅威として扱い、プロジェクトアーカイブを実行前にスキャンし、同梱された依存パッケージやロックファイルを検査し、未レビューのVS Code拡張機能の使用を制限し、開発者エンドポイント全体でGitフックの変更を監視することが求められます。
★ 7段階のメトリクスゲート方式によるAI SOC導入フェーズを学ぶ – 無料AI SOC導入プレイブック2026をダウンロード。
翻訳元: https://gbhackers.com/fake-linkedin-job-offers/