Seth GoodwinDaniel Stepanic

BITSとバイト:新たに特定されたバックドアであるBITSLOTHの分析

Elastic Security Labsは、C2にバックグラウンドインテリジェント転送サービス(BITS)を活用する新たなWindowsバックドアを特定しました。このマルウェアは、REF8747として追跡されている最近のアクティビティグループで発見されました。

19分で読めますマルウェア分析
BITSとバイト: 新たに特定されたバックドア、BITSLOTHを分析

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説明
0WTSEnumerateProcessesW を使用して実行中のプロセスを収集する
1EnumServicesStatusW 経由で Windows サービスを取得する
2systeminfoコマンドによるシステム情報の取得
3EnumWindowsを使用してすべての最上位ウィンドウを取得する
5ファイルリストの収集
6C2サーバーからファイルをダウンロード
7C2サーバーへのファイルのアップロード
10自身を終了させる
11通信モードを HTTPS に設定する
12通信モードをHTTPに設定する
13永続性の削除
14永続性を再構成する
15BITS ダウンロードジョブのキャンセル (WU Client Download)
16永続性を削除して自身を削除する
17スレッド構成
18ハンドラ #2 の重複
19ファイルパスに基づいてファイルを削除する
20ファイルパスに基づいてフォルダを削除する
21stdin/stdout リダイレクトを使用してターミナルシェルを起動します
22ターミナルハンドラをリセットします(#21)
23Windowsのtreeコマンドを実行します。
24BITSLOTHをアップデート、旧バージョンを削除
25ExitWindowsExを使用してマシンをシャットダウンします
26ExitWindowsExを使用してマシンを再起動します
27ExitWindowsExを使用してマシンからユーザーをログオフします
28プロセス識別子 (PID) に基づくプロセスの終了
29msinfo32コマンドで追加情報を取得します
30ShellExecuteWを介して個々のファイルを実行する
34CreateDirectoryW を使用して新しいディレクトリを作成する
41C2サーバーへのデータのアップロード
42capGetDriverDescriptionW を使用してキャプチャ ドライバーを確認します
43被害者のマシンデスクトップのスクリーンショットを撮る
44被害者のマシンからのキーストロークを記録する
45スクリーンショット画像の録画を停止する
46キーロガー機能の停止

バックドア機能

BITSLOTHには、攻撃者が被害者の環境内で活動するための幅広い侵害後の機能が含まれています。 より重要な機能に焦点を当て、それらをさまざまなカテゴリにグループ化します。

Discovery/enumeration

BITSLOTHハンドラの一部は、被害者のマシンからのデータの取得と列挙に重点を置いています。 これには以下が含まれます。

  • WTSEnumerateProcessesW によるプロセス情報の取得
  • EnumServicesStatusW による Windows サービスの収集
  • コールバック関数を使用して EnumWindows を使用してすべての最上位ウィンドウを列挙する
  • systeminfomsinfo32などのWindowsユーティリティによるシステム情報の取得

多くのハンドラでは、ロケール バージョンは chs (中国語 - 簡体字) に設定されています。

BITSLOTHには、ファイルリストの取得とディレクトリツリー検索の実行に関連付けられたカスタム列挙関数がいくつかあります。 ファイルリストハンドラは、演算子からカスタムパラメータを受け取り、関心のある特定のフォルダの場所をターゲットにします。

  • GET_DESKDOPCSIDL_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.dllCreateCompatibleBitmapBitBlt などの一般的なスクリーンショット 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

検知

この侵入セットの分析では、次の検出ルールと動作防止イベントが観察されました。

YARAシグネチャー

ヤラ

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タイプ名前参考
4a4356faad620bf12ff53bcfac62e12eb67783bd22e66bf00a19a4c404bf45dfSHA-256のs.dllBITSLOTH
dfb76bcf5a3e29225559ebbdae8bdd24f69262492eca2f99f7a9525628006d88SHA-256の125.exeBITSLOTH
4fb6dd11e723209d12b2d503a9fcf94d8fed6084aceca390ac0b7e7da1874f50SHA-256のsetup_wm.exeBITSLOTH
0944b17a4330e1c97600f62717d6bae7e4a4260604043f2390a14c8d76ef1507SHA-256の1242.exeBITSLOTH
0f9c0d9b77678d7360e492e00a7fa00af9b78331dc926b0747b07299b4e64afdSHA-256のsetup_wm.exeBITSLOTH (VMProtect)
216.238.121[.]132IPv4-アドレスBITSLOTH C2 サーバー
45.116.13[.]178IPv4-アドレスBITSLOTH C2 サーバー
15.235.132[.]67IPv4-アドレスBITSLOTH C2 サーバー
http ://updater.microsoft.com/index.aspxBITSLOTHファイルインジケータ
updater.microsoft.comBITSLOTHファイルインジケータ

参照資料

上記の研究を通じて、以下のことが参照されました。

Elastic Security Labsについて

Elastic Security Labsは、Elasticセキュリティの脅威インテリジェンス部門であり、脅威の状況にポジティブな変化をもたらすことに専念しています。 Elastic Security Labsは、新たな脅威に関する一般向けの調査を提供し、戦略的、運用的、戦術的な敵対者の目標を分析し、その調査をElasticセキュリティの組み込み検知および対応機能と統合します。

TwitterでElastic Security Labsをフォロー @elasticseclabswww.elastic.co/security-labs/ の調査結果をご覧ください。

この記事を共有する