Grunnleggende om reverse engineering og binæranalyse · leksjon

Moderne utnyttelsesbegrensninger og omgåelser

Forstå forsvarsmekanismene som står mellom en sårbarhet og et fungerende exploit: ASLR, DEP/NX, stakk-canaries, CFG og hovedidéene bak å omgå dem.

Leksjon 4 av 413 trinn

Moderne utnyttelsesbegrensninger og omgåelser er en gratis leksjon i Grunnleggende om reverse engineering og binæranalyse på CoddyKit. Dette er leksjon 4 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.

Hvorfor utnyttelser ble vanskeligere

De kan identifisere sårbarheter i binærfiler, finne feil gjennom fuzzing og forstå utnyttelsesprimitive. Moderne systemer legger til begrensningstiltak som gjør en enkel feil vanskelig å utnytte.

Hvis De kjenner disse forsvarsmekanismene, vet De hva en fungerende utnyttelse må overvinne.

Data Execution Prevention (DEP/NX)

DEP (også kalt NX-biten) markerer minne som ikke-kjørbart. Kode som injiseres på stakken, vil ikke kjøre.

Dette satte en stopper for klassiske angrep med «shellcode på stakken» og fikk angripere til å ta i bruk kodegjenbruk.

Return-Oriented Programming

For å omgå DEP gjenbruker angripere eksisterende kjørbar kode. ROP setter sammen korte instruksjonssekvenser (gadgets) som avsluttes med ret, for å utføre vilkårlige handlinger uten å injisere kode.

; a gadget
pop rdi
ret
; chained: set rdi, then call a real function

Randomisering av adresserommet

ASLR randomiserer hvor moduler, stakk og heap lastes ved hver kjøring, slik at angripere ikke kan hardkode adresser.

Uten en kjent adresse er både shellcode og ROP-gadgets vanskelige å målrette.

Omgå ASLR med lekkasjer

ASLR omgås med en informasjonslekkasje: en feil som avslører en faktisk runtime-adresse. Med én lekket peker kan De beregne modulens baseadresse og finne gadgets.

Mange moderne utnyttelser er i praksis angrep i to trinn: «lekkasje, deretter utnyttelse».

Stakk-kanarifugler

En stakk-kanarifugl er en tilfeldig verdi som plasseres før den lagrede returadressen. En lineær stack overflow overskriver den, og funksjonen avbrytes hvis verdien ikke stemmer.

; epilogue check
mov rax, [rbp-8]
xor rax, fs:[0x28]
jne __stack_chk_fail

Omgå kanarifugler

Kanarifugler kan overvinnes ved å:

  • Lekke kanarifuglverdien og skrive den tilbake uendret
  • Overskrive strukturer som hopper over kontrollen (for eksempel ved en ikke-lineær skriving)

Det er derfor informasjonslekkasjer er så verdifulle.

Kontrollflytintegritet

CFI og Windows' CFG validerer indirekte kall og returer mot et sett med legitime mål, noe som bryter mange ROP-kjeder.

Maskinvarefunksjoner som Intel CET legger til en skyggestakk for å beskytte returadresser.

RELRO og Fortify

Andre herdingstiltak De vil møte:

  • Full RELRO gjør GOT skrivebeskyttet og blokkerer triks som overskriver GOT
  • FORTIFY_SOURCE legger til grensekontroller i vanlige funksjoner

Kontroller hvilke tiltak som er aktivert, før De planlegger fremgangsmåten.

checksec --file=./target
# RELRO: Full   Canary: Yes   NX: Yes   PIE: Yes

Tankegangen bak begrensningstiltak

Utnyttelsesutvikling er en prosess med kartlegging og deretter omgåelse: List opp aktive begrensningstiltak, og finn deretter feilen eller lekkasjen som nøytraliserer hvert av dem. Sterke forsvar gjør ikke utnyttelse umulig, bare mer krevende.

PIE og posisjonsuavhengighet

PIE (Position Independent Executable) lar ASLR randomisere selve hovedbinærfilen, ikke bare bibliotekene. Uten PIE lastes den kjørbare filen på en fast baseadresse, noe som gir angripere pålitelige gadget-adresser.

At checksec rapporterer «PIE: No», er en betydelig svakhet det er verdt å merke seg.

Hurtigsjekk

Hvilken teknikk er spesifikt utviklet for å omgå DEP/NX ved å gjenbruke eksisterende kjørbar kode i stedet for å injisere ny kode?

Oppsummering

De har nå oversikt over det moderne forsvarslandskapet:

  • DEP/NX blokkerer injisert kode; ROP gjenbruker eksisterende kode
  • ASLR randomiserer adresser; informasjonslekkasjer omgår dette
  • Kanarifugler, CFI/CFG og RELRO legger til flere hindringer

Reell utnyttelse innebærer å kartlegge disse tiltakene og kjede sammen feil for å omgå hvert av dem.

Gratis å komme i gang

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 «Moderne utnyttelsesbegrensninger og omgåelser» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Grunnleggende om reverse engineering og binæranalyse, inkludert «Moderne utnyttelsesbegrensninger og omgåelser», 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 «Moderne utnyttelsesbegrensninger og omgåelser»?

Forstå forsvarsmekanismene som står mellom en sårbarhet og et fungerende exploit: ASLR, DEP/NX, stakk-canaries, CFG og hovedidéene bak å omgå dem. 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 4 av 4.

Hvor lang tid tar leksjonen «Moderne utnyttelsesbegrensninger og omgåelser»?

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

  1. Identifisere sårbarheter i binærfiler
  2. Introduksjon til fuzzing
  3. Oversikt over exploit-primitiver
  4. Moderne utnyttelsesbegrensninger og omgåelser
← Tilbake til Grunnleggende om reverse engineering og binæranalyse