haker.info  — 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 鈥瀟eoretycznego 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: 鈥濪ebugee 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


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.