Kuidas puhvri ületäitumise rünnakud töötavad? Häkkerina kulisside taha minek

Kuidas puhvri ületäitumise rünnakud töötavad? Häkkerina kulisside taha minek
Teiesugused lugejad aitavad MUO-d toetada. Kui teete ostu meie saidil olevate linkide abil, võime teenida sidusettevõtte komisjonitasu. Loe rohkem.

Kuidas häkkerid viiruseid ja pahavara kasutavaid süsteeme ründavad? Mõnikord võib see olla lunavara; mõnikord võib see olla rünnak, mis kulutab teie süsteeminõudeid. Puhvri ületäitumine on üks neist rünnakumeetoditest, kuid mis see tegelikult on? Kuidas need rünnakud toimivad?





PÄEVA VIDEO MAKKEUSE SISUGA JÄTKAMISEKS KERIMISE

Mis on puhvri ületäitumine?

Mis siis tegelikult on puhver ja virn? Puhver on väli, kus osa teie arvutisse sisestatud teabest ootab enne mällu jõudmist. Andmete mälust tagasikutsumine on süsteemi väsitav toiming. Nii et kui puhveralal on piisavalt ruumi, helistate andmetele otse siit. See tähendab teie seadme jõudluse tõusu. Muidugi, kui puhvri jaoks saadaolev ruum on täis, on vaja see mällu kirjutada.





Stack on sisuliselt andmestruktuur, milles toimuvad andmete tõukamise (lisamise) ja pop (eemaldamise) toimingud. Puhvri ja virna mõisted on üsna sarnased; aga puhver töötab nagu virn, mis salvestab ajutiselt sissetulevad andmed.





Puhvri ületäitumine võib olla keeruline teema, kuid nagu nimigi ütleb, tekib see siis, kui andmeid on ülekoormatud. Näiteks soovite süsteemi sisse logida. Arendajad võivad kasutajanime jaoks eraldada 250 baiti ruumi. Kui sisestate 300 baiti andmeid, täitub puhver üle. See ülevool võib mõjutada teisi mälus olevaid andmeid, põhjustades kahju.

See on häkkeritele suurepärane. Küberkurjategijad saavad selle segaduse kombineerida erinevate rünnakuvektoritega, näiteks süsteemi häkkida ja administraatorina sisse logida.



Kuidas avada mälupulk Windows 10 -s

Puhvri ületäitumise mõistmiseks peate ära tundma peamised teemad CPU sisemine arhitektuur , mäluregistrid ja kuidas mälu töötleb andmeid. Siin on mõned terminid protsessori kohta, mida peate teadma.





Montaažikood





Madala tasemega programmeerimiskeel , st masinkeelele lähedane.

Puhver

Fikseeritud suurus eraldatud mäluruum .

Baiti kood

Kõrgetasemelises keeles kirjutatud koodi koostatav keskkeelevorm.

Koostaja

Programm, mis teisendab programmeerimiskeele masinkoodiks.

Kuhja

Dünaamiline, muutuv mäluruum.

Mäluteooria alused

Mäluteooriat mõistmata võib olla keeruline puhvri ületäitumise probleeme praktikas lahendada. Võite mõelda sellele nagu katsele ehitada maja, teadmata, kuidas seina teha.

Kujutage ette, et soovite häkkeri vaatenurgast käivitada puhvri ülevoolu. Selleks peate mäluga manipuleerima ja laskma CPU-l teie koodi käivitada. Kui teil on pahatahtlikud kavatsused, oleks teie eesmärk siin mälu üle koormata ja manipuleerida ka külgnevate mälupiirkondadega.

  Diagramm, mis näitab virna vähenemist ja hunniku kasvu

Kuid kõigepealt peate keskenduma hunniku, virna ja tekstisegmendi mõistetele.

Viru loomise ajal kasutab mälu kõrgeid mäluaadresse. Suure mälumahu aadressid tähendavad laiendatud mäluala. Seejärel hakkavad aadressi väärtused vähenema. Mälupinn kasutab mälukasutuse ajal meetodit nimega LIFO (Last In, First Out). Pinumälus olevad muutujad kehtivad ainult nende määratlemise ulatuses. Kui need jäävad sellest ulatusest välja, ilmneb tõrge.

Pinnamälu seevastu töötab dünaamiliselt ega pea alustama kõrgetelt aadressidelt. Kuhjamälule pole seatud piirangut; kõik piirangud määrab operatsioonisüsteem. Kuhjamälu on võimalik dünaamiliselt muuta ja need piirangud võivad kuhja kasutamise ajal muutuda vastavalt kasutaja vajadustele. Kuhjamälu piirangud sõltuvad operatsioonisüsteemi ja riistvara poolt määratud teguritest. Teisisõnu, see pakub nendes piirides dünaamilist kasutamist.

Tekstisegment sisaldab programmi koodi ja andmesegmendid globaalseid andmeid. Kõrged aadressid jagavad virna ja kuhja mälu omavahel. Süsteem eraldab mõlemad mälu käitusajal.

Puhvri ületäitumise paremaks mõistmiseks peaksite uurima üldotstarbelisi andmeregistreid, mida teie arvuti arhitektuur andmete salvestamiseks kasutab. Selle asemel, et iga kirjet eraldi analüüsida, keskenduge olulisele.

  • ESP (Extended Stack Pointer): See register sisaldab aadressi virna ülaosas.
  • EBP (Extended Base Pointer): See hoiab baaskursorit.
  • EIP (Extended Instruction Pointer): Ja see register sisaldab järgmise täidetava käsu aadressi.

Need tehnilised terminid võivad tunduda pisut segane, kuid kujutlege neid kõiki mälu väikeste partitsioonidena.

Kuidas puhvri ületäitumise rünnakud töötavad?

Kui lisate mis tahes virna uusi andmeid, paigutatakse need andmed ülaossa. Seejärel liigutatakse kõik uued andmed allapoole. ESP on virna ülaosas. Nii et sel juhul läheb ESP madalamale mäluaadressile. Kujutage ette, et ülaltoodud andmed suruvad ESP alla.

  Diagramm, mis näitab puhverruumi ESP ja EBP vahel

Kui programm käivitub, loob süsteem kohalike muutujatega virnaraami. Puhvri ületäitumise rünnaku peamine eesmärk on saada juurdepääs EIP-le või tagasisaatmisaadressile. Sellele aadressile juurdepääsu omav häkker võib käskida sellel osutada mis tahes soovitud pahatahtlikule koodile, mis seejärel mõjutab süsteemi laiemalt.

  Diagramm, mis näitab tagastusaadressi sihtivas ESP-s olevaid andmeid

Iga uue andmebitiga kasvab virn EBP suunas. Tegelik küsimus on selles, kas kui sisestame liiga palju andmeid, kas saame EBP-d EIP-i suunas lükata? Nii asuvad soovitud andmed või kood EIP-s ja näete soovitud tulemusi. Jääb vaid see käivitada. Kui käivitate programmi, osutab see teie EIP-koodile ja alustab täitmist. Selle tulemusel, kui olite häkker, olete sooritanud oma esimese puhvri ületäitumise rünnaku.

Et võtta näidet teise nurga alt, võite kaaluda erineva tihedusega vedelikke, mida nimetatakse ESP, EBP ja EIP, konteineris. Kujutage ette, et ESP asub konteineri ülaosas, kuna selle tihedus on väiksem. Nii nagu oliiviõli ja vesi, ei tohiks need seguneda. Pahatahtlik kood on seega veel üks vedelik – kui lisate selle anumasse, rikub see tasakaalu, tõrjub osa vedelikust välja ja seguneb EIP-ga. See näitab puhvri ületäitumist.

Kuidas kaitsta puhvri ületäitumise rünnakute eest

Niisiis, kuidas seda peatada?

Esiteks on turvahaavatavuste minimeerimiseks oluline järgida häid kodeerimistavasid kogu tarkvaraarenduse protsessis. Hoolikalt kirjutatud kood võib vähendada puhvri ületäitumise tõenäosust.

Teine samm on kasutada kaitsemehhanisme, mis võimaldavad jälgida mälupiirkondi, kontrollida puhvrite piire ja tuvastada rünnakuid. Lõpuks peate süsteeme regulaarselt värskendama ja plaastreid rakendama. Turvaauke parandavad värskendused muudavad ründajatel teadaolevate turvaaukude ärakasutamise raskemaks. Lisaks annab kaitsetööriistade (nt tarkvara ja tulemüür) kasutamine täiendava turvakihi.

Võtke puhvri ületäitumise vastu meetmeid

Puhvri ületäitumise rünnakud ohustavad oluliselt teie küberturvalisust ja nende vastu ettevaatusabinõud on loomulikult olulised. Õnneks on võimalik neid rünnakuid blokeerida ja kaitsemehhanisme tugevdada. Paljud head turvatavad, nagu tarkvara värskendamine paikade parandamiseks, aitavad kaitsta selliste rünnakute ja muude haavatavuste eest.