Kako delujejo napadi prekoračitve medpomnilnika? Pojdite v zakulisje kot heker

Kako delujejo napadi prekoračitve medpomnilnika? Pojdite v zakulisje kot heker
Bralci, kot ste vi, pomagajo podpirati MUO. Ko opravite nakup prek povezav na našem spletnem mestu, lahko zaslužimo partnersko provizijo. Preberi več.

Kako hekerji napadajo sisteme z virusi in zlonamerno programsko opremo? Včasih je lahko izsiljevalska programska oprema; včasih je lahko napad, ki porabi vaše sistemske zahteve. Prekoračitev medpomnilnika je ena od teh metod napada - toda kaj pravzaprav je? Kako ti napadi delujejo?





MAKEUSEOF VIDEO DNEVA POMIKITE SE ZA NADALJEVANJE Z VSEBINO

Kaj je prelivanje medpomnilnika?

Torej, kaj pravzaprav sta medpomnilnik in sklad? Medpomnilnik je polje, kjer nekatere vhodne informacije, ki jih posredujete računalniku, čakajo, preden dosežejo pomnilnik. Priklic podatkov iz pomnilnika je sistemsko naporen postopek. Torej, ko je v območju medpomnilnika dovolj prostora, pokličete podatke neposredno od tu. To pomeni povečanje zmogljivosti vaše naprave. Seveda, ko je prostor, ki je na voljo za medpomnilnik, poln, ga je treba zapisati v pomnilnik.





Sklad je v bistvu podatkovna struktura, v kateri potekajo operacije potiskanja (dodajanja) in izpiranja (odstranjevanja). Koncepta medpomnilnika in sklada sta precej podobna; vendar medpomnilnik deluje kot sklad, ki začasno shranjuje dohodne podatke.





Prelivanje medpomnilnika je lahko zahtevna tema, a kot že ime pove, se zgodi, ko pride do preobremenitve podatkov. Na primer, želite se prijaviti v sistem. Razvijalci lahko dodelijo 250 bajtov prostora za uporabniško ime. Če vnesete 300 bajtov podatkov, se medpomnilnik prepolni. To prelivanje lahko vpliva na druge podatke v pomnilniku in povzroči škodo.

To je super za hekerje. Kibernetski kriminalci lahko združijo to zmešnjavo z različnimi vektorji napadov, da na primer vdrejo v sistem in se prijavijo kot skrbnik.



Če želite razumeti prekoračitev medpomnilnika, bodo glavne teme, ki jih morate prepoznati, Notranja arhitektura procesorja , pomnilniške registre in kako pomnilnik obdeluje podatke. Tukaj je nekaj izrazov o procesorju, ki jih morate poznati.





spletna mesta za zmenke za 18 letnike

Koda sestavljanja





Programski jezik nizke ravni , tj. blizu strojnemu jeziku.

Medpomnilnik

Fiksna velikost dodeljen pomnilniški prostor .

Byte Code

Vmesna jezikovna oblika kode, ki jo je mogoče prevesti, napisana v jeziku visoke ravni.

Prevajalnik

Program, ki pretvori programski jezik v strojno kodo.

Kup

Dinamičen, spremenljiv pomnilniški prostor.

Osnove teorije spomina

Brez razumevanja teorije pomnilnika je lahko v praksi težko obravnavati težave s prekoračitvijo medpomnilnika. Lahko si predstavljate, kot da bi poskušali zgraditi hišo, ne da bi vedeli, kako narediti zid.

Predstavljajte si, da želite zagnati prelivanje medpomnilnika z vidika hekerja. Za to morate manipulirati s pomnilnikom in zagotoviti, da CPE izvede vašo kodo. Če bi bili nekdo z zlonamernimi nameni, bi bil vaš cilj tukaj preobremenitev pomnilnika in manipulacija sosednjih območij pomnilnika.

  Diagram, ki prikazuje sklad, ki raste navzdol, in kup, ki raste navzgor

Toda najprej se morate osredotočiti na koncepte kopice, sklada in segmenta besedila.

Med ustvarjanjem sklada pomnilnik uporablja visoke pomnilniške naslove. Visoki pomnilniški naslovi pomenijo razširjeno pomnilniško območje. Nato se vrednosti naslova začnejo zmanjševati. Pomnilniški sklad med uporabo pomnilnika uporablja metodo, imenovano LIFO (Last In, First Out). Spremenljivke v pomnilniku sklada so veljavne samo v obsegu, v katerem so definirane. Če so zunaj tega obsega, bo prišlo do napake.

Pomnilnik skladov pa deluje dinamično in se mu ni treba zagnati na visokih naslovih. Za pomnilnik kopice ni določene omejitve; vse omejitve določi operacijski sistem. Pomnilnik kopice je mogoče dinamično spreminjati in te omejitve se lahko med uporabo kopice spreminjajo glede na potrebe uporabnika. Omejitve pomnilnika kopice so odvisne od dejavnikov, ki jih določata operacijski sistem in strojna oprema. Z drugimi besedami, ponuja dinamično uporabo v teh mejah.

Besedilni segment vsebuje programsko kodo, podatkovni segmenti pa globalne podatke. Visok delež naslovov stack in heap pomnilnik med sabo. Sistem dodeli oba pomnilnika med izvajanjem.

Za boljše razumevanje prelivanja medpomnilnika bi morali preučiti registre podatkov za splošne namene, ki jih arhitektura vašega računalnika uporablja za shranjevanje podatkov. Namesto da analizirate vsak zapis posebej, se osredotočite na bistvo.

  • ESP (kazalec razširjenega sklada): Ta register vsebuje naslov na vrhu sklada.
  • EBP (razširjeni osnovni kazalec): To drži osnovni kazalec.
  • EIP (kazalec razširjenih navodil): In ta register vsebuje naslov naslednjega ukaza, ki ga je treba izvesti.

Ti tehnični izrazi morda zvenijo nekoliko zmedeno, vendar si jih vse predstavljajte kot majhne particije v pomnilniku.

Kako delujejo napadi prekoračitve medpomnilnika?

Ko dodate nove podatke v kateri koli sklad, bodo ti podatki vstavljeni na vrh. Vsi novi podatki se nato premaknejo navzdol. ESP je na vrhu sklada. Torej gre v tem primeru ESP na nižji pomnilniški naslov. Predstavljajte si, da zgoraj dodani podatki potisnejo ESP navzdol.

  Diagram, ki prikazuje medpomnilniški prostor nekje med ESP in EBP

Ko se program začne izvajati, sistem ustvari okvir sklada z lokalnimi spremenljivkami. Glavni namen napada s prekoračitvijo medpomnilnika je pridobiti dostop do EIP ali povratnega naslova. Heker z dostopom do tega naslova mu lahko ukaže, naj pokaže na katero koli zlonamerno kodo, ki jo želi, kar bo nato vplivalo na širši sistem.

  Diagram, ki prikazuje podatke v ESP, ki ciljajo na povratni naslov

Z vsakim novim bitom podatkov sklad raste proti EBP. Pravo vprašanje tukaj je, ali lahko EBP potisnemo proti EIP, če vnesemo preveč podatkov? Tako se želeni podatki ali koda nahajajo na EIP in lahko vidite želene rezultate. Vse kar ostane je, da ga zaženemo. Ko zaženete program, pokaže na vašo kodo EIP in začne z izvajanjem. Posledično, če ste bili heker, ste izvedli svoj prvi napad prekoračitve medpomnilnika.

Če pogledamo primer z drugega zornega kota, lahko razmislite o tekočinah različnih gostot, imenovanih ESP, EBP in EIP, v posodi. Predstavljajte si, da se ESP nahaja na vrhu posode, ker je njegova gostota manjša. Tako kot olivno olje in voda se ne smeta mešati. Zlonamerna koda je torej druga tekočina – ko jo dodate v posodo, poruši to ravnotežje, izpodrine nekaj tekočine in se pomeša z EIP. To bo pomenilo prekoračitev medpomnilnika.

Kako se zaščititi pred napadi prekoračitve medpomnilnika

Kako torej preprečiti, da bi se to zgodilo?

Prvič, pomembno je sprejeti dobro prakso kodiranja v celotnem procesu razvoja programske opreme, da zmanjšamo varnostne ranljivosti. Skrbno napisana koda lahko zmanjša verjetnost prelivanja medpomnilnika.

Drug korak je uporaba obrambnih mehanizmov, ki omogočajo spremljanje pomnilniških regij, preverjanje meja medpomnilnikov in zaznavanje napadov. Končno morate redno posodabljati sisteme in uporabljati popravke. Posodobitve, ki odpravljajo ranljivosti, napadalcem otežujejo izkoriščanje znanih ranljivosti. Poleg tega uporaba obrambnih orodij, kot sta programska oprema in požarni zid, zagotavlja dodatno raven varnosti.

Ukrepajte proti prelivom medpomnilnika

Napadi prekoračitve medpomnilnika predstavljajo veliko grožnjo vaši kibernetski varnosti in upoštevanje previdnostnih ukrepov proti njim je seveda pomembno. Na srečo je te napade mogoče preprečiti in okrepiti obrambne mehanizme. Številni dobri varnostni postopki, kot je posodabljanje programske opreme za popravljanje popravkov, pomagajo pri zaščiti pred takšnimi napadi in drugimi ranljivostmi.