中国が関与する新しいAPTグループによる、高度なAiTM(中間者)攻撃によって配信されるインプラントNSPX30

ESETの研究者は、中国とつながりのある新しいAPTグループが使用する高度なマルウェアNSPX30を特定しまし、このグループをBlackwoodと命名しました。

ESETの研究者は、少なくとも2018年から活動していると考えられ、これまでに特定および報告されていなかった中国が関与していると思われるサイバー攻撃組織による攻撃を分析しました。ESETは、このグループをBlackwoodと命名しました。この攻撃組織は、正規のソフトウェアのアップデートリクエストを乗っ取るAiTM(中間者)攻撃を通じて、高度なマルウェアを配信しています。ESETは、このインプラント(マルウェアの一種)をNSPX30と命名しました。

本ブログの要点:

  • NSPX30インプラントは、Tencent QQ(テンセントQQ)、WPS Office、Sogou Pinyin(捜狗拼音)などの正規ソフトウェアのアップデートの仕組みを利用して展開されています。
  • このインプラントは、中国や日本の企業、中国、日本、および英国の個人に対する標的型攻撃で検出されています。
  • ESETが調査を進めたところ、NSPX30は被害者からデータを収集するために設計され、ESETがProject Woodと命名していた2005年に検出された軽量なバックドアから進化していることが明らかになりました。
  • NSPX30は、ドロッパー、インストーラー、ローダー、オーケストレーター、バックドアなど、いくつものコンポーネントを実装した多段階型のインプラントです。後者の2つには個別のプラグインのセットが用意されています。
  • このインプラントは、攻撃者がパケットを傍受する能力を重視して設計されています。また、NSPX30のオペレーターが攻撃用のインフラを隠蔽することを可能にしています。
  • NSPX30はまた、セキュリテ製品の許可リストに自身を追加することができ、いくつかの中国のマルウェア対策製品に攻撃が妨害されないように対策しています。
  • これらの攻撃は、ESETがBlackwoodと命名した新しいAPTグループによって実行されています。

BLACKWOODのプロファイル

Blackwoodは、少なくとも2018年から活動している中国が関与していると思われるAPTグループであり、中国や日本の個人や企業に対してサイバースパイ活動を仕掛けています。Blackwoodは、正規ソフトウェアのアップデートの仕組みをAitM(中間者)攻撃を利用して、ESETがNSPX30と名付けたインプラントを配信したり、インプラントが生成するトラフィックを傍受して、コマンドアンドコントロールサーバーの場所を隠蔽したりする能力を有しています。

キャンペーンの概要

2020年、ESETが「脅威マグネット」と呼んでいる、中国にあるシステムを標的とした悪意のある活動の急増を検出しました。この「脅威マグネット」システムは、さまざまなAPTグループに関連するマルウェアツールキットによる攻撃を検出しています。この脅威マグネットでは、Evasive PandaLuoYu、そしてESETがLittleBearとして追跡している別のサイバー攻撃組織による攻撃を捕捉しています。

このシステムは、これらの3つのグループが利用しているツールキットではない、不審なファイルを検出しました。ESETは、このファイルを起点としてNSPX30と命名したインプラントの調査を進めたところ、その起源が2005年に遡ることが明らかになりました。

ESETのテレメトリ(監視データ)によると、このインプラントは限られた一部のシステムで検出されています。被害に遭った個人や組織は以下の通りです。

  • 中国と日本にいる個人(詳細は不明)
  • 英国の有名な公立大学のネットワークとつながりのある中国語を話す人物(詳細は不明)
  • 中国の大手製造・貿易会社
  • エンジニアリングおよび製造業の日本企業の中国オフィス

また、攻撃者はアクセスが途絶えた場合、システムの侵害を再び試みることも確認されています。
図1に、ESETのテレメトリによるBlackwoodの標的の地理的分布を示します。

NSPX30の進化

NSPX30インプラントの調査を進めたところ、ESETがProject Woodと命名した簡易なバックドアまで遡ることができました。Project Woodの最も古い検体は2005年にコンパイルされており、いくつかのインプラントを作成するためのコードベースとして使用されていると考えられます。このようなインプラントの1つは、NSPX30のベースとなっており、2008年にその作成者によってDCMと名付けられました。

図2に、ESETが収集した検体とESETのテレメトリ、および公開されている文書の分析に基づく、これらのマルウェア開発の時系列を示します。しかし、このサイバー攻撃者による約20年間の開発と悪意のある活動の詳細は明らかになっておらず、ここに記載しているイベントやデータは不完全なものです。

次のセクションでは、Project Wood、DCM、およびNSPX30に関する調査結果の一部について説明します。

Project Wood

ローダーとバックドアの2つのコンポーネントのPEヘッダーに存在するタイムスタンプから、これらのインプラントの進化の起点は、2005年1月9日にコンパイルされた小規模なバックドアであることが分かりました。このバックドアは、システムやネットワーク情報の収集、キー入力の記録、スクリーンショットの取得などの機能を実装しています。

バックドアには、図3に示すように、繰り返し使用されているミューテックスの名前から、「Project Wood」と命名しました。

コンパイルのタイムスタンプは、攻撃者によって改ざんされる可能性もあるため、そのまま信頼することはできない指標です。そのため、今回ケースでは、追加のデータポイントも参照して考慮しています。まず、ローダーとバックドアの検体のPEヘッダーのタイムスタンプを表 1に示します。両コンポーネントがコンパイルされた時間には17秒の差しかありません。

SHA-1ファイル名PEコンパイルのタイムスタンプ説明
9A1B575BCA0DC969B1344651F16514660D1B78A6MainFuncOften.dll2005-01-09 08:21:22Project Woodのバックドア。
エクスポートテーブルのタイムスタンプがPEコンパイルのタイムスタンプと一致します。
834EAB42383E171DD6A42F29A9BA1AD8A44731F0N/A2005-01-09 08:21:39Project Woodのローダーには、リソースとして埋め込まれたこのバックドアが含まれています。

表 1. 2005年の検体のコンポーネントのPEコンパイルのタイムスタンプ

2つ目のデータは、UPXを使って圧縮されたドロッパーの検体から取得しています。UPXは、生成した圧縮ファイルに該当するバージョン(図4)を挿入します。このケースでは、UPXのバージョンは1.24となっていますが、このバージョンは検体がコンパイルされた日付より前の2003年にリリースされています。

3つ目のデータは、PEリッチヘッダー(図5)の有効なメタデータです。このメタデータは、検体のコンパイル日より前の1998年にリリースされたVisual Studio 6.0を使用してコンパイルされたことを示しています。

ESETは、タイムスタンプ、リッチヘッダーメタデータ、およびUPXバージョンのすべてが攻撃者によって意図的に改変された可能性は低いと考えています。

公開されている文書

  • 2011年9月にSANS Instituteが公開した技術文書には、実行した主体が不明で無名のバックドア(Project Wood)が、スピアフィッシングメールを通じて香港の政治家を標的にするために使用されたことが記載されています。
  • 2014年10月、G DATAは「TooHash作戦」と命名したキャンペーンのレポートを公開し、その後、このキャンペーンがGelsemium APTグループによって実行されたことを報告しています。G DATAが「DirectsX」と命名したルートキットは、DCMや後継のNSPX30に見られるいくつかの機能を備えたProject Woodバックドア(図6を参照)の亜種をロードし、サイバーセキュリティ製品のホワイトリストに自身を登録して、実行を許可します(詳細は後述の表 4に記載)。

DCM(別名:Dark Specter)

初期のProject Woodはいくつかのプロジェクトのコードベースとなっています。その中の1つは、作成者によってDCMと呼ばれているインプラントです(図7を参照)。

2016年のTencentのレポートでは、AitM(中間者)攻撃の能力を利用して、DCMインストーラーをソフトウェアアップデートとして配信し、正規サーバーへのDNSリクエストを経由してデータを流出させる、高度なDCMの亜種について説明しています。DCMが攻撃で使用されるのが最後に観測されたのは、2018年でした。

公開されている文書

DCMは2012年に中国のJiangmin社によって初めて文書化されました。その時点では無名でしたが、その後2016年にTencentによってDark Specterと命名されました。

NSPX30

ESETが検出したNSPX30の最も古い検体は、2018年6月6日にコンパイルされています。NSPX30は、2段階に分かれて動作し、攻撃者がAitM攻撃を実行する能力に完全に依存しているため、DCMとは異なるコンポーネント構成になっています。DCMのコードはより小規模なコンポーネントに分割されていました。

ESETは、プラグインの検体で見つかったPDBのパスをとって、このインプラントを命名しました。

  • Z:\Workspace\mm\32\NSPX30\Plugins\plugin\b001.pdb
  • Z:\Workspace\Code\MM\X30Pro\trunk\MM\Plugins\hookdll\Release\hookdll.pdb

NSPという名前は、常駐化のための手法を参照していると考えられます。ディスク上では、msnsp.dllという名前の常駐化のためのローダーDLLが、内部的にはmynsp.dllという名前になっています(エクスポートテーブルのデータ)。これは、Winsock名前空間プロバイダー(各英単語の頭文字を合わせるとNSPになる)としてインストールされているためだと考えられます。

最後にESETが把握している限り、NSPX30はこれまで他のセキュリティベンダーによって公開されたことはありません。

技術的な分析

ESETのテレメトリから、正規のソフトウェアが(暗号化されていない)HTTPプロトコルを使用して正規のサーバーからアップデートをダウンロードするときに、マシンが侵害されることがわかりました。Tencent QQ(テンセントQQ)、Sogou Pinyin(捜狗拼音)、WPS Officeなど、中国で人気の高いソフトウェアのアップデートの仕組みが乗っ取られています。

ESETのテレメトリで確認された実行チェーンを図8に示します。

表 2に、URLと、ダウンロードが発生した時点でユーザーのシステムでドメインが解決されたIPアドレスの例を示します。

URL最初に確認された日付IPアドレスASNダウンローダー
http://dl_dir.qq[.]com/invc/qq/minibrowser.zipMainFuncOften.dll183.134.93[.]171AS58461
(CHINANET)
Tencentdl.exe

表 2. 観測された正規のダウンローダーコンポーネントのURL、サーバーIPアドレス、プロセス名

ネットワークインプラントに関する仮説

攻撃者がNSPX30を悪意のあるアップデートとして配信している具体的な方法は、まだ分かっていません。

このような能力を有している中国とのつながりのあるサイバー攻撃組織(Evasive PandaTheWizards)についてESETが収集している情報や、BlackTechCamaro Dragon(別名Mustang Panda)が利用しているルーターインプラントに関する最近の調査から、攻撃者は、おそらく標的ユーザーのネットワークにあるルーターやゲートウェイなどの脆弱なネットワークアプライアンスにネットワークインプラントを展開しているものと推測されます。

DNSを介したトラフィックのリダイレクトが確認されていないことから、展開されていると考えられるネットワークインプラントが、アップデートに関連する暗号化されていないHTTPトラフィックを傍受するときに、DLL、実行可能ファイル、またはDLLを含むZIPアーカイブの形態でNSPX30インプラントのドロッパーを返信している可能性があります。

NSPX30インプラントはC&Cインフラストラクチャを隠蔽するために、攻撃者がパケットを傍受する機能を使用していることを前に述べましたが、以下のサブセクションでは、この方法について説明します。

HTTPの傍受

バックドアをダウンロードするために、オーケストレーターは、Windows 98のInternet Explorerを装った特異なUser-Agentを使用して、Baidu(百度)のWebサイト(正規の中国の検索エンジンおよびソフトウェアプロバイダー)に対してHTTPリクエストを実行します(図9)。サーバーからの応答がファイルに保存され、そのファイルからバックドアコンポーネントが抽出されてメモリにロードされます。

このRequest-URIは、オーケストレーターと侵害されたシステムの情報が含まれる独自のURIとなっています。正規のサーバーに、傍受されないリクエストを発行すると、404エラーコードが返されます。バックドアは、プラグインをダウンロードするために、わずかに異なるRequest-URIを使用して、同じような手順を実行します。

ネットワークインプラントは、特定の古いUser-Agentを使用して、www.baidu.comへのHTTP GETリクエストを見つけ、Request-URIを解析して、送信する必要があるペイロードを決定します。

 

UDPの傍受

このバックドアは、初期化中にパッシブUDPリスニングソケットを作成し、オペレーティングシステムにこのポートを割り当てさせます。パッシブバックドアを使用すると、攻撃者の操作を複雑化する場合もあります。例えば、ファイアウォールやNATを使ったルーターがネットワーク外部からの着信をブロックしている場合などです。さらに、インプラントのコントローラーは、バックドアとやりとりするために、侵害されたマシンの正確なIPアドレスとポートを把握する必要があります。

この攻撃者は、収集したデータを外部に送信するときにバックドアがコマンドを受信するのと同じポートを使用することで、ネットワークインプラントがパケットを転送する正確な場所を把握し、この問題を解決している可能性があります。データを外部に送信する手順は、デフォルトでは、ソケットが作成された後に開始されます。この場合には、microsoft.comドメインに対するDNSクエリが使用され、このDNSパケットに収集したデータが追加されます。図10は、バックドアが送信した最初のDNSクエリを示しています。

最初のDNSクエリは、180.76.76[.]11:53(この記事を書いている時点では、DNSサービスを公開していないサーバー)に送信され、次のクエリが実行されるときに毎回、宛先IPアドレスが次のアドレスに変更されます(図11を参照)。

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インフラの場所を隠蔽するための高度な方法です。日本や英国などの中国以外の国でもバックドアを仕掛けられるケースが確認されています。この攻撃者は、その後、プラグインをダウンロードするコマンドをバックドアに送信しています。例えば、英国の被害者には、Tencent QQから情報とチャットを収集するように設計された2つのプラグインが送信されていました。このことから、AitMのためのシステムが配置され実行されていることがわかります。また、データを外部送信する仕組みも同じように導入されているはずです。

例えば、180.76.76.0/24ネットワークにあるいくつかのサーバーでは、正規の着信リクエストをさまざまな場所に転送する方式であるAnycast(エニーキャスト)が取り入られている可能性があります。このことから、ネットワークの傍受はBaiduのネットワークに近い場所ではなく、標的に近い場所で行われている可能性が高いです。Baiduはネットワークインフラの一部を中国国外に置いています。中国国外の被害者が中国のISPを経由してBaiduのサービスにアクセスすることはないため、中国のISPから傍受されていることはないと考えられます。

 

NSPX30

以下のセクションでは、このマルウェアの主な実行段階について説明します。

ステージ1

図12は、正規のコンポーネントが悪意のあるドロッパーDLLをロードし、ディスクに複数のファイルを作成する実行チェーンを示しています。

このドロッパーはRsStub.exeを実行します。RsStub.exeは中国のマルウェア対策製品Rising Antivirusの正規のソフトウェアコンポーネントですが、悪意のあるcomx3.dllをサイドローディングするために悪用されています。

図13は、このコンポーネントが実行されるときの主な処理を示しています。

RsStub.exeが、ExitProcessを呼び出すと、正規のAPI関数コードではなく、シェルコードのローダー関数が実行されます。

このローダーは、comx3.dll.txtファイルからインストーラーDLLを復号化します。次に、シェルコードがインストーラーDLLをメモリにロードし、そのエントリポイントを呼び出します。

 

インストーラーDLL

このインストーラーは、オープンソースの実装から取り入れたUACバイパスの手法を使って、新しい権限昇格のプロセスを作成します。どちらのDLLを使用するかは、表 3にあるように、いくつかの条件によって異なります。

主な条件副次的な条件UACバイパスの手法
rstray.exeという名前のプロセスが存在する。
  • OSのバージョンがWindows 2000/XP/Vistaである。
AppKey18ShellExecuteから実行
  • OSのバージョンがWindows 10である。
  • avp.exeという名前のプロセスが存在する。
SilentCleanup UACバイパス
  • OSのバージョンがWindows 10である。
  • avp.exeという名前のプロセスが存在しない。
CMSTPLUA COM UACバイパス
  • OSのバージョンが、Windows 7/8/8.1/10またはWindows Server 2008 R1/2012 R2である。
IARPUninstallStringLauncher UACバイパス
現在のプロセスが管理者グループのメンバーではない。
  • OSのバージョンがWindows 10である。
  • avp.exeという名前のプロセスが存在する。
SilentCleanup UACバイパス
  • OSのバージョンがWindows 10である。
  • avp.exeという名前のプロセスが存在しない。
CMSTPLUA COM UACバイパス
  • OSのバージョンが、Windows 7/8/8.1/10またはWindows Server 2008 R1/2012 R2である。
IARPUninstallStringLauncher UACバイパス

表 3 . UACバイパス手法を適用するための主な条件とその副次的な条件

この条件では、2つのプロセスの存在が確認されます。avp.exeは、Kasperskyのマルウェア対策ソフトウェアのコンポーネントであり、rstray.exeはRising Antivirusのコンポーネントであると考えられます。

このインストーラーは、Windows Defenderが検体を提出する操作を無効化し、ローダーDLL msnsp.dllの除外ルールを追加します。cmd.exeを通じて2つのPowerShellコマンドが実行され、この処理が行われます。

  • cmd /c powershell -inputformat none -outputformat none -NonInteractive -Command Set-MpPreference -SubmitSamplesConsent 0
  • cmd /c powershell -inputformat none -outputformat none -NonInteractive -Command Add-MpPreference -ExclusionPath “C:\Program Files (x86)\Common Files\microsoft shared\TextConv\msnsp.dll”

次に、インストーラーは、常駐化のためのローダーDLLをC:¥Program Files (x86)¥Common Filesmicrosoft sharedTextConv ¥msnsp.dllにドロップし、API WSCInstallNameSpaceを使用して常駐化し、DLLを msnspというWinsock名前空間プロバイダーとしてインストールします(図14を参照)。

これによってプロセスが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に説明します。

プロセス名対象ソフトウェアアクション
qqpcmgr.exe
qqpctray.exe
qqpcrtp.exe
Tencent PC Manager 正規のDLL <CURRENT_DIRECTORY>TAVinterface.dllをロードして、エクスポートされた関数CreateTaveInstanceを使用してインターフェイスを取得します。インターフェイスから2番目の関数を呼び出す場合、パラメータとしてファイルパスを渡します。
360safe.exe
360tray.exe
360 Safeguard(別名、360Safe)正規のDLL <CURRENT_DIRECTORY>\deepscan\cloudcom2.dllをロードして、エクスポートされた関数XDOpen、XDAddRecordsEx、およびXDCloseを使用します。SQLデータベースファイルspeedmem2.hgに新しいエントリを追加します。
360sd.exe360 Antivirusファイル<CURRENT_DIRECTORY>ssl2.dbを開き、ローダーDLLへのパスを含むbase64でエンコードされたバイナリ構造を追加します。
kxescore.exe
kxetray.exe
Kingsoft AntiVirus正規のDLL <CURRENT_DIRECTORY>\security\kxescan\khistory.dllをロードして、エクスポートされた関数KSDllGetClassObjectを使用してインターフェイスを取得します。vtableからいずれかの関数を呼び出す場合、パラメータとしてファイルパスを渡します。

表 4. 特定のセキュリティソフトの名前のプロセスが実行されたときの、オーケストレーターのアクション

表 5に、指定されたインスタントメッセージソフトウェアのプロセス名と一致した場合に実行されるアクションを示します。これらの場合、オーケストレーターはディスクからプラグインをロードします。

プロセス名対象ソフトウェアアクション
qq.exe Tencent QQGET QQ MESSAGE LOCK <PROCESS_ID>という名前のミューテックスを作成します。ミューテックスが存在しない場合、プラグインc001.dat、c002.dat、c003.datをディスクからロードします。
wechat.exe WeChatプラグインc006.datをロードします。
telegram.exeTelegramプラグインc007.datをロードします。
skype.exe Skypeプラグインc003.datをロードします。
cc.exe不明。CloudChatの可能性があります。
raidcall.exeRaidCall
yy.exe不明。YYソーシャルネットワークのアプリケーションの可能性があります。
aliim.exeAliWangWangプラグインc005.datをロードします。

表 5. 特定のインスタントメッセージングソフトウェアの名前のプロセスが実行されたときの、オーケストレーターのアクション

プロセスに対応するアクションを完了すると、スレッドに戻ります。

 

プラグイングループ「c」

オーケストレーターのコードを分析したところ、「c」グループに属する少なくとも6つのプラグインが存在する可能性があることが分かりました。これらの中の3つのプラグインは現時点で特定されています。

表 6に、特定されたプラグインの基本的な機能を示します。

プラグイン名説明
c001.datQQデータベースから、認証情報、チャットログ、連絡先リストなどの情報を窃取します。
c002.datTencent QQのKernelUtil.dllとCommon.dllのいくつかの関数をQQ.exeプロセスのメモリにフックし、ダイレクトメッセージやグループメッセージの傍受、データベースへのSQLクエリを可能にします。
c003.datいくつかのAPIをフックします。
  • CoCreateInstance
  • waveInOpen
  • waveInClose
  • waveInAddBuffer
  • waveOutOpen
  • waveOutWrite
  • waveOutClose
これにより、プラグインはいくつかのプロセスで音声の会話を傍受できるようになります。

表 6. グループ「c」のプラグインの説明

バックドア

バックドアの基本的な目的である、コントローラーとの通信と収集したデータの外部への送信については、ここまでにいくつかの詳細をお伝えしました。コントローラーとの多くの通信は、license.datという暗号化されていないファイルにプラグインの設定データを書き込み、ロードされたプラグインから関数を呼び出すことで行われています。表 7に、このバックドアが最も多く使用するコマンドを示します。

コマンドID説明
0x04リバースシェルを作成またはクローズして、入出力を処理します。
0x17コントローラーが指定したパスを使用してファイルを移動します。
0x1Cインプラントをアンインストールします。
0x1E指定したディレクトリからファイル情報を収集したり、ドライブ情報を収集したりします。
0x28コントローラーによって指定されたPIDを使用して、プロセスを終了します。

表 7. このバックドアが使用するいくつかのコマンドの説明

プラグイングループ「a」と「b」

バックドアコンポーネントには、ディスクに書き込まれ、バックドアに基本的なスパイ機能と情報収集機能を追加する、独自の埋め込みプラグインDLL( 表 8を参照)が含まれています。

プラグイン名説明
a010.datインストールされているソフトウェアの情報をレジストリから収集します。
b010.datスクリーンショットを取得します。
b011.dat基本的なキーロガー。

表 8. バックドアに埋め込まれたプラグイングループ「a」と「b」の説明

結論

ESETは、中国、日本、英国の個人および企業に対してサイバースパイ活動を行っているサイバー攻撃組織をBlackwoodと命名し、その攻撃手法と能力を分析しました。Blackwoodが採用している独自のインプラントであるNSPX30は、ESETがProject Woodと命名した2005年に見つかった小規模なバックドアから進化を続けています。

2005年のProject Woodインプラントは、実装されている手法から、マルウェア開発の経験を有する開発者が作成したと考えられます。そのため、このバックドアのさらに前の起源について、まだ多くのことが分かっていない可能性があります。

IOC(セキュリティ侵害の痕跡)

ファイル

 
SHA-1ファイル名ESETの検出名説明
625BEF5BD68F75624887D732538B7B01E3507234 minibrowser_shell.dllWin32/Agent.AFYINSPX30の最初のドロッパー。
43622B9573413E17985B3A95CBE18CFE01FADF42 comx3.dllWin32/Agent.AFYHインストーラーのローダー。
240055AA125BD31BF5BA23D6C30133C5121147A5 msnsp.dllWin32/Agent.AFYH永続的なローダー。
308616371B9FF5830DFFC740318FD6BA4260D032 mshlp.dllWin32/Agent.AFYHオーケストレーターのローダー。
796D05F299F11F1D78FBBB3F6E1F497BC3325164 comx3.dll.txtWin32/TrojanDropper.Agent.SWR復号化されたインストーラー。
82295E138E89F37DD0E51B1723775CBE33D26475 WIN.cfgWin32/Agent.AFYI復号化されたオーケストレーター。
44F50A81DEBF68F4183EAEBC08A2A4CD6033DD91 msfmtkl.datWin32/Agent.VKT復号化されたバックドア。
DB6AEC90367203CAAC9D9321FDE2A7F2FE2A0FB6 c001.datWin32/Agent.AFYI認証情報とデータ窃取用のプラグイン。
9D74FE1862AABAE67F9F2127E32B6EFA1BC592E9 c002.datWin32/Agent.AFYITencent QQのメッセージを傍受するためのプラグイン。
8296A8E41272767D80DF694152B9C26B607D26EE c003.datWin32/Agent.AFYI音声取得用のプラグイン。
8936BD9A615DD859E868448CABCD2C6A72888952 a010.datWin32/Agent.VKT情報収集のためのプラグイン。
AF85D79BC16B691F842964938C9619FFD1810C30 b010.datWin32/Agent.VKTキーロガープラグイン。
ACD6CD486A260F84584C9FF7409331C65D4A2F4A b010.datWin32/agent.VKTスクリーンキャプチャ用のプラグイン。

ネットワーク

IPドメインホスティングプロバイダー最初に確認された日付説明
104.193.88[.]123www.baidu[.]comBeijing Baidu Netcom Science and Technology Co., Ltd.2017-08-04オーケストレーターとバックドアコンポーネントがペイロードをダウンロードするためにアクセスする正規のWebサイト。HTTPのGETリクエストはAitMによって傍受されます。
183.134.93[.]171dl_dir.qq[.]comIRT-CHINANET-ZJ2021-10-17正規のソフトウェアによってドロッパーがダウンロードされるURLの一部。

MITRE ATT&CKの技術

この表は、MITRE ATT&CKフレームワークのバージョン14を使用して作成されています。

手法ID名前説明
リソース開発T1587.001能力の開発マルウェア BlackwoodはNSPX30という名前の独自のインプラントを使用します。
初期アクセスT1195サプライチェーンの侵害 正規のソフトウェアアップデート要求がAitM(中間者攻撃)によって傍受されるときに、NSPX30のドロッパーコンポーネントが配信されます。

実行

T1059.001コマンドおよびスクリプトインタプリタ:PowerShellNSPX30のインストーラーコンポーネントは、PowerShellを使用してWindows Defenderが検体を送信する機能を無効にし、ローダーコンポーネントの除外ルールを追加します。
T1059.003コマンドおよびスクリプトインタプリタ:Windowsコマンドシェル NSPX30のインストーラーは、UACをバイパスするときに、cmd.exeを使用する場合があります。
NSPX30のバックドアはリバースシェルを作成できます。
T1059.005コマンドおよびスクリプトインタプリタ:Visual BasicNSPX30のインストーラーは、UACをバイパスするときにVBScriptを使用する場合があります。
T1106ネイティブAPINSPX30のインストーラーとバックドアは、CreateProcessA/W APIを使用してコンポーネントを実行します。
常駐化T1574実行フローのハイジャック: NSPX30のローダーは、Winsock起動時に自動的にプロセスにロードされます。

権限昇格

T1546イベントトリガーによる実行 NSPX30のインストーラーは、レジストリを変更し、メディアボタンのキー値(APPCOMMAND_LAUNCH_APP2)をローダーの実行ファイルを指定するように変更します。
T1548.002権限制御機構の悪用:ユーザーアカウント制御のバイパス NSPX30のインストーラーは、3つの手法でUACバイパスを試行します。

防衛機能の回避

T1140ファイルや情報の難読化解除と復号化 NSPX30のインストーラー、オーケストレーター、バックドア、設定ファイルは、RC4、またはビット演算命令と算術命令の組み合わせで復号化されます。
T1562.001防御策の妨害:ツールの無効化または変更 NSPX30のインストーラーは、Windows Defenderが検体を送信する機能を無効にし、ローダーコンポーネントの除外ルールを追加します。
NSPX30のオーケストレーターは、セキュリティソフトウェアのデータベースを改変して、ローダーのコンポーネントを許可できます。対象となるソフトウェアには以下が含まれます。Tencent PC Manager、360 Safeguard、360 Antivirus、Kingsoft AntiVirus。
T1070.004攻撃の痕跡の削除:ファイルの削除 NSPX30は、自身が使用するファイルを削除できます。
T1070.009攻撃の痕跡の削除:常駐化の中止 NSPX30は、常駐化を中止できます。
T1202間接的なコマンド実行 NSPX30のインストーラーは、WindowsコマンドシェルからPowerShellを実行します。
T1036.005なりすまし:正規のモジュールの名前や場所を模倣する NSPX30のコンポーネントは、正規のフォルダ%PROGRAMDATA%Intelに保存されます。
T1112レジストリの変更 NSPX30のインストーラーは、UACをバイパスするときにレジストリを変更する場合があります。
T1027ファイルや情報の難読化 NSPX30のコンポーネントは暗号化されてディスクに保存されます。
T1027.009ファイルや情報の難読化:ペイロードの埋め込み NSPX30のドロッパーにはコンポーネントが埋め込まれています。
NSPX30のローダーにはシェルコードが埋め込まれています。
T1218.011システムバイナリプロキシの実行:Rundll32NSPX30のインストーラーは、rundll32.exeからロードできます。

認証情報へのアクセス

T1557AiTM攻撃(Adversary-in-the-Middle) NSPX30インプラントは、AitM攻撃を介して配信されます。
T1555パスワードの保管場所からの認証情報の窃取 NSPX30のプラグインc001.datは、Tencent QQデータベースから認証情報を窃取できます。

探査

T1083ファイルおよびディレクトリの検出 NSPX30のバックドアとプラグインはファイルのリストを表示できます。
T1012クエリレジストリ NSPX30のプラグインa010.datは、インストールされたソフトウェアのさまざまな情報をレジストリから収集します。
T1518ソフトウェアの検出 NSPX30のプラグインa010.datはレジストリから情報を収集します。
T1082システム情報の検出 NSPX30のバックドアはシステム情報を収集します。
T1016システムネットワーク構成の検出 NSPX30のバックドアは、さまざまなネットワークアダプターの情報を収集します。
T1049システムネットワーク接続の検出 NSPX30のバックドアは、ネットワークアダプターの情報を収集します。
T1033システムオーナー/ユーザーの検出 NSPX30のバックドアは、システムやユーザー情報を収集します。

収集

T1056.001入力情報の取得:キーロギング NSPX30のプラグインb011.datは、基本的な機能を実装するキーロガーです。
T1560.002収集したデータのアーカイブ:ライブラリ経由のアーカイブ NSPX30プラグインは収集した情報を、zlibを使用して圧縮します。
T1123オーディオキャプチャ NSPX30のプラグインc003.datは、音声入力と音声出力のストリームを記録します。
T1119自動収集 NSPX30のオーケストレーターとバックドアは、自動的にプラグインを起動して情報を収集します。
T1074.001データの保存:ローカルデータの保存 NSPX30のプラグインは、データを外部にする前にローカルファイルに保存します。
T1113画面キャプチャ NSPX30のプラグインb010.datは、スクリーンショットを取得します。

C&C(コマンド&コントロール)

T1071.001アプリケーションレイヤープロトコル:Webプロトコル NSPX30のオーケストレーターとバックドアコンポーネントは、HTTPを使用してペイロードをダウンロードします。
T1071.004アプリケーションレイヤープロトコル:DNSNSPX30のバックドアは、DNSを使用して、収集した情報を外部に送信します。
T1132.001データのエンコーディング:標準エンコーディング 外部に送信するために収集されたデータはzlibで圧縮されます。
T1001データの難読化 NSPX30のバックドアはC&Cとの通信を暗号化します。
T1095アプリケーションレイヤープロトコル以外の手法: NSPX30のバックドアは、C&Cとの通信にUDPを使用します。
T1090プロキシ NSPX30とC&Cサーバーとの通信は、不明なコンポーネントによってプロキシされています。

情報の外部への送信

T1020ファイル送信の自動化 NSPX30のバックドアは、情報を収集すると、自動的に外部に送信します。
T1030データ転送サイズの制限 NSPX30のバックドアは、収集したデータを固定のパケットサイズで、DNSクエリを経由して外部に送信します。
T1048.003代替プロトコルを使用したデータの外部への送信:既存のC2プロトコルではなく、暗号化されていないネットワークトラフィックを介したデータの外部への送信 NSPX30のバックドアは、DNSを使用して、収集した情報を外部に送信します。