先週、「Beep」という名前の新しいステルス マルウェアが発見されました。このマルウェアには、セキュリティ ソフトウェアによる分析と検出を回避するための多くの機能が備わっています。
このマルウェアは、ファイル スキャンと悪意のあるコンテンツ検出のためのオンライン プラットフォームである VirusTotal に一連のサンプルがアップロードされた後、 Minervaのアナリストによって発見されました。
Beep はまだ開発中であり、いくつかの重要な機能が欠けていますが、現在、脅威アクターが侵害されたデバイスにさらにペイロードをダウンロードしてリモートで実行することを可能にしています。
開発中の新しい情報窃盗犯
Beep は、ドロッパー、インジェクター、ペイロードの 3 つのコンポーネントを使用する情報窃盗マルウェアです。
ドロッパー (「big.dll」) は、base64 でエンコードされた PowerShell スクリプトを含む「AphroniaHaimavati」値を持つ新しいレジストリ キーを作成します。この PowerShell スクリプトは、Windows のスケジュールされたタスクを使用して 13 分ごとに起動されます。
スクリプトが実行されると、データがダウンロードされ、AphroniaHaimavati.dll という名前のインジェクターに保存され、起動されます。
インジェクターは、ホスト上で実行されているウイルス対策ツールからの検出を回避するために、プロセス ハロウイングを介して正当なシステム プロセス (「WWAHost.exe」) にペイロードを挿入するために、さまざまなデバッグ対策技術と仮想マシン対策技術を使用するコンポーネントです。
最後に、プライマリ ペイロードは、侵害されたマシンからデータを収集し、暗号化し、C2 に送信しようとします。 Minerva の分析中、ハードコードされた C2 アドレスはオフラインでしたが、マルウェアは 120 回失敗した後でも接続を試みました。
な
マルウェアの分析には制限がありましたが、Minerva は、C2 コマンドによってトリガーされるサンプル内の次の機能を特定することができました。
- バランサー– まだ実装されていません
- init – まだ実装されていません
- スクリーンショット– プロセス リストを収集するように見えます
- タスク– まだ実装されていません
- destroy – まだ実装されていません
- shellcode – 追加のシェルコードを実行します
- dll – dll ファイルを実行します
- exe – .exe ファイルを実行します
- 追加– 追加情報を収集します
- knock_timeout – C&C の「キープアライブ」間隔を変更します
検出の回避
Beep マルウェアが際立っているのは、実行フロー全体で複数の手法を使用して、セキュリティ ソフトウェアや研究者による検出と分析を回避していることです。
これらの回避手法を以下に要約します。
- 動的文字列解読– 重要な文字列を隠し、16 進バイトをメモリにコピーします。 Beep は、xor/sub/add/not アセンブリ命令を使用して、必要に応じて難読化を解除します。
- システム言語チェック– ロシア語、ウクライナ語、ベラルーシ語、タジク語、スロベニア語、グルジア語、カザフ語、およびウズベク語 (キリル) が検出された場合、ビープはデフォルトのシステム言語をチェックして終了します。
- IsDebuggerPresent API 関数のアセンブリ実装– ユーザー モード デバッガーが現在のプロセスをデバッグしているかどうかを確認します。
- NtGlobalFlag フィールドのアンチデバッグ– デバッガーがプロセスを作成したかどうかを判断します。
- RDTSC 命令– リセット後の CPU ティックを決定して、VM で実行されているかどうかを決定します。
- スタック セグメント レジスタ– プログラムがトレースされているかどうかを検出します。
- CPUID anti-vm – ハイパーバイザー ブランド文字列を取得し、「VMware」という単語の一部が含まれているかどうかを確認します。
- VBOX レジストリ キー anti-vm – VM 関連のレジストリ キーの存在を確認します。
- Beep API 関数アンチサンドボックス– 「Sleep API 関数」の代わりに、スピーカーでビープ音を生成し、マルウェアの実行を遅らせて (アラート可能な待機)、サンドボックスの検出を回避します。
上記に加えて、インジェクター コンポーネントは次の回避手法も実装します。
- INT 3 アンチデバッグ– デバッガーの動作を強制的に停止させる例外を生成します。
- INT 2D アンチデバッグ– デバッガーの動作を強制的に停止させる例外を生成します。
- CheckRemoteDebuggerPresent() API アンチデバッグ– デバッガーが現在のプロセスに接続されているかどうかを判断します。
- IsDebuggerPresent() API アンチデバッグ– ユーザー モード デバッガーが現在のプロセスをデバッグしているかどうかを判断します。
- ProcessDebugPort アンチデバッグ– プロセスのデバッガーのポート番号を決定します。
- VirtualAlloc() / GetWriteWatch() アンチデバッグ– メモリに書き込まれたページを追跡して、デバッガとフックを検出します。
- OutputDebugString() アンチデバッグ– 呼び出しの戻り結果に依存するデバッガー検出手法。
- QueryPerformanceCounter() および GetTickCount64() アンチデバッグ– 命令と実行の間の遅延を測定して、デバッガーがシステムで実行されているかどうかを判断します。
Beep は回避に重点を置いたマルウェアの例であり、データの盗難とコマンドの実行のための完全な機能セットを完成させる前に、複数の分析防止メカニズムを実装しています。
野生での活動は当面の間制限されたままですが、Beep は注意すべき今後の脅威になる可能性があります。
Comments