Introduksjon til skadevareutpakking
Utforsk pakkere og grunnleggende teknikker for å pakke ut enkle kjørbare filer og avdekke den faktiske koden deres.
Introduksjon til skadevareutpakking er en gratis leksjon i Grunnleggende om reverse engineering og binæranalyse på CoddyKit. Dette er leksjon 3 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Grunnleggende om reverse engineering og binæranalyse, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Grunnleggende om reverse engineering og binæranalyse inneholder totalt 4 leksjoner.
Forstå pakkere for skadevare
Skadevareutviklere bruker ofte packers for å skjule den skadelige koden. Tenk på en packer som et beskyttende skall rundt det opprinnelige programmet.
Dette skallet komprimerer eller krypterer skadevarens kjernelogikk. Målet er å gjøre det vanskeligere for sikkerhetsanalytikere å forstå og oppdage trusselen.
Hvorfor skadevare bruker pakking
Packere har flere viktige formål for skadevare:
- Unngå oppdagelse: Signaturbaserte antivirusverktøy har problemer med å identifisere pakket skadevare. Den pakkede formen ser annerledes ut enn den opprinnelige, kjente skadelige signaturen.
- Tilsløre kode: Den skjuler den faktiske funksjonaliteten, noe som gjør statisk analyse (å se på koden uten å kjøre den) mye vanskeligere.
- Redusere størrelse: Noen ganger, selv om dette er mindre vanlig for skadevare, kan pakking redusere filstørrelsen, på samme måte som en ZIP-fil.
Pakkeprosessen forklart
Når et program pakkes, blir den opprinnelige koden transformert (komprimert/kryptert) og innebygd i et nytt, lite kodestykke kalt "stub".
Når det pakkede programmet kjører, kjøres stub-en først. Oppgaven er å:
- Allokere minne.
- Dekryptere eller dekomprimere den opprinnelige programkoden til minnet.
- Overføre kontrollen (hoppe) til det opprinnelige programmets startpunkt.
Identifisere pakkede kjørbare filer
Hvordan kan De se om en fil er pakket? Her er noen vanlige indikatorer:
- Høy entropi: Data som ser tilfeldige ut (for eksempel krypterte data) har høy entropi. Verktøy kan måle dette.
- Uvanlige seksjoner: Pakkede filer har ofte egendefinerte eller omdøpte seksjoner (for eksempel
.UPX0,.RLC) med uvanlige tillatelser. - Manglende importer: Filens importtabell (listen over eksterne funksjoner den kaller) kan være svært liten, siden stub-en utfører innlastingen.
Verktøy som PEiD eller Detect It Easy (DIE) kan ofte identifisere vanlige packere.
Hva oppakking oppnår
Oppakking er prosessen med å reversere pakkingen. Målet vårt er å hente den opprinnelige, ikke-tilslørte koden fra minnet og lagre den i en ny fil.
Når skadevaren er pakket opp, blir den mye enklere å analysere ved hjelp av verktøy for statisk analyse (disassembler) og feilsøkere, slik at den egentlige hensikten blir synlig.
Finne det opprinnelige startpunktet
Det mest kritiske trinnet ved manuell oppakking er å finne Original Entry Point (OEP). Dette er minneadressen der den opprinnelige, oppakkede programkoden begynner å kjøre.
Packerens stub hopper til slutt til OEP etter at den har dekryptert/dekomprimert det opprinnelige programmet. Oppgaven Deres er å finne dette hoppet.
Praktisk oppdagelse av OEP
I en debugger (for eksempel OllyDbg eller x64dbg) kan De finne OEP ved å:
- Sporing: Gå trinnvis gjennom packerens stub til De ser en lang hoppinstruksjon (
JMP) eller en retur (RET) som fører til et annet minneområde. - Maskinvarebruddpunkter: Sett et maskinvarebruddpunkt på kodedelen av den pakkede filen. Når den skrives til (pakkes opp), stopper debuggeren, ofte nær OEP.
- API-bruddpunkter: Sett bruddpunkter på vanlige API-funksjoner som
LoadLibraryA/WellerGetProcAddress, som det opprinnelige programmet kan kalle kort tid etter oppakkingen.
Hente ut oppakket kode
Når programmet har kjørt oppakkingsstub-en og nådd OEP, er den opprinnelige koden tilgjengelig i prosessens minneområde.
De kan bruke funksjonaliteten i debuggeren til å «dumpe» dette minneområdet til en ny fil på disken. Den nye filen vil inneholde det oppakkede kjørbare bildet.
Verktøy som ScyllaHide eller innebygde debuggerfunksjoner kan hjelpe med dette.
Gjenoppbygge importtabellen
Den dumpede kjørbare filen har ofte en ødelagt eller ufullstendig Import Address Table (IAT). IAT forteller programmet hvilke eksterne funksjoner (fra DLL-filer) det må kalle.
Verktøy som Import REConstructor (ImpREC) eller Scylla kan analysere den dumpede filen og prosessen som kjører, og gjenoppbygge IAT slik at den oppakkede kjørbare filen kan kjøres og analyseres.
Kunnskapstest om oppakking
La oss teste forståelsen Deres av oppakking av skadevare!
Oppakking – oppsummering
I denne leksjonen utforsket vi skadevarepackernes verden, og forsto hvorfor de brukes og hvordan de fungerer. Vi lærte å identifisere pakkede filer og gikk gjennom de viktigste trinnene ved manuell oppakking: finne OEP, dumpe minnet og reparere importtabellen.
Det er avgjørende å beherske disse grunnleggende oppakkingsteknikkene for avansert skadevareanalyse, slik at De kan avdekke den egentlige skadelige koden for videre undersøkelser.
Lær deg Assembly med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 12
- Leksjoner
- 48
Ofte stilte spørsmål
Er leksjonen «Introduksjon til skadevareutpakking» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Grunnleggende om reverse engineering og binæranalyse, inkludert «Introduksjon til skadevareutpakking», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Grunnleggende om reverse engineering og binæranalyse inneholder totalt 4 leksjoner.
Hva lærer jeg i «Introduksjon til skadevareutpakking»?
Utforsk pakkere og grunnleggende teknikker for å pakke ut enkle kjørbare filer og avdekke den faktiske koden deres. Du øver på Grunnleggende om reverse engineering og binæranalyse med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Grunnleggende om reverse engineering og binæranalyse?
Ingen tidligere erfaring er nødvendig. Grunnleggende om reverse engineering og binæranalyse på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.
Hvor lang tid tar leksjonen «Introduksjon til skadevareutpakking»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Grunnleggende om reverse engineering og binæranalyse-leksjonen?
Ja. Alle Grunnleggende om reverse engineering og binæranalyse-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Typer skadevare og virkemåten deres
- Grunnleggende atferdsanalyse
- Introduksjon til skadevareutpakking
- Kompromitteringsindikatorer og YARA-regler