最近見たファイルレス・マルウェアのメモ。
ランチャー・ペイロードとメインのPowerShellコードの2つで構成されていた。
どちらもレジストリの中に保持されていた。
■ランチャー・ペイロード
レジストリRunキーに悪意のあるコマンドが保持されていた。このコマンドは別のレジストリキーに保持されているメインのPowerShellコードを実行する。
■メインのPowerShellコード
APCインジェクションを行い、悪意のあるバイナリ・ペイロードをカレントプロセスにインジェクトする。悪意のあるバイナリ・ペイロードはBase64エンコードされた状態でハードコードされている。以下はPowerShellコードの大まかな挙動。
1. 悪意のあるバイナリ・ペイロードをBase64デコードする
2. DllImportでkernel32より以下のAPI関数をインポートする:
- GetCurrentThreadId
- OpenThread
- QueueUserAPC
- SleepEx
- GetCurrentProcess
- VirtualAllocEx
3. VirtualAllocExでカレントプロセスに悪意のあるバイナリ・ペイロードをインジェクトするためのメモリ領域を確保する。
4. 上述したカレントプロセスのメモリ領域の確保が成功した場合、確保されたメモリ領域に悪意のあるバイナリ・ペイロードをコピーする
5. QueueUserAPCを実行してユーザーモードAPCをスレッドにキューさせる
6. SleepExを実行してスレッドを変更可能状態にしてAPCインジェクションを完了する
同様の手法を用いたUrsnifの感染例が報告されている。
以上。