Cyber Security Academy · Lezione

Analisi dinamica con GDB e pwndbg

Impostate breakpoint, ispezionate la memoria, tracciate le syscall e automatizzate le sessioni GDB con pwndbg.

Lezione 3 di 413 passaggi

Analisi dinamica con GDB e pwndbg è una lezione Cyber Security Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Cyber Security Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cyber Security Academy include 4 lezioni in totale.

Che cos’è l’analisi dinamica

L’analisi dinamica esegue un binario e ne osserva il comportamento in tempo reale: contenuto della memoria, valori dei registri, chiamate di sistema e connessioni di rete. Completa l’analisi statica (Ghidra) mostrando i valori effettivi a runtime e il flusso di controllo.

Nozioni di base su GDB

GDB (GNU Debugger) è il debugger standard di Linux:

gdb ./vuln              # load binary
gdb -p 1234             # attach to running process
run [args]              # start execution
break main              # set breakpoint at main
continue (c)            # continue execution
next (n)                # step over
step (s)                # step into

Potenziamento con pwndbg

pwndbg è un plugin per GDB che aggiunge strumenti ausiliari per lo sviluppo di exploit:

  • Visualizzazione dello stack e dei registri a ogni interruzione
  • Generazione di pattern con cyclic
  • Comando heap per visualizzare l’heap
  • Ricerca di gadget ROP con rop
  • Protezioni del binario con checksec
git clone https://github.com/pwndbg/pwndbg && ./setup.sh

Breakpoint e watchpoint

Controllare l’esecuzione:

# Break at address:
break *0x401234
# Break at function:
break strncpy
# Watch memory address:
watch *0x7ffd1234     # break when value changes
# Conditional break:
break *0x401234 if $rax == 0
# List and delete:
info break
delete 1

Esaminare memoria e registri

Ispezionare lo stato:

info registers         # show all registers
print $rax             # print register value
x/10xg $rsp            # examine 10 qwords at RSP
x/s 0x402000           # examine as string
x/20i $rip             # disassemble 20 instructions at RIP
pwndbg: telescope $rsp 20  # smart stack display

Eseguire il codice passo per passo

Comandi di navigazione:

ni (nexti)             # step over (instruction level)
si (stepi)             # step into (instruction level)
finish                 # run until function returns
until 0x401234         # run until address

Scripting con GDB

Automatizzare GDB con Python:

# GDB Python script:
gdb ./vuln << EOF
python
for i in range(10):
    gdb.execute("continue")
    gdb.execute("x/4xg $rsp")
end
EOF

Analizzare l’heap con pwndbg

Comandi di ispezione dell’heap in pwndbg:

heap                   # show all heap chunks
heap -a                # show all allocations
bin                    # show free list bins
tcachebins             # show tcache entries
vis_heap_chunks        # visual heap map

Tracciare le chiamate di sistema

Usare strace per tracciare le chiamate di sistema senza eseguire un debug completo:

strace ./vuln          # trace all syscalls
strace -e trace=open,read,write ./vuln  # filter syscalls
strace -f ./vuln       # follow forks
# ltrace for library calls:
ltrace ./vuln

Configurare un ambiente di debug

Configurazione importante per lo sviluppo di exploit:

# Disable ASLR for testing:
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
# Or per-process:
setarch $(uname -m) -R gdb ./vuln
# Verify with:
ldd ./vuln  # check libc base

Eseguire il debug di binari privi di simboli

Molti binari di produzione non contengono più i simboli di debug. Tecniche:

  • Usare file e readelf per analizzare il binario
  • Impostare breakpoint su indirizzi anziché su simboli
  • Usare le firme delle funzioni per identificare le chiamate comuni alle librerie
  • Caricare separatamente i simboli di libc, se disponibili

Verifica rapida: GDB

Quale comando in GDB imposta un breakpoint che si attiva solo quando viene soddisfatta una condizione specifica?

Riepilogo della lezione

GDB con pwndbg consente di eseguire analisi dinamiche: impostare breakpoint, esaminare registri e memoria e seguire l’esecuzione. Comandi principali: break, run, ni/si, x/format, info registers. pwndbg aggiunge la visualizzazione dell’heap, la visualizzazione telescopica dello stack e strumenti per i pattern. strace/ltrace tracciano le chiamate di sistema e le chiamate alle librerie senza dover configurare un ambiente di debug completo.

Gratis per iniziare

Impara Cyber Security Academy con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
76
Lezioni
303

Domande Frequenti

La lezione «Analisi dinamica con GDB e pwndbg» è gratuita?

Sì — il testo completo di «Analisi dinamica con GDB e pwndbg» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Cyber Security Academy, passa a CoddyKit PRO. Il corso Cyber Security Academy include 4 lezioni in totale.

Cosa imparerò in «Analisi dinamica con GDB e pwndbg»?

Impostate breakpoint, ispezionate la memoria, tracciate le syscall e automatizzate le sessioni GDB con pwndbg. Eserciti Cyber Security Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Cyber Security Academy?

Non è richiesta alcuna esperienza precedente. Cyber Security Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Analisi dinamica con GDB e pwndbg»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Cyber Security Academy?

Sì. Ogni lezione Cyber Security Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Ghidra: navigazione e annotazione dei binari
  2. Fondamenti di assembly x86/x64 per il reverse engineering
  3. Analisi dinamica con GDB e pwndbg
  4. Deoffuscamento e tecniche anti-analisi
← Torna a Cyber Security Academy