TrickBotがWiresharkの更新プログラムを装ったスケジュールタスクでWindows上に永続化

FortiGuardの研究者は、不正な形式のDNSクエリを送信する悪性サンプルを捕捉し、これらをTrickBotの亜種であると特定しました。

主にHTTPを使ったコマンド&コントロール通信を行っていた従来のTrickBotキャンペーンとは異なり、今回の亜種は通信内容をDNSリクエストとレスポンスの中に隠しています。

TrickBotはモジュール型のマルウェアファミリーで、デバイスへの感染後に追加コンポーネントをダウンロードできる仕組みを持っています。この設計により、攻撃者はコマンド実行、PowerShellの操作、モジュールのダウンロード、プロセスインジェクションといった機能を追加できます。

今回分析された新たなサンプルは646464ビットのWindows実行ファイルで、ハッシュ値こそ異なるものの、PEの特徴、起動ルーチン、挙動が一致しており、同一キャンペーンによるものであることを示しています。

このマルウェアは複数の解析対策手法も用いています。Kernel32.dllなどのDLL名を含むハードコードされた文字列を暗号化し、実行時にのみXORや減算といった演算で復号します。

多数の定数値を動的に計算し、読み取り可能なAPI名を保存する代わりに、ハッシュ値を通じてWindows API関数を解決します。

例えば、このマルウェアはハッシュベースのAPIリゾルバーを使ってLoadLibraryAの場所を特定し、その後Kernel32.dllを読み込みます。

この手法により、解析担当者はインポートされた関数や読み取り可能な文字列を単純に調べることができなくなるため、静的検知やリバースエンジニアリングが困難になります。

このTrickBot亜種はWindowsタスクスケジューラを通じて永続化を図ります。パラメータなし、または-uオプションなしで起動されると、このマルウェアは5分ごとに実行され、デバイス起動時にも実行されるスケジュールタスクを作成します。

タスク名は、%AppData%ディレクトリからランダムに選択されたフォルダ名、「autoupdate #」というテキスト、そしてランダムな数字を組み合わせたものになります。

実際に確認された例の一つは「Wireshark autoupdate #72784」で、正規のWiresharkソフトウェアの更新プログラムに見えるよう作られています。

このタスクは-uパラメータを付けてTrickBotの実行ファイルを起動します。マルウェアはSchedule.Service.1のCOMオートメーションオブジェクトを通じてこのタスクを作成し、その名前、アクション、起動トリガー、繰り返し間隔を設定します。

重複するタスクの作成を避けるため、TrickBotはタスク名と実行ファイルのフルパスをNTFSの代替データストリームに保存します。

$TASKストリームにはBase64エンコードされたタスク名が格納され、$FILEにはBase64エンコードされたマルウェアへのパスが格納されます。次回以降の実行時には、この情報を取得・デコードしてから、既存のタスクを再構築または確認します。

-uオプション付きで起動されると、TrickBotはDNSトンネリングを通じてコマンド&コントロールのインフラと通信します。

制御データをXORキー0xB9で暗号化し、それを16進数に変換したうえでDNS対応のラベルに分割し、そのデータをwesturn.inというドメインに付加します。

続いてgetaddrinfo()を使用し、8.8.8.8を含むパブリックリゾルバー経由で不正な形式のDNSリクエストを送信するとFortinetは述べています

注: IPアドレスとドメインは、誤って名前解決やハイパーリンク化されることを防ぐため、意図的に無害化表記(例: [.])にしてあります。再度有効な形式に戻す作業は、MISP、VirusTotal、またはお使いのSIEMなど、管理された脅威インテリジェンス基盤上でのみ行ってください。

SOC調査の死角を減らしましょう。ANY.RUNを使えば脅威をより早期に封じ込め、対応コストと業務への支障を抑えられます。

翻訳元: https://cyberpress.org/trickbot-masquerades-as-wireshark-update/

ソース: cyberpress.org