AsyncRATの解析

AsyncRATとは

AsyncRATは、リモートアクセス型のトロイの木馬(Remote access trojan, RAT)であり、2019年にGitHub1でソースコードが公開された以降、その汎用性の高さから現在もばらまき型のRATの1つとして世界中で猛威を振るっています。 ANY RUN2のマルウェアトレンドトラッカーにおいて、本ブログの執筆時点(2024/06/26)で月間3位であることからもその勢いが分かります。

本ブログではAsyncRATの基本的な機能を解説するとともに、2024年5月7日から6月3日までの約1ヶ月間に収集した複数のAsyncRATの亜種を調査し、追加されている機能や展開方法をまとめます。

AsyncRATの基本的な機能

AsyncRATは.NET Framework3でビルドされたRATです。そのため.NETのデバッガでありディスアセンブラでもあるdnSpy4を用いて解析できます。 一部の検体は難読化されていることがあるため、その場合はde4dot5を用いて難読化を解除してからdnSpyで解析をします。

本章ではAsyncRATの基本的な機能を解説します。

AsyncRATの設定情報

AsyncRATで最も特徴的であるのが設定情報です。 設定情報はAES256で暗号化の上、Base64でエンコードされています。

/posts/2024-05/settings.png

図1. AsyncRATの設定情報

定義されている設定項目は下記の通りです。

設定項目 説明
Ports C2サーバの宛先ポート番号
Hosts C2サーバのIPアドレスまたはURL
Version AsyncRATのバージョン情報
Install インストールの有無 (true:有, false:無)
InstallFolder インストール先のフォルダ
InstallFile インストールする際に使用するファイル名
Key AES256暗号鍵
MTX 生成するミューテックスオブジェクト名
Certificate C2サーバとの通信に使用するSSL証明書
ServerSignature サーバ署名
Anti 対解析機能の実行有無 (true:実行, false:実行しない)
Pastebin Pastebin[.]comのURLまたはnull
BDOS 重要なシステムプロセスとしての実行有無 (true:実行, false:実行しない)
Hwid ハードウェアID (初期値:null)
Delay メイン機能を実行するまでのスリープ時間[s]
Group セキュリティグループ

暗号化されている設定情報を復号するための関数はClient.AlgorithmモジュールのAes256クラスにあるDecrypt関数で定義されています。 この関数は設定情報をBase64デコードした文字列を引数として受け取り復号します。

/posts/2024-05/decrypt_func.png

図2. Client.Algorithmモジュール

/posts/2024-05/decrypt.png

図3. Decrypt関数

Decrypt関数内にある変数_key_authKeyはAes256クラスで定義されています。 引数のmasterKeyは設定情報のKeyの値をBase64デコードすることで得られるAES256暗号鍵です。 Aes256.SaltはAes256クラスにハードコーディングされています。

/posts/2024-05/key.png

図4. 暗号鍵

付録のプログラムもしくはdnSpyのデバッガ機能を用いて設定情報を復号すると次のような結果が得られます。CertificateおよびServerSignatureは一部省略して表示しています。

この結果より次のことが分かります。

  • 本検体はC2サーバであるiphy[.]ooguy[.]com:1604に通信する。
  • バージョンが0.5.8である。
  • %AppData%/Window11.exeに自身をコピーする。
  • ミューテックスオブジェクトqBaMI7PsO7yMを生成する。
  • 対解析機能および重要なシステムプロセスとして実行する機能がオフである。
  • Defaultのセキュリティグループとして実行する。
設定項目 設定情報
Ports 1604
Hosts iphy[.]ooguy[.]com
Version 0.5.8
Install true
InstallFolder %AppData%
InstallFile Windows11.exe
Key WlIMk5Fjn5usYR06xPHUy1oBqsxshEHK
MTX qBaMI7PsO7yM
Certificate MIIE8jCCAtqgAwIBAgIQAK+/pZzuA/uM/…(Snipped)
ServerSignature oLUGQbetJeyhi1Vo5GJDU+CSkVpB4FMAH3JPaccCpBtZ2V+VpBmOobwCdR/…(Snipped)
Anti false
Pastebin null
BDOS false
Hwid null
Delay 3
Group Default

PastebinPastebin[.]comのURLが設定されている場合、AsyncRATはそのURLにアクセスし、C2サーバのIPアドレスもしくはURLを取得します。 Hwidには感染端末の論理プロセッサ、ユーザ名、マシン名、OSのバージョン情報、ディスク容量をそれぞれ文字列に変換し、それらを結合した文字列をハッシュ化した値が格納されます。

AsyncRATのメイン機能

AsyncRATのメイン関数は下記の通りです。

/posts/2024-05/main.png

図5. メイン関数

関数名 説明
InitilizeSettings 設定情報の復号
CreateMutex ミューテックスオブジェクトの生成
RunAntiAnalysis 対解析機能
Install 永続化
Set 重要なシステムプロセスとして設定
PreventSleep 感染端末がスリープ状態でも動作するように設定
Reconnect C2サーバに接続
InitializeClient C2サーバと通信

対解析機能としてAsyncRATから下記の5つの関数を確認しています。 設定のAntitureの場合は対解析機能が実行され、これらの関数のいずれかがtrueを返した場合、動作を終了します。

/posts/2024-05/anti.png

図6. RunAntiAnalysis関数

関数名 説明
DetectManufacturer VMWare, VirtualBoxなどの仮想環境検知
DetectDebugger CheckRemoteDebuggerPresent関数を使用したデバッガ環境検知
DetectSandboxie SbieDll.dllを確認することによるサンドボックス環境検知
IsSmallDisk ディスク容量(61GB以下)を確認することによる解析環境検知
IsXP Windows XP検知

永続化機能はAsyncRATが管理者権限で実行されているかで動作が変化します。 管理者権限で実行されている場合はschtasksコマンドを使用してタスクに自身を登録します。 タスクとして登録したパスは設定項目にあるInstallFolderおよびInstallから取得するため、本検体の場合は%AppData%\Windows11.exeになります。 管理者権限でない場合はレジストリキーHKCU\Software\Microsoft\Windows\CurrentVersion\Runに自身を登録します。

/posts/2024-05/install.png

図7. Install関数

続いて権限に関係なく%Temp%フォルダに自身を実行する内容が記載されたbatファイルを生成します。batファイルのファイル名は実行ごとに変化します。

@echo off
timeout 3 > NUL
START "" "C:\Users\Admin\AppData\Roaming\Windows11.exe"
CD C:\Users\Admin\AppData\Local\Temp
DEL "tmpCAE1.bat" /f /q

C2サーバとの通信を行うための機能を持つReconnect関数は既存のセッションが存在する場合は一旦セッションをリセットし、再度C2サーバに接続します。 InitializeClient関数はC2サーバに感染端末の情報を送信します。

送信情報 説明
Packet 文字列"ClientInfo"
HWID ハードウェアID
User ユーザ名
OS OSの情報
Path AsyncRATの実行パス
Version AsyncRATのバージョン
Admin 管理者権限である場合: “Admin”, それ以外: “User”
Performance 現在アクティブであるウインドウの名前
Pastebin 設定のPastebinの値
Antivirus 感染端末にインストールされているアンチウイルス製品名
Installed AsyncRATのインストール時刻
Pong 空白
Group 設定のGroupの値

感染端末の情報を送信後、AsyncRATは待ち受け状態に入ります。 C2サーバから送信されるプラグインを受け取り、様々な機能を実現します。 攻撃者によって使用するプラグインは異なりますが、ソースコードにあるデフォルトのプラグインは次のようなものがあります。

プラグイン 説明
Chat チャット機能
Extra Windows Defender無効化機能、壁紙変更機能
FileManager ファイル操作機能
FileSearcher ファイル検索機能
LimeLogger キーロガー機能
Miscellaneous その他の機能(Bot機能、Dos機能、.NETコード実行機能)
Options 感染端末設定変更機能、UAC(ユーザアカウント制御)回避機能、アンインストール機能
ProcessManager プロセス操作機能
Recovery PC, ブラウザ, DB内の認証情報窃取機能
RemoteCamera Webカメラ操作機能
RemoteDesktop リモートデスクトップ機能
SendFile ファイル送信機能
SendMemory メモリにデータを送信する機能

以上がAsyncRATの基本的な機能となります。

AsyncRATの亜種の解析

本章では2024年5月7日から6月3日までの約1ヶ月に収集した複数のAsyncRATの亜種を解析することで、現在AsyncRATに攻撃者によって追加された機能や使用されている展開方法を明らかにします。

収集方法

VirusToal6およびMalware Bazaar7にアップロードされた11検体を収集しました。 VirusTotalからはファミリ名がasyncratであり、直近にアップロードされた検体で、かつ過去にアップロードされた検体と同一のハッシュ値でない検体を取得しました。Malware Bazzarからはtag:AsyncRATで検索した結果の中で直近にアップロードされた検体を取得しました。

追加された機能

キーロガー機能

プラグインではなくAsyncRATそのものにキーロガー機能が搭載されている検体8がありました。 設定情報を確認するとkeylogparamという項目が追加されていることが分かります。

/posts/2024-05/keylogger.png

図8. 追加されたキーロガーに関する設定

KeylogParamsクラスにはキーロガーの設定ファイルであるDataLogs.confのパス、感染端末がオフラインであるときのキーロガーの出力先であるDataLogs_keylog_offline.txtのパス、感染端末がオンラインであるときのキーロガーの出力先であるDataLogs_keylog_online.txtのパス、競合を避けるためのミューテックスオブジェクト名がハードコーディングされています。

そしてメインモジュールにKeyloggerクラスが追加されており、このクラスにキーロガー機能が定義されています。

/posts/2024-05/add_keylogger.png

図9. キーロガー機能が搭載されたAsyncRAT

他検体との連携機能

収集した検体の中には他検体と連携している検体9がありました。 dnSpyで読み込むと基本的なAsyncRATと比較して様々なモジュールが追加されていることが分かります。

/posts/2024-05/normal.png

図10. 基本的なモジュール

/posts/2024-05/add_modules.png

図11. 追加された様々なモジュール

また設定情報にもTelegramToken, TelegramChatIDが追加されています。

/posts/2024-05/telegram.png

図12. 追加されたtelegramに関する設定

設定情報の復号方法は変わらないため、付録のプログラムで復号するとTelegramトークンとチャットIDが得られます。

設定項目 設定情報
TelegramToken MTIxOTQwMjM3MTUzNzU3MTg0MA.Gytkhu.w-d-C6RfbxaOnr_dDaiutKUeYN30qu
TelegramChatID 5038570348

本検体はこのトークンとチャットIDを使用してTelegramのチャットに感染端末の情報を送信します。 すなわちTelegramが本検体のC2サーバとして機能します。 Hostsの設定情報を復号するとローカルのIPアドレスである127.0.0.1が得られることからも、このことを裏付けています。 C2サーバであるTelegramのURLや収集する情報はAsyncRATとは異なる方法で暗号化された値がハードコーディングされていますが、付録のプログラムで復号することができます。

復号された通信先や収集する情報の一覧は下記の通りです。 C2サーバであるtelegramのURLがhxxps[:]//api[.]telegram[.]org/botです。 api[.]mylnikov[.]orgは感染端末の位置情報を、icanhazip[.]comは感染端末のグローバルIPアドレスを取得するためにアクセスします。 本検体が収集した情報は%AppData%\Local配下の隠しフォルダに保存し、適宜C2サーバに送信します。

URL
  hxxps[:]//api[.]anonfiles[.]com/upload
  hxxps[:]//api[.]telegram[.]org/bot
  hxxps[:]//api[.]mylnikov[.]org/geolocation/wifi?v=1.1&bssid=
  hxxp[:]//icanhazip[.]com
  hxxp[:]//discordapp[.]com/api/v6/users/@me

収集する情報
  \Chromium\User Data\
  \Google\Chrome\User Data\
  \Google(x86)\Chrome\User Data\
  \Opera Software\
  \MapleStudio\ChromePlus\User Data\
  \Iridium\User Data\
  \7Star\7Star\User Data\
  \CentBrowser\User Data\
  \Chedot\User Data\
  \Vivaldi\User Data\
  \Kometa\User Data\
  \Elements Browser\User Data\
  \Epic Privacy Browser\User Data
  \uCozMedia\Uran\User Data\
  \Fenrir Inc\Sleipnir5\setting\modules\ChromiumViewer\
  \CatalinaGroup\Citrio\User Data\
  \Coowon\Coowon\User Data\
  \liebao\User Data\
  \Orbitum\User Data\
  \Comodo\Dragon\User Data\
  \Amigo\User\User Data\
  \Torch\User Data\
  \Yandex\YandexBrowser\User Data\
  \Comodo\User Data\
  \360Browser\Browser\User Data\
  \Maxthon3\User Data\
  \K-Melon\User Data\
  \Sputnik\Sputnik\User Data\
  \Nichrome\User Data\
  \CocCoc\Browser\User Data\
  \Uran\User Data\
  \Chromodo\User Data\
  \Mail.Ru\Atom\User Data\
  \BraveSoftware\Brave-Browser\User Data\
  \Mozilla\Firefox
  \Waterfox
  \K-Meleon
  \Thunderbird
  \Comodo\IceDragon
  \8pecxstudios\Cyberfox
  \NETGATE Technologies\BlackHaw
  \Moonchild Productions\Pale Moon
  \Microsoft\Edge\User Data

正規表現
  "btc", (?:^(bc1|[13])[a-zA-HJ-NP-Z0-9]{26,35}$)
  "eth", (?:^0x[a-fA-F0-9]{40}$)
  "xmr", (?:^4[0-9AB][1-9A-HJ-NP-Za-km-z]{93}$)
  "xlm", (?:^G[0-9a-zA-Z]{55}$)
  "xrp", (?:^r[0-9a-zA-Z]{24,34}$)
  "ltc", (?:^[LM3][a-km-zA-HJ-NP-Z1-9]{26,33}$)
  "bch", ^((bitcoincash:)?(q|p)[a-z0-9]{41})

このようにベースはAsyncRATですが、実態は大きく異なり、TelegramをC2サーバとする亜種であることを確認しています。

展開方法

ローダー型

一部のAsyncRATは別の検体のリソースセクションから展開されたり、C2サーバからダウンロードすることで展開されたりといった、いわゆるローダーから展開されていました。

ローダー型の検体A10は自身のリソースセクションにAsyncRATを難読化した状態で保存していました。 ローダーが実行されると自身のリソースセクションを参照して復号し、AsyncRATを展開、実行します。 本検体はユーザを騙して実行させるためにWebブラウザの1つであるFirefoxのアイコンを利用しています。

/posts/2024-05/icon.png

図13. Firefoxに偽造したAsyncRATのローダー

ローダー型の検体B11は自身のリソースセクションからWebブラウザの1つであるGoogle Chromeに偽装したCHROMEL.exeとWindowsの標準サービスに偽装したPRINTSERV.exeを展開しました。 CHROMEL.exeもまたローダーであり、自身のリソースセクションからAsyncRATを展開し実行します。PRINTSERV.exeはXENO RAT12と呼ばれる別のマルウェアファミリである検体です。

ローダー型の検体C13はダウンロードサーバから1755.binをダウンロードして実行しました。 この1755.binがAsyncRAT本体です。

変わり種としてローダ型の検体D14がありました。 ファイルの拡張子はtxtなのですが、中身はvbaファイルとなっています。 このローダーを実行するとダウンロードサーバ(hxxp[:]//104[.]243[.]40[.]225:222)にアクセスしてHHAMMOFATHEATBBDNN.jpgをダウンロードし、C:\Users\Public\safsafasasdsfwrvb.zipとして保存し解凍します。 このzipファイルには下記の6つのファイルが格納されていました。

C:\Users\Public\safsafasasdsfwrvb.zip
|-- MVVELJTYVGCFOMOS.vbs
|-- BATTATTA.bat
|-- LXHNZEZFHPFSAEGF.ps1
|-- YAGURQWHFBHUIOUB.vbs
|-- WEBACKAGAIN.bat
`-- KBNSOCSXACHWORKRY.ps1

解凍されるとMVVELJTYVGCFOMOS.vbsが実行され、このvbsファイルがBATTATTA.batを実行、batファイルがLXHNZEZFHPFSAEGF.ps1を実行します。 このPowerShellスクリプトは2分毎にYAGURQWHFBHUIOUB.vbsが実行されるようにWINDOWSUPDATE12という名前のタスクを作成して登録します。 YAGURQWHFBHUIOUB.vbsWEBACKAGAIN.batを実行し、このbatファイルがKBNSOCSXACHWORKRY.ps1を実行します。 このPowerShellスクリプトには2つの実行ファイルのバイナリがハードコーディングされており、その1つがAsyncRATです。

インジェクション型

攻撃者はアンチウイルス製品の検知を避けるために、正規のプロセスに悪意のあるコードを挿入(インジェクション)します。 一部のAsyncRATはこの手法を使用していました。

インジェクション型の検体A15は、Windowsの正規のプロセスであるRegasm.exeに自身のリソースセクションにあるバイナリをインジェクションすることで、正規のプロセスとしてAsyncRATと別のマルウェアファミリであるAgentTeslaを実行しました。

前節で解説したローダー型の検体Cがダウンロードした1755.binはDonut16でシェルコード化されたAsyncRATであり、Windowsの正規のプロセスにインジェクションされることで動作するインジェクション型の検体B17でした。 下記の手順を踏むことで、Donutでシェルコード化された本検体を復元することができ、AsyncRATであることが確認できます。

  1. git cloneコマンドを使用してDonutをダウンロードします。
  2. 適当なディレクトリでdotnet new consoleコマンドを実行して.NETプロジェクトを作成し、1.でダウンロードしたDonut\DonutTest\Program.csをコピーします。
  3. シェルコードである1755.binのBase64文字列を取得します。
  4. 2.でコピーしたProgram.csの13行目および14行目にあるBase64文字列を3.で取得したBase64文字列に置き換えます。
  5. dotnet buildコマンドを実行してビルドします。
  6. メモ帳(notepad.exe)等の適当な実行ファイルを実行してプロセスIDを控えます。
  7. 6.で控えたプロセスIDを引数として、5.でビルドした実行ファイルを実行します。e.g. test.exe <pid>
  8. 標準出力からインジェクションが成功したことを確認して、System Informer(旧Process Hacker)等を用いてインジェクションした実行ファイルのメモリダンプを取得し保存します。
  9. HxD等のバイナリエディタとPEStudio等のオフセットが確認できるツールを用いて、8.で取得したメモリダンプからAsyncRATを抽出します。
/posts/2024-05/injection.png

図14. notepad.exeにインジェクションされたAsyncRAT

まとめ

本ブログではばらまき型RATの1つであるAsyncRATについて解説しました。 AsyncRATの基本的な機能から、2024年5月7日から6月3日の約1ヶ月に収集した最新のAsyncRATの中で、特に興味深かった追加機能や展開方法についてまとめました。

NICTでは今後も様々なRATの解析を実施する予定です。

付録

IoC

SHA256
12edd518db3703d35067a54f08781830b3496f7f5b79d19eadf15d766de4d6b1
272e394711c3c4e7c3cf18d2976dc20eef0f48e41f942911a5e4766e472847a0
0824eac1ce23de2321bce82efce874ab3c213d15f1a120d8ec08c85c7fbc250b
61309415bb524bba3d6065cf5df5ce2031ddde239c7f7864d0d2eaf31597a96c
6ce2b4a0e176126f0899223eace35c31b544e46a2067b0ecf0adf8d06f87309d
2b2026ff6c967238676cf63233f01bfb3d18805def906cc3b9c1674940b91a21
75c8200b287fcf73263092da4c5ac742ee1a65e3b48cebada4766851594020d2
4bcc19c324294a3b92ed5067ca495f51a05362edcb2cf7c09d8619842a25a99c
f7a799484e79f56a1bcc4878744a3384f98441a0e0e688599c7822da8c519d5c
a2007da837ca22cd0e894946f9ce20a3352ac42c34c5930c159730ea4538e79b
6c0291916555438da7d3705991100d295d480ae58b98147a4d83fbd3cfb8dc19
6faac0b511cf2eb67fbb1152d95aec12a97fa98267aeda6c91884e8f3ad09936
de68a04b9c1b2c4a6b1e3063a413183ca5eb896fe396282b37770f6459c95045
90efa2e75e2102942fba13cb4a5744530cd85e84fcfc8d7ddccdc17081ac3f69
9852cddb4ca117d758dd1f7fb7acd21bda527d9db32ff4e5b56bf1cf9c84a9d2
898a205a94055456f1146d108e12b54093d043b298a1ade8ffec26a46feb4f2e
9a778a752a6bf8fa1fd175fe45a274678b7685939897559b90d9c8fe2022d9b8
a04e51d1511b2449fef2cc6e304ce6dd56cb3b68de39a2d2dde04563a87002d7
f338daab4aa9420e2ab7d2af82638d9057478e0a255672e6b1f7f2e30dfd7cde
5b1b7bd1fadfc3d2abcd8ea8f863fe96233e1dac8b994311c6a331179243b5cd
3de3cca7341ac19f1641ad9463cb4dacb0457fa2dc18e40d4ebe514130651187
629ef96921c67d7102df6138b3085ff4dca0ae1796cc755752bd0ce876b36ac0
18238db244f487a5b4cefcf3251f72dd3965404d65d222471ee69a8eba4b7a58
b84eb711989fbe9e0ff3ec874b5a0dac33655d27929fdce619ea94a35dca8953
15c37fc34c843c04dd97fdb40a9c767c0964a02ee7c0d9b22fd67a85fcf39a8a
f3ca9acf4dacd8c8ea86afa291751359c251ddce15b58916422fde6480a8e9e1
db5850b73ea19021d9e2ed567f87e5d6bfb99cf3679bc124bcc22ec21e32f403
83244f083a7fe5650653c26a5ec7251cf148500071e4e25ca925f5a26810e7ed
f03e941d050826b288bf5bfb36def419d4e89bba8976ead214db405585af5308

復号プログラム

AsyncRATの設定情報を復号するための.NETのソースコードです。 dotnet new consoleコマンドで.NETプロジェクトを作成し、dotnet runコマンドを実行することで暗号化されている設定情報を復号できます。 ソースコード中の[Key], [Base64文字列], Saltは適宜変更してください。

using System;
using System.IO;
using System.Runtime.CompilerServices;
using System.Security.Cryptography;
using System.Text;

Aes256 aes256 = new Aes256(Encoding.UTF8.GetString(Convert.FromBase64String("[Key]")));
string decrypt = aes256.Decrypt("[Base64文字列]");
Console.WriteLine(decrypt);

public class Aes256
{
	public Aes256(string masterKey)
	{
		using (Rfc2898DeriveBytes rfc2898DeriveBytes = new Rfc2898DeriveBytes(masterKey, Aes256.Salt, 50000))
		{
			this._key = rfc2898DeriveBytes.GetBytes(32);
			this._authKey = rfc2898DeriveBytes.GetBytes(64);
		}
	}

	public string Decrypt(string input)
	{
		return Encoding.UTF8.GetString(this.Decrypt(Convert.FromBase64String(input)));
	}

	public byte[] Decrypt(byte[] input)
	{
		byte[] decrypt;
		using (MemoryStream memoryStream = new MemoryStream(input))
		{
			using (AesCryptoServiceProvider aesCryptoServiceProvider = new AesCryptoServiceProvider())
			{
				aesCryptoServiceProvider.KeySize = 256;
				aesCryptoServiceProvider.BlockSize = 128;
				aesCryptoServiceProvider.Mode = CipherMode.CBC;
				aesCryptoServiceProvider.Padding = PaddingMode.PKCS7;
				aesCryptoServiceProvider.Key = this._key;

				using (HMACSHA256 hmacsha = new HMACSHA256(this._authKey))
				{
					byte[] array = hmacsha.ComputeHash(memoryStream.ToArray(), 32, memoryStream.ToArray().Length - 32);
					byte[] array2 = new byte[32];
					memoryStream.Read(array2, 0, array2.Length);
				}

				byte[] array3 = new byte[16];
				memoryStream.Read(array3, 0, 16);
				aesCryptoServiceProvider.IV = array3;

				using (CryptoStream cryptoStream = new CryptoStream(memoryStream, aesCryptoServiceProvider.CreateDecryptor(), CryptoStreamMode.Read))
				{
					byte[] array4 = new byte[memoryStream.Length - 16L + 1L];
					byte[] array5 = new byte[cryptoStream.Read(array4, 0, array4.Length)];
					Buffer.BlockCopy(array4, 0, array5, 0, array5.Length);
					decrypt = array5;
				}
			}
		}
		return decrypt;
	}

	public readonly byte[] _key;
	public readonly byte[] _authKey;
	public static readonly byte[] Salt = new byte[]
	{
		191, 235, 30, 86, 251, 205, 151, 59, 178, 25,
		2, 36, 48, 165, 120, 67, 0, 61, 86, 68,
		210, 30, 98, 185, 212, 241, 128, 231, 230, 195,
		57, 65
	};
}

他検体と連携する検体にハードコーディングされている暗号化されたバイト列を復号するための.NETのソースコードです。 ソースコード中の[復号するバイト列]は適宜変更してください。

using System;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;

string path = StringsCrypt.Decrypt(new byte[]
{[復号するバイト列]});
Console.WriteLine(path);

public class StringsCrypt
{
	public static string Decrypt(byte[] input)
	{
		byte[] array = null;
		using (MemoryStream memoryStream = new MemoryStream())
		{
			using (RijndaelManaged rijndaelManaged = new RijndaelManaged())
			{
				rijndaelManaged.KeySize = 256;
				rijndaelManaged.BlockSize = 128;
				Rfc2898DeriveBytes rfc2898DeriveBytes = new Rfc2898DeriveBytes(StringsCrypt.cryptKey, StringsCrypt.saltBytes, 1000);
				rijndaelManaged.Key = rfc2898DeriveBytes.GetBytes(rijndaelManaged.KeySize / 8);
				rijndaelManaged.IV = rfc2898DeriveBytes.GetBytes(rijndaelManaged.BlockSize / 8);
				rijndaelManaged.Mode = CipherMode.CBC;
				using (CryptoStream cryptoStream = new CryptoStream(memoryStream, rijndaelManaged.CreateDecryptor(), CryptoStreamMode.Write))
				{
					cryptoStream.Write(input, 0, input.Length);
					cryptoStream.Close();
				}
				array = memoryStream.ToArray();
			}
		}
		return Encoding.UTF8.GetString(array);
	}

	public static readonly byte[] saltBytes = new byte[]
	{
		byte.MaxValue, 64, 191, 111, 23, 3, 113, 119, 231, 121,
		252, 112, 79, 32, 114, 156
	};

	public static readonly byte[] cryptKey = new byte[]
	{
		104, 116, 116, 112, 115, 58, 47, 47, 103, 105,
		116, 104, 117, 98, 46, 99, 111, 109, 47, 76,
		105, 109, 101, 114, 66, 111, 121, 47, 83, 116,
		111, 114, 109, 75, 105, 116, 116, 121
	};
}

参考文献


  1. https://github.com/NYAN-x-CAT/AsyncRAT-C-Sharp ↩︎

  2. https://any.run/malware-trends/ ↩︎

  3. https://dotnet.microsoft.com/ja-jp/download/dotnet-framework ↩︎

  4. https://github.com/dnSpy/dnSpy ↩︎

  5. https://github.com/de4dot/de4dot ↩︎

  6. https://www.virustotal.com/gui/home/search ↩︎

  7. https://bazaar.abuse.ch/browse/ ↩︎

  8. SHA256:a360b0c660e2902008ed336e03149487b058604819f2404b2e4232792638985c ↩︎

  9. SHA256:83244f083a7fe5650653c26a5ec7251cf148500071e4e25ca925f5a26810e7ed ↩︎

  10. SHA256:12edd518db3703d35067a54f08781830b3496f7f5b79d19eadf15d766de4d6b1 ↩︎

  11. SHA256:0824eac1ce23de2321bce82efce874ab3c213d15f1a120d8ec08c85c7fbc250b ↩︎

  12. https://github.com/moom825/xeno-rat ↩︎

  13. SHA256:2b2026ff6c967238676cf63233f01bfb3d18805def906cc3b9c1674940b91a21 ↩︎

  14. SHA256:6faac0b511cf2eb67fbb1152d95aec12a97fa98267aeda6c91884e8f3ad09936 ↩︎

  15. SHA256:4bcc19c324294a3b92ed5067ca495f51a05362edcb2cf7c09d8619842a25a99cd ↩︎

  16. https://github.com/TheWover/donut ↩︎

  17. SHA256:75c8200b287fcf73263092da4c5ac742ee1a65e3b48cebada4766851594020d2 ↩︎