BITSLOTHの概要
BITSLOTHは、新たに発見されたWindowsバックドアで、コマンド&コントロールメカニズムとしてBITS(Background Intelligent Transfer Service)を活用しています。 BITSLOTHは、今年の夏初めにLATAM地域内に侵入した際に発見されました。 このマルウェアは、私たちの知る限り公開されておらず、マルウェアの背後にいる人物は明らかではありませんが、VirusTotalにアップロードされた個別のバージョンの追跡に基づいて、数年前から開発が進められてきました。
本書の公開時点でのバックドアの最新のイテレーションには、キーロギングや画面キャプチャ機能などの 35 ハンドラ機能があります。 さらに、BITSLOTHには、検出、列挙、およびコマンドライン実行のためのさまざまな機能が含まれています。 これらの機能に基づいて、このツールは被害者からデータを収集するために設計されていると評価します。
重要なポイント
- BITSLOTHは新たに発見されたWindowsバックドアです
- BITSLOTHは、コマンドアンドコントロール通信にMicrosoftの組み込み機能であるバックグラウンドインテリジェント転送サービス(BITS)を使用しています
- BITSLOTHには、検出/列挙、実行、および収集の目的で使用される多数のコマンドハンドラがあります
- バックドアには、作成者が中国語のネイティブスピーカーであることと一致するロギング関数と文字列が含まれています
ディスカバリ
私たちのチームは、REF8747中の6月25日にサーバー環境にインストールされたBITSLOTHを観測しましたが、これは南米政府の外務省への侵入でした。 この侵入は、感染したエンドポイントの1つでPSEXECが実行されたことにまでさかのぼります。 攻撃者は、BITSLOTHを除くほとんどの操作で、公開されている多数のツールを使用しました。
主要な実行メカニズムの1つは、RINGQと呼ばれるシェルコードロードプロジェクトを通じて行われました。 DONUTLOADERと同様に、RINGQは任意のWindows実行可能ファイルを変換し、ファイル(main.txt)に配置するカスタムシェルコードを生成します。 このシェルコードは復号化され、メモリ内で実行されます。 この手法は、一部のマルウェア対策製品のハッシュ ブロックリストまたは静的署名に依存するバイパス防御に使用されます。
RINGQ が IOX ポート フォワーダのロードに使用されていることを確認しました。 注:下の画像のキーは、「whoami」の16進数変換です。
さらに、攻撃者はSTOWAWAYユーティリティを使用して、HTTP経由で暗号化されたトラフィックをC2サーバーにプロキシしました。 プロキシツール、トンネラー、およびリダイレクタは、侵入の責任者である敵を隠すために、侵入時によく使用されます。 これらのツールは、内部ネットワーク制御をバイパスする機能、端末インターフェイスを提供する機能、暗号化機能、ファイル転送オプションなど、さまざまな機能を敵対者に提供します。
最初のアクセス後、攻撃者は横方向に移動し、BITSLOTHをDLL(flengine.dll
)の形でProgramDataディレクトリ内にドロップしました。 その後、俳優は音楽制作プログラムFLStudio(fl.exe
)を実行しました。 自己注入アラートに関連する観測されたコールスタックに基づいて、脅威アクターが FLStudioの署名付きバージョンを使用した従来のサイドローディング手法を使用したことを確認しました。
c:\windows\syswow64\ntdll.dll!0x770841AC
c:\windows\syswow64\ntdll.dll!0x7709D287
c:\windows\syswow64\kernelbase.dll!0x76ED435F
c:\windows\syswow64\kernelbase.dll!0x76ED42EF
Unbacked!0x14EAB23
Unbacked!0x14EA8B6
c:\programdata\pl studio\flengine.dll!0x74AD2F2E
c:\programdata\pl studio\fl.exe!0xDB3985
c:\programdata\pl studio\fl.exe!0xDB3E5E
c:\programdata\pl studio\fl.exe!0xDB4D3F
c:\windows\syswow64\kernel32.dll!0x76B267F9
c:\windows\syswow64\ntdll.dll!0x77077F4D
c:\windows\syswow64\ntdll.dll!0x77077F1B
このコールスタックは、プロセスインジェクションアラートとともに生成され、研究者は読み取り/書き込み/実行(RWX)ページ保護で設定されたメモリ内DLLを抽出することができました。
BITSLOTH overview
私たちの分析では、2021年12月以降の開発記録を示すいくつかの古いBITSLOTHサンプルが見つかりました。 このプロジェクトでは、マルウェア開発者は注目すべき用語を選択し、BITSLOTHを Slaver
コンポーネント、コマンド&コントロールサーバーを Master
コンポーネントと呼んでいます。 以下は、BITSLOTHにリンクされたPDBファイルパスの1つの例です。
BITSLOTHは、制御フローに関する難読化や文字列の暗号化を一切使用していません。
古いサンプルと最近のサンプルの両方に、ログ記録とデバッグの目的で使用される文字列が含まれています。 起動時の例として、読み取り専用セクション (.rdata
) で参照される文字列があります。
この簡体字中国語のワイド文字文字列は、次のように変換されます。
Note: There is already a program running, do not run it again…
BITSLOTHに含まれるこれらの小さなスニペットは、機能の開発と優先順位付け、およびオペレーターの指示と思われるものに光を当てるのに役立ちます。 最新バージョンでは、BITSLOTHが被害者の環境で動作する特定の時間を制御するために、開発者によって新しいスケジューリングコンポーネントが追加されました。 これは、 EAGERBEEなどの他の最新のマルウェアファミリーで観察された機能です。
BITSLOTHコード解析
BITSLOTHは、次のようなさまざまな機能を備えたバックドアです。
- コマンドの実行と実行
- ファイルのアップロードとダウンロード
- 列挙と検出の実行
- キーロギングと画面キャプチャによる機密データの収集
ミューテックス
BITSLOTHは、各サンプル内でハードコードされたミューテックス(Global\d5ffff77ff77adad657658
)を使用して、一度に1つのインスタンスのみが実行されるようにします。
通信
BITSLOTHは従来のクライアント/サーバーアーキテクチャを採用しており、開発者はクライアントを Slaver
コンポーネント、コマンド&コントロールサーバー(C2)を Master
コンポーネントと呼んでいます。 開発者は、各サンプルに C2 サーバーの IP/ポートをフロントロード文字列 (rrrr_url
) で埋め込みます。 この文字列は、メモリ内で実行されているC2構成自体を識別するためのキーとして機能し、C2サーバーを更新するときに使用されます。
以下は、私たちのチームが観察したいくつかのサンプルの設定であり、脅威アクターは内部IP範囲と外部IP範囲の両方を設定します。
rrrr_url216.238.121[.]132:8443
rrrr_url192.168.1[.]125:8443
rrrr_url192.168.1[.]124:8443
rrrr_url45.116.13[.]178:443
BITSLOTHの特徴の1つは、C2に バックグラウンドインテリジェント転送サービス (BITS)を使用することです。 この機能は、2台のマシン間でのファイルのネットワーク転送を容易にするように設計されていますが、複数の国家支援グループによって 悪用 されており、組織に対してレーダーの下を飛び続けています。 このメディアは、多くの組織が依然としてBITSネットワークトラフィックの監視と異常なBITSジョブの検出に苦労しているため、敵対者にとって魅力的です。
Windowsには、バックグラウンドインテリジェント転送サービス(BITS)と呼ばれるシステム管理機能があり、HTTP WebサーバーまたはSMB共有へのファイルのダウンロードとアップロードを可能にします。 BITSサービスは、転送の一時停止/再開機能、ネットワーク中断の処理など、ファイル転送プロセス中に複数の機能を採用しています。BITSトラフィックは通常、ソフトウェアの更新に関連付けられているため、信頼できると誤って暗示されています。 多くの組織は、BITSネットワークトラフィックの可視性を欠いており、これは魅力的なターゲットです。
BITS API は、 IBackgroundCopyManager インターフェイス を使用して、Windows のコンポーネント オブジェクト モデル (COM) を通じて公開されます。このインターフェイスは、新しいジョブを作成する機能、転送キュー内の既存のジョブを列挙する機能、および転送キューから特定のジョブにアクセスする機能を提供します。
初期化後、BITSLOTHは、次の表示名に一致する被害者のマシン上の既存のBITSジョブをキャンセルします。
WU Client Download
WU Client Upload
WU Client Upload R
これらの名前は、開発者がさまざまな BITS 転送ジョブをブレンドして、それぞれの BITS ジョブの種類に関連付けるために使用されます。 既存のジョブをキャンセルすることで、マルウェアの実行をクリーンな状態から操作できます。
以下は、BITS ジョブの種類に一致する Microsoft の定義です。
- BG_JOB_TYPE_DOWNLOAD - ジョブがファイルをクライアントにダウンロードすることを指定します。
- BG_JOB_TYPE_UPLOAD - ジョブがファイルをサーバーにアップロードすることを指定します。
- BG_JOB_TYPE_UPLOAD_REPLY - ジョブがファイルをサーバーにアップロードし、サーバー・アプリケーションから応答ファイルを受け取ることを指定します。
既存のジョブをキャンセルすると、MAC アドレスとオペレーティング システム情報が取得され、グローバル変数に格納されます。 新しいスレッドが作成され、自動開始機能が設定されます。 このスレッド内で、新しい BITS ダウンロード ジョブが (Microsoft Windows
) という名前で作成されます。
このダウンロード ジョブは、宛先 URL を http://updater.microsoft[.]com/index.aspx
に設定します。 このドメインはルーティングできませんが、BITSLOTHは良性のドメインを隠れ蓑として使用してこのBITSジョブを偽装し、転送状態が変更されたときに SetNotifyCmdLine を使用してマルウェアを実行します。
興味深いことに、このユニークなツールマークにより、このファミリーが数年前から流通していることを示す追加のサンプルに軸足を移すことができました。
この時点で、マルウェアは Microsoft Windows
という名前のBITSジョブを介して永続性で構成されました。 以下は、通知コマンドラインがBITSLOTHの場所(C:\ProgramData\Media\setup_wm.exe
に設定されている)を示すこのジョブの設定のスクリーンショットです。
BITSLOTHがアクティブになると、 WU Client Download
ジョブを使用してC2サーバーからの指示の要求を開始します。 この要求 URL は、MAC アドレスとハードコードされた文字列 (wu.htm
) を組み合わせて生成されます。 以下はURLの例です。
https://192.168.182.130/00-0C-29-0E-29-87/wu.htm
このリクエストに応答して、マルウェアは、ジョブの一意のID、ハンドラのコマンドID、および応答トークンを含む12バイトの構造をC2サーバーから受け取ります。 これらのファイル転送のやり取りを通じて、被害者のマシンからの一時ファイルが送受信されるデータを保持するためのプレースホルダーとして使用され、BITSLOTHはランダムな文字が追加された文字(wm
)で始まるファイル名を使用します。
コマンド機能
BITSLOTHは、 35 関数を持つコマンドハンドラを使用して、被害者のマシンで実行するべき特定のアクションを処理します。 このマルウェアには、HTTPまたはHTTPSで構成するオプションがあり、ハードコードされた1バイトXOR(0x2
)を使用して、C2サーバーからの受信命令を難読化します。 収集された被害者データを含む送信リクエストには、マルウェア自体による追加の保護はなく、プレーンテキストで送信されます。
迅速に行動するために、私たちのチームは 、SafeBreach Labs がリリースしたBITSサーバーの便利なPython 実装 を活用しました。C2 IPをVM内のループバックアドレスに設定することで、ネットワークトラフィックのイントロスペクションを行うことができました。
すべてのハンドラは、主要な関数を実行してから、ハンドラから返されたデータをローカルの一時ファイルに書き込むという同様のアプローチで動作します。 これらの一時ファイルは、 WU Client Upload
と呼ばれる BITS アップロード ジョブにマップされます。 各ハンドラは、独自の文字列形式を使用して、一意のリンク先 URL を作成します。 URL の末尾にある各ファイル名は、ホストから収集されるデータのタイプ (プロセスの P.bin
やサービスの S.bin
など) を表す 1 文字を使用します。
http://192.168.182.130/00-0C-29-0E-29-87/IF/P.bin
次の例は、文字列の書式設定を使用したプロセス列挙ハンドラーと、このデータが BITS アップロード ジョブにリンクされる方法を示すスクリーンショットの例です。
流出したデータへのこのリンクは、BITS アップロード ジョブを直接表示することでも確認できます。 以下のスクリーンショットでは、アップロードの宛先URL(C2サーバー)と、ジョブにリンクされた一時ファイル(wm9F0C.tmp
)を確認できます。
一時ファイルを見ると、被害者のホストから収集されたプロセス情報を確認できます。
アップロード ジョブが作成されるとすぐに、キャプチャされたデータを含む BITS_POST 要求を通じてデータがネットワーク経由で送信されます。
コマンド処理テーブル
コマンド ID | 説明 |
---|---|
0 | WTSEnumerateProcessesW を使用して実行中のプロセスを収集する |
1 | EnumServicesStatusW 経由で Windows サービスを取得する |
2 | systeminfo コマンドによるシステム情報の取得 |
3 | EnumWindowsを使用してすべての最上位ウィンドウを取得する |
5 | ファイルリストの収集 |
6 | C2サーバーからファイルをダウンロード |
7 | C2サーバーへのファイルのアップロード |
10 | 自身を終了させる |
11 | 通信モードを HTTPS に設定する |
12 | 通信モードをHTTPに設定する |
13 | 永続性の削除 |
14 | 永続性を再構成する |
15 | BITS ダウンロードジョブのキャンセル (WU Client Download ) |
16 | 永続性を削除して自身を削除する |
17 | スレッド構成 |
18 | ハンドラ #2 の重複 |
19 | ファイルパスに基づいてファイルを削除する |
20 | ファイルパスに基づいてフォルダを削除する |
21 | stdin/stdout リダイレクトを使用してターミナルシェルを起動します |
22 | ターミナルハンドラをリセットします(#21) |
23 | Windowsのtreeコマンドを実行します。 |
24 | BITSLOTHをアップデート、旧バージョンを削除 |
25 | ExitWindowsExを使用してマシンをシャットダウンします |
26 | ExitWindowsExを使用してマシンを再起動します |
27 | ExitWindowsExを使用してマシンからユーザーをログオフします |
28 | プロセス識別子 (PID) に基づくプロセスの終了 |
29 | msinfo32 コマンドで追加情報を取得します |
30 | ShellExecuteWを介して個々のファイルを実行する |
34 | CreateDirectoryW を使用して新しいディレクトリを作成する |
41 | C2サーバーへのデータのアップロード |
42 | capGetDriverDescriptionW を使用してキャプチャ ドライバーを確認します |
43 | 被害者のマシンデスクトップのスクリーンショットを撮る |
44 | 被害者のマシンからのキーストロークを記録する |
45 | スクリーンショット画像の録画を停止する |
46 | キーロガー機能の停止 |
バックドア機能
BITSLOTHには、攻撃者が被害者の環境内で活動するための幅広い侵害後の機能が含まれています。 より重要な機能に焦点を当て、それらをさまざまなカテゴリにグループ化します。
Discovery/enumeration
BITSLOTHハンドラの一部は、被害者のマシンからのデータの取得と列挙に重点を置いています。 これには以下が含まれます。
- WTSEnumerateProcessesW によるプロセス情報の取得
- EnumServicesStatusW による Windows サービスの収集
- コールバック関数を使用して EnumWindows を使用してすべての最上位ウィンドウを列挙する
systeminfo
やmsinfo32
などのWindowsユーティリティによるシステム情報の取得
多くのハンドラでは、ロケール バージョンは chs
(中国語 - 簡体字) に設定されています。
BITSLOTHには、ファイルリストの取得とディレクトリツリー検索の実行に関連付けられたカスタム列挙関数がいくつかあります。 ファイルリストハンドラは、演算子からカスタムパラメータを受け取り、関心のある特定のフォルダの場所をターゲットにします。
- GET_DESKDOP → CSIDL_DESKTOPDIRECTORY (デスクトップ)
- GET_BITBUCKET -> CSIDL_BITBUCKET (ごみ箱)
- GET_PERSONAl -> CSIDL_MYDOCUMENTS (マイドキュメント)
BITSLOTHには、Windows ツリー ユーティリティを使用して、すべてのファイルについてマシン上のディレクトリ/ファイルリスト全体を収集する機能もあります。 このハンドラは、各ドライブ文字のアルファベットをループし、データは aghzyxklg
という名前の一時ファイルにローカルに保存されます。
その後、ツリーデータは圧縮され、.ZIP拡張子を付けてC2サーバーに送信されます。 以下は、収集されたデータの例です。 このデータは、機密ファイルを特定したり、ターゲット環境に関するより多くのコンテキストを提供したりするのに役立ちます。
収集
収集に関しては、積極的に情報を収集するために使用されるハンドラがいくつかあります。 これらは、デスクトップからスクリーンショットをキャプチャし、キーロギング機能を実行することを中心としています。
BITSLOTHは、キャプチャ記録デバイスを識別するために使用される軽量な機能を実装しており、これはWindows API(capGetDriverDescriptionW)を使用してカメラをチェックする手法のようです。
BITSLOTHには、オペレーターから提供されたパラメータに基づいてスクリーンショットを撮る機能があります。 この関数への入力では、セパレータ(||
)を使用し、演算子はキャプチャ間隔の秒数とキャプチャカウントを提供します。 イメージは、ハードコードされた名前 ciakfjoab
の BMP ファイルとして保存され、 .ZIP
アーカイブを使用して DEFLATE アルゴリズムで圧縮されます。 これらのタイムスタンプ付きのzipアーカイブは、C2サーバーに送信されます。
ハンドラーは、Gdi32.dll
の CreateCompatibleBitmap や BitBlt などの一般的なスクリーンショット API を利用します。
キーストロークを記録するために、BITSLOTHは GetAsyncKeyState/GetKeyStateを使用してキーの押下を監視するという従来の手法を使用します。 ハンドラには、キーロギングを実行する秒数の引数があります。 このデータも .ZIP
ファイルに圧縮され、C2 サーバーに送信されます。
実行/メンテナンス
BITSLOTHは、メンテナンスとファイル実行に関する複数の機能に加えて、次のような標準的なバックドア機能も備えています。
- ShellExecuteWを介してファイルをスタンドアロンで実行する機能
- コマンドを実行し、パイプを介してデータを読み取るWindows端末機能
- ディレクトリの作成、再起動の実行、マシンのシャットダウン、プロセスの終了
- C2サーバー間でファイルのアップロードとダウンロードを実行
- 通信モードなどのBITSLOTH設定の変更、C2 URLの更新、キーロギング/スクリーンショット機能のオフ
BITSLOTH pivots
BITSLOTHは積極的に展開されているようです。 私たちは、侵入時に使用されたのと同じSSL証明書を持つ同じポート(8443
)を使用して、別のBITSLOTH C2サーバー(15.235.132[.]67
)を特定しました。
While it’s not exactly clear who’s behind BITSLOTH, there was a large amount of activity of VirusTotal uploads occurring on December 12, 2021. With around 67 uploads over 24 hours from one submitter (1fcc35ea
), we suspect someone linked to this project was validating detections, making modifications, and uploading different versions of BITSLOTH to VirusTotal. One sample was packed with VMProtect, others stripped of functionality, some uploads were debug builds, etc.
あれからずいぶん時間が経ちましたが、最近の侵入でこの家族が現れるのを見るのは興味深いです。 このマルウェアの背後にある目的が何であれ、このファミリーが長年にわたってレーダーの下に留まっていたのは驚くべきことです。
MITRE ATT&CKによるREF 8747
Elasticは、 MITRE ATT&CK フレームワークを使用して、企業ネットワークに対してAdvanced Persistent Threatが使用する一般的な戦術、手法、手順を文書化しています。
[H4]戦術 戦術は、テクニックまたはサブテクニックの理由を表します。 それは敵の戦術的な目標であり、行動を実行する理由です。
手法
手法は、敵対者がアクションを実行することによって戦術的な目標を達成する方法を表します。
検出REF8747
検知
この侵入セットの分析では、次の検出ルールと動作防止イベントが観察されました。
- BITS ジョブ通知コマンドラインによる永続性
- PPL バイパスによる LSASS アクセス試行
- 署名されていない実行可能ファイルからの LSASS アクセス試行
- 不審な親子関係
- 既知のユーティリティ経由での認証情報アクセス
- シェルコードインジェクション
YARAシグネチャー
- Windows.Hacktool.Mimikatz
- Windows.Trojan.BITSloth
- Windows.Hacktool.Iox
- Windows.Hacktool.Rubeus
- Windows.Hacktool.Certify
- Windows.Hacktool.RingQ
- Windows.Hacktool.GodPotato
- Multi.Hacktool.Stowaway
ヤラ
Elasticセキュリティは、このアクティビティを識別するためのYARAルールを作成しました。 以下は、BITSLOTHを識別するためのYARAルールです。
rule Windows_Trojan_BITSLOTH_05fc3a0a {
meta:
author = "Elastic Security"
creation_date = "2024-07-16"
last_modified = "2024-07-18"
os = "Windows"
arch = "x86"
threat_name = "Windows.Trojan.BITSLOTH"
license = "Elastic License v2"
strings:
$str_1 = "/%s/index.htm?RspID=%d" wide fullword
$str_2 = "/%s/%08x.rpl" wide fullword
$str_3 = "/%s/wu.htm" wide fullword
$str_4 = "GET_DESKDOP" wide fullword
$str_5 = "http://updater.microsoft.com/index.aspx" wide fullword
$str_6 = "[U] update error..." wide fullword
$str_7 = "RMC_KERNEL ..." wide fullword
$seq_global_protocol_check = { 81 3D ?? ?? ?? ?? F9 03 00 00 B9 AC 0F 00 00 0F 46 C1 }
$seq_exit_windows = { 59 85 C0 0F 84 ?? ?? ?? ?? E9 ?? ?? ?? ?? 6A 02 EB ?? 56 EB }
condition:
2 of them
}
観測
すべてのオブザーバブルは、ECS形式とSTIX形式の両方で、結合されたzipバンドルで ダウンロード することもできます。
この研究では、次の観測量について議論しました。
Observable | タイプ | 名前 | 参考 |
---|---|---|---|
4a4356faad620bf12ff53bcfac62e12eb67783bd22e66bf00a19a4c404bf45df | SHA-256の | s.dll | BITSLOTH |
dfb76bcf5a3e29225559ebbdae8bdd24f69262492eca2f99f7a9525628006d88 | SHA-256の | 125.exe | BITSLOTH |
4fb6dd11e723209d12b2d503a9fcf94d8fed6084aceca390ac0b7e7da1874f50 | SHA-256の | setup_wm.exe | BITSLOTH |
0944b17a4330e1c97600f62717d6bae7e4a4260604043f2390a14c8d76ef1507 | SHA-256の | 1242.exe | BITSLOTH |
0f9c0d9b77678d7360e492e00a7fa00af9b78331dc926b0747b07299b4e64afd | SHA-256の | setup_wm.exe | BITSLOTH (VMProtect) |
216.238.121[.]132 | IPv4-アドレス | BITSLOTH C2 サーバー | |
45.116.13[.]178 | IPv4-アドレス | BITSLOTH C2 サーバー | |
15.235.132[.]67 | IPv4-アドレス | BITSLOTH C2 サーバー | |
http ://updater.microsoft.com/index.aspx | BITSLOTHファイルインジケータ | ||
updater.microsoft.com | BITSLOTHファイルインジケータ |
参照資料
上記の研究を通じて、以下のことが参照されました。
- https://github.com/SafeBreach-Labs/SimpleBITSServer/tree/master
- https://github.com/T4y1oR/RingQ
- https://github.com/EddieIvan01/iox
- https://github.com/ph4ntonn/Stowaway/
Elastic Security Labsについて
Elastic Security Labsは、Elasticセキュリティの脅威インテリジェンス部門であり、脅威の状況にポジティブな変化をもたらすことに専念しています。 Elastic Security Labsは、新たな脅威に関する一般向けの調査を提供し、戦略的、運用的、戦術的な敵対者の目標を分析し、その調査をElasticセキュリティの組み込み検知および対応機能と統合します。
TwitterでElastic Security Labsをフォロー @elasticseclabs 、 www.elastic.co/security-labs/ の調査結果をご覧ください。