ethmaks.net

Najbardziej popularnym narzędziem z całego pakietu Sysinternals jest niewątpliwie „Process Explorer” i to właśnie od niego zaczniemy. W naszych okienkach standardowo mamy „Menadżera zadań” z którego niejednokrotnie korzystaliśmy i wydawało nam się, że dzięki niemu wiemy więcej. Użytkownicy zaawansowani traktują go jako żart, Ci bardziej życzliwi widzą plus jakim jest fakt jego darmowego istnienia. Trudno się nie zgodzić, ale czy trzeba aż tak brutalnie? 😊

Powiedzenie „więcej nie znaczy lepiej” nie ma tutaj zastosowania. Już na pierwszy rzut oka widać na powyższym porównaniu, że Procexp w standardowej konfiguracji pokazuje więcej informacji, a to może skłonić nas do stałej podmiany Menadżera zadań. Samo zadanie jest wyjątkowo proste, wystarczy z menu „Options” wybrać pozycję „Replace Task Manager„. Opcja ta zadziała globalnie dla wszystkich użytkowników pod warunkiem, że każdy będzie miał dostęp do źródła pliku Procexp. Jeżeli narzędzie będzie zlokalizowane w miejscu z ograniczonym dostępem dla innych użytkowników to podczas próby wywołania nie zadzieje się kompletnie nic. Można przywrócić „Menadżera zadań” poprzez odznaczenie pozycji „Replace Task Manager„.

Procexp do działania nie wymaga uprawnień administracyjnych, ale wiele informacji będzie dostępnych dopiero po ich podniesieniu. Sama ww. operacja podmiany „Menadżera zadań” wymaga uprawnień administracyjnych. Lista procesów jest przedstawiona w kolorowej tabeli, gdzie każdy proces przedstawiany jest w osobnym wierszu natomiast w kolumnach prezentowane są ich atrybuty w sposób stały lub dynamiczny. Kolory, które możemy sami dostosować według własnego upodobania mają na celu uwypuklenie tego co aktualnie dzieje się w systemie operacyjnym i na co powinniśmy zwrócić szczególną uwagę.

Domyślnie kolory wskazują:

  • Jasnoniebieski: procesy uruchomione przez to samo konto użytkownika, co Procexp
  • Różowy: procesy zawierające jedną lub więcej usług Windows
  • Szary: procesy wstrzymane
  • Purpurowy: spakowane procesy, często wykorzystywane przez złośliwe oprogramowanie w celu unikania oprogramowania antywirusowego
  • Brązowy: procesy przypisane do zadania
  • Żółty: procesy wykorzystujące Microsoft .NET Framework
  • Błękitny: procesy interfejsu wchodzące w interakcje z nowoczesnym środowiskiem aplikacji. Przykładem będzie explorer.exe uważany za zwykły proces pulpitu Win32, ale generuje on nowoczesne menu Start
  • Jasnoróżowy: procesy chronione

Domyślne kolumny:

  • Process: kolumna prezentująca nazwę pliku wykonywalnego
  • CPU: kolumna prezentująca procentowe wykorzystanie czasu procesora w czasie rzeczywistym
  • Private Bytes: kolumna prezentująca wielkość pamięci przydzielonej procesowi na jego wyłączny użytek
  • Working Set: kolumna prezentująca wielkość pamięci fizycznej przydzielonej procesowi przez menedżera pamięci
  • PID: kolumna prezentująca Identyfikator procesu
  • Description oraz Company Name: kolumny prezentujące informacje o wersji pliku wykonywalnego

Oprócz tego po kliknięciu prawym przyciskiem myszy na procesie otwiera nam się podmenu jak na obrazku poniżej, z którego możemy wybrać kilka opcji.

Window: opcje pozwalające na operowanie oknem procesu w systemie
Set Affinity: opcja pozwala na ograniczenie wykorzystania ilości procesorów, wątków dostępnych w systemie
Set Priority: opcja pozwala wyświetlić lub ustawić podstawowy priorytet szeregowania procesu.
Kill Process: opcja zabija proces, Procexp pozwala na zabicie procesów procesów krytycznych wykorzystywanych przez jądro systemu co może prowadzić do słynnego BSOD
Kill Process Tree: opcja zabija proces oraz wszystkie jego procesy potomne. W sytuacji powyżej podczas zabicia procesu explorer.exe zabijemy również procexp64.exe oraz win32calc.exe
Restart: opcja ponownie uruchomi
Suspend: opcja zawiesza działanie procesu, bardzo przydatna, jeżeli w naszym systemie pojawi się proces niepożądany którego chcemy zbadać z jednocześnie nie chemy aby w dalszym ciągu pracował w systemie
Create Dump: opcja pozwala przechwycić minimalny lub pełny zrzut pamięci powiązanej z wybranym procesem do wskazanej lokalizacji
Check VirusTotal: opcja przesyła SHA do usługi VirusTotal i otrzymuje odpowiedź w postaci raportu reprezentowanego w kolumnie VirusTotal na liście procesów
Search Online: opcja wyszukuje informacji na temat nazwy procesu w internecie

Aby uzyskać jeszcze więcej informacji na naszej liście procesów, powinniśmy wybrać kolumny jakie będą nas interesowały. Po kliknięciu prawym przyciskiem myszy na pasku z etykietami kolumn pojawi nam się opcja „Select Columns…„, po jej wybraniu ukaże się okienko jak poniżej.

Process Image:

  • User Name: nazwa konta użytkownika uruchamiającego proces
  • Description: opis procesu zapisany w pliku wykonywalnym
  • Company Name: nazwa twórcy procesu
  • Verified Signer: wskazuje czy proces/aplikacja posiada certyfikowany podpis cyfrowy
  • Version: numer wersji pliku
  • Image Path: ścieżka do pliku
  • Image Type: pokazuje czy proces działa w trybie 32 lub 64 bitowym
  • Package Name: pokazuje nazwę pakietu
  • DPI Awareness: pokazuje poziom wrażliwości w systemie
  • Protection: pokazuje poziom ochrony dla procesów chronionych
  • Control Flow Guard: pokazuje, czy plik obrazu wykonywalnego został skompilowany z opcją Control Flow Guard
  • Window Title: pokazuje tytuł okna jeżeli proces takowy posiada
  • Window Status: pokazuje aktualny stan okna
  • Session: opcja identyfikuje sesję usług terminalowych, w której proces jest uruchomiony
  • Command Line: opcja pokazuje wiersz polecenia, który został użyty do uruchomienia procesu
  • Comment: zdefiniowany przez użytkownika tekst
  • Autostart Location: pokazuje informacje o tym czy plik/proces uruchamia się automatycznie przy starcie systemu
  • VirusTotal: pokazuje wynik analizy pliku obrazu wykonywalnego przez usługę sieciową VirusTotal.com web
  • DEP Status: pokazuje, czy dla procesu włączona jest funkcja Data Execution Prevention
  • Integrity Level: pokazuje poziom integralności procesu
  • Virtualized: sygnalizuje, czy włączona jest wirtualizacja plików i rejestru kontrolowana przez UAC
  • ASLR Enabled: sygnalizuje, czy w nagłówku pliku obrazu procesu włączona jest opcja Address Space Layout Randomization
  • UI Access: pokazuje, czy proces jest uprawniony do pominięcia mechanizmu User Interface Privilege Isolation

Process Performance:

  • CPU Usage: pokazuje procentowy udział procesu (lub pseudo-procesu) w ogólnym czasie procesora
  • Tree CPU Usage: pokazuje procentowy udział czasu CPU przypisany do procesu i wszystkich jego potomków
  • CPU History: pokazuje w formie graficznej ostatnie wykorzystanie procesora przypisanego do procesu
  • CPU Time: pokazuje całkowity czas trybu jądra i trybu użytkownika przypisany do procesu
  • Start Time: pokazuje czas uruchomienia prcoesu
  • Process Timeline: pokazuje w formie graficznej linie czasu uruchomionego procesu
  • Base Priority: pokazuje priorytet szeregowania procesu
  • Handle Count: pokazuje liczbę dojść do obiektów jądra aktualnie otwartych przez proces.
  • Threads: pokazuje liczbe wątków wchodzących w skład procesu
  • CPU Cycles: pokazuje liczbę cykli procesora
  • CPU Cycles Delta: pokazuje liczbę cykli procesora zużytych przez proces od poprzedniego odświeżenia
  • Context Switches: pokazuje całkowitą liczbę przełączeń kontekstu procesora na wykonywanie wątku lub wątków wchodzących w skład procesu
  • Context Switch Delta: pokazuje całkowitą liczbę przełączeń konstektu procesora na wykonywanie wątków procesu od czasu poprzedniego odświeżenia

Process Memory:

  • Page Faults: liczba zdarzeń, gdy proces próbował uzyskać dostęp do nieprawidłowej strony pamięci
  • Page Fault Delta: liczba błędów stron dla procesu, które wystąpiły od poprzedniego odświeżenia
  • Private Bytes: liczba bajtów pamięci, przypisanej i zatwierdzonej przez proces dla własnego użytku
  • Private Delta Bytes: wielkość zmiany liczby prywatnych bajtów od poprzedniego odświeżenia.
  • Peak Private Bytes: szczyt uzyskanych bajtów przez proces
  • Private Bytes History: historia przydziałów bajtów dla procesów przedstawiona w formie graficznej
  • Virtual Size: wielkość pamięci wirtualnej przydzielonej dla procesu
  • Memory Priority: domyślny priorytet pamięci przypisany do stron pamięci fizycznych używanych przez proces
  • Minimum Working Set: rozmiar pamięci fizycznej zarezerwowanej dla procesu
  • Maximum Working Set: maksymalny rozmiar pamięci fizycznej wykorzystywanej przez proces
  • Working Set Size: wielkość fizycznej pamięci przydzielonej procesowi przez menedżera pamięci
  • Peak Working Set Size: szczyt który proces uzyskał w dowolnym momencie od chwili uruchomienia
  • WS Shareable Bytes: część zestawu roboczego procesu, zawierająca pamięć, która może być udostępniona innym procesom, taką jak mapowalne obrazy wykonywalne
  • WS Shared Bytes: część zestawu roboczego procesu zawierająca pamięć aktualnie współużytkowaną z innymi procesami
  • WS Private Bytes: część zestawu roboczego procesu, która zawiera bajty prywatne, czyli te, które nie mogą być współużytkowane z innymi procesami
  • GDI Objects: liczba obiektów Graphics Device Interface, które posiada proces
  • USER Objects: liczba obiektów USER należących do procesu.
  • Paged Pool: wielkość puli stronicowanej przypisanej do procesu
  • Nonpaged Pool: wielkość puli niestronicowanej przypisanej do procesu

Karta Process Network pozwala skonfigurować wyświetlanie liczby połączeń TCP, operacji wysyłania, odbierania i rozłączania, liczby bajtów użytych w tych operacjach oraz zmiany tych wartości od czasu ostatniego odświeżenia. Miary dostępne do wyboru obejmują całkowitą liczbę operacji od chwili uruchomienia procesu.

Karta Process Disk pozwala na włączenie informacji obejmującej cały ruch dyskowy. Miary dostępne do wyboru obejmują całkowitą liczbę operacji od chwili uruchomienia procesu.

Process GPU:

  • GPU Dedicated Bytes: pokazuje wielkość dedykowanej pamięci GPU alokowanej dla procesu dla wszystkich procesorów graficznych
  • GPU Committed Bytes: pokazuje całkowitą wielkość pamięci wideo alokowana przez proces we wszystkich GPU
  • GPU System Bytes: pokazuje wielkość pamięci systemowej z współużytkowanej puli CPU/GPU, która jest aktualnie przypisana do wyłącznego wykorzystania przez jeden z procesorów graficznych

Skoro jesteśmy już przy wykorzystaniu procesora graficznego to warto wspomnieć o ciekawej funkcji Procexp pomagającej wyszukać proces odpowiadający otwartej aplikacji w okienku. Wystarczy wybrać z paska nawigacyjnego ikonkę celownika, przeciągnąć ją na interesujące nas okienko i puścić. Po tej operacji proces, który został namierzony zostanie oznaczony i podświetlony na naszej liście. W moim przypadku będzie to uruchomiony wcześniej win32calc.exe. Przejdźmy teraz do szczegółów takiego procesu klikając na niego dwukrotnie lewym przyciskiem myszy.

W karcie Image otrzymujemy informacje takie jak pełna ścieżka do pliku, wiersz polecenia użyty do uruchomienia procesu, lokalizacja automatycznego uruchomienia, konto użytkownika, czas uruchomienia, a w wersjach x64 systemu Windows to, czy proces używa kodu 32-, czy 64-bitowego. Na końcu pola Path i Autostart mamy przycisk „Explore„, który w jednym jak i drugim przypadku kieruje nas do źródła. W polu VirusTotal po przeprowadzonym teście powinien pojawić się link, Jeżeli go nie ma, to przyciskiem „Submit” można przesłać SHA do ww. serwisu w celu analizy procesu dostępnymi w serwisie skanerami. Na ten moment, do tego czym jest VirusTotal podchodzę dość powierzchownie, ponieważ poświęcimy mu więcej czasu w późniejszym etapie.

Karta Performance informuje nas o wykorzystaniu procesora, pamięci wirtualnej, pamięci fizycznej (zestawu roboczego), I/O, liczniki dojść obiektów jądra oraz liczniki dojść menedżera okien.

Performance Graph wyświetla wykresy skoncentrowane na jednym procesie. Pierwszy wykres wyświetla historię wykorzystania procesora w ostatnim okresie. Drugi wykres pokazuje bieżącą historię wielkości zadeklarowanego obszaru prywatnych bajtów. Trzeci wykres reprezentuje historię przepływności I/O plików i urządzeń generowaną przez proces. GPU Graph natomiast pokazuje bieżące historyczne dane dla wykorzystania zasobów procesora graficznego przez proces.

W karcie Security możemy odczytać do jakich grup przynależy proces oraz jakie uprawnienia mu przysługują. W moim przypadku wszystkie uprawnienia mają nazwy przyjazne dla człowieka, które jesteśmy w stanie zrozumieć. Zdarzają się jednak takie uprawnienia, które mają wpisane kody, wtedy warto poszukać opisu w sieci.

Karta Environment wyświetla zmienne środowiskowe procesu wraz z ich wartościami. Procesy zazwyczaj dziedziczą zmienne środowiskowe od swoich procesów nadrzędnych i bardzo często bloki środowiskowe dla wszystkich procesów będą zasadniczo równoważne.

Na sam koniec VirusTotal, który jest usługą sieciową, pozwalającą użytkownikom na załadowanie plików do przeanalizowania przez ponad 70 mechanizmów antywirusowych i przejrzenie wyników takiego skanowania. Użytkownicy mają również możliwość przeskanowania adresów URL oraz przeszukania bazy VT. Dzięki wykorzystaniu API, aplikacje takie jak Procexp pozwalają na skanowanie kilku plików jednocześnie dzięki przesyłaniu i porównywaniu tylko haszy z haszami plików wcześniej skanowanych przez innych użytkowników.

Narzędzia z pakietu „Sysinternals” domyślnie wysyłają tylko hasze plików natomiast nic nie stoi na przeszkodzie, aby wysyłać całe pliki. Pytanie do Was czy zdajecie sobie sprawę jakimi plikami chcielibyście się dzielić z „kimś”?. Jeżeli używamy serwisu VT w celu analizy oprogramowania, które może być potencjalnie złośliwe, to nic nam do tego. Jeżeli jednak całkowicie prywatnie chcielibyście wysyłać każdy załącznik otrzymany np. drogą mailową to radzimy zastanowić się dwukrotnie czym chcielibyście się podzielić 🙂

Myślę, że solidne podstawy mamy za sobą, a po więcej szczegółów zapraszamy do książki.

Kolejnym narzędziem, po które sięgniemy będzie Autoruns

Subscribe
Powiadom o
guest
0 komentarzy
Inline Feedbacks
View all comments