監視しているプロセスが分かったので、unpacked 検体を ProcessMonitor で確認する。
前回は Majuro.exe が実行されたところで止めていたが、少し泳がせてみると svchost.exe を 2 つ起動するようだ。
今回は Garapagos.exe だった。(以降、dropped 検体)
一度ドロップされた検体(上記ツリーの場合、Garapagos.exe)を保全(暗号化zip)してからスナップショットで戻し、Garapagos.exe をデバッグするも動きが変わる。
Tahiti.exe を保全してスナップショット、再度実行でも同じ。
結局のところ unpacked 検体の実行ツリーと同じになる。
(dropped 検体をドロップして cmd.exe で自分を消す、dropped 検体は svchost.exe を実行。)
どうも dropped 検体を zip 暗号化で保全すると何か情報が落ちるみたい。
何らかの条件がないと svchost.exe を実行してくれない。
ProcessMonitor の履歴を unpacked と dropped で比較したところ、気になる差分が。
QueryEAFile で NO EAS ON FILE の場合、サンドボックス等チェックの動き~ドロップする動き、SUCCESS の場合、svchost.exe を起動する動き(?)。
ここの直後から動きが変わっている。
色々調べてみると、EA (Extended Attributes、拡張属性) という領域にデータを隠す手法があるらしい。書き込むときは ZwSetEaFile、読み込むときは ZwQueryEaFile 。ZwQueryEaFile は ProcessMonitor 上は QueryEAFile と表示される。
EA に書かれたデータはこのツールで取得出来るっぽい。
GitHub - jschicht/EaTools: Analysis and manipulation of extended attribute ($EA) on NTFS
ツールにかけてみたところ、何かしらの EA データが格納されているっぽい。
あとはこのデータが ZwSetEaFile で書き込まれていれば裏が取れるのだが。。。
ZwSetEaFile の前に babe (EaName と同じ。)
ZwSetEaFile の前で esi に入れている値 (dword ptr ss:[esp+58]) が ZwQueryEaFile で読み込む値と同じ。(ダンプ欄)
ということで、EA に何か入れて活用しているっぽい事が分かった。
これを使って svchost.exe に何か注入しているのかな。。。
EA 入りの検体をデバッグしながらその辺りを追っていければ svchost.exe にどういう機能が注入されてるかわかるかも。