仕掛けられた時限爆弾:APTグループ「Tick」による東アジアのDLPソフトウェア開発会社を狙った攻撃を発見
ESETは、APTグループ「Tick」が東アジアのDLP(data-loss prevention/情報漏洩防止)ソフトウェア会社に対して実施しているキャンペーンを発見し、これまで検出・報告されていないツールを使用していることを突き止めました。
ESETは、APTグループ「Tick」が東アジアのDLP(data-loss prevention/情報漏洩防止)ソフトウェア会社に対して実施しているキャンペーンを発見し、これまで検出・報告されていないツールを使用していることを突き止めました。
ESETの研究者は、APTグループ「Tick」によって実行された可能性が極めて高いキャンペーンを発見しました。このインシデントは、DLP(情報漏洩防止)ソフトウェアを開発している東アジアの企業のネットワークで発生しました。
攻撃者は、このDLP会社の社内アップデートサーバーを侵害し、ソフトウェア開発会社のネットワークにマルウェアを配信し、同社が使用している正規のツールのインストーラをトロイの木馬化し、最終的に同社の顧客のコンピュータでマルウェアを実行させています。
本ブログでは、侵害された企業とその顧客のネットワークで検出されたマルウェアの技術的な詳細について説明します。この攻撃者は侵入するときに、これまで検出・文書化されていないダウンローダー(ShadowPy)を展開し、Netboyバックドア(別名Invader)とGhostdownダウンローダーも展開しています。
これまでに分析されているTickの情報と、侵害された会社に価値の高い顧客が多いことから、この攻撃の目的はサイバースパイであると考えられます。このDLP(情報漏洩防止)ソフトウェアの開発会社が最初に侵害された方法は明らかになっていません。
本ブログの要点:
Tick(別名:BRONZE BUTLER、REDBALDKNIGHT)は、アジア太平洋地域の国を主な標的とし、少なくとも2006年から活動していると考えられているAPTグループです。このAPTグループは、サイバースパイ活動を展開しており、機密情報や知的財産の窃取を主な目的としています。
Tickは、侵害したマシンに常駐し、偵察、データの流出、ツールのダウンロードを行うために設計された独自のマルウェアツールセットを採用しています。Tickの活動についてESETが公開した最新のレポートでは、ProxyLogonの脆弱性を攻撃して韓国のIT企業を侵害したことを報告しています。Tickは、この脆弱性が一般に公開される前に攻撃し、リモートからコードを実行するエクスプロイトを利用していたグループの1つです。この脆弱性がゼロデイであったときに、このグループはこのエクスプロイトを利用してウェブシェルをインストールし、Webサーバーにバックドアを展開していました。
2021年3月、ESETは東アジアにあるソフトウェア開発会社のネットワークが攻撃されていることを検出したため通告しました。このときの攻撃方法は明らかになっていません。
攻撃者はマルウェアを展開して常駐化させ、Q-dirと呼ばれる正規のアプリケーションのインストーラをトロイの木馬化したコピーに置き換えます。このインストーラが実行されると、ReVBShellというオープンソースのVBScriptバックドアと、正規のQ-dirアプリケーションのコピーをドロップします。これにより、トロイの木馬化されたインストーラが、リモートサポートツールから転送され、侵害されたこのDLPソフトウェア会社の顧客2社のネットワークで悪意のあるコードが実行されました。このDLPソフトウェア会社が顧客にテクニカルサポートを提供したときに、このインシデントが発生した可能性があります。
また、攻撃者はアップデートサーバーも侵害しており、DLPソフトウェア会社のネットワークにあるマシンに2回にわたって悪意のあるアップデートが配信されました。ESETのテレメトリ(監視データ)からは、DLPソフトウェア会社のネットワークの外部に悪意のあるアップデートが配信されたケースは検出されていません。
このDLPソフトウェア会社は政府機関や軍関係者の顧客を抱えており、TickのようなAPTグループにとって、このような企業は特に魅力的な標的となっています。
ESETのテレメトリによると、2021年3月に攻撃者はこのDLPソフトウェア会社の複数のマシンにマルウェアを展開しています。このマルウェアには、NetboyおよびGhostdown系統の亜種と、ShadowPyという名前のこれまで検出・文書化されていないダウンローダーが含まれていました。
2021年4月に攻撃者はQ-dirインストーラをトロイの木馬化したコピーを、この企業のネットワークに展開しました。
2021年6月と9月に、侵害したこの会社のネットワークで、同企業が開発したソフトウェアのアップデートを実行するコンポーネントが、悪意のある実行ファイルを含むパッケージをダウンロードしました。
2022年2月と6月には、トロイの木馬化されたQ-dirインストーラがリモートサポートツールを介して、侵害されたこのDPLソフトウェア会社の顧客に転送されました。
マルウェアが含まれるアップデートが登録された初めてのインシデントは2021年6月に発生し、その後9月に再度発生しました。いずれのケースでも、DLPソフトウェア会社のネットワークのマシンにアップデートが配信されています。
このアップデートは、悪意のある実行ファイルを含むZIPアーカイブとして提供されました。侵害されたこの会社が開発したソフトウェアから、正規のアップデートエージェントによってマルウェアが展開され、実行されています。この攻撃チェーンを図2に示します。
最初に検出されたケースは2021年6月に発生しました。このときには、社内のサーバーからアップデートがダウンロードされ、展開されています。2番目のケースでは、2021年9月にインターネットに公開されているサーバーから発生しました。
悪意のある実行ファイルが、http://103.127.124[.]117/index.htmlにHTTP GETリクエストを実行し、RC6アルゴリズムで暗号化され、埋め込まれているペイロードを解読するキーを取得します。このペイロードは、ランダムな名前と.vbeという拡張子が付けられて、%TEMP%ディレクトリにドロップされて実行されます。
侵害されたマシンからドロップされた検体をESETは入手していませんが、検出した内容(VBS/Agent.DL)から、ESETはこのスクリプトがオープンソースのバックドアReVBShellである可能性が高いと考えています。
ESETのテレメトリでは、このDLPソフトウェア会社が開発したソフトウェアから、悪意のあるファイルを同社の顧客が受信したケースは確認されていません。この攻撃者は、外部の顧客に対してサプライチェーン攻撃を仕掛けるためではなく、ネットワークのラテラルムーブメントを行うためにアップデートサーバーを侵害したとESETは考えています。
Q-DirはSoftwareOKが開発した正規のアプリケーションであり、図3に示すように、同じウィンドウで4つのフォルダを同時に操作できるようにします。Q-Dirが検出されたネットワークの場所から、これは、侵害されたDPLソフトウェア会社の従業員が使用しているツールキットの1つだと考えられます。
ESETのテレメトリによると、悪意のあるアップデートが検出される2ヶ月前の2021年4月から、攻撃者はアプリケーションの32ビットおよび64ビットのトロイの木馬化したインストーラを、この企業のネットワークに展開しています。
ESETは、2022年2月と6月の2回にわたって、東アジアにある2社(1社は技術系企業、もう1社は製造業)のパソコンに、リモートサポートツールであるhelpUとANYSUPPORTによって、トロイの木馬化されたインストーラが転送されていたことを確認しています。
これらのコンピュータには、侵害されたこの会社のDLPソフトウェアがインストールされており、トロイの木馬化されたQ-dirのインストーラは、ユーザーがサポートソフトウェアをインストールした数分後に受信されています。
DLPソフトウェア会社の顧客は、これらのリモートサポートツールの1つを介してテクニカルサポートを受けており、悪意のあるインストーラは、このDLP会社の顧客にサポートサービスを提供するために使用されていた可能性があります。攻撃者が、トロイの木馬化したインストーラを転送するために、サポートツールをインストールした可能性は低いと思われます。
インストーラをトロイの木馬化するために、セクションヘッダーテーブルの末尾の空洞部にシェルコードを挿入する手法が使用されています。このアプリケーションは、FileAlignmentとSectionAlignmentに0x1000を使用してコンパイルされています。0xD18バイトの空洞部が残っていることから、位置を指定する必要のない悪意のあるシェルコードを十分に保存することが可能です。このアプリケーションのエントリポイントのコードは、シェルコードを指定するJMP命令が適用されており、WinMain(図4)の呼び出しの直後に配置されています。そのため、アプリケーションの正規のコードが実行された後に、悪意のあるコードは実行されます。
図5に示すシェルコードは、デフォルトで暗号化されていないペイロードをhttp://softsrobot[.]com/index.htmlから%TEMP%\ChromeUp.exeにダウンロードします。このファイルを作成できない場合、GetTempFileNameA APIを使用して新しい名前を取得します。
悪意のある32ビットのインストーラは1つしか検出されていませんが、64ビットのインストーラはこのDLPソフトウェア会社のネットワークの数カ所で検出されました。このインストーラには、Q-Dirアプリケーションと、攻撃者によってカスタマイズされエンコードされた(VBE)ReVBShellバックドアが含まれており、どちらもLZOで圧縮され、RC6で暗号化されています。これらのファイルは、%TEMP%ディレクトリにドロップされ実行されます。
ReVBShellは、基本的な機能を実装するオープンソースのバックドアです。バックドアのコードはVBScriptで記述され、コントローラのコードはPythonで記述されています。サーバーとの通信は、GETとPOSTのリクエストが使用されHTTPを介して行われます。
このバックドアは、以下の操作を実行するいくつかのコマンドをサポートしています。
GitHubのmain branchのコミット履歴から、攻撃者はReVBShellのバージョン1.0を使用していると考えられます。
このセクションでは、侵害されたDLPソフトウェア会社のネットワークに展開されたツールやマルウェア系統の詳細について説明します。
常駐するために、攻撃者は悪意のあるローダーDLLを、DLLの検索順序のハイジャックの脆弱性がある署名されている正規のアプリケーションと一緒に展開しています。これらのDLLの目的は、ペイロードを復号化して指定されたプロセスに挿入することです(今回のインシデントでは、すべてのローダーがsvchost.exeに挿入されるように設定されています)。
各ローダーのペイロードは、ShadowPy、Ghostdown、Netboyの3つのマルウェア系統の1つになっています。図6は、ロードのプロセスを示しています。
このレポートでは、ShadowPyダウンローダーとNetboyバックドアの分析結果を中心に説明します。
ShadowPyは、Pythonで開発されたダウンローダーであり、カスタマイズされたpy2exeのバージョンを使用して、Windowsの実行ファイルに変換されます。ダウンローダーはC&Cサーバーと通信し、実行するPythonスクリプトを取得します。
今回の調査結果から、このマルウェアは2021年にこのDLPソフトウェア会社が侵害された少なくとも2年前には開発されていた可能性があります。ESETは、ShadowPyが展開された他のインシデントをこれまで確認していません。
前に説明した通り、悪意のあるDLLローダーは、DLLサイドローディングによって実行されます。ShadowPyのケースでは、vssapi.dllがavshadow.exeによってサイドローディングされています。avshadow.exeは、Aviraセキュリティソフトウェアに含まれる正規のソフトウェアコンポーネントです。
悪意のあるDLLには、カスタムpy2exeローダー、Pythonエンジン、PYCコードの主な3つのコンポーネントが含まれ、DLLのオーバーレイで暗号化されています。最初に、DLLローダーのコードは、DLLのオーバーレイで独自のローダーpy2exeを見つけ、0x56をキーとして、NULL部分ではXOR演算を実施しないNULL-preserving XORの手法で復号化し、メモリにロードして、新しく作成したsvchost.exeプロセスに挿入します。次に、カスタムローダーpy2exeのエントリポイントがリモートプロセスで実行されます。元のpy2exeローダーのコードとTickがカスタマイズして使用しているバージョンの違いは、カスタムローダーが悪意のあるvssapi.dllの内容をディスクから読み取り、オーバーレイの中からPythonエンジンとPYCコードを検出しているのに対し、元のローダーは、PythonエンジンとPYCコードをリソースセクションで検索する点です。
このロードチェーンを、図7に示します。
このPYCコードは、Pythonスクリプトを取得し、新しいスレッドで実行する単純なダウンローダーです。このダウンローダーは、リストからランダムにURLを選択し(ただし、分析した検体では1つのURLしか存在していません)、以下のデータから構成される文字列を構築して、侵害したマシンの一意のIDを作成します。
最後に、abs(zlib.crc32(<string>))を使用して、IDとなる値を生成します。このIDはランダムな文字で構成された文字列内に挿入され、さらに難読化された後、図8に示すようにURLに付加されます。
travelasist[.]comにHTTP GETリクエストを発行し、新しいペイロードを受信します。このペイロードは、固定された1バイトのキー0xC3でXOR復号された後で、base64で復号されます。この結果は、CFBモードのAESアルゴリズムを使用して、ペイロードに付属する128ビットのキーと初期化ベクトル(IV)で復号されます。最後に、zlibで解凍され、新しいスレッドで実行されます。
パケットをフィンガープリントするために、2つの乱数(ヘッダーの最初の2つのフィールド)を生成し、図10に示すように一緒にXOR演算を行い、パケットを検証するために使用される第3の値を生成します。
バックドアがコントローラから新しいコマンドを受信したときのパケット検証を、図11に示します。
また、パケットヘッダーには、暗号化した圧縮データのサイズと、圧縮していないデータのサイズに加え、図12に示すように、圧縮前のデータの前に付加される乱数(検証には使用しない)を含む別のフィールドのサイズ(DWORD)が含まれます。
Netboyは圧縮のために、LZRWの圧縮アルゴリズムの一種を使用しており、暗号化には、ASCII文字で構成された256ビットのキーのRC4アルゴリズムを使用しています。
表1に示すように、Netboyは34個のコマンドをサポートしていますが、ここでは、攻撃者に侵害されたシステムで特定の機能を実行する重要な25個のコマンドについて説明します。
コマンドID | 説明 |
---|---|
0x05 | 新しいTCPソケットを作成し、コントローラから受信したデータを新しいファイルに保存します。 |
0x06 | 新しいTCPソケットを作成し、ファイルを読み込み、内容をコントローラに送信します。 |
0x08 | ローカルホスト名、メモリ情報、システムディレクトリのパス、設定されているバックドアの動作時間範囲(14時~18時など)を取得します。 |
0x0A | サーバーであるネットワークリソースを一覧表示します。 |
0x0B | 指定されたディレクトリにあるファイルを一覧表示します。 |
0x0C | ドライブを一覧表示します。 |
0x0E | Windows API(ShellExecute)を使用してプログラムを実行します。 |
0x0F | ファイルを削除します。 |
0x10 | プロセスを一覧表示します。 |
0x11 | プロセス内のモジュールを列挙します。 |
0x12 | プロセスを終了します。 |
0x13 | プログラムを実行し、出力を取得します。 |
0x16 | サーバーから新しいファイルをダウンロードし、Windows API(ShellExecute)を使用して実行します。 |
0x1D | リバースシェルを作成します。 |
0x1E | シェルプロセスを終了します。 |
0x1F | WinSNMP APIを使用して、TCPおよびUDPの接続情報を取得します。 |
0x23 | サービスを一覧表示します。 |
0x24 | コントローラから指定されたサービスを開始します。 |
0x25 | コントローラから指定されたサービスを停止します。 |
0x26 | 新しいサービスを作成します。サービス名、説明、パスなどの詳細をコントローラから受信します。 |
0x27 | コントローラから指定されたサービスを削除します。 |
0x28 | TCP接続の状態を設定します。 |
0x29 | 画面キャプチャを開始し、10ミリ秒ごとにコントローラに送信します。 |
0x2A | 画面キャプチャを停止します。 |
0x2B | コントローラから要求されたマウスやキーボード操作を実行します。 |
表1. 注意が必要なNETBOYバックドアのコマンド
2022年5月、AhnLabのリサーチャーは、サイドローディングのために正規の実行ファイルと悪意のあるDLLを展開し、CHMファイルを使用して韓国の団体や個人を標的としたサイバー攻撃者に関するレポートを公開しました。この攻撃者の詳細は特定されていません。このDLLの目的は、%TEMP%フォルダにあるVBEスクリプトを解凍、復号、ドロップして、実行することです。復号化されたスクリプトからは、ReVBShellのバックドアが見つかっています。
これらの攻撃で使用されたカスタムReVBShellバックドアは、今回の攻撃で使用されたバックドアと同じであり、悪意のある64ビットインストーラ(SHA-1: B9675D0EFBC4AE92E02B3BFC8CA04B01F8877DB6)とAhnLabが説明しているquartz.dllの検体(SHA-1:ECC352A7AB3F97B942A6BDC4877D9AFCE19DFE55)間でもいくつかのコードが酷似していることから、このキャンペーンは本レポートで紹介した攻撃と関連している可能性が高いと考えられます。
ESETのリサーチャーは、東アジアのDLP(情報漏洩防止)ソフトウェア会社が侵害されていることを発見しました。侵入時には、攻撃者は少なくとも3つの系統のマルウェアを展開し、同社が使用するアップデートサーバーやツールを侵害しました。その結果、同社の顧客2社のセキュリティが侵害されました。
この攻撃で使用された悪意のあるツールを分析したところ、これまで検出・文書化されていなかったマルウェアが発見されました。ESETは、このマルウェアをShadowPyと命名しました。今回の調査でマルウェアの類似性が特定されたことから、APAC地域を対象としたサイバースパイ活動を実施しているAPTグループ「Tick」によってこの攻撃は実行されているとESETは確信しています。
この調査で情報や検体を共有いただいたAhnLabのCha Minseok氏に感謝します。
SHA-1 | ファイル名 | ESETの検出名 | 説明 |
---|---|---|---|
72BDDEAD9B508597B75C1EE8BE970A7CA8EB85DC | dwmapi.dll | Win32/Netboy.A | Netboyのバックドア。 |
8BC1F41A4DDF5CFF599570ED6645B706881BEEED | vssapi.dll | Win64/ShadowPy.A | ShadowPyのダウンローダー。 |
4300938A4FD4190A47EDD0D333E26C8FE2C7451E | なし | Win64/TrojanDropper.Agent.FU | トロイの木馬化されたQ-dirインストーラ、64ビット版。カスタマイズしたReVBShellのバージョンAを展開します。 |
B9675D0EFBC4AE92E02B3BFC8CA04B01F8877DB6 | なし | Win64/TrojanDropper.Agent.FU | トロイの木馬化されたQ-dirインストーラ、64ビット版。カスタマイズしたReVBShellのバージョンBを展開します。 |
F54F91D143399B3C9E9F7ABF0C90D60B42BF25C9 | なし | Win32/TrojanDownloader.Agent.GBY | トロイの木馬化されたQ-dirインストーラ、32ビット版。 |
FE011D3BDF085B23E6723E8F84DD46BA63B2C700 | なし | VBS/Agent.DL | カスタマイズされたReVBShellバックドアのバージョンA。 |
02937E4A804F2944B065B843A31390FF958E2415 | なし | VBS/Agent.DL | カスタマイズされたReVBShellバックドアのバージョンB。 |
IP | プロバイダー | 最初に確認された日付 | 説明 |
---|---|---|---|
115.144.69[.]108 | KINX | 2021-04-14 | travelasist[.]com ShadowPyのC&Cサーバー |
110.10.16[.]56 | SK Broadband Co Ltd | 2020-08-19 | mssql.waterglue[.]org NetboyのC&Cサーバー |
103.127.124[.]117 | MOACK.Co.LTD | 2020-10-15 | 悪意のあるアップデート実行ファイルと通信し、復号化のためのキーを取得するサーバー。 |
103.127.124[.]119 | MOACK.Co.LTD | 2021-04-28 | slientship[.]com ReVBShellバックドアバージョンAのサーバー。 |
103.127.124[.]76 | MOACK.Co.LTD | 2020-06-26 | ReVBShellバックドアバージョンBのサーバー。 |
58.230.118[.]78 | SK Broadband Co Ltd | 2022-01-25 | oracle.eneygylakes[.]com Ghostdownのサーバー。 |
192.185.89[.]178 | Network Solutions, LLC | 2020-01-28 | ペイロードを取得するために悪意のある32ビットインストーラが通信するサーバー。 |
この表は、MITRE ATT&CKフレームワークのバージョン12を使用して作成されています。
手法 | ID | 名前 | 説明 |
---|---|---|---|
初期アクセス | T1195.002 | サプライチェーンの侵害:ソフトウェアサプライチェーンの侵害 | Tickが侵害したアップデートサーバーは、侵害した会社の開発したソフトウェアから悪意のあるアップデートパッケージを配信します。 |
T1199 | 信頼関係 | Tickは、テクニカルサポートが使用する正規のアプリケーションを置換して、この会社の顧客を侵害しています。 | |
実行 | T1059.005 | コマンドおよびスクリプトインタプリタ:Visual Basic | Tickは、VBScriptで記述されたReVBShellのカスタマイズバージョンを使用しています。 |
T1059.006 | コマンドおよびスクリプトインタプリタ:Python | ShadowPyマルウェアは、Pythonで記述されたダウンローダーを使用します。 | |
常駐化 | T1547.001 | ブートまたはログオン自動起動:Runレジストリキーやスタートアップフォルダの悪用 | NetboyとShadowPyのローダーは、Runキーを介して常駐します。 |
T1543.003 | システムプロセスの作成または修正:Windowsサービス | NetboyとShadowPyのローダーは、サービスを作成して常駐します。 | |
T1574.002 | 実行フローのハイジャックの:DLLサイドローディング | NetboyとShadowPyのローダーは、サービスを作成するときに、正規のサービス名と説明名を使用します。 | |
防衛機能の回避 | T1036.004 | なりすまし:タスクまたはサービスのなりすまし | NetboyとShadowPyのローダーは、サービスを作成するときに、正規のサービス名と説明名を使用します。 |
T1036.005 | なりすまし:正規のモジュールの名前や場所の模倣 | NetboyとShadowPyのローダーは、サービスを作成するときに、正規のサービス名と説明名を使用します。 | |
T1027 | ファイルや情報の難読化 | Netboy、ShadowPy、およびそれらのローダーは、ペイロード、文字列、構成を暗号化して使用します。ローダーにはガベージコードが含まれています。 | |
T1027.001 | ファイルや情報の難読化:バイナリパディング | NetboyとShadowPyのローダーDLLは、セキュリティソリューションが検体をアップロードするのを回避するため、不要なバイナリデータを付与するパティングの手法を取り入れています。 | |
T1055.002 | プロセスインジェクション:PE(Portable Executable)の注入 | NetboyとShadowPyのローダーは、構成済みのシステムプロセスにPEを挿入します。 | |
T1055.003 | プロセスインジェクション:スレッド実行ハイジャック | NetboyとShadowPyのローダーは、システムプロセスのメインスレッドを乗っ取って、挿入したマルウェアを実行します。 | |
検出 | T1135 | 共有ネットワークの検出 | Netboyはネットワークディスカバリ機能を実装しています。 |
T1120 | 周辺機器の検出 | Netboyは、利用可能なすべてのドライブを列挙します。 | |
T1057 | プロセスの検出 | NetboyとReVBShellはプロセスを列挙する機能を実装しています。 | |
T1082 | システム情報の検出 | NetboyとReVBShellは、システム情報を収集します。 | |
T1033 | システムオーナー/ユーザーの検出 | NetboyとReVBShellは、ユーザー情報を収集します。 | |
T1124 | システム時間の検出 | Netboyは、システムの時間を使用して、特定の時間帯にC&Cと通信します。 | |
ラテラルムーブメント | T1080 | 共有コンテンツの感染 | Tickは、テクニカルサポートが使用する正規のアプリケーションを置き換えるため、侵害されたネットワークでこれまで感染していないシステムでマルウェアが実行されます。 |
収集 | T1039 | ネットワーク共有ドライブのデータ | NetboyやReVBShellは、ファイルを収集する機能を実装しています。 |
T1113 | 画面キャプチャ | Netboyにはスクリーンショットを取得する機能があります。 | |
C&C(コマンド&コントロール) | T1071.001 | アプリケーションレイヤープロトコル:Webプロトコル | ShadowPyとReVBShellは、C&CサーバーとHTTPプロトコルで通信します。 |
T1132.001 | データのエンコーディング:標準エンコーディング | TickのカスタマイズされているReVBShellは、C&Cサーバーとの通信をbase64でエンコードします。 | |
T1573 | チャンネルの暗号化: | NetboyはRC4を使用します。ShadowPyはAESを使用します。 | |
情報の外部への送信 | T1041 | C&Cチャネルからの送信 | NetboyとReVBShellは、データを外部に送信する機能を実装しています。 |
T1567.002 | Webサービスを介したデータの外部への流出:クラウドストレージへのデータの流出 | Tickは、Webサービスを介してファイルをダウンロードし、外部に送信する独自のツールを展開します。 |