Online: 0x02D (45)
haker.iиfø  — Etyczny hacking_
Spreading knowledge like a virus.

Proces w systemie Windows (inspekcja struktury PEB)

   Dawid Farbaniec    480 słów

1. Słowem wstępu

ozpocznę definicją procesu. Proces w systemie Windows to uruchomiona w pamięci kopia aplikacji. Program, który jest plikiem wykonywalnym może być uruchomiony wielokrotnie i zostanie wtedy utworzone wiele procesów. Każdy proces musi mieć przynajmniej jeden wątek. Informacje o określonym procesie przechowuje struktura EProcess. Należy pamiętać, że budowa tej struktury oraz struktur i pól w niej zawartych może zmieniać się wraz z wersjami systemu Windows. Aby nie tworzyć tutaj „teoretycznego opowiadania” przejdę do zaprezentowania metody pozwalającej na przeglądanie i inspekcję tych struktur. W Sklepie z aplikacjami dla systemu Windows firmy Microsoft dostępna jest odświeżona wersja narzędzia WinDbg. Program WinDbg Preview to ulepszona wersja znanego debuggera o nazwie WinDbg, którą możesz pobrać z adresu: https://www.microsoft.com/store/p/windbg/9pgjgd53tn86

2. Inspekcja struktur procesu za pomocą WinDbg

Po zainstalowaniu narzędzia WinDbg Preview oraz uruchomieniu go powinno wyświetlić się główne okno programu, które wita nas komunikatem: „Debugee not connected”.

WinDbg
Rysunek 2.1. Okno główne narzędzia WinDbg Preview

Wczytajmy do debuggera przykładowy plik wykonywalny. Może to być systemowy Kalkulator, którego domyślna ścieżka dostępu to C:\Windows\System32\calc.exe. W tym celu z górnego menu należy wybrać Plik (file) » Start debugging » Launch executable.

WinDbg
Rysunek 2.2. Rozpoczęcie debugowania w narzędziu WinDbg Preview

W celu wyświetlenia określonego typu danych posłużymy się poleceniem dt, którego skrót oznacza Display Type. Cała składnia polecenia, które należy wpisać prezentuje się następująco:
dt -a -b -v _EPROCESS
Parametr -a pozwala wyświetlić każdy element tablicy w nowej linii.
Parametr -b rozwija (wyświetla) zawartość pól, które są strukturami.
Natomiast parametr -v pozwala uzyskać więcej informacji takich jak rozmiar struktury oraz ilość jej elementów.

WinDbg
Rysunek 2.3. Przegląd struktury EPROCESS w debuggerze WinDbg

Kompletny opis składni polecenia dt oraz innych można znaleźć w dokumentacji firmy Microsoft:
https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/dt--display-type-

W strukturze EPROCESS znajduje się inna struktura określana jako Process Environment Block (PEB), która pozwala otrzymać wiele informacji o analizowanym procesie (rysunek 2.4).

WinDbg
Rysunek 2.4. Przegląd struktury PEB w przykładowym procesie za pomocą debuggera WinDbg

Struktura Process Environment Block (PEB) zawiera m.in.:

  • wskaźnik do początku obrazu pliku wykonywalnego (ImageBaseAddress)
  • informacje o bibliotekach DLL używanych przez program, a znajdziemy je w strukturze Ldr (_PEB_LDR_DATA).
  • informacje o parametrach z jakimi uruchomiono proces (ProcessParameters),
  • i inne.

Tak jak dla procesów tak i dla wątków istnieje podobna struktura, a jej nazwa to Thread Environment Block (TEB).

Znajomość tych struktur na pewno jest przydatna i ma niejedno zastosowanie. Gdy następuje potrzeba przeanalizowania określonego procesu i/lub wykonania zrzutu pamięci (ang. memory dump) to te struktury dostarczą na pewno wiele informacji. Inne zastosowanie to tworzenie shellcode/payload. Kod wstrzykiwalny typu shellcode potrzebuje adresów do funkcji systemowych, aby wykonać zamiary hakera. Adresy te od dawna nie są stałymi wartościami (ASLR) i nie można ich na stałe wpisać w kod programu. Dlatego kod wstrzykiwalny często przeszukuje strukturę PEB, a dokładnie jej gałąź Ldr, aby otrzymać adres załadowanych modułów DLL takich jak kernel32.dll czy inne.

Podobne wpisy o tej tematyce mojego autorstwa:

Dziękuję za czas poświęcony na przeczytanie tego wpisu.

Dawid Farbaniec

Wykaz literatury (bibliografia)

  • Rafay Baloch, 2015 – Ethical Hacking and Penetration Testing Guide, ISBN: 9781482231625
  • Microsoft Corporation, 2018 – https://docs.microsoft.com/en-us/windows/win32/api/winternl/ns-winternl-peb (dostęp: 28-07-2020)

Tagi:  reverse-engineering  security 

Komentarze czytających

Wszystkie treści umieszczone na tej witrynie są chronione prawem autorskim. Surowo zabronione jest kopiowanie i rozpowszechnianie zawartości tej witryny bez zgody autora. Wszelkie opublikowane tutaj treści (w tym kody źródłowe i inne) służą wyłącznie celom informacyjnym oraz edukacyjnym. Właściciele tej witryny nie ponoszą odpowiedzialności za ewentualne niezgodne z prawem wykorzystanie zasobów dostępnych w witrynie. Użytkownik tej witryny oświadcza, że z zamieszczonych tutaj danych korzysta na własną odpowiedzialność. Wszelkie znaki towarowe i nazwy zastrzeżone zostały użyte jedynie w celach informacyjnych i należą wyłącznie do ich prawnych właścicieli. Korzystając z zasobów witryny haker.info oświadczasz, że akceptujesz powyższe warunki oraz politykę prywatności.