Cyber Security Academy · Oppitunti

Dynaaminen analyysi GDB:llä ja pwndbg:llä

Asetatte keskeytyspisteitä, tutkitte muistia, seuraatte järjestelmäkutsuja ja automatisoitte GDB-istuntoja pwndbg:llä.

Oppitunti 3/413 vaihetta

Dynaaminen analyysi GDB:llä ja pwndbg:llä on ilmainen Cyber Security Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Cyber Security Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Cyber Security Academy-kurssilla on yhteensä 4 oppituntia.

Mitä dynaaminen analyysi on

Dynaaminen analyysi suorittaa binaarin ja tarkkailee sen toimintaa reaaliajassa: muistin sisältöä, rekisterien arvoja, järjestelmäkutsuja ja verkkoyhteyksiä. Se täydentää staattista analyysiä (Ghidra) näyttämällä todelliset ajonaikaiset arvot ja ohjausvuon.

GDB:n perusteet

GDB (GNU Debugger) on Linuxin vakiomuotoinen debuggeri:

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

pwndbg-laajennus

pwndbg on GDB-laajennus, joka lisää exploit-kehityksen apuvälineitä:

  • Visuaalinen pino-/rekisterinäyttö jokaisella pysäytyksellä
  • cyclic-kuvioiden generointi
  • heap-komento keon visualisointiin
  • rop-gadgettien etsintä
  • Binaarin suojaukset komennolla checksec
git clone https://github.com/pwndbg/pwndbg && ./setup.sh

Keskeytys- ja tarkkailupisteet

Suorituksen hallinta:

# 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

Muistin ja rekisterien tarkastelu

Suorituksen tilan tarkastelu:

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

Koodin suorittaminen askel kerrallaan

Siirtymiskomennot:

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

GDB:n skriptaus

Automatisoikaa GDB Pythonilla:

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

Heapin analysointi pwndbg:llä

Heapin tarkastelukomennot pwndbg:ssä:

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

Järjestelmäkutsujen jäljitys

Käyttäkää strace-työkalua järjestelmäkutsujen jäljittämiseen ilman täydellistä debuggausta:

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

Debuggausympäristön määrittäminen

Tärkeitä valmisteluja exploit-kehitystä varten:

# 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

Stripattujen binaarien debuggaus

Monista tuotantobinaareista debug-symbolit on poistettu. Menetelmiä:

  • Selvittäkää binaarin rakenne komennoilla file ja readelf
  • Asettakaa keskeytyspisteet osoitteisiin symbolien sijaan
  • Tunnistakaa yleiset kirjastokutsut funktioiden allekirjoitusten avulla
  • Ladatkaa libc:n symbolit erikseen, jos ne ovat saatavilla

Pikatarkistus: GDB

Mikä GDB:n komento asettaa keskeytyspisteen, joka aktivoituu vain tietyn ehdon täyttyessä?

Oppitunnin yhteenveto

GDB ja pwndbg mahdollistavat dynaamisen analyysin: keskeytyspisteiden asettamisen, rekisterien ja muistin tarkastelun sekä suorituksen jäljittämisen. Keskeisiä komentoja ovat break, run, ni/si, x/format ja info registers. pwndbg lisää heapin visualisoinnin, pinon läpikäynnin ja kuviotyökalut. strace ja ltrace jäljittävät järjestelmä- ja kirjastokutsuja ilman täydellistä debuggausympäristön määritystä.

Aloita maksutta

Opi Cyber Security Academy tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
76
Oppitunnit
303

Usein kysytyt kysymykset

Onko oppitunti ”Dynaaminen analyysi GDB:llä ja pwndbg:llä” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Cyber Security Academy-oppimispolun 3 oppituntia, myös oppitunnin “Dynaaminen analyysi GDB:llä ja pwndbg:llä”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Cyber Security Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Dynaaminen analyysi GDB:llä ja pwndbg:llä”?

Asetatte keskeytyspisteitä, tutkitte muistia, seuraatte järjestelmäkutsuja ja automatisoitte GDB-istuntoja pwndbg:llä. Harjoittelet Cyber Security Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Cyber Security Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Cyber Security Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”Dynaaminen analyysi GDB:llä ja pwndbg:llä”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Cyber Security Academy-oppitunnilla?

Kyllä. Jokainen Cyber Security Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Ghidra: binaarien selaaminen ja kommentointi
  2. x86/x64-assemblyn perusteet käänteisanalyysissä
  3. Dynaaminen analyysi GDB:llä ja pwndbg:llä
  4. Hämärtyksen purkaminen ja analyysin estämisen keinot
← Takaisin: Cyber Security Academy