Ethical Hacking Academy · Oppitunti

EIP:n hallinta

Ylikirjoittakaa paluuosoite.

Oppitunti 3/413 vaihetta

EIP:n hallinta on ilmainen Ethical Hacking Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/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.

Tavoite

Kun siirtymä on tiedossanne, voitte sijoittaa mitkä tahansa neljä tavua EIP:hen. Kysymys kuuluu nyt: minkä osoitteen siihen pitäisi kirjoittaa?

Haluatte EIP:n osoittavan shellcodeen. Pinon osoitetta ei kuitenkaan voi kovakoodata, vaan tarvitsette luotettavan hypyn.

Miksi pinon osoitetta ei kovakoodata

Pinon osoite, jossa shellcode sijaitsee, voi muuttua suorituskertojen ja järjestelmien välillä. Pienetkin ympäristömuutokset siirtävät sitä.

Käyttäkää sen sijaan muistissa valmiina olevaa vakaata käskyä, joka ohjaa suorituksen siihen, mihin ESP sillä hetkellä osoittaa.

JMP ESP -temppu

Jos ESP osoittaa kaatumishetkellä shellcodeen, voitte asettaa EIP:n JMP ESP -käskyn osoitteeseen. Kun EIP lataa kyseisen osoitteen, suoritin suorittaa käskyn jmp esp ja hyppää shellcodeen.

Tämä epäsuora ohjaus tekee exploitista luotettavan pinon tarkasta osoitteesta riippumatta.

jmp esp   ; opcode FF E4

JMP ESP:n etsiminen

Etsikää ladatuista moduuleista (mieluiten sellaisista, joissa ei ole ASLR:ää) opkooditavut FF E4. Moduulin perusosoite pysyy vakiona, joten tämä gadget on luotettava.

Työkalut, kuten mona.py, löytävät sopivat käskyt automaattisesti.

!mona jmp -r esp -cpb "\x00"

Haitallisten merkkien välttäminen

Jotkin tavuarvot rikkovat syötteen ennen kuin se päätyy puskuriin muuttumattomana. Klassinen esimerkki on nollatavu 0x00, joka päättää C-merkkijonot. Muita ovat 0x0a (rivinvaihto) ja 0x0d (vaununpalautus).

JMP ESP -osoite ei saa sisältää mitään näistä haitallisista merkeistä.

Haitallisten merkkien tunnistaminen

Selvittääksenne, mitkä tavut ovat haitallisia, lähettäkää puskuriin kaikki tavuarvot väliltä 0x00–0xff ja tarkastelkaa muistia debuggerissa. Muuttuneet tai puuttuvat tavut ovat haitallisia merkkejä.

Poistatte nämä sekä paluuosoitteesta että shellcodesta.

!mona bytearray -cpb "\x00"

EIP:n ylikirjoituksen rakentaminen

Koostakaa nyt syöte: ensin täyte siirtymään asti ja sen jälkeen JMP ESP -osoite little-endian-järjestyksessä.

Jos JMP ESP sijaitsee osoitteessa 0x625011AF, kirjoitettavat tavut ovat käänteisessä järjestyksessä.

buf = "A"*offset + "\xaf\x11\x50\x62"  # 0x625011AF, little-endian

Hypyn varmistaminen

Asettakaa debuggerissa keskeytyskohta JMP ESP -osoitteeseen ja suorittakaa exploit. Kun EIP saavuttaa osoitteen ja suoritus siirtyy ESP:n osoittamaan paikkaan, olette vahvistaneet uudelleenohjauksen toimivan luotettavasti.

Tässä vaiheessa EIP osoittaa paikkaan, johon shellcode sijoitetaan.

Tilanteen tekeminen shellcodelle

Paluuosoitteen jälkeen jäljellä oleva puskuri (johon ESP osoittaa) sisältää shellcoden. Jos tilaa on vähän, saatatte tarvita lyhyen hypyn tai joutua siirtämään shellcoden muualle.

NOP-liukuma (sarja 0x90-tavuja, jotka eivät tee mitään) ennen shellcodea lisää toleranssia, koska hyppy voi osua mihin tahansa liukuman kohtaan.

buf = "A"*offset + ret + "\x90"*16 + shellcode

Kokonaisuuden yhdistäminen

Exploitsin koko rakenne on nyt selvä:

  • Täyte siirtymään asti.
  • JMP ESP -osoite (ei haitallisia merkkejä, little-endian).
  • NOP-liukuma.
  • Shellcode.

Olette yhden vaiheen päässä komentotulkista.

JMP ESP:n vaihtoehdot

JMP ESP on klassinen uudelleenohjaus, mutta ei ainoa vaihtoehto. Jos jokin toinen rekisteri osoittaa puskuriinne, voitte käyttää käskyä jmp eax, call esp tai gadgetia push esp; ret.

Periaate on sama: etsikää vakaa käsky, joka siirtää ohjauksen siihen, missä shellcode sijaitsee.

Pikatarkistus

Palauttakaa mieleenne, miksi JMP ESP:tä suositaan kovakoodatun pinon osoitteen sijaan.

Kertaus

Nyt hallitsette suorituksen ohjausvirtaa:

  • Korvatkaa EIP herkän pinon osoitteen sijaan JMP ESP -gadgetin osoitteella.
  • Etsikää gadget ilman ASLR:ää olevasta moduulista ja välttäkää haitallisia merkkejä, kuten 0x00.
  • Kirjoittakaa osoite little-endian-järjestyksessä ja lisätkää shellcoden eteen NOP-liukuma.

Seuraavaksi luotte shellcoden ja käynnistätte komentotulkin.

Aloita maksutta

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 ”EIP:n hallinta” ilmainen?

Kyllä – oppitunnin ”EIP:n hallinta” 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 ”EIP:n hallinta”?

Ylikirjoittakaa paluuosoite. 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 3/4.

Kuinka kauan ”EIP:n hallinta”-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

  1. Muisti ja pino
  2. Fuzzing kaatumisten löytämiseksi
  3. EIP:n hallinta
  4. Shellcode ja hyväksikäyttö
← Takaisin: Ethical Hacking Academy