Kuinka puskurin ylivuotohyökkäykset toimivat? Kulissien taakse hakkerina

Kuinka puskurin ylivuotohyökkäykset toimivat? Kulissien taakse hakkerina
Kaltaisesi lukijat auttavat tukemaan MUO:ta. Kun teet ostoksen käyttämällä sivustollamme olevia linkkejä, voimme ansaita kumppanipalkkion. Lue lisää.

Kuinka hakkerit hyökkäävät järjestelmiin käyttämällä viruksia ja haittaohjelmia? Joskus se voi olla lunnasohjelma; joskus se voi olla hyökkäys, joka kuluttaa järjestelmävaatimukset. Puskurin ylivuoto on yksi näistä hyökkäysmenetelmistä – mutta mitä se oikeastaan ​​on? Miten nämä hyökkäykset toimivat?





PÄIVÄN VIDEON TEKEMINEN JATKA SISÄLLÖLLÄ VIERÄTÄ

Mikä on puskurin ylivuoto?

Mitä puskuri ja pino oikeastaan ​​ovat? Puskuri on kenttä, jossa jotkin tietokoneelle antamasi tiedot odottavat, ennen kuin ne saapuvat muistiin. Tietojen hakeminen muistista on järjestelmää väsyttävää toimintaa. Joten kun puskurialueella on tarpeeksi tilaa, soitat tiedot suoraan täältä. Tämä tarkoittaa laitteesi suorituskyvyn lisäystä. Tietenkin, kun puskurille käytettävissä oleva tila on täynnä, se tulee kirjoittaa muistiin.





Pino on pohjimmiltaan tietorakenne, jossa data push (lisää) ja pop (poista) -toiminnot tapahtuvat. Puskurin ja pinon käsitteet ovat melko samanlaisia; puskuri toimii kuitenkin kuin pino, joka tallentaa tilapäisesti saapuvat tiedot.





Puskurin ylivuoto voi olla haastava aihe, mutta kuten nimestä voi päätellä, se tapahtuu, kun dataa on ylikuormitettu. Haluat esimerkiksi kirjautua sisään järjestelmään. Kehittäjät voivat varata käyttäjätunnukselle 250 tavua tilaa. Jos syötät 300 tavua dataa, puskuri vuotaa yli. Tämä ylivuoto voi vaikuttaa muihin muistin tietoihin ja aiheuttaa vahinkoa.

Tämä on hyvä hakkereille. Kyberrikolliset voivat yhdistää tämän sotkun erilaisiin hyökkäysvektoreihin, esimerkiksi murtautuakseen järjestelmään ja kirjautuakseen sisään järjestelmänvalvojana.



Puskurin ylivuodon ymmärtämiseksi tärkeimmät aiheet, jotka sinun on tunnistettava, ovat CPU:n sisäinen arkkitehtuuri , muistirekisterit ja kuinka muisti käsittelee tietoja. Tässä on joitain termejä prosessorista, jotka sinun on tiedettävä.





kuinka luoda peli robloxissa

Kokoonpanokoodi





Matalan tason ohjelmointikieli , eli lähellä konekieltä.

Puskuri

Kiinteä koko varattu muistitila .

Tavukoodi

Korkean tason kielellä kirjoitetun koodin käännettävä keskikielinen muoto.

Kääntäjä

Ohjelma, joka muuntaa ohjelmointikielen konekoodiksi.

Pino

Dynaaminen, muuttuva muistitila.

Muistiteorian perusteet

Ilman muistiteorian ymmärtämistä voi olla vaikeaa käsitellä puskurin ylivuotoongelmia käytännössä. Voit ajatella sitä kuin yrittäisit rakentaa taloa tietämättä kuinka tehdä seinä.

Kuvittele, että haluat suorittaa puskurin ylivuodon hakkerin näkökulmasta. Tätä varten sinun on manipuloitava muistia ja annettava CPU suorittaa koodisi. Jos olisit joku, jolla on pahantahtoinen tarkoitus, tavoitteesi tässä olisi ylikuormittaa muistia ja manipuloida myös vierekkäisiä muistialueita.

  Kaavio, jossa pino kasvaa alas ja kasa kasvaa

Mutta ensinnäkin sinun on keskityttävä kasan, pinon ja tekstisegmentin käsitteisiin.

Kun pinoa luodaan, muisti käyttää suuria muistiosoitteita. Suuret muistiosoitteet tarkoittavat laajennettua muistialuetta. Sitten osoitearvot alkavat pienentyä. Muistipino käyttää menetelmää nimeltä LIFO (Last In, First Out) muistin käytön aikana. Pinomuistissa olevat muuttujat ovat voimassa vain siinä laajuudessa, jossa ne on määritelty. Jos ne ovat tämän alueen ulkopuolella, tapahtuu virhe.

Pinomuisti sen sijaan toimii dynaamisesti, eikä sen tarvitse alkaa korkeista osoitteista. Keon muistille ei ole asetettu rajaa; käyttöjärjestelmä asettaa kaikki rajat. Keon muistia on mahdollista muuttaa dynaamisesti ja nämä rajat voivat muuttua käyttäjän tarpeiden mukaan kasan käytön aikana. Keon muistin rajat riippuvat käyttöjärjestelmän ja laitteiston määrittämistä tekijöistä. Toisin sanoen se tarjoaa dynaamista käyttöä näissä rajoissa.

Tekstisegmentti sisältää ohjelmakoodin ja datasegmentit globaalit tiedot. Korkeat osoitteet jakavat pino- ja pinomuisti keskenään. Järjestelmä varaa molemmat muistit ajon aikana.

Puskurin ylivuodon ymmärtämiseksi paremmin sinun tulee tutkia yleiskäyttöisiä tietorekistereitä, joita tietokoneesi arkkitehtuuri käyttää tietojen tallentamiseen. Sen sijaan, että analysoisit jokaista tietuetta erikseen, keskity olennaiseen.

  • ESP (Extended Stack Pointer): Tämä rekisteri sisältää osoitteen pinon yläosassa.
  • EBP (Extended Base Pointer): Tämä pitää pohjaosoittimen.
  • EIP (Extended Instruction Pointer): Ja tämä rekisteri sisältää seuraavan suoritettavan käskyn osoitteen.

Nämä tekniset termit saattavat kuulostaa hieman hämmentävältä, mutta kuvittele ne kaikki pieninä osioina muistissa.

Kuinka puskurin ylivuotohyökkäykset toimivat?

Kun lisäät uusia tietoja mihin tahansa pinoon, nämä tiedot sijoitetaan yläreunaan. Kaikki uudet tiedot siirretään sitten alas. ESP on pinon yläosassa. Joten tässä tapauksessa ESP menee pienempään muistiosoitteeseen. Kuvittele, että yllä lisätyt tiedot painavat ESP:tä alas.

  Kaavio, jossa puskuritila on ESP:n ja EBP:n välissä

Kun ohjelma käynnistyy, järjestelmä luo pinokehyksen paikallisten muuttujien kanssa. Puskurin ylivuotohyökkäyksen päätarkoitus on päästä EIP- tai paluuosoitteeseen. Hakkeri, jolla on pääsy tähän osoitteeseen, voi käskeä sen osoittamaan haluamaansa haitallista koodia, joka sitten vaikuttaa laajempaan järjestelmään.

  Kaavio, joka näyttää palautusosoitteeseen kohdistuvan ESP:n tiedot

Jokaisen uuden databitin myötä pino kasvaa kohti EBP:tä. Todellinen kysymys tässä on, jos syötämme liikaa tietoja, voimmeko työntää EBP:tä kohti EIP:tä? Näin haluamasi tiedot tai koodi sijaitsevat EIP:ssä ja näet haluamasi tulokset. Jäljelle jää vain ajaa se. Kun suoritat ohjelman, se osoittaa EIP-koodiasi ja aloittaa suorituksen. Tämän seurauksena, jos olisit hakkeri, olet suorittanut ensimmäisen puskurin ylivuotohyökkäyksen.

Jos haluat ottaa esimerkin eri näkökulmasta, voit tarkastella eri tiheyksillä olevia nesteitä, joita kutsutaan nimellä ESP, EBP ja EIP, säiliössä. Kuvittele, että ESP sijaitsee säiliön yläosassa, koska sen tiheys on pienempi. Aivan kuten oliiviöljy ja vesi, niitä ei pidä sekoittaa. Haitallinen koodi on siis toinen neste – kun lisäät sen säiliöön, se sotkee ​​tämän tasapainon, syrjäyttää osan nesteestä ja sekoittuu EIP:n kanssa. Tämä osoittaa puskurin ylivuotoa.

Kuinka suojautua puskurin ylivuotohyökkäyksiltä

Joten miten voit estää tämän tapahtumasta?

Ensinnäkin on tärkeää noudattaa hyvää koodauskäytäntöä koko ohjelmistokehitysprosessin ajan tietoturva-aukkojen minimoimiseksi. Huolellisesti kirjoitettu koodi voi vähentää puskurin ylivuotojen todennäköisyyttä.

Miten löydän tulostimen ip -osoitteen?

Toinen askel on käyttää puolustusmekanismeja, jotka mahdollistavat muistialueiden tarkkailun, puskurien rajojen tarkistamisen ja hyökkäysten havaitsemisen. Lopuksi sinun on päivitettävä järjestelmät säännöllisesti ja asennettava korjaustiedostoja. Haavoittuvuuksia korjaavat päivitykset vaikeuttavat hyökkääjien mahdollisuuksia hyödyntää tunnettuja haavoittuvuuksia. Myös puolustustyökalujen, kuten ohjelmistojen ja palomuurien, käyttö tarjoaa lisäsuojaustasoa.

Ryhdy toimiin puskurin ylivuotoja vastaan

Puskurin ylivuotohyökkäykset muodostavat merkittävän uhan kyberturvallisuudellesi, ja niitä vastaan ​​on luonnollisesti tärkeää ryhtyä varotoimiin. Onneksi on mahdollista estää nämä hyökkäykset ja vahvistaa puolustusmekanismeja. Monet hyvät tietoturvakäytännöt, kuten ohjelmistojen pitäminen päivitettyinä korjaustiedostojen korjaamiseksi, auttavat suojaamaan tällaisilta hyökkäyksiltä ja muilta haavoittuvuuksilta.