北朝鮮のマルウェアがWindows、Linux、macOSのシステムエンジニアを標的に
2024年7月30日 SIEMなどを提供する企業「Securonix 」が北朝鮮が関連すると言われる「DEV#POPPER」と呼ばれる攻撃キャンペーンでWindows、Linux、macOSのシステムエンジニアを標的にしたマルウェアが確認された事を発表しました。
目次
北朝鮮の攻撃キャンペーン DEV#POPPER とは
この活動は2023年11月に確認されたソーシャルエンジニアリング的な攻撃キャンペーンで、
当時、パロアルトネットワークスのUnit 42が「伝染性面接」と呼ばれる活動として発表しました。
この活動は、北朝鮮の脅威アクターが雇用主を装い、面接プロセスを通じてソフトウェア開発者にBeaverTailやInvisibleFerretなどのマルウェアをインストールさせるよう誘導していました。
また2024年海外のセキュリティ系企業の「Phylum」が同様の手口で北朝鮮の脅威アクターが就職の面接を装って、偽のnpmパッケージを送付しPythonのバックドアをダウンロードさせる手法が確認され
サイバーセキュリティ企業Securonixは、この活動をDEV#POPPERと 名づけました。
画像引用:The Hacker News
今回の攻撃キャンペーンについて
以前のキャンペーンと同様に、今回の新しいサンプルでもソフトウェア開発者をターゲットにしたソーシャルエンジニアリング手法が利用されています。
この形式の攻撃はソーシャルエンジニアリングの高度な形式であり、個人を操作して機密情報を漏らしたり、通常は行わないような行動をとらせたりするように設計されています。
以前のSecuronixの DEV#POPPER アドバイザリで記載されていた通り、
主な目的は、ユーザーを騙して、知らないうちに自分自身や現在の勤務先を危険にさらすことです。
攻撃者が制御するエクスプロイトに依存する従来のハッキング方法とは異なり、ソーシャルエンジニアリング攻撃は、多くの場合、心理的操作を悪用して人間の脆弱性を悪用されます。
この戦術は、信頼、恐怖、または単に役に立ちたいという欲求などの基本的な人間の特性を食い物にします。
脅威アクターは Windows だけでなく Linux や macOS のサポートも取り入れることで、被害者を拡大しています。
以下からSecuronix の分析内容について解説します
ルアーファイルと初期コード分析
脅威アクターは開発者職の面接官を装い、面接の実技部分の一部として、面接対象者に ZIP ファイル パッケージ (この場合は onlinestoreforhirog.zip) を提示します。
インタビュー対象者が「npm install」と「npm start」を使用してパッケージの内容を抽出して実行すると、
巧妙に隠された JavaScript コード行が実行され、感染チェーンが開始されます。
zip ファイルの内容には数十の正当なファイルが含まれているため、インストールされているウイルス対策ソフトで検出されなければ、潜在的な不正行為を特定するのは困難です。
それだけでなく、下の図からわかるように、悪意のあるコードは、サーバー接続を処理するように設計された一見無害な JavaScript ファイル内の右下の奥深くに隠されています。
画像引用:Securonix
悪意のあるコードは人間の目では検出が難しいだけでなく、VirusTotal によると、悪意のあるファイルの検出率も非常に低く、64 ベンダーのうち 3 社のみが陽性と判定しました。
JavaScript コードで隠蔽した悪意あるコード部分は、実際の機能を隠蔽するためにいくつかの高度な難読化手法が使用されています。
JavaScript コードの難読化部分
- Base64 エンコーディング: 多くの文字列は Base64 でエンコードされており、実行時にデコードされます。これにより、コードを直接読み取ることが困難になります。
- 動的な関数名と変数名: 変数名と関数名はランダム化され、実際に呼び出される関数とモジュールを隠すデコードされた文字列の背後に存在するモジュールを使用する必要があります。
- 連結と分割文字列: コード内にあるプレーンテキスト文字列は連結され、小さなセグメントに分割されて、コンパイル時にまとめられます。
- プロトタイピングの難読化: Object.prototype.toString などのプロトタイプを変更すると、文字列の実際の意図を明らかにするための分析が妨げられます
難読化されたコードの中に、base64の下にC2アドレスが含まれていました。
http://67.203.7[.]171:1244
残念ながら、全体的に非常に複雑なため、わかりやすくするために、コードの機能全体について説明することはできませんが、その機能と能力を大まかに解説していきます。
メイン機能
識別されたメイン関数「M」は、データの抽出と送信プロセスを調整し、コード実行をさまざまなOS (Windows、Linux、Darwin (Macos)) にリダイレクトします。
まずプラットフォームを識別し、パスと変数を構築してから、検出された OS に基づいて適切な抽出関数を呼び出します。
C2通信
このスクリプトには、URLを構築し、フォームデータを準備して、先に抽出したIPとポートの組み合わせにHTTP POSTリクエストを送信することで、データをリモートサーバーに送るいくつかの関数が含まれています。
別の関数は、システム情報やその他の収集されたデータを含むフォームデータオブジェクトを準備し、C2サーバーのURLを構築して、前の関数と同じ方法で再びデータを送信します。この情報には以下が含まれます
- データが送信された現在の時刻。
これにより、C2 サーバーは収集されたデータのタイムラインをログに記録して分析できます。 - 送信されるデータのタイプを示す特定の一意のシステム識別子。
サーバー上のデータの分類や処理に役立ちます。一部の識別子は、システム情報、ファイル、ログ、またはその他の種類の収集されたデータに関連しています。 - 感染したホスト マシンの別の一意の識別子。
これにより、サーバーはどのデータがどのマシンから送信されたかを追跡できます。
- ホスト名
- プラットフォーム(OS名)
- タイムスタンプ
- ホスト マシンからの実際のペイロードまたは収集されたデータ。
これには、ファイル、ログ、その他のキャプチャされたデータなどの機密情報が含まれる場合があります。
ペイロードのダウンロード
別の関数 (“rt”) は、次のステージのペイロードのダウンロードを管理します。
この関数は、URL 文字列の構築から始まり、慎重に作成された curl コマンドを使用してファイルをダウンロードし、ダウンロードしたファイルで非同期タスクを実行します。
条件が満たされるまでプロセスが繰り返され、必要に応じてエラーと再試行が処理されます。これらの条件は、次のフローで機能します。
1:カウンターチェック:
この関数は、確立されたカウンターがタイムスタンプ + 4の値に達しているか、それを超えていないかを確認します。もし達している場合、この関数は早期に戻り、実行を停止します。
2:ファイルの存在とサイズチェック
この関数は、一時ファイルパス(tempPath)が存在するかどうかを確認します。 もしファイルが存在する場合、そのファイルの統計情報を取得します。 次に、ファイルのサイズがタイムスタンプ + 4以上であるかどうかを確認します。
3:ダウンロード成功
もしファイルが存在しない場合、この関数はcurlコマンドを使用してファイルをダウンロードしようとします。 もしダウンロードが失敗した場合、この関数はカウンターをリセットし、再度タスクを試みます。
Pythonの実行
前のセクションでダウンロードした zip ファイルから抽出されたコンテンツには、C:\Users\username\.npl に保存される .npl という名前のファイルが 1 つ含まれています。名前に反して、これは「ニュートラルパラレル言語」ファイルではなく、Python スクリプトです。
Pythonライブラリ全体も.zipファイルから抽出され、ユーザーのホームディレクトリのC:\Users\username.pyp\に保存されます。
このPythonスクリプトは、前回のキャンペーンで見たものと非常に似ており、.npl Pythonスクリプトの目的は、単に「pay」と呼ばれる別の埋め込まれたPythonスクリプトを保存して実行することで
このスクリプトはC:\Users\username.n2\payに保存および抽出されます。
「.npl」と「pay」の両方に難読化されたコードが含まれており、ほぼ同じメカニズムを使用してデコードされます。
また、最初に base64 を使用してエンコードされ、その後、キーとの XOR を使用してさらに難読化されスクリプトが実行されると、スクリプトは実行時に動的に難読化を解除し、ペイロードを実行します。
侵入後
詳細なシステムメタデータを収集し、Web ブラウザに保存されている Cookie にアクセスし、コマンドを実行し、ファイルをアップロード/ダウンロードし、キーストロークとクリップボードの内容をログに記録するように設計されています。
最近のサンプルに追加された新機能には、強化された難読化の使用、永続性維持のための AnyDesk リモート監視および管理 (RMM) ソフトウェア、およびデータ流出に使用される FTP メカニズムの改善が含まれます。
Securonixの推奨事項
Securonixは対策として以下を推奨しています。
・信頼できない可能性のあるソースからのコードを実行する必要がある場合は、仮想マシンまたは Windows Sandboxを活用して、マシンを感染から隔離する。
・テクノロジーが悪用されるのと同じように、人々もソーシャル エンジニアリング攻撃の標的になるという事実を認識する
・通常は実行されないエンドポイントやサーバーで、Python などのデフォルト以外のスクリプト言語が使用されているかどうかを監視します。これを支援するには、 Sysmon や PowerShell ログなどの追加のプロセス レベルのログを活用して 、ログ検出範囲を広げます。