SECURITY

打倒AsyncRAT:検出と防御

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

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

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

  • チャット通信
  • ファイル検索
  • キーロガー
  • プロセスマネージャー(プロセスリスト)
  • ブラウザー認証情報の抽出
  • デスクトップ画面の表示と録画
  • マイニングプログラムの実行
  • ファイル送信
  • リモートカメラ
  • ファイルマネージャー 
    • ドライバーリストの取得
    • ファイルのアップロード
    • ファイルやフォルダーの削除 
    • ファイルのコピー
    • ファイルやフォルダーの名前変更
    • 7z形式のファイルアーカイブ

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 (侵害の痕跡)

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

説明 SHA256
.batスクリプト 2421e2d7ed44911ce2d2f2d288a33c8650a2e5847d81b02911e3da31c292d03a
37563d85d00f66f27dfbdea1978227cccb739702aca826a9bdf671fd26d6b6a4
3d5e76babb87991d4abec7c048b34074ccc7c680f49639e0c55e5be0ee6df33d
8ee8a12754f344d0a1249f2de4d11044ebba8ba354df769d8d5019a639bb69c6
92dabfde91df07a3b2105e5972fbd2f5acf64b53465b60165a53e0795c1be8ba
bce00edede51b68cbf740e51b9f184bfd003d6ccb682cdcc661ecaa82dd67e42
c4952d905a0fb0466d45a58606635f0a2ac3b7c5cbb7e517118a9b695e3012e2
f1a126ea617a045454badfb230b3bc86ee5c1ad5698c1285472f71fc8497cbfc
 
AsyncRAT 3d8c723ceeaf346e9ea31d5449f4cbc37cf58993296a689d471c1e617a19d046
8d0c4f891f01840c2a9c6483554d661440bb6a81fe86f10d546c697fb9e958a5
774e4d4af9175367bc3c7e08f4765778c58f1c66b46df88484a6aa829726f570
 
OneNote 482a4763c8cf9c448fc851e6fe4554cc48abc563c49847ed040cdaee8a12003c
.relsを悪用した.docx 1e862e875511f28643f75cb7a59e2d4ad642bd9aed4a328a9cbb5304d12aa83e
.HTA

819448a878bbdc0658257296ab0f4951f1536ec7a1e20f1fd3b19ed716cada88
3652342b1e8b67e1700c3ed428dcc7b7f9f32984ea296f7dcf544b7b50493dc3

.vbs dynawrapxローダー c62ef09ac5b47ea517047fd3719bb2e93b37b97f4c7477198c4b4d2383c227b6
PowerShellローダー 4dc5cd716d199967111e2a35aa260f336ea63d9f56619ca468ac80145f2fbe15

検出

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

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

  • プロセス実行とコマンドラインログ
  • WindowsセキュリティイベントID 4688、Sysmon、またはCIM (共通情報)モデル対応のEDRテクノロジー
  • Windowsセキュリティイベントログ
  • Windowsシステムイベントログ
  • Windows PowerShellスクリプトブロックログ 

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。

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

 

The Splunk Threat Research Team is an active part of a customer’s overall defense strategy by enhancing Splunk security offerings with verified research and security content such as use cases, detection searches, and playbooks. We help security teams around the globe strengthen operations by providing tactical guidance and insights to detect, investigate and respond against the latest threats. The Splunk Threat Research Team focuses on understanding how threats, actors, and vulnerabilities work, and the team replicates attacks which are stored as datasets in the Attack Data repository

Our goal is to provide security teams with research they can leverage in their day to day operations and to become the industry standard for SIEM detections. We are a team of industry-recognized experts who are encouraged to improve the security industry by sharing our work with the community via conference talks, open-sourcing projects, and writing white papers or blogs. You will also find us presenting our research at conferences such as Defcon, Blackhat, RSA, and many more.


Read more Splunk Security Content

TAGS
Show All Tags
Show Less Tags