活動報告サイバー攻撃、不正アクセス情報システム担当者向け2024.2.29AiTM(中間者)攻撃を通じて配信される高度なマルウェア、NSPX30インプラントとはこの記事をシェアBlackwoodと命名した中国と関わりのある新しいAPTグループが使用する、高度なマルウェアNSPX30についてESET社の研究者が解説します。Japanが提供する「ESETブログ」に掲載された「中国が関与する新しいAPTグループによる、高度なAiTM(中間者)攻撃によって配信されるインプラントNSPX30」を再編集したものです。ESET社の研究者は、少なくとも2018年から活動していると考えられ、これまでに特定および報告されていなかった中国が関与していると思われるサイバー攻撃組織による攻撃を分析しました。ESET社は、このグループをBlackwoodと命名しました。この攻撃組織は、正規のソフトウェアのアップデートリクエストを乗っ取るAiTM(中間者)攻撃を通じて、高度なマルウェアを配信しています。ESET社は、このインプラント(マルウェアの一種)をNSPX30と命名しました。Pinyin(捜狗?音)などの正規ソフトウェアのアップデートの仕組みを利用して展開されています。英国の個人に対する標的型攻撃で検出されています。Woodと命名していた2005年に検出された軽量なバックドアから進化していることが明らかになりました。NSPX30は、ドロッパー、インストーラー、ローダー、オーケストレーター、バックドアなど、いくつものコンポーネントを実装した多段階型のインプラントです。後者の2つには個別のプラグインのセットが用意されています。このインプラントは、攻撃者がパケットを傍受する能力を重視して設計されています。NSPX30のオペレーターが攻撃用のインフラを隠蔽することを可能にしています。NSPX30はまた、セキュリティ製品の許可リストに自身を追加することができ、いくつかの中国のマルウェア対策製品に攻撃が妨害されないように対策しています。これらの攻撃は、ESET社がBlackwoodと命名した新しいAPTグループによって実行されています。BLACKWOODのプロファイルBlackwoodは、少なくとも2018年から活動している中国が関与していると思われるAPTグループであり、中国や日本の個人や企業に対してサイバースパイ活動を仕掛けています。Blackwoodは、正規ソフトウェアのアップデートの仕組みをAitM(中間者)攻撃を利用して、ESET社がNSPX30と名付けたインプラントを配信したり、インプラントが生成するトラフィックを傍受して、コマンドアンドコントロールサーバーの場所を隠蔽したりする能力を有しています。キャンペーンの概要2020年、ESET社が「脅威マグネット」と呼んでいる、中国にあるシステムを標的とした悪意のある活動の急増を検出しました。この「脅威マグネット」システムは、さまざまなAPTグループに関連するマルウェアツールキットによる攻撃を検出しています。Panda、LuoYu、そしてESET社がLittleBearとして追跡している別のサイバー攻撃組織による攻撃を捕捉しています。このシステムは、これらの3つのグループが利用しているツールキットではない、不審なファイルを検出しました。ESET社は、このファイルを起点としてNSPX30と命名したインプラントの調査を進めたところ、その起源が2005年に遡ることが明らかになりました。ESET社のテレメトリ(監視データ)によると、このインプラントは限られた一部のシステムで検出されています。被害に遭った個人や組織は以下の通りです。エンジニアリングおよび製造業の日本企業の中国オフィスまた、攻撃者はアクセスが途絶えた場合、システムの侵害を再び試みることも確認されています。図1に、ESET社のテレメトリによるBlackwoodの標的の地理的分布を示します。Woodと命名した簡易なバックドアまで遡ることができました。Woodの最も古い検体は2005年にコンパイルされており、いくつかのインプラントを作成するためのコードベースとして使用されていると考えられます。このようなインプラントの1つは、NSPX30のベースとなっており、2008年にその作成者によってDCMと名付けられました。図2に、ESET社が収集した検体とESET社のテレメトリ、および公開されている文書の分析に基づく、これらのマルウェア開発の時系列を示します。このサイバー攻撃者による約20年間の開発と悪意のある活動の詳細は明らかになっておらず、ここに記載しているイベントやデータは不完全なものです。Wood、DCM、およびNSPX30に関する調査結果の一部について説明します。Woodローダーとバックドアの2つのコンポーネントのPEヘッダーに存在するタイムスタンプから、これらのインプラントの進化の起点は、2005年1月9日にコンパイルされた小規模なバックドアであることが分かりました。このバックドアは、システムやネットワーク情報の収集、キー入力の記録、スクリーンショットの取得などの機能を実装しています。Wood」と命名しました。Woodのコードコンパイルのタイムスタンプは、攻撃者によって改ざんされる可能性もあるため、そのまま信頼することはできない指標です。そのため、今回ケースでは、追加のデータポイントも参照して考慮しています。ローダーとバックドアの検体のPEヘッダーのタイムスタンプを表1に示します。両コンポーネントがコンパイルされた時間には17秒の差しかありません。2005年の検体のコンポーネントのPEコンパイルのタイムスタンプ2つ目のデータは、UPXを使って圧縮されたドロッパーの検体から取得しています。UPXは、生成した圧縮ファイルに該当するバージョン(図4)を挿入します。このケースでは、UPXのバージョンは1.24となっていますが、このバージョンは検体がコンパイルされた日付より前の2003年にリリースされています。ドロッパーの検体で見つかった、UPXツールのバージョンが記述された文字列3つ目のデータは、PEリッチヘッダー(図5)の有効なメタデータです。6.0を使用してコンパイルされたことを示しています。ドロッパーの検体にあったPEリッチヘッダーESET社は、タイムスタンプ、リッチヘッダーメタデータ、およびUPXバージョンのすべてが攻撃者によって意図的に改変された可能性は低いと考えています。Wood)が、スピアフィッシングメールを通じて香港の政治家を標的にするために使用されたことが記載されています。APTグループによって実行されたことを報告しています。Woodバックドア(図6を参照)の亜種をロードし、サイバーセキュリティ製品のホワイトリストに自身を登録して、実行を許可します(詳細は後述の表4に記載)。Woodはいくつかのプロジェクトのコードベースとなっています。その中の1つは、作成者によってDCMと呼ばれているインプラントです(図7を参照)。DCMインプラントのコードでは、新しいミューテックス名が使用されている2016年のTencentのレポートでは、AitM(中間者)攻撃の能力を利用して、DCMインストーラーをソフトウェアアップデートとして配信し、正規サーバーへのDNSリクエストを経由してデータを流出させる、高度なDCMの亜種について説明しています。DCMが攻撃で使用されるのが最後に観測されたのは、2018年でした。公開されている文書DCMは2012年に中国のJiangmin社によって初めて文書化されました。Specterと命名されました。NSPX30ESET社が検出したNSPX30の最も古い検体は、2018年6月6日にコンパイルされています。NSPX30は、2段階に分かれて動作し、攻撃者がAitM攻撃を実行する能力に完全に依存しているため、DCMとは異なるコンポーネント構成になっています。DCMのコードはより小規模なコンポーネントに分割されていました。ESET社は、プラグインの検体で見つかったPDBのパスをとって、このインプラントを命名しました。Z:\Workspace\mm\32\NSPX30\Plugins\plugin\b001.pdbZ:\Workspace\Code\MM\X30Pro\trunk\MM\Plugins\hookdll\Release\hookdll.pdbNSPという名前は、常駐化のための手法を参照していると考えられます。ディスク上では、msnsp.dllという名前の常駐化のためのローダーDLLが、内部的にはmynsp.dllという名前になっています(エクスポートテーブルのデータ)。これは、Winsock名前空間プロバイダー(各英単語の頭文字を合わせるとNSPになる)としてインストールされているためだと考えられます。最後にESET社が把握している限り、NSPX30はこれまでほかのセキュリティベンダーによって公開されたことはありません。技術的な分析ESET社のテレメトリから、正規のソフトウェアが(暗号化されていない)HTTPプロトコルを使用して正規のサーバーからアップデートをダウンロードするときに、マシンが侵害されることがわかりました。Officeなど、中国で人気の高いソフトウェアのアップデートの仕組みが乗っ取られています。ESET社のテレメトリで確認された実行チェーンを図8に示します。表2に、URLと、ダウンロードが発生した時点でユーザーのシステムでドメインが解決されたIPアドレスの例を示します。攻撃者がNSPX30を悪意のあるアップデートとして配信している具体的な方法は、まだわかっていません。Panda)が利用しているルーターインプラントに関する最近の調査から、攻撃者は、おそらく標的ユーザーのネットワークにあるルーターやゲートウェイなどの脆弱なネットワークアプライアンスにネットワークインプラントを展開しているものと推測されます。DNSを介したトラフィックのリダイレクトが確認されていないことから、展開されていると考えられるネットワークインプラントが、アップデートに関連する暗号化されていないHTTPトラフィックを傍受するときに、DLL、実行可能ファイル、またはDLLを含むZIPアーカイブの形態でNSPX30インプラントのドロッパーを返信している可能性があります。NSPX30インプラントはC&Cインフラストラクチャを隠蔽するために、攻撃者がパケットを傍受する機能を使用していることを前に述べましたが、以下のサブセクションでは、この方法について説明します。Explorerを装った特異なUser-Agentを使用して、Baidu(百度)のWebサイト(正規の中国の検索エンジンおよびソフトウェアプロバイダー)に対してHTTPリクエストを実行します(図9)。サーバーからの応答がファイルに保存され、そのファイルからバックドアコンポーネントが抽出されてメモリーにロードされます。オーケストレーターによって送信されるHTTPリクエストこのRequest-URIは、オーケストレーターと侵害されたシステムの情報が含まれる独自のURIとなっています。正規のサーバーに、傍受されないリクエストを発行すると、404エラーコードが返されます。バックドアは、プラグインをダウンロードするために、わずかに異なるRequest-URIを使用して、同じような手順を実行します。GETリクエストを見つけ、Request-URIを解析して、送信する必要があるペイロードを決定します。UDPの傍受このバックドアは、初期化中にパッシブUDPリスニングソケットを作成し、オペレーティングシステムにこのポートを割り当てさせます。パッシブバックドアを使用すると、攻撃者の操作を複雑化する場合もあります。ファイアウォールやNATを使ったルーターがネットワーク外部からの着信をブロックしている場合などです。インプラントのコントローラーは、バックドアとやりとりするために、侵害されたマシンの正確なIPアドレスとポートを把握する必要があります。この攻撃者は、収集したデータを外部に送信するときにバックドアがコマンドを受信するのと同じポートを使用することで、ネットワークインプラントがパケットを転送する正確な場所を把握し、この問題を解決している可能性があります。データを外部に送信する手順は、デフォルトでは、ソケットが作成された後に開始されます。この場合には、microsoft.comドメインに対するDNSクエリが使用され、このDNSパケットに収集したデータが追加されます。図10は、バックドアが送信した最初のDNSクエリを示しています。バックドアによって送信されるDNSクエリ。収集された情報はプレーンテキストで追加される。最初のDNSクエリは、180.76.76[.]11:53(この記事を書いている時点では、DNSサービスを公開していないサーバー)に送信され、次のクエリが実行されるときに毎回、宛先IPアドレスが次のアドレスに変更されます(図11を参照)。バックドアによって送信されるDNSメッセージ。リクエストごとにIPアドレスが1つずつ増えている。180.76.76.0/24のネットワークはBaiduが所有しており、興味深いことに、これらのIPアドレスのサーバーのいくつかは、BaiduのパブリックDNSサービスである180.76.76.76などのDNSサービスを公開しています。このネットワークインプラントは傍受したDNSクエリパケットを攻撃者のサーバーに転送していると考えられます。このインプラントは、以下の複数の値を組み合わせてフィンガープリントを作成して、パケットを簡単にフィルタリングできます。送信先のIPアドレスUDPポート(53、4499、8000ポートが使用されていることが観測)0xFEADに一致するDNSクエリのトランザクションIDドメイン名データが追加されたDNSクエリまとめ攻撃者が、そのAitM(中間者)攻撃の能力によってパケットを傍受するのは、C&Cインフラの場所を隠蔽するための高度な方法です。日本や英国などの中国以外の国でもバックドアを仕掛けられるケースが確認されています。この攻撃者は、その後、プラグインをダウンロードするコマンドをバックドアに送信しています。QQから情報とチャットを収集するように設計された2つのプラグインが送信されていました。このことから、AitMのためのシステムが配置され実行されていることがわかります。データを外部送信する仕組みも同じように導入されているはずです。180.76.76.0/24ネットワークにあるいくつかのサーバーでは、正規の着信リクエストをさまざまな場所に転送する方式であるAnycast(エニーキャスト)が取り入れられている可能性があります。このことから、ネットワークの傍受はBaiduのネットワークに近い場所ではなく、標的に近い場所で行われている可能性が高いです。Baiduはネットワークインフラの一部を中国国外に置いています。中国国外の被害者が中国のISPを経由してBaiduのサービスにアクセスすることはないため、中国のISPから傍受されていることはないと考えられます。NSPX30以下のセクションでは、このマルウェアの主な実行段階について説明します。ステージ1図12は、正規のコンポーネントが悪意のあるドロッパーDLLをロードし、ディスクに複数のファイルを作成する実行チェーンを示しています。ドロッパーDLLによって開始される実行チェーンこのドロッパーはRsStub.exeを実行します。Antivirusの正規のソフトウェアコンポーネントですが、悪意のあるcomx3.dllをサイドローディングするために悪用されています。図13は、このコンポーネントが実行されるときの主な処理を示しています。RsStub.exeが悪意のあるcomx3.dllをロードするときに開始される一連のロード操作RsStub.exeが、ExitProcessを呼び出すと、正規のAPI関数コードではなく、シェルコードのローダー関数が実行されます。このローダーは、comx3.dll.txtファイルからインストーラーDLLを復号します。次に、シェルコードがインストーラーDLLをメモリーにロードし、そのエントリポイントを呼び出します。インストーラーDLLこのインストーラーは、オープンソースの実装から取り入れたUACバイパスの手法を使って、新しい権限昇格のプロセスを作成します。どちらのDLLを使用するかは、表3にあるように、いくつかの条件によって異なります。UACバイパス手法を適用するための主な条件とその副次的な条件この条件では、2つのプロセスの存在が確認されます。Antivirusのコンポーネントであると考えられます。msnsp.dllの除外ルールを追加します。cmd.exeを通じて2つのPowerShellコマンドが実行され、この処理が行われます。msnspというWinsock名前空間プロバイダーとしてインストールします(図14を参照)。悪意のあるWinsock名前空間プロバイダーをインストールするコードこれによってプロセスがWinsockを使用するたびに、DLLが自動的にロードされます。最後に、インストーラーはローダーDLLmshlp.dllと暗号化されたオーケストレーターDLLWIN.cfgをC:¥ProgramData¥Windowsにドロップします。ステージ2このステージは、msnsp.dllの実行から始まります。図15は、ステージ2の一連のロード操作を示しています。図16に、バックドアの取得やプラグインのロードなど、オーケストレーターが実行する主なタスクを示します。オーケストレーターコンポーネントの実行チェーンと主なタスクロードされると、オーケストレーターはタスクを実行するために2つのスレッドを作成します。オーケストレーターのスレッド1オーケストレーターはディスクから元のドロッパーファイルを削除し、msfmtkl.datからバックドアをロードします。ファイルが存在しなかったり、開けなかったりした場合、オーケストレーターはWindowsのインターネットAPIを使って、先に説明したように中国企業のBaidu(百度)の正規Webサイトへの接続を開きます。サーバーからの応答は、検証されて一時ファイルに保存されます。すべての条件に一致する場合、このファイルにある暗号化されたペイロードは新しいファイルに書き込まれ、msfmtkl.datという名前に変更されます。暗号化されたペイロードで新しいファイルが作成されると、オーケストレーターはその内容を読み取り、RC4でペイロードを復号します。復号されたPEはメモリーにロードされ、そのエントリポイントが実行されます。オーケストレーターのスレッド2オーケストレーターは、現在のプロセスの名前を判断して、プラグインのロードや、中国で製造されている3つのマルウェア対策ソフトウェアのローカルデータベース内のローダーDLLを許可する除外リストの追加など、いくつかのアクションを実行します。オーケストレーターがそのローダーをその許可リストに追加したセキュリティソフトウェアの名前と、プロセス名が一致する場合に実行されるアクションを表4に説明します。<CURRENT_DIRECTORY>TAVinterface.dllをロードして、エクスポートされた関数CreateTaveInstanceを使用してインターフェイスを取得します。<CURRENT_DIRECTORY>\deepscan\cloudcom2.dllをロードして、エクスポートされた関数XDOpen、XDAddRecordsEx、およびXDCloseを使用します。<CURRENT_DIRECTORY>\security\kxescan\khistory.dllをロードして、エクスポートされた関数KSDllGetClassObjectを使用してインターフェイスを取得します。特定のセキュリティソフトの名前のプロセスが実行されたときの、オーケストレーターのアクション表5に、指定されたインスタントメッセージソフトウェアのプロセス名と一致した場合に実行されるアクションを示します。これらの場合、オーケストレーターはディスクからプラグインをロードします。<PROCESS_ID>という名前のミューテックスを作成します。