tip
Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Wsparcie HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegram lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.
Identyfikacja spakowanych binariów
- brak ciągów: Często można zauważyć, że spakowane binaria prawie nie mają żadnych ciągów
- Dużo nieużywanych ciągów: Ponadto, gdy złośliwe oprogramowanie korzysta z jakiegoś rodzaju komercyjnego pakera, często można znaleźć wiele ciągów bez odniesień krzyżowych. Nawet jeśli te ciągi istnieją, nie oznacza to, że binaria nie są spakowane.
- Możesz również użyć kilku narzędzi, aby spróbować znaleźć, który paker został użyty do spakowania binariów:
- PEiD
- Exeinfo PE
- Language 2000
Podstawowe zalecenia
- Zacznij analizować spakowane binaria od dołu w IDA i przechodź w górę. Rozpakowacze kończą działanie, gdy rozpakowany kod kończy działanie, więc mało prawdopodobne jest, że rozpakowacz przekazuje wykonanie do rozpakowanego kodu na początku.
- Szukaj JMP lub CALL do rejestrów lub obszarów pamięci. Szukaj również funkcji przesyłających argumenty i adres, a następnie wywołujących
retn
, ponieważ powrót z funkcji w tym przypadku może wywołać adres właśnie przesłany na stos przed jego wywołaniem. - Umieść punkt przerwania na
VirtualAlloc
, ponieważ alokuje on miejsce w pamięci, gdzie program może zapisać rozpakowany kod. "Uruchom do kodu użytkownika" lub użyj F8, aby uzyskać wartość wewnątrz EAX po wykonaniu funkcji i "śledź ten adres w zrzucie". Nigdy nie wiesz, czy to jest obszar, w którym rozpakowany kod zostanie zapisany. VirtualAlloc
z wartością "40" jako argument oznacza Read+Write+Execute (jakiś kod, który wymaga wykonania, zostanie tutaj skopiowany).- Podczas rozpakowywania kodu normalne jest znalezienie wielu wywołań do operacji arytmetycznych i funkcji takich jak
memcopy
lubVirtual
Alloc
. Jeśli znajdziesz się w funkcji, która najwyraźniej wykonuje tylko operacje arytmetyczne i może jakieśmemcopy
, zalecenie to spróbować znaleźć koniec funkcji (może JMP lub wywołanie do jakiegoś rejestru) lub przynajmniej wywołanie ostatniej funkcji i uruchomić do niej, ponieważ kod nie jest interesujący. - Podczas rozpakowywania kodu zauważaj, kiedy zmieniasz obszar pamięci, ponieważ zmiana obszaru pamięci może wskazywać na rozpoczęcie kodu rozpakowującego. Możesz łatwo zrzucić obszar pamięci używając Process Hacker (proces --> właściwości --> pamięć).
- Podczas próby rozpakowania kodu dobrym sposobem na sprawdzenie, czy już pracujesz z rozpakowanym kodem (więc możesz go po prostu zrzucić) jest sprawdzenie ciągów binariów. Jeśli w pewnym momencie wykonasz skok (może zmieniając obszar pamięci) i zauważysz, że dodano znacznie więcej ciągów, wtedy możesz wiedzieć, że pracujesz z rozpakowanym kodem.
Jednak jeśli paker już zawiera wiele ciągów, możesz zobaczyć, ile ciągów zawiera słowo "http" i sprawdzić, czy ta liczba wzrasta. - Gdy zrzucasz plik wykonywalny z obszaru pamięci, możesz naprawić niektóre nagłówki używając PE-bear.
tip
Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Wsparcie HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegram lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.