本ブログ記事は、2021年8月5日に米国で公開されたBlackBerryのブログ記事の抄訳版です。原文はこちらからご覧頂けます。
概要
njRAT(別名 Bladabindi)は、2012 年に初めて発見されたリモートアクセス型のトロイの木馬(RAT)です。「Sparclyheason」と呼ばれる脅威アクターグループによって開発され、中東諸国の組織を標的とした攻撃で使用されました。2013 年 5 月に ソースコードが流出して以来、このバックドアは広く利用されており、経験豊富な脅威アクターにもアマチュアにも人気があります。
njRAT は通常、フィッシングキャンペーンの一環で攻撃に悪用される文書を通じて配信されます。また、ファイル共有サイトで正規またはクラックされたソフトウェアになりすましている場合や、 ドライブバイダウンロード によって配信される場合もあります。
いったん被害者のマシンに展開されると、njRAT は感染したシステムを監視または制御できます。マルウェアの機能としては、キーストロークの記録、スクリーンショットのキャプチャ、パスワードの窃取、データの抜き出し、Web カメラとマイクへのアクセス、追加ファイルのダウンロードなどがあります。
オペレーティングシステム
リスクと影響
技術的解析
njRAT は Microsoft® .NET Framework を使用して開発されているため、dnSpy などの .NET デコンパイラでバイナリのソースコードが確認できます。今回の報告用に解析したサンプルは「Tools.exe」という名前で、「kl」と「OK」の 2 つのクラスを持つプロジェクト「j」が含まれていました。これは njRAT ツールで生成される実行可能ファイルの特徴です。
図 1: njRAT に含まれる共通クラス
「kl」クラスには、njRAT のキーロギング活動を行うための関数 GetAsyncKeyState、GetKeyboardLayout、GetKeyboardState、GetWindowThreadProcessId、MapVirtualKey が含まれています。
マルウェアの残りの機能は「OK」クラスに含まれています。また、このクラスには RAT が使用する構成情報がハードコードされており、たとえば今回の njRAT サンプルの構成からは、サンプルが njRAT ビルダーのバージョン 0.7d で作成されたことが読み取れます。
図 2:njRAT に組み込まれた構成
サンプルのエントリポイントは j.A.main で、実行時には ko() 関数が呼び出されます。
図 3: 最初に呼び出される ko() 関数
この関数は、サンプルがエミュレート環境で実行されているかどうか、またはシステム上で一般的な解析ツールが実行されているかどうかを確認します。事前に定義された以下の名前リストを基に CsAntiProcess クラスがプロセスを検索し、見つかった場合はそのプロセスの実行を停止します。
procexp
|
SbieCtrl
|
SpyTheSpy
|
wireshark
|
apateDNS
|
IPBlocker
|
TiGeR-Firewall
|
Smsniff
|
xeinfoPE
|
NetSnifferCs
|
Sandboxie Control
|
Processhacker
|
dnSpy
|
CodeReflect
|
Reflector
|
ILSpy
|
VGAuthService
|
VBoxService
|
|
|
次に、サンプルはシステムを検索して「C:\Tools.exe」にファイルが存在するかを確認し、存在しない場合は自身をこの場所にコピーします。
続いて HKEY_CURRENT_USER の下に「di」という名前のレジストリキーを作成し、値を「!」とします。
図 4: 作成された di レジストリキー
さらに、固有のミューテックスを作成し、バックドアのインスタンスがシステム上で 1 つだけ実行されるようにします。ミューテックス名は図 2 に示したバックドアの構成値「OK.RG」で定義されます。ミューテックスがすでに存在する場合はプロセスを終了します。
図 5: 作成されたミューテックス
続いてサンプルは自身の別のインスタンスを生成し、%TEMP% ディレクトリの下に scvhost.exe としてコピーします。
図 6: ローカルにドロップされた njRAT の実行可能ファイル
njRAT のバイナリに一般的な Windows ユーティリティと同じ(偽の)名前をつけることで、悪意のあるプロセスがエンドユーザーや多くのアンチウイルス(AV)製品に気づかれにくくしているのです。これが完了すると、njRAT は「Tools.exe」インスタンスを終了させ、「svchost.exe」を起動します。
次に、環境変数 SEE_MASK_NOZONECHECKS の値を 1 にして、被害システムのセキュリティ設定を下げます。こうすると、プロセスはゾーン確認による制限を受けることなく実行を許可されます。つまり、ファイルがダウンロードされて実行されても、セキュリティ警告を通知するダイアログボックスがエンドユーザーに表示されなくなります。
図 7: ゾーン確認による制限の無効化
永続性を得るために、マルウェアはシステムが起動するたびに自動実行されるレジストリキーを作成します。このキーも構成の OK.RG の値どおりに名付けられます。
図 8: 自動実行のためのキー
さらに、この実行可能ファイルは Windows のスタートアップフォルダーに自身をコピーし、ファイル名を OK.RG の値とします。
図 9: スタートアップにドロップされた njRAT の実行可能ファイル
続いて「netsh.exe」を起動し、システムのファイアウォールルールを変更して、njRAT のファイルを許可されたプログラムとして追加します。
図 10: :njRAT にファイアウォールの制限回避を許可
図 2 に示した njRAT の構成のうち、OK.H の値はコマンドアンドコントロール(C2)サーバーのホストアドレスを指し、OK.P の値は接続先のポート番号を定義しています。
図 11::njRAT が C2 サーバーに接続する様子
マルウェアのキーロギング活動を開始するためには、HKEY_CURRENT_USER の下にレジストリキーが作成されます。ユーザーが入力したすべてのキーストロークがここに記録されます。
図 12: キーストロークをログに記録するレジストリキー
収集されたデータは Base64 エンコードされ、inf() メソッドによって抜き出し用にフォーマットされます。
図 13: inf() メソッドのスニペット
図 14: 抜き出し用にフォーマットされたデータ
今回の報告では、njq8 による njRAT のバージョン 0.7d を詳しく調べました。
図 15: njRAT v0.7d の「About」情報
njRAT のアプリケーションは、攻撃者がペイロードを作成し、感染したマシンとやり取りするためのわかりやすいインターフェイスを提供しています。
ビルダーにはバックドアのペイロードをカスタマイズするオプションも用意されています。
図 16: njRAT ビルダー
感染したマシンはダッシュボードから管理できます。
図 17: njRAT のダッシュボード
攻撃者が利用できるオプションには以下のようなものがあります。
図 18: njRAT の機能
「Manager」コンポーネントを使用すると、ユーザーはファイル、プロセス、接続、レジストリキー、またはサービスの変更や削除が行えます。リモートシェルの起動も可能です。
図 19: njRAT の「Manager」画面
「Keylogger」オプションは、抜き取ってキャプチャしたすべてのキーストロークを表示します。
図 20: njRAT がログに記録したキーストロークを表示する様子
「Open Chat」は攻撃者と被害者との間でのチャット画面を開きます。
図 21: njRAT のチャット機能
クライアントマシンとの連携動作のため、.NET でコンパイルされた Portable Executable(PE)ファイルが C2 サーバーから配信されます。この悪意のあるコンポーネントは、検知を回避するために被害者のレジストリに保存されます。
図 22: レジストリに保存される PE ファイル
上図に示したレジストリキーは、以下のファイル名と機能に対応しています。
- b88ece4c04f706c9717bbe6fbda49ed2 - pw.dll - パスワードの取得
- 2681e81bb4c4b3e6338ce2a456fb93a7 - sc2.dll - リモートデスクトップ
- c4d7f8abbf369dc795fc7f2fdad65003 - cam.dll - リモートカメラ
- 2ff6644f405ebbe9cf2b70722b23d64b - mic.dll - リモートマイク
- 8e78a69ca187088abbea70727d268e90 - ch.dll - チャット機能
攻撃者は必要に応じて njRAT のバックドアをアンインストールすることもできます。これにより、ドロップされたファイルや作成されたレジストリキーがすべて削除され、感染の痕跡が完全に消去されます。
njRAT の蔓延状況
njRAT は出現から 10 年近くになりますが、脅威環境において最もよく見られるバックドアツールの 1 つであり続けています。njRAT に関するチュートリアルや YouTube 動画が数多く存在するため、すべてのスキルレベルのユーザーがツールにアクセスしやすくなっています。また、確かな機能セットを備えていることに加えて、Microsoft .NET Framework を使用して開発されているため、.NET 難読化ツールが利用しやすいという利点もあります。
時間の経過とともに njRAT ツールの修正版がいくつかリリースされ、追加の機能を提供しています。このバックドアの人気の亜種には以下のものがあります(「全種類集めよう!」と聞こえてきそうですね)。
- njRAT 0.7d Danger Edition
- njRAT 0.7d Golden Edition
- njRAT 0.7d Green Edition
- njRAT Lime Edition
図 23: njRAT 0.7d Danger Edition
図 24: njRAT 0.7d Danger Edition の追加機能
図 25: njRAT 0.7d Golden Edition
図 26: njRAT 0.7d Green Edition
YARA ルール
以下の YARA ルールは、この記事で説明した脅威を捕捉するために BlackBerry の脅威リサーチチームが作成しました。
import "pe"
rule Mal_Win_Backdoor_NjRAT {
meta:
description = "NjRAT backdoor"
author = "BlackBerry Threat Research"
date = "2021-07"
strings:
$s1 = "Software\\Microsoft\\Windows\\CurrentVersion\\Run" wide
$s2 = "[ENTER]" wide
$s3 = "netsh firewall add allowedprogram" wide
$s4 = "cmd.exe /c ping 0 -n 2 & del" wide
$s5 = "SEE_MASK_NOZONECHECKS" wide
$s6 = "apateDNS" wide
$s7 = "TiGeR-Firewall" wide
$s8 = "processhacker" wide
$s9 = "Download ERROR" wide
$s10 = "Update ERROR" wide
$s11 = "ToBase64String" ascii
$s12 = "Monitor" ascii
$s13 = "get_Info" ascii
$s14 = "TcpClient" ascii
$s15 = "get_Client" ascii
$s16 = "get_ProcessName" ascii
$s17 = "get_CtrlKeyDown" ascii
$s18 = "get_Application" ascii
$s19 = "get_WebServices" ascii
$s20 = "GetAntiVirus" ascii
$s21 = "USB_SP" ascii
condition:
// all strings
all of them and
// 32bit PE file
pe.is_32bit() and
// .NET compiled
pe.imports("mscoree.dll", "_CorExeMain") and
// unsigned binary
pe.number_of_signatures == 0 and
// with three sections
pe.number_of_sections == 3
|
侵入の痕跡(IOC)
作成されるファイル:
- C:\%USERNAME%\svchost.exe
- C:\Users\%USERNAME%\AppData\Local\Temp\tools.exe
- C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\6825da1e045502b22d4b02d4028214ab.exe
作成されるレジストリキー:
- HKEY_CURRENT_USER\
値の名前: di
値のデータ: !
- HKEY_CURRENT_USER\SOFTWARE\[A-Za-z0-9]{32}\[kl]
例 HKEY_CURRENT_USER\SOFTWARE\6825da1e045502b22d4b02d4028214ab\
値の名前: [kl]
値のデータ: <ログに記録されたキーストローク>
- HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
値の名前: 6825da1e045502b22d4b02d4028214ab
値のデータ: "C:\Users\Analyst\AppData\Local\Temp\server.exe" ..
- Computer\HKEY_CURRENT_USER\Environment
値の名前: SEE_MASK_NOZONECHECKS
値のデータ: 1
ミューテックス:
- [A-Za-z0-9]|
例 6825da1e045502b22d4b02d4028214ab
IP:
|
BlackBerry によるサポート
もしnjRATマルウェアのような脅威にさらされているなら、BlackBerry にお任せください。現在 BlackBerry 製品を利用していなくても問題ありません。
BlackBerry の インシデント対応チーム は、世界的に活躍するコンサルタントから構成され、ランサムウェアや持続的標的型攻撃(APT)など、さまざまなインシデントへの対応と封じ込めのサービスを専門としています。
弊社はグローバルコンサルティングチームを常に待機させており、ご希望があれば、24 時間サポートと現地支援を提供できます。次の URL からご相談ください。 https://www.blackberry.com/ja/jp/forms/enterprise/contact-us