セキュリティ研究者らは、ClearFakeキャンペーンでAmatera Stealerを配布するために使われている新たなマルウェアローダー「WordlistLoader」を確認しました。
このローダーは、悪意あるシェルコードを一見普通の英単語のリストの中に隠すことで、攻撃者がペイロードを検出しにくくする手口を取っています。
最近のClearFakeの活動では、侵害された正規のウェブサイトを使って偽のCAPTCHA表示を出す手法が使われています。訪問者が「私はロボットではありません」のボックスをクリックすると、コピーしたコマンドをWindowsの「ファイル名を指定して実行」ダイアログに貼り付けるよう指示されます。
このClickFixと呼ばれる手口により、被害者はリモートのWebDAV共有からWordlistLoaderをダウンロードするコマンドを実行させられます。
このコマンドはconhostを使って隠れたコマンドプロンプトのプロセスを起動し、rundll32を使ってローダーのRunエクスポートを実行します。
この配布パターンは最近のAmateraキャンペーンに似ていますが、従来のPythonベースのローダーに代わって新しいWordlistLoaderコンポーネントが使われている点が異なります。
WordlistLoaderはAmateraが起動される前段階として機能します。その主な役割は、一見無害な英単語の並びとして隠されたシェルコードを再構築することです。
このローダーには、ビルドごとに固有の256個の単語からなるリストが含まれています。各単語はリスト内の位置に基づいて1バイトの値に対応付けられます。例えば、最初の単語はバイト値0x00を表し、144番目の位置にある単語は0x90を表します。
マルウェアは符号化された各単語を読み取り、ワードリスト内で対応する位置を見つけ出し、そのバイトを新しいバッファに書き込みます。
この処理が完了すると、バッファは実行可能なシェルコードになります。研究者らは、英単語の代わりにUUID文字列を使う亜種も発見しています。
この亜種では、各UUIDが16バイト分のシェルコードを表しており、WindowsのUuidFromStringA関数でデコードされます。
再構築したペイロードを実行する前に、WordlistLoaderは名前付きイベントを使って、別のコピーがすでに動作していないかを確認します。
また、ロードされたモジュールの関数をディスク上に保存されたクリーンなコピーと比較することで、ユーザーモードのフックの除去も試みます。改ざんされたジャンプ命令を検知した場合は、元のバイト列に復元します。
さらにこのローダーは、Windowsのイベントトレーシング(ETW)を回避します。ntdll!NtTraceEventにハードウェアブレークポイントを設定し、ベクター例外ハンドラを使って実行を成功を返すだけのスタブへリダイレクトします。
これにより、明らかなエラーメッセージを出すことなく、セキュリティ用のテレメトリが生成されるのを防げます。
復号されたシェルコードには、次のペイロードを復号する前に遅延ループを繰り返して時間を浪費する、エミュレーション対策のルーチンが含まれています。その後、Amateraをメモリ上でリフレクティブにロードします。
Amatera(別名ACR Stealer)は現在も活発に開発が続けられています。gendigitalによると、確認されている最新バージョン4.3.3-alpha1では、制御フローの難読化が強化されているほか、APIハッシュ処理のルーチンが変更され、リバースエンジニアリングを妨げるよう設計された新たな文字列暗号化ロジックが追加されているとのことです。
注: IPアドレスおよびドメインは、誤って名前解決やハイパーリンク化されるのを防ぐため、意図的に無害化表記([.]など)にしています。再度有効な形式に戻す作業は、MISP、VirusTotal、あるいは自組織のSIEMなど、管理された脅威インテリジェンス基盤の中でのみ行ってください。
ANY.RUNのブラウザ内データ検査で、SOCの検知・調査・対応をより高速に-> ANY.RUNでSOCを強化する
翻訳元: https://cyberpress.org/wordlistloader-conceals-amatera-shellcode/