Beep というスティルス・マルウェア:未完成だが検知回避のフルセットを備える

New stealthy ‘Beep’ malware focuses heavily on evading detection

2023/02/14 BleepingComputer — 先週に、Beep という新しいステルス・マルウェアが発見されたが、セキュリティ・ソフトウェアによる分析/検出を回避するための、数多くの機能を備えていることが明らかになった。ファイル・スキャンと悪意のコンテンツの検出のためのオンライン・プラットフォームである VirusTotal に、このマルウェアのサンプルが次々とアップロードされた後に、Minerva のアナリストが特定することになった。現時点の Beep は開発中であり、いくつかの重要な機能が欠けているが、脅威アクターたちは侵害したデバイスに、さらなるペイロードをダウンロードしてリモートで実行している。


新たなインフォ・スティーラーの登場

Beep は情報窃取型マルウェアであり、ドロッパー/インジェクター/ペイロードという、3つの独立したコンポーネントを用いている。

ドロッパー (big.dll) は、AphroniaHaimavati 値を持つ新しいレジストリ・キーを作成し、その中に base64 でエンコードされた PowerShell スクリプトを取り込んでいる。この PowerShell スクリプトは、Windows のスケジュール・タスクを用いて、13分ごとに起動される。

このスクリプトが実行されると、データがダウンロードされ、それを取り込んだ AphroniaHaimavati.dll というインジェクターが起動される。

このインジェクターは、ホスト上で実行されているアンチウイルス・ツールの検出を回避するために、アンチ・デバッグ/アンチ VM などの各種の技術を用いている。そして、プロセスの空洞化を悪用して正規のシステム・プロセス (WWAHost.exe) へと、ペイロードを注入するコンポーネントである。

プライマリ・ペイロードは、感染させたマシンからデータを収集/暗号化し、C2 サーバへと送信しようとする。Minerva の分析では、ハードコードされた C2 アドレスはオフラインだったが、このマルウェアは 120回の試行錯誤を行いながら接続を試みまたという。

Collecting data from the breached system (Minerva)

マルウェアの解析には限界があったが、Minerva はサンプルに含まれる C2 コマンドをトリガーとする、以下の機能を確認できた。

  • balancer – not implemented yet
  • init – not implemented yet
  • screenshot – appears to collect the process list
  • task – not implemented yet
  • destroy – not implemented yet
  • shellcode – executes additional shellcode
  • dll – executes a dll file
  • exe – executes an .exe file
  • Additional – collects additional info
  • knock_timeout – changes C&C “keep-alive” intervals
検出の回避

Beep マルウェアの特徴は、セキュリティ・ソフトウェアや研究者による検出や分析を回避するために、実行フロー全体で複数の手法を使用している点である。

これらの回避技術は、以下のように整理できる。

  • 動的な文字列の難読化:重要な文字列を隠蔽し、16 Byte をメモリにコピーする。Beep は必要なときに、xor/sub/add/not アセンブリ命令を用いて、それらの難読化を解除する。
  • システム言語チェック:Beepは デフォルトのシステム言語をチェックし、ロシア語/ウクライナ語/ベラルーシ語/タジク語/スロベニア語/グルジア語/カザフ語/ウズベク語 (キリル文字) が検出されると終了する。
  • IsDebuggerPresent API 関数のアセンブリ実装: ユーザー・モード・デバッガーが、現在のプロセスをデバッグしているかどうかをチェックする。
  • NtGlobalFlag フィールドのアンチ・デバッギング: デバッガーによるプロセス作成の有無を判断する。
  • RDTSC 命令:VM 上での実行を判断するために、リセット以降の CPU ティックを判断する。
  • スタック・セグメント・レジスタ:プログラムに対するトレースの有無を検出する。
  • CPUID anti-vm:Hypervisor Brand 文字列を取得し、’VMware’ という単語の有無をチェックする。
  • VBOX レジストリキー・アンチvm:VM 関連のレジストリ・キーの存在をチェックする。
  • Beep API function anti-sandbox:’Sleep API function’ に代わるものである、マルウェアの実行を遅延させながら、スピーカーでビープ音を発生させ (アラート可能な待機) 、サンドボックスでの検出を回避する。
String deobfuscation (Minerva)

上記以外にも、このインジェクター・コンポーネントには、以下のような回避技術が実装されている。

  • INT 3 アンチ・デバッギング:デバッガーの動作を強制的に停止させるための例外処理を生成する。
  • INT 2D アンチ・デバッギング:デバッガーを強制的に停止させるための例外処理を発生させる。
  • CheckRemoteDebuggerPresent() API アンチ・デバッギング:現在のプロセスに対するデバッガ・アタッチの有無を判断する。
  • IsDebuggerPresent() API アンチ・デバッギング:現在のプロセスに対する、ユーザー・モード・デバッガーの有無を判断する。
  • ProcessDebugPort アンチ・デバッグ:プロセス・デバッガのポート番号を決定する。
  • VirtualAlloc()/GetWriteWatch() アンチ・デバッグ:メモリに書き込まれたページを追跡し、デバッガーとフックを検出する。
  • OutputDebugString() アンチ・デバッギング:コール・リターン結果に依存するデバッガ検出テクニック。
  • QueryPerformanceCounter()/GetTickCount64() アンチ・デバッギング:命令と実行の間の遅延を測定し、システム上でのデバッガーの動作を判断する。

Beep は、データ窃取とコマンド実行のための、完全な機能セットを完成させる前に、複数のアンチ解析メカニズムを実装しており、回避に重点を置いたマルウェアの一例と言えるだろう。当面の間、野放し状態での活動は制限されているが、Beep は今後において、注意すべき脅威となる可能性を持つ。

同じく 2023/02/14 のポストで紹介している、多機能マルウェア Swiss Army knife も強力そうですが、3つの独立したコンポーネントであるドロッパー/インジェクター/ペイロードで構成される Beep は、その目的が明確ですね。現時点では未実装の回避策が機能し始めると、いったい、どうなるのだろうと、不安になってしまいます。以下のリストは、最近のマルウェア関連の記事となります。どれも、かなり手強そうです。

2023/02/11:MagicWeb:ロシアの Nobelium が開発
2023/02/07:Mirai ベースの Medusa ボットネット
2023/01/30:Titan Stealer という情報スティーラー
2023/01/29:Gootkit は SEO ポイズニング・マルウェア
2023/01/25:Python に PY#RATION というマルウェア

%d bloggers like this: