Grunderna i reverse engineering och binäranalys · Lektion

Moderna exploit-skydd och kringgående

Förstå skydden mellan en sårbarhet och en fungerande exploit: ASLR, DEP/NX, stackkanarier, CFG och huvudidéerna bakom att kringgå dem.

Lektion 4 av 413 steg

Moderna exploit-skydd och kringgående är en gratis lektion i Grunderna i reverse engineering och binäranalys på CoddyKit. Detta är lektion 4 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Grunderna i reverse engineering och binäranalys, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Grunderna i reverse engineering och binäranalys innehåller totalt 4 lektioner.

Varför exploits blev svårare

Ni kan identifiera sårbarheter i binärfiler, fuzz-testa efter buggar och förstå exploit-primitiver. Moderna system har dessutom skyddsmekanismer som gör en enkel bugg svår att utnyttja.

Om ni känner till dessa försvar förstår ni vad en fungerande exploit måste övervinna.

Data Execution Prevention (DEP/NX)

DEP (även kallad NX-biten) markerar minne som icke-exekverbart. Kod som injiceras på stacken körs inte.

Detta satte stopp för klassiska attacker med ”shellcode på stacken” och fick angripare att övergå till kodåteranvändning.

Return-Oriented Programming

För att kringgå DEP återanvänder angripare befintlig exekverbar kod. ROP kedjar samman korta instruktionssekvenser (gadgets) som avslutas med ret för att utföra godtyckliga åtgärder utan att injicera kod.

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

Address Space Layout Randomization

ASLR randomiserar var moduler, stacken och heapen laddas vid varje körning, så att angripare inte kan hårdkoda adresser.

Utan en känd adress är både shellcode och ROP-gadgets svåra att rikta in sig på.

Kringgå ASLR med informationsläckor

ASLR kringgås med en informationsläcka: en bugg som avslöjar en verklig adress under körning. Utifrån en läckt pekare beräknar ni modulens basadress och hittar era gadgets.

Många moderna exploits är i praktiken tvåstegsattacker: ”läck först, exploatera sedan”.

Stack canaries

En stack canary är ett slumpmässigt värde som placeras före den sparade returadressen. En linjär stacköverskrivning skriver över värdet, och funktionen avbryts om kontrollen misslyckas.

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

Kringgå canaries

Canaries kan besegras genom att:

  • Läcka canary-värdet och sedan skriva tillbaka det oförändrat
  • Skriva över strukturer som hoppar över kontrollen (till exempel en icke-linjär skrivning)

Det är därför informationsläckor är så värdefulla.

Control-Flow Integrity

CFI och Windows CFG validerar indirekta anrop och returer mot en uppsättning legitima mål, vilket bryter många ROP-kedjor.

Hårdvarufunktioner som Intel CET lägger till en shadow stack för att skydda returadresser.

RELRO och Fortify

Andra skyddsmekanismer som ni kommer att stöta på:

  • Full RELRO gör GOT skrivskyddad och blockerar tekniker som skriver över GOT
  • FORTIFY_SOURCE lägger till gränskontroller i vanliga funktioner

Kontrollera vilka som är aktiverade innan ni planerar en metod.

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

Ett tankesätt för skyddsmekanismer

Exploitutveckling är en process där ni först kartlägger och sedan kringgår: lista aktiva skyddsmekanismer och hitta sedan den bugg eller läcka som neutraliserar varje mekanism. Starka försvar gör inte exploatering omöjlig, bara mer krävande.

PIE och positionsoberoende

PIE (Position Independent Executable) gör att ASLR kan randomisera själva huvudbinärfilen, inte bara biblioteken. Utan PIE laddas den körbara filen vid en fast basadress, vilket ger angripare tillförlitliga gadgetadresser.

Att checksec rapporterar ”PIE: No” är en betydelsefull svaghet som bör noteras.

Snabb kontroll

Vilken teknik är särskilt utformad för att kringgå DEP/NX genom att återanvända befintlig exekverbar kod i stället för att injicera ny kod?

Sammanfattning

Ni kan nu kartlägga det moderna landskapet av skydd:

  • DEP/NX blockerar injicerad kod; ROP återanvänder befintlig kod
  • ASLR randomiserar adresser; informationsläckor besegrar det
  • Canaries, CFI/CFG och RELRO lägger till ytterligare hinder

Verklig exploatering innebär att kartlägga dessa skydd och kedja buggar för att kringgå dem ett efter ett.

Gratis att börja

Lär dig Assembly med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
12
Lektioner
48

Vanliga frågor

Är lektionen ”Moderna exploit-skydd och kringgående” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Grunderna i reverse engineering och binäranalys, inklusive ”Moderna exploit-skydd och kringgående”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Grunderna i reverse engineering och binäranalys innehåller totalt 4 lektioner.

Vad lär jag mig i ”Moderna exploit-skydd och kringgående”?

Förstå skydden mellan en sårbarhet och en fungerande exploit: ASLR, DEP/NX, stackkanarier, CFG och huvudidéerna bakom att kringgå dem. Ni övar på Grunderna i reverse engineering och binäranalys med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Grunderna i reverse engineering och binäranalys?

Du behöver inga förkunskaper. Utbildningen i Grunderna i reverse engineering och binäranalys på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.

Hur lång tid tar lektionen ”Moderna exploit-skydd och kringgående”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Grunderna i reverse engineering och binäranalys-lektionen?

Ja. Varje Grunderna i reverse engineering och binäranalys-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Identifiera sårbarheter i binärfiler
  2. Introduktion till fuzzning
  3. Översikt över exploit-primitiver
  4. Moderna exploit-skydd och kringgående
← Tillbaka till Grunderna i reverse engineering och binäranalys