打倒AsyncRAT:検出と防御

Security Splunk Threat Research Team

2019年1月、AsyncRATがオープンソースのリモート管理ツールプロジェクトとしてGitHubで公開されました。AsyncRATは、攻撃者やAPTグループの間で人気の高いコモディティ型のマルウェアおよびツールです。すでに、スピアフィッシングメールの添付ファイルと興味深いスクリプトローダーを使って標的のホストまたはネットワークにAsyncRATを送り込む、さまざまな攻撃が出現しています。

このリモートアクセス型トロイの木馬を使った攻撃の1つとして、Microsoft OneNoteファイルを添付したスピアフィッシングメール攻撃が世界中で報告されています。添付ファイルをクリックすると、.HTAファイルが読み込まれ、難読化されたバッチスクリプトがダウンロードおよび実行されて、AsyncRAT本体のコードが実行されます。

AsyncRATは多数の機能を備えます。C2通信プロトコルを暗号化し、プラグインを通じて以下のような機能を実現します。

OneNoteを使ったAsyncRAT攻撃について詳しくは、こちらのビデオをご覧ください。

OneNoteを使ったAsyncRAT攻撃の解説ビデオ

図1に、OneNoteを使った攻撃の感染チェーンの概要を示します(詳細は後述)。この攻撃では、別のフィッシング攻撃も使って、AsyncRATを実行するための別のスクリプトを読み込んでいます。

OneNoteを使った攻撃の感染チェーンの概要

図1 (この図の拡大版はこちらから参照できます)

この記事の執筆時点で、AsyncRATは、app.any.runのマルウェアトレンドトラッカーで数か月にわたって週間トップ10入りしています。

app.any.runのマルウェアトレンドトラッカー
参考資料(ツイート)

以下のセクションでは、OneNoteを使った最近の攻撃の概要、AsyncRAT設定の抽出方法、共通の動作、その他のAsyncRATスクリプトローダーについて説明します。

技術分析

OneNoteを使った攻撃

T1566.004 - フィッシング:スピアフィッシングメールの添付ファイル

OneNote形式の悪質な添付ファイル

Splunk脅威調査チーム(STRT)は、悪質な.one (OneNote)ファイルが添付された複数のフィッシングメール攻撃を確認しました。この悪質なOneNoteファイルは、図2に示すように、標的ユーザーが警告にかかわらず表示したくなるように工夫されています。

ユーザーがファイルをクリックするとすぐに、悪質な.HTAファイルが読み込まれて、この感染チェーンの第2段階に入ります。

スピアフィッシングメールの添付ファイル
図2

T1218.005 - システムバイナリのプロキシ実行: Mshta

.HTAダウンローダー

.oneファイルに埋め込まれた.HTAファイルの役割は、AsyncRATマルウェア本体をデコードするための.batスクリプトをダウンロードすることです。同時に、悪質な.batスクリプトの実行をユーザーから隠すための「おとり」として別の.oneファイルがダウンロードされます。図3は、.HTAファイルの中で、PowerShellコマンドレット「Invoke-Webrequest」を使っておとりの.oneファイル(%temp%\\invoice.one)と.batスクリプトステージャー(%temp%\\system32.bat)の2つをダウンロードするコードを示します。

.HTAダウンローダー

図3

T1059.003 - コマンド/スクリプトインタープリター:Windowsコマンドシェル

.BATスクリプトステージャー

%temp%フォルダーに送り込まれた.batステージャーは、ウイルス対策やその他のセキュリティ製品での検出を回避するために難読化されています。この.batスクリプトでは、一連の環境変数が初期化されます。これらの環境変数には文字列が含まれ、それらがコードの末尾に連結されてPowerShellスクリプトが生成されます。このスクリプトは、本体となるペイロードをデコードおよび復号して読み込む役割を持ちます。図4に、.batスクリプトの最後で、いくつかの環境変数を初期化して文字列を連結し、PowerShellスクリプトローダーを生成して実行するコードを示します。

.BATスクリプトステージャー

図4

T1059.001 - コマンド/スクリプトインタープリター:PowerShell

PowerShellローダー

図5.2に、.batスクリプトに含まれるコメントのスクリーンショットを示します。このコメントは、エンコードおよび暗号化されたペイロードです。.batスクリプトで生成および実行される前述のPowerShellスクリプトでは、以下の手順でマルウェア本体のペイロードが抽出および実行されます。

  1. BASE64でエンコードされたコメント文字列(図5.2)をデコードします。
  2. AES方式の暗号化の名前空間とBASE64でエンコードされたAESキーおよびAES IVを使って、デコードされたデータを復号します。
  3. 次に、復号したデータをGZIPアルゴリズムで解凍し、マルウェアの実行ファイルを抽出してから、.NETのリフレクションライブラリを使ってそのファイルを読み込みます。

図5.1に、.batスクリプトによって実行されるPowerShellスクリプトでAsyncRATマルウェアが復号されるまでの流れを簡単に示します。

.PowerShellスクリプトでAsyncRATマルウェアが復号されるまでの流れ

図5.1
.batスクリプトに含まれるコメントのスクリーンショット
図5.2
データを復号
図5.3

BAT Crypter AsyncRAT Extractorツール

前述の.batスクリプトは、AsyncRATマルウェアでコードの読み込みに使われるだけでなく、QuasarRAT、DCRAT、Redline、Qakbotなどのマルウェアグループでも使われていることがMalware Bazaarで確認されました。複数の悪質なバッチスクリプトを自動的に復号してペイロード本体を抽出するために、Splunk脅威調査チーム(STRT)は、1つのファイル、または複数のバッチファイルを含むフォルダーをパラメーターとして受け取ってペイロードを抽出する簡単なPythonスクリプト「asyncrat_bat_extractor.py」を作成しました。図6に、このツールの簡単な実行例と、「test」フォルダー内の複数のバッチファイルを復号して、抽出されたすべてのペイロードを「extracted_payload」フォルダーに格納する処理の様子を示します。

BAT Crypter AsyncRAT Extractorツール

図6

では、AsyncRATの戦術、技法、手順(TTP)を検証していきましょう。AsyncRATの動作を理解すれば、分析の開発に役立ちます。

AsyncRATの共通の動作

AsyncRATは、さまざまな脅威グループによって組織の攻撃に使われる.NET RATです。STRTは調査の中で、エンドポイントでのAsyncRATの検出に役立つ共通の動作を発見しました。

永続化

AsyncRATクライアントは、自身のコードを管理者特権で実行できるかどうかをチェックします。実行できる場合は、WindowsのSchTasks.exeを使って、%appdata%内の自身のコピーを最高位の特権で実行するようにタスクをスケジュールします。図7.1に、スケジュールされたAsyncRATタスクを検出するためにSTRTが開発した分析の例を示します。

| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime  from datamodel=Endpoint.Processes 
  where Processes.process_name = "schtasks.exe" Processes.process = "*/rl *" Processes.process = "* highest *"
  by Processes.process_name Processes.parent_process_name Processes.parent_process Processes.process Processes.process_guid Processes.dest Processes.user 
  | `drop_dm_object_name(Processes)` 
  | `security_content_ctime(firstTime)`
  | `security_content_ctime(lastTime)`

スケジュールされたAsyncRATタスクを検出するためにSTRTが開発した分析の例

図7.1

AsyncRATを管理者特権で実行できない場合は、レジストリのRunキーを使って永続化を行います。

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

図7.2に、AsyncRATが標的ホストで永続化を行うための関数コードの一部を示します。

AsyncRATが標的ホストで永続化を行うための関数コードの一部

図7.2

権限昇格

AsyncRATは、自身のプロセスのトークンの権限を「SeDebugPrivilege」に昇格させることで、他のプロセスを制御できるようにします。図8に、現在のプロセスのトークンを調整してデバッグ権限に昇格させるためのコードを示します。

デバッグ権限に昇格させるためのコード

図8

防御回避

AsyncRATは、コードのサンドボックス分析やリモートデバッグを回避するための防御機能をいくつか備えています。それらの機能の簡単な説明と、図9に実際のコードを示します。

関数
機能
antiVM
WMICクエリー「Select * from Win32_ComputerSystem」を実行して、自身のプロセスがVirtualBoxまたはVMwareで実行されているかどうかをチェックします。
antiSandoxSbieDLL
SandboxieサンドボックスのモジュールであるSbiedll.dllが読み込まれているかどうかをチェックします。
CheckRemoteDebuggerPresent
リモートデバッガーがあるかどうかをチェックします。
checkDriveSize
標的ホストのディスクドライブのサイズをチェックします。サイズが小さい場合は、マルウェアのラボ環境やサンドボックスで実行されていると判断します。
checkIFOSIsXP
プロセスがWindows XPオペレーティングシステムで実行されているかどうかをチェックします。

防御回避のコード

図9

図10に、標的ホストに自身のコピーを作成して実行した後、防御回避の一環として自身を削除する.batスクリプトを%temp%フォルダーに展開して痕跡を消し去るためのコードを示します。

防御回避の一環として自身を削除する.batスクリプトを%temp%フォルダーに展開して痕跡を消し去るためのコード
図10

コマンドアンドコントロール

最後は、プラグインやその他のペイロードを標的ホストにダウンロードするための、コマンドアンドコントロールサーバーとの通信設定です。AsyncRATは、AESで暗号化された設定データを復号します。このデータには、C2通信で使われるポート番号(6606)とIPアドレス(43.138[.]160.55)が含まれます。図11.1に、STRTが分析したAsyncRATの、復号した設定データのスクリーンショットを示します。図11.2には、C2サーバーとの通信とC2ダウンロードの処理部分のコードを示します。

STRTが分析したAsyncRATの、復号した設定データのスクリーンショット

図11.1

C2サーバーとの通信とC2ダウンロードの処理部分のコード

図11.2

その他のAsyncRATスクリプトローダー

STRTは、現在も続くOneNoteを使った攻撃以外に、フィッシングメールのリンク、ISO、別のマルウェアダウンローダーを使ったAsyncRATマルウェアの配布手口も確認しました。

.rels xmlの悪用 - テンプレートインジェクション

2022年2月、Microsoft社はOffice製品でマクロをデフォルトで無効にする更新プログラムの配布を開始しました。これにより、多くの攻撃者が、Microsoft Office文書を武器化するための新たな方法を見つける必要に迫られました。その結果として生み出された技法の1つが、文書の構成を定義するプロパティが含まれる.relsファイルの悪用です。これらのプロパティを使用すれば、URLを指定してリモートのリソースを参照できます。図12.1に、悪質なOffice文書のスクリーンショットと、footer2.xml relsプロパティの悪用方法を示します。この文書を開くと、悪質なリンクに接続して新たに.xllがダウンロードされ、AsyncRATがダウンロードされます。

悪質なOffice文書のスクリーンショットと、footer2.xml relsプロパティの悪用方法

図12.1

図12.2に、Microsoft Office以外のドメインに接続するこの悪質なOffice文書を検出するために使用したAsyncRATのハンティング分析の例を示します。

`sysmon` EventCode=22 Image IN ("*\\winword.exe","*\\excel.exe","*\\powerpnt.exe","*\\mspub.exe","*\\visio.exe","*\\wordpad.exe","*\\wordview.exe","*\\OneNote.exe",
  "*\\OneNotem.exe","*\\OneNoteviewer.exe","*\\OneNoteim.exe") 
  AND NOT(QueryName IN ("*.office.com", "*.office.net"))
  | stats count min(_time) as firstTime max(_time) as lastTime by Image QueryName QueryResults QueryStatus Computer
  | `security_content_ctime(firstTime)` 
  | `security_content_ctime(lastTime)`

AsyncRATのハンティング分析の例

図12.2

.VBS DynamicWrapperXローダー

dynwrapx.dllをディスクに書き込み、DynamicWrapperXオブジェクトを使用可能にして、ペイロード本体を挿入または実行する.vbsスクリプトローダーも発見しました。この.vbsスクリプトは、以前に公開したSTRTのブログ「Detecting Malware Script Loaders using Remcos (Remcosを使用するマルウェアスクリプトローダーの検出)」でも詳しく分析しています。図13に、.vbsスクリプトの中で、dynwrapx.dllを使ってAsyncRAT本体を実行するためのシェルコードを読み込むコードを示します。

dynwrapx.dllを使ってAsyncRAT本体を実行するためのシェルコードを読み込むコード

図13

その他のPowerShellスクリプトローダー

AsyncRAT本体のコードを読み込むために使われる、難読化された別のPowerShellスクリプトも発見しました。このPowerShellスクリプトは、長い16進数文字列をバイナリバイトに変換して、.NETでコンパイルされたAsyncRATを抽出します。このAsyncRATは、.NETリフレクションのアセンブリライブラリの読み込みを通じて実行されます。

図14に、このPowerShellスクリプトの中で、16進数文字列(一部赤枠内)をAsyncRATのバイナリバイトに変換するコードを示します。

16進数文字列(一部赤枠内)をAsyncRATのバイナリバイトに変換するコード

図14

この記事で示した、Microsoft Office OneNote文書を使った攻撃の感染チェーンは世界中で猛威を振るい、悪質なペイロードを配布するため、または標的ホストへの初期アクセスを獲得するために、さまざまな攻撃者やAPTグループに広く利用されています。SOCやセキュリティアナリストは、この記事を参考に、Microsoft Office OneNote文書の悪用方法を理解して、防御対策に役立ててください。

IoC (侵害の痕跡)

この記事で分析したサンプルのハッシュを以下に示します。

検出

Splunk脅威調査チームは、この攻撃に関する検出方法をまとめ、AsyncRAT分析ストーリーとしてタグ付けしました。AsyncRATマルウェアを使用する攻撃の検出にお役立てください。この分析ストーリーには、各種のMITRE ATT&CK技法に対応する23の検出方法が含まれます。

今回のリリースでは、データエンドポイントの以下の関連テレメトリソースを使用、想定しました。

SOARプレイブックによる自動化

この分析ストーリーに関連する検出方法はいずれも、そのままでSplunk Enterprise Securityのリスクインデックスのエントリーになり、リスクNotableイベントとRisk Notable Playbook Packでシームレスに使用できます。以下のコミュニティSplunk SOARプレイブックも、前述の分析のいくつかと組み合わせて使用できます。

プレイブック
説明
Internal host WinRM Investigate
このプレイブックは、Windowsリモート管理を使用するWindowsデバイスの主要要素に関する一般的な調査を実行します。エンドポイントに関する重要ファイルを生成し、zipにまとめて、Vaultコンテナにコピーします。
Active Directory Reset Password
このプレイブックは、侵害された可能性のあるユーザーアカウントのパスワードをリセットします。まず、アナリストに状況の判断と、アカウントをリセットするかどうかの選択を求めます。アナリストが承認したら、強力なパスワードを生成してパスワードをリセットします。

関心を持つべき理由

この記事では、セキュリティアナリスト、ブルーチーム、そしてSplunkのお客様向けに、AsyncRATがどのようなマルウェアであるかをご紹介しました。AsyncRATは、さまざまな攻撃者やAPTグループが使用しています。その戦術、技法、手順を検出するためにこの記事をぜひお役立てください。Splunk脅威調査チーム(STRT)は、攻撃の動作を理解することで、テレメトリとデータセットを生成して、この脅威に対抗、対応するためのSplunk検出機能を開発することができました。

詳細情報

セキュリティ分析ストーリーの最新コンテンツは、GitHubSplunkbaseからダウンロードできます。Splunk Security Essentialsでは、プッシュアップデートによってすべての検出方法を利用できます。

すべてのセキュリティコンテンツの一覧は、Splunkマニュアルリリースノートに掲載されています。

フィードバック

ご意見やご要望がございましたら、GitHubから遠慮なくお寄せください。Slackチャネル「#security-research」にご参加いただくこともできます。SlackのSplunkユーザーグループへの招待が必要な場合は、こちらの手順に従ってください。

寄稿者

このブログ記事を執筆したTeoderick Contrerasと、執筆にご協力くださったSplunk脅威調査チームの次の方々に感謝を申し上げます。Michael Haag、Mauricio Velazco、Lou Stella、Bhavin Patel、Rod Soto、Eric McGinnis、Patrick Bareiss。

このブログはこちらの英語ブログの翻訳、横田 聡によるレビューです。

関連記事

PSTreeを使ったプロセスハンティング
セキュリティ
7 分程度

PSTreeを使ったプロセスハンティング

このチュートリアルでは、pstreeコマンドとPSTree Appを使って調査対象のすべてのプロセスを調べる方法を紹介します。
リスク許容度とリスク選好度
セキュリティ
7 分程度

リスク許容度とリスク選好度

リスク許容度とリスク選好度は、今日の企業が定義しておくべき2つの基本的な概念です。このブログ記事では、これらの概念を詳しく解説します。
SIEMとSOCの関係を紐解く - なぜ、今これらが重要なのか
セキュリティ
4 分程度

SIEMとSOCの関係を紐解く - なぜ、今これらが重要なのか

サイバー攻撃の被害がますます増加するなか、企業は社内ネットワークにおける異常・不審な挙動をいち早く検知し、速やかかつ適切に対処することが求められます。このなかで鍵となるのが、「SOC」。そして、「SIEM」といった存在です。それぞれの概要から、関係性、活用時の注意点(課題)などを解説します。