Przyglądając się ostatnio dokładnie procedurze tworzenia nowego procesu w systemie, natchnąłem się na IMO dość mało popularną funkcjonalność, jaką jest „Image File Execution Options”(IFEO) . Jej konfiguracji dokonujemy poprzez modyfikacje kluczy w następującej gałęzi rejestru:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Options
Jakie możliwości daje nam ta funkcjonalność możecie przeczytać tutaj:
http://blogs.msdn.com/b/junfeng/archive/2004/04/28/121871.aspx
ja skupie się jedynie na jednej wybranej opcji, która nazywa się Debugger .
Opcja ta pozwala nam na automatyczne podpięcie wybranego, debugera do nowo utworzonego procesu, którego nazwa pliku wykonywalnego znajduje się w gałęzi IFEO jako klucz.
[+]Przykład
Powiedzmy, że chcemy podpiąć Olka za każdym razem do notepad’a jak tylko jego proces zostanie utworzony. Wtedy wpis w IFEO powinien wyglądać następująco:
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution OptionsNOTEPAD.EXE] "Debugger"="D:\tools\RE\shadow-ollydbg\shadow\Shadow.exe"
Nie musimy ręcznie tworzyć/modyfikować klucza oraz wartości w rejestrze. Możemy posłużyć się aplikacją Gflag, która wchodzi w skład pakietu Debugging Tools for Windows.
[+]Kiedy owa funkcjonalność okazuje się przydatna?
Cały ten post praktycznie pisze ze względu na to, że nie spotkałem się, z tym żeby ktoś proponował użycie powyższej opcji, w przypadku, kiedy chcemy podpiąć debuger do procesu dziecka tworzonego przez malware. Myślę, że jest to dość wygodna metoda obok modyfikacji, EP po przez umieszczenie tam nieskończonej pętli EB FE czy breakpoint’u i ustawienie Olka jako JIT debuger.
[+]Złowieszcze użycie opcji Debugger
Zamiast wartości wskazującej na debuger możemy umieścić ścieżkę, do dowolnie innej aplikacji, która będzie uruchamiana zamiast tej żądanej. Ktoś „pomysłowy” mógłbym stworzyć wpis dla IE uruchamiający za każdym razem jej odpowiednio zmodyfikowaną wersje.
Ja wy znajdujecie takie ‘zapomniane’ przez świat sztuczki i opcje Windowsa? 🙂 Będę się musiał koniecznie tym pobawić.
@MSM
Hehe….tak jak wspominałem w poscie, natchnalem sie na ta funkcjonalosc robiac research zwiazany z tworzeniem procesu w systemie. Z czego korzystalem,,,hym Windows internals 5th no i oczywiscie najlepsze zrodlo wiedzy IDA+ symbole i kernel32.dll :D. Dokładnie:
CreateProcessInternalW i w niej :
LdrQueryImageFileExecutionOptions.
Kawał dobrej roboty 🙂 Jak zawsze coś ciekawego znajdujesz;) Oby tak dalej !:)
Thx dude 😉
Bardzo mi sie podoba, dodalem klucz z nazwa PE mojego av i po restarcie sie nie uruchomil…
@Sploit
Ciesze sie ze sie podobalo;)