Unpacking binaries
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
nedostatak stringova: Uobičajeno je da pakovane binarne datoteke nemaju gotovo nikakve stringove
Puno neiskorišćenih stringova: Takođe, kada malware koristi neku vrstu komercijalnog pakera, uobičajeno je pronaći puno stringova bez međureferenci. Čak i ako ovi stringovi postoje, to ne znači da binarna datoteka nije pakovana.
Takođe možete koristiti neke alate da pokušate da otkrijete koji je pakera korišćen za pakovanje binarne datoteke:
Počnite analizu pakovane binarne datoteke od dna u IDA-i i pomerajte se ka vrhu. Rasklopnici izlaze kada rasklopljeni kod izlazi, tako da je malo verovatno da će rasklopnik preneti izvršenje na rasklopljeni kod na početku.
Pretražujte za JMP-ovima ili CALL-ovima ka registrima ili regionima memorije. Takođe pretražujte za funkcijama koje prosleđuju argumente i adresu, a zatim pozivaju retn
, jer povratak funkcije u tom slučaju može pozvati adresu koja je upravo stavljena na stek pre nego što je pozvana.
Postavite prekidač na VirtualAlloc
jer ovo alocira prostor u memoriji gde program može pisati rasklopljeni kod. "Pokreni do korisničkog koda" ili koristite F8 da dobijete vrednost unutar EAX nakon izvršavanja funkcije i "pratite tu adresu u dump-u". Nikada ne znate da li je to region gde će biti sačuvan rasklopljeni kod.
VirtualAlloc
sa vrednošću "40" kao argumentom znači Čitanje+Pisanje+Izvršavanje (neki kod koji treba da se izvrši će biti kopiran ovde).
Tokom rasklapanja koda normalno je pronaći several calls ka aritmetičkim operacijama i funkcijama kao što su memcopy
ili Virtual
Alloc
. Ako se nađete u funkciji koja očigledno samo vrši aritmetičke operacije i možda neki memcopy
, preporuka je da pokušate da pronađete kraj funkcije (možda JMP ili poziv nekog registra) ili barem poziv poslednje funkcije i pokrenete do tada jer kod nije zanimljiv.
Tokom rasklapanja koda napomena kada god promenite region memorije jer promena regiona memorije može ukazivati na početak rasklopnog koda. Možete lako dumpovati region memorije koristeći Process Hacker (proces --> svojstva --> memorija).
Dok pokušavate da rasklopite kod, dobar način da znate da li već radite sa rasklopljenim kodom (tako da ga možete samo dumpovati) je da proverite stringove binarne datoteke. Ako u nekom trenutku izvršite skok (možda menjajući region memorije) i primetite da su dodati mnogi više stringova, tada možete znati da radite sa rasklopljenim kodom. Međutim, ako pakera već sadrži puno stringova, možete videti koliko stringova sadrži reč "http" i videti da li se ovaj broj povećava.
Kada dumpujete izvršnu datoteku iz regiona memorije, možete ispraviti neke zaglavlja koristeći PE-bear.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)