Lista procesów aktywnych w systemie jest jednym z podstawowych źródeł informacji o tym, czy przypadkiem nie działa jakiś "wrogi kod". Problem w tym, że ów wrogi kod wcale na liście procesów pojawić się nie musi, co jednak wcale nie musi być równoznaczne z wykorzystaniem rootkita.
Obcych procesów nie musi być
Dziś słów kilka o trzech metodach ukrycia się w systemie:
- stworzenie usługi,
- instalacja sterownika,
- wstrzyknięcie kodu do "prawdziwego" procesu,
Stworzenie usługi
Upraszczając pojęcie usługi (jeśli ktoś go nie zna), są to procesy uruchamiane w tle, które wykonują określone zadania. Usługi są (a przynajmniej mogą być) uruchamiane automatycznie po starcie systemu, bez znaczenia czy i/lub jaki użytkownik się loguje.
Usługi można podzielić na dwie grupy:
- pracujące we własnym procesie,
- pracujące w procesie "hoście",
W omawianym przypadku bardziej interesujący jest ten drugi przypadek, widać w nim tylko proces hosta, nie widać natomiast poszczególnych usług w nim pracujących.
Procesem gospodarza w Windows jest proces o nazwie svchost.exe (A description of Svchost.exe in Windows XP Professional Edition), na liście procesów występuje zwykle kilka procesów o tej nazwie: C:\>tasklist /FI "IMAGENAME eq svchost.exe"
Image Name PID Session Name Session# Mem Usage ========================= ====== ================ ======== ============ svchost.exe 1332 Console 0 4 820 K svchost.exe 1416 Console 0 4 216 K svchost.exe 1836 Console 0 2 532 K svchost.exe 1900 Console 0 3 736 K svchost.exe 1944 Console 0 3 484 K
Można uzyskać jednak dodatkową informację o usługach pracujących w kontekście poszczególnych procesów:
C:\>tasklist /FI "IMAGENAME eq svchost.exe" /svcImage Name PID Services ========================= ====== ============================================= svchost.exe 1332 DcomLaunch, TermService svchost.exe 1416 RpcSs svchost.exe 1836 AudioSrv, CryptSvc, Dhcp, ERSvc, EventSystem, helpsvc, lanmanserver, lanmanworkstation, Netman, Nla, Schedule, seclogon, SENS, SharedAccess, ShellHWDetection, srservice, Themes, TrkWks, W32Time, winmgmt, wscsvc, wuauserv, WZCSVC svchost.exe 1900 Dnscache svchost.exe 1944 LmHosts, WebClient
Wystarczy po prostu stworzyć usługę, która dopisuje się do jednej z grup i nie będzie już widać oddzielnego procesu. Oczywiście usługa jako taka będzie widoczna na liście usług (pomijając przypadek z rootkitem). Tego typu metodę przetrwania (ukrycia się, ale i jednocześnie zapewnienia sobie uruchomienia po restarcie systemu) stosują choćby niektóre warianty ostatnio słynnego Win32/Conficker.
Można wymyślać inne warianty tej metody, na przykład "przejmowanie" prawidłowej, istniejącej usługi i zmiana jej konfiguracji (zmiana pliku wykonywalnego).
Instalacja sterownika
Sterowniki w pewnym sensie podobne są do usług - uruchamiane/ładowane są automatycznie przy starcie systemu. Jeśli do tego doda się poziom, na jakim pracują - tworzy to całkiem nowe możliwości dla malware. Przykładem tego typu postępowania jest Trojan:Win32/Alureon, znany również jako DNSChanger.gen!64D38821 (patrz też: Prawie schowany rootkit).
Listę sterowników można uzyskać poleceniem sc queryex type= driver. Można ją też uzyskać ze zrzutu pamięci, choćby przy pomocy Volatility.
Wstrzyknięcie kodu do innego procesu
Jedną z ciekawych funkcji w Windows jest CreateRemoteThread. Pozwala ona na wykonanie własnego kodu w kontekście innego procesu. Oczywiście ten kod trzeba jeszcze najpierw jakoś w wybranym procesie umieścić. Dokładniej na ten temat pisałem w serii o Tamagotchi, a konkretnie w Tamagotchi XIII: brakujące ogniwo oraz Tamagotchi XIV: Logexts.
Trzeba pamiętać, że w tym wypadku malware musi wykorzystać jakąś inną metodę, zapewniającą mu przetrwanie. W przypadku usługi lub sterownika wystarczyło, gdy usługa lub sterownik był instalowany i ustawiany był odpowiedni typ startu (automatyczny). W tym przypadku musi zostać uruchomiony jakiś proces, który dopiero wstrzyknie interesujący kod w proces ofiary i uruchomi stosowny wątek, czyli skuteczne jest tradycyjne przeszukiwanie listy procesów uruchamianych przy starcie systemu (podobnie jak w dwóch poprzednich wypadkach skuteczne jest przeszukiwanie listy usług i sterowników).
Jeśli po mojej prezentacji na dzisiejszym spotkaniu OWASP kogoś zainteresował temat ogólnie pojętego forensic, być może zainteresują go również starsze wpisy dotyczące tego tematu. Nazbierało się tego trochę, więc małe przypomnienie części z poruszanych t
Przesłany: Jun 10, 20:54