ナビゲーションをスキップする
BlackBerry ThreatVector ブログ

「オールインワン」のマルウェア・ツールキットBoratRATを技術的に解析

本ブログ記事は、2022年4月28日に米国で公開されたBlackBerryのブログ記事の抄訳版です。原文はこちらからご覧頂けます。

 

「BoratRAT」という名前から、あるコメディアンを思い浮かべるかもしれませんが、この脅威に笑える要素はありません。BoratRAT は、オールインワンのマルウェアツールキットであり、ランサムウェアとしての動作や、認証情報の窃取など、さまざまな破壊的活動が可能です。

最初の解析は Cyble の研究者らによって行われ、これによって全機能の深い理解が可能になりました。さらに調査を進めると、BoratRAT、SantaRAT、AsyncRAT との間の興味深い関連が発見されました。

 

CylanceOPTICS®︎がBorat RATの振る舞いをキャッチした様子は、次の動画からご覧いただけます。
 

デモ動画:Borat RATの振る舞いをCylanceOPTICSでキャッチ
 

オペレーティングシステム

リスクと影響

技術的解析

BoratRAT という名前は、Sacha Baron Cohenというイギリスのコメディアンが演じる皮肉屋の架空の人物、Borat Sagdiyev から取られています。作者は、このトロイの木馬をウェブ上で「ナンバーワンのリモート管理ツール」と宣伝し、アイコンに Cohen の似顔絵を使っています。

BoratRAT が初めて発見されたのは、2022 年 3 月 31 日のことでした。この新しい RAT(リモートアクセス型トロイの木馬)は、次のような多数の機能をうたっています。

  • 直接的サービス拒否(DDoS)攻撃
  • ランサムウェアの機能
  • キーロギングとデータの持ち出し
  • 周辺機器の操作(カメラやモニターなど)
  • ユーザーアカウント制御(UAC)の迂回、Windows Defender の無効化
  • 録音とウェブカメラの録画
  • ブラウザーの認証情報とパスワードの窃取
  • Discord トークンの窃取
  • ファイルシステム操作
  • リモートデスクトップの機能

長くなるので、この記事では BoratRAT に収められている 2 つのモジュール(keylogger.exe と information.dll)のみを解析します。モジュールの機能を調査し、類似の古い脅威である SantaRAT と比較します。そこで、2 つの RAT の間にある主な共通点の発見を目指します。

 

BoratRAT の詳細

BoratRAT は、最初は Borat.zip という名前の ZIP ファイルにパッケージ化されています(SHA256 D2ce3aa530ba6b6680759b79aa691260244ca91f5031aa9670248924cc983fb0)。その中には、BoratRAT.exe という実行ファイル、BoratRAT の設定ファイル、サーバー証明書、bin ディレクトリが含まれています。機能をサポートするモジュールは、すべて bin ディレクトリに収められています。先ほど述べた目標に向け、次の 3 つの実行ファイルに着目します。

  • BoratRAT.exe (b47c77d237243747a51dd02d836444ba067cf6cc4b8b3344e5cf791f5f41d20e)
  • Keylogger.exe (16beb1ae2de2974ccc2371d9f619f492295e590abb65d3102e362c8ec27f2bbb)
  • Information.dll (a15d72d990686d06d89d7e11df2b16bcd5719a40298c19d046fa22c40d56af44)

BoratRAT.exe が実行されると、マルウェアオペレーター用のユーザーインターフェースが起動されます。ここから、脅威アクターがターゲットマシン上で、このマルウェアのすべての機能を実行できるようになります(図 1)。作者は BoratRAT.exe を Enigma Protector で難読化して、解析を困難にしています。

図 1 – BoratRAT の UI スニペット
 
 
アプリケーション keylogger.exe は、BoratRAT の UI (ユーザーインターフェース)から呼び出されます。keylogger.exe は、その名の通り、被害者のキーストロークのログを記録して、キー入力をファイルに保存します。キーロガーのアプリケーションは、メイン関数で起動され、SetHook という関数に低レベルのキーボードプロシージャを渡します。SetHook は HookCallback (図 2)からの戻り値を受け取ります。HookCallback では、GetKeyState の組み合わせと決定構造を使ってキーの状態を取得します。
 
図 2 – キーストローク決定木を使用する HookCallBack 関数
 
キーの状態が認識されると、キーストロークは StreamWriter で文字列ストリームに書き込まれます。StreamWriterは C# のネイティブライブラリであり、文字を UTF-8 エンコーディングでストリームに書き込むために使用されます。

マルウェアの実行のこの時点で、GetActiveWindowTitle() のチェックが IF ELSE 文を使って行われます。さらに、winuser.h の GetForegroundWindow() を呼び出し、被害者が使用中のウィンドウのハンドルを返します。これが行われるのは、キーストロークをファイルに書き込む際に、被害者が使用中のアクティブウィンドウに正しくラベルを付けるためです。

そして、この活動の出力は、変数 program.loggerPath が示すファイルに書き込まれます。loggerPath は、プログラムが使用する静的文字列であり、プログラムの動作環境を出力ファイルに連結して、完全な環境パスとしたものです。この場合、ファイルの名前は「\\Sa8X0fH1BudXLog.txt」で、このファイルがマルウェアに指定された環境フォルダパスに書き出されます(図 3)。
 

図 3 – Keylogger.exe のテキストファイル「Sa8XofH1BudXLog.txt」の場所
 

Information.dll モジュールには、システム情報を攻撃者に持ち出すコマンドが含まれています。関数 execCMD は、標準入出力とエラー出力をリダイレクトし、CreateNoWindow モードにした状態でアプリケーション「cmd.exe」を起動して、それを使ってコマンドプロンプトを開始します。リダイレクトは、コマンドプロンプトの実行をデスクトップから隠すために行われます。

その時点で、execCMD() は関数 InformationList() に呼び出されています。延々と続くシステム情報をコマンドラインに書き出すコマンド文字列が渡されます(図 4)。情報はパケット化され、脅威アクターに送り返されます。echo コマンドの文字列は、環境、OS バージョン、ハードウェア、ホスト、ユーザーや管理者の情報、ネットワーク情報のフルダンプです。

図 4 – Information.dll の InformationList 関数と execCMD 関数
 

BoratRAT の最初の着想は、2 年前に初めて現れた AsyncRAT という古い脅威にあると思われます。この起源を裏付ける証拠を発見した BleepingCompute、2 つの脅威の類似点を指摘しています。この主張は、Intezer Analyzeというツールを使った文字列解析にも裏付けられています。

この脅威から着想を得た RAT はこれだけではなく、SantaRAT も AsyncRAT をベースに作られており、それが BoratRAT の開発のもう 1 つの出発点となった可能性もあります。実際、GitHub にある SantaRAT のリポジトリのメインページでは、オーナーが AsyncRAT ライブラリの作者に個人的な「謝意」を表しています。

SantaRAT は、AsyncRAT の機能を出発点にして、録音やファイルシステム変更などのモジュールを追加しました。しかし、SantaRAT の最後の変更は 5 か月前です。BoratRAT は、SantaRAT に近い機能セットからスタートしています。

このセクションの目的はSantaRATのソースコードと BoratRAT のモジュールコードの関係の代表例を示すことなので、ここで解析する 2 つのモジュールは、この RAT の機能のほんの一部に過ぎません。

高レベルでの類似性は明らかです。たとえば、記述言語はどちらも C# です。機能セットもよく似ており、犠牲者への身代金要求、認証情報の窃取、リモートアクセスの獲得など、共通の機能が多数あります。

モジュールのレベルでも同様の類似性があります。ソースコードファイル(正規でも不正なものでも)をコンパイルすると、各モジュールにはプログラムデータベースファイルを参照するディレクトリパスが入ります。プログラムデータベースファイルは、コンパイルされたソースコードファイルのデバッグ情報を収めるために使用されます。

BoratRAT のパスには SantaRAT への参照を確認できます(図 5)。これは、SantaRAT のモジュールがダウンロードされ、コンパイルされて、同じ環境で使用されていたことを示します。パス中の「SantaRat-main」は BoratRAT の information.dll ライブラリでも確認できます。
 

図 5 – BoratRAT に同梱の Keylogger.exe にあった SantaRAT-main ライブラリのパス文字列 
 
これ以外にも、コードの構成やモジュール名も非常によく似ています。SantaRAT のわずかなモジュールを除いて、モジュールパッケージを並べて比較すると、ほとんど同じです(図 6)。抜けているディレクトリは、Chat、Decryptor、messagepacklib です。これは、作者が一部のコードを類似のライブラリにリファクタリングしたためと思われま
 
図 6 – BoratRAT の bin と SantaRAT の plugin
 
両方の RAT のすべてのモジュールコードは、ほぼ一致します。information.dll は、GitHub にある SantaRAT リポジトリの packet.cs と完全に同じコードを使っています。SantaRAT と BoratRAT から抜き出した execCMD のスニペット同士を比べると、ほぼ丸ごとコピーしたように見えます。この種のコード再利用はアプリケーション keylogger.exe に見られ、BoratRAT と、SantaRAT のリポジトリにある program.cs にも収められています。
 
図 7 – SantaRAT の execCMD 関数(左)、BoratRAT の execCMD 関数(右)
 

結論

裏付けの解析から、BoratRAT の作者が SantaRAT を開発リファレンスとして利用したことは明らかです。解析したどのモジュールにも、明らかなコードの再利用があります。一部のモジュールでは、丸ごとコピーされていました。

これは何を意味するのでしょうか。私たちは、BoratRAT のコード再利用は、SantaRAT の開発継続とイメージチェンジを示していると考えています。新しい作者がこのマルウェアの進化を引き継ぐ可能性も、BoratRAT が別種の短命な開発を意図したものである可能性もあります。この脅威がどこに向かうのかは、いずれ明らかになるでしょう。

この RAT は、BoratRAT というコミカルな名前とは反対に、その機能の幅広さから個人と企業の両方が注意すべき危険な脅威です。BoratRAT がシステム(個人、企業を問わず)に侵入した場合の被害は甚大になるため、このような脅威を軽減するために正しいセキュリティプラクティスに従う必要があります。

 

YARAルール

以下の YARA ルールは、この記事で説明した脅威を捕捉するために BlackBerry の Research & Intelligence Team が作成しました。

rule BoratRAT{

      meta:

            description = "Detects BoratRAT.exe"

            author = "BlackBerry Threat Research Team" 

            date = "2022-04-13"

            license = "This Yara rule is provided under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0) and open to any user or organization, as long as you use it under this license and ensure originator credit in any derivative to The BlackBerry Research & Intelligence Team"

      strings:

            $s1 = "enigma1" 

            $s2 = "enigma2"

            $s3 = "Server.Forms.FormFileManager.resources"

            $s4 = "Server.Forms.FormFileSearcher.resources"

            $s5 = "Server.Forms.FormKeylogger.resources" 

            $s6 = "Server.Forms.FormNetstat.resources"

            $s7 = "Server.Forms.FormFun.resources"

            $s8 = "Server.Forms.FormWebcam.resources"

            $s9 = "BoratRat" 

            $s10 = "Keylogger.exe"

      condition:

            uint16(0) == 0x5a4d and all of them

rule BoratRATKeylogger{

      meta:

            description = "Detects BoratRAT Keylogger"

            author = "BlackBerry Threat Research Team" 

            date = "2022-04-13"

            license = "This Yara rule is provided under the Apache License 2.0   (https://www.apache.org/licenses/LICENSE-2.0) and open to any user or organization, as long as you use it under this license and ensure originator credit in any derivative to The BlackBerry Research & Intelligence Team"

      strings:

            $s1 = "Sa8XOfH1BudXLog.txt" wide 

            $s2 = "[CAPSLOCK: ON]" wide

            $s3 = "[CAPSLOCK: OFF]" wide

            $s4 = "[SPACE]" wide

            $s5 = "[ENTER]" wide 

            $sp = { 43 3A 5C 55 73 65 72 73 5C 41 64 6D 69 6E 69 73 74 72 61 74 6F 72 5C

                    44 6F 77 6E 6C 6F 61 64 73 5C 53 61 6E 74 61 52 61 74 2D 6D 61 69 6E 

                    5C 42 69 6E 61 72 69 65 73 5C 52 65 6C 65 61 73 65 5C 50 6C 75 67 69 

                    6E 73 5C 4B 65 79 6C 6F 67 67 65 72 2E 70 64 62 } 

      condition:

            uint16(0) == 0x5a4d and all of them

}

rule BoratRATInformation{ 

      meta:

            description = "Detects BoratRAT Information Module"

            author = "BlackBerry Threat Research Team"

            date = "2022-04-13" 

            license = "This Yara rule is provided under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0) and open to any user or organization, as long as you use it under this license and ensure originator credit in any derivative to The BlackBerry Research & Intelligence Team"

      strings:

            $s1 = "set_UseShellExecute"

            $s2 = "execCMD" 

            $s3 = "hostname" wide

            $s4 = "ipconfig" wide

            $s5 = "tasklist" wide

            $s6 = "arp -a" wide 

            $sp = {43 3A 5C 55 73 65 72 73 5C 41 64 6D 69 6E 69 

                   73 74 72 61 74 6F 72 5C 44 6F 77 6E 6C 6F 61 

                   64 73 5C 53 61 6E 74 61 52 61 74 2D 6D 61 69 

                   6E 5C 42 69 6E 61 72 69 65 73 5C 52 65 6C 65  

                   61 73 65 5C 50 6C 75 67 69 6E 73 5C 49 6E 66 

                   6F 72 6D 61 74 69 6F 6E 2E 70 64 62}

      condition:

            uint16(0) == 0x5a4d and all of them 

}


セキュリティ侵害インジケータ(IOC)

b47c77d237243747a51dd02d836444ba067cf6cc4b8b3344e5cf791f5f41d20e – BoratRAT.exe

16beb1ae2de2974ccc2371d9f619f492295e590abb65d3102e362c8ec27f2bbb – Keylogger.exe

a15d72d990686d06d89d7e11df2b16bcd5719a40298c19d046fa22c40d56af44 – Information.dll

D2ce3aa530ba6b6680759b79aa691260244ca91f5031aa9670248924cc983fb0 – Borat.zip


BlackBerryによるサポート

BlackBerry のインシデント対応チーム は、あらゆる業種のどのような規模の組織とも連携し、エンドポイントのセキュリティ体制を評価および強化し、ネットワークインフラストラクチャのセキュリティ、整合性、およびレジリエンスを積極的に維持するように支援します。

緊急のサポートが必要な場合は、当社の問い合わせフォームをご利用ください。

最新のサイバーセキュリティの脅威と脅威アクターの詳細については、BlackBerry 2021 年版脅威レポートをご覧ください。

 

・お問い合わせ:https://www.blackberry.com/ja/jp/forms/enterprise/contact-us

・イベント/セミナー情報:https://www.blackberry.com/ja/jp/events/jp-events-tradeshows

・サイバーセキュリティチームによるコンサルティング: https://www.blackberry.com/ja/jp/services/blackberry-cybersecurity-consulting/overview

・BlackBerry Japan:https://www.blackberry.com/ja/jp

The BlackBerry Research and Intelligence Team

About The BlackBerry Research and Intelligence Team

BlackBerry の Research and Intelligence Team は、新たに生じている脅威と持続的な脅威を検証し、セキュリティ担当者とその所属企業のために、インテリジェンス解析を提供しています。