Hakeri var pārņemt kontroli pār sistēmu, maksimāli izmantojot pakalpojuma krātuves ietilpību. Tātad, kā hakeri veic šādus bufera pārpildes uzbrukumus?

Kā hakeri uzbrūk sistēmām, izmantojot vīrusus un ļaunprātīgu programmatūru? Dažreiz tas var būt izspiedējvīruss; dažreiz tas var būt uzbrukums, kas patērē jūsu sistēmas prasības. Bufera pārpilde ir viena no šīm uzbrukuma metodēm, bet kas tas patiesībā ir? Kā šie uzbrukumi darbojas?

Kas ir bufera pārpilde?

Tātad, kas patiesībā ir buferis un kaudze? Buferis ir lauks, kurā datoram sniegtā ievades informācija gaida, pirms tā sasniedz atmiņu. Datu atsaukšana no atmiņas ir sistēmu nogurdinoša darbība. Tātad, ja bufera apgabalā ir pietiekami daudz vietas, jūs izsaucat datus tieši no šejienes. Tas nozīmē jūsu ierīces veiktspējas pieaugumu. Protams, kad buferim pieejamā vieta ir pilna, rodas nepieciešamība to ierakstīt atmiņā.

Stack būtībā ir datu struktūra, kurā notiek datu nosūtīšanas (pievienošanas) un pop (noņemšanas) darbības. Bufera un kaudzes jēdzieni ir diezgan līdzīgi; tomēr buferis darbojas kā kaudze, kas īslaicīgi saglabā ienākošos datus.

instagram viewer

Bufera pārpilde var būt sarežģīta tēma, taču, kā norāda nosaukums, tā notiek, ja ir datu pārslodze. Piemēram, vēlaties pieteikties sistēmā. Izstrādātāji lietotājvārdam var atvēlēt 250 baitus. Ja ievadāt 300 baitus datu, buferis pārplūst. Šī pārpilde var ietekmēt citus atmiņā esošos datus, radot kaitējumu.

Tas ir lieliski piemērots hakeriem. Kibernoziedznieki var apvienot šo putru ar dažādiem uzbrukuma vektoriem, piemēram, lai uzlauztu sistēmu un pieteiktos kā administrators.

Lai saprastu bufera pārpildīšanu, galvenās tēmas, kas jums jāatpazīst, būs CPU iekšējā arhitektūra, atmiņas reģistri un kā atmiņa apstrādā datus. Šeit ir daži termini par centrālo procesoru, kas jums jāzina.

Montāžas kods

Zema līmeņa programmēšanas valoda, t.i., tuvu mašīnvalodai.

Buferis

Fiksēts izmērs piešķirtā atmiņas vieta.

Baita kods

Kompilējama vidēja līmeņa koda forma, kas rakstīta augsta līmeņa valodā.

Kompilators

Programma, kas pārvērš programmēšanas valodu mašīnkodā.

Kaudze

Dinamiska, mainīga atmiņas vieta.

Atmiņas teorijas pamati

Neizprotot atmiņas teoriju, praksē var būt grūti risināt bufera pārpildes problēmas. To var uzskatīt par mēģinājumu uzcelt māju, nezinot, kā uztaisīt sienu.

Iedomājieties, ka vēlaties palaist bufera pārpildīšanu no hakera viedokļa. Lai to izdarītu, jums ir jāmanipulē ar atmiņu un CPU jāizpilda jūsu kods. Ja jums ir ļaunprātīgi nodomi, jūsu mērķis šeit būtu pārslogot atmiņu un manipulēt arī ar blakus esošajām atmiņas zonām.

Bet vispirms jums ir jākoncentrējas uz kaudzes, kaudzes un teksta segmenta jēdzieniem.

Kamēr tiek veidota steka, atmiņa izmanto lielas atmiņas adreses. Augstas atmiņas adreses nozīmē paplašinātu atmiņas apgabalu. Tad adreses vērtības sāk samazināties. Atmiņas izmantošanas laikā atmiņas kaudze izmanto metodi, ko sauc par LIFO (Last In, First Out). Mainīgie lielumi steka atmiņā ir derīgi tikai tajā tvērumā, kurā tie ir definēti. Ja tie ir ārpus šīs jomas, radīsies kļūda.

Savukārt steka atmiņa darbojas dinamiski un tai nav jāsāk no augstām adresēm. Kaudzes atmiņai nav noteikts ierobežojums; visus ierobežojumus nosaka operētājsistēma. Ir iespējams dinamiski mainīt kaudzes atmiņu, un šie ierobežojumi var mainīties atkarībā no lietotāja vajadzībām kaudzes lietošanas laikā. Kaudzes atmiņas ierobežojumi ir atkarīgi no faktoriem, ko nosaka operētājsistēma un aparatūra. Citiem vārdiem sakot, tas piedāvā dinamisku lietojumu šajās robežās.

Teksta segmentā ir programmas kods, un datu segmentos ir globālie dati. Augstas adreses koplietošana kaudzes un kaudzes atmiņa savā starpā. Sistēma izpildes laikā piešķir abas atmiņas.

Lai labāk izprastu bufera pārpildīšanu, jums vajadzētu izpētīt vispārējas nozīmes datu reģistrus, ko jūsu datora arhitektūra izmanto datu glabāšanai. Tā vietā, lai analizētu katru ierakstu atsevišķi, koncentrējieties uz būtiskāko.

  • ESP (paplašinātā kaudzes rādītājs): Šajā reģistrā ir adrese, kas atrodas kaudzes augšpusē.
  • EBP (paplašinātais bāzes rādītājs): Tas satur bāzes rādītāju.
  • EIP (paplašinātās instrukcijas rādītājs): Un šajā reģistrā ir nākamās izpildāmās instrukcijas adrese.

Šie tehniskie termini var izklausīties nedaudz mulsinoši, taču iedomājieties tos visus kā mazas atmiņas nodalījumus.

Kā darbojas bufera pārpildes uzbrukumi?

Pievienojot jaunus datus jebkurai stekai, šie dati tiks ievietoti augšpusē. Pēc tam visi jaunie dati tiek pārvietoti uz leju. ESP atrodas kaudzes augšpusē. Tātad šajā gadījumā ESP pāriet uz zemāku atmiņas adresi. Iedomājieties, ka iepriekš pievienotie dati nospiež ESP uz leju.

Kad programma sāk darboties, sistēma izveido steka rāmi ar vietējiem mainīgajiem. Bufera pārpildes uzbrukuma galvenais mērķis ir piekļūt EIP vai atgriešanas adresei. Hakeris, kuram ir piekļuve šai adresei, var pavēlēt tai norādīt uz jebkuru nevēlamo kodu, kas pēc tam ietekmēs plašāku sistēmu.

Ar katru jaunu datu bitu kopa pieaug uz EBP. Patiesais jautājums šeit ir, ja mēs ievadām pārāk daudz datu, vai mēs varam virzīt EBP uz EIP? Tādā veidā nepieciešamie dati vai kods atrodas EIP, un jūs varat redzēt vēlamos rezultātus. Atliek tikai to palaist. Palaižot programmu, tā norāda uz jūsu EIP kodu un sāk izpildi. Tā rezultātā, ja jūs bijāt hakeris, jūs būsiet veicis savu pirmo bufera pārpildes uzbrukumu.

Lai ņemtu piemēru no cita leņķa, varat apsvērt dažāda blīvuma šķidrumus, ko sauc par ESP, EBP un ​​EIP, traukā. Iedomājieties, ka ESP atrodas konteinera augšpusē, jo tā blīvums ir mazāks. Tāpat kā olīveļļu un ūdeni, tiem nevajadzētu sajaukties. Ļaunprātīgais kods ir vēl viens šķidrums — pievienojot to konteineram, tas izjauc līdzsvaru, izspiež daļu šķidruma un sajaucas ar EIP. Tas norāda uz bufera pārpildīšanu.

Kā aizsargāties pret bufera pārplūdes uzbrukumiem

Tātad, kā to novērst?

Pirmkārt, ir svarīgi visā programmatūras izstrādes procesā izmantot labu kodēšanas praksi, lai samazinātu drošības ievainojamības. Rūpīgi uzrakstīts kods var samazināt bufera pārpildes iespējamību.

Vēl viens solis ir izmantot aizsardzības mehānismus, lai ļautu uzraudzīt atmiņas reģionus, pārbaudīt buferu ierobežojumus un atklāt uzbrukumus. Visbeidzot, jums regulāri jāatjaunina sistēmas un jāpiemēro ielāpi. Atjauninājumi, kas novērš ievainojamības, apgrūtina uzbrucēju iespējas izmantot zināmās ievainojamības. Turklāt aizsardzības rīku, piemēram, programmatūras un ugunsmūra, izmantošana nodrošina papildu drošības līmeni.

Rīkojieties pret bufera pārpildīšanu

Bufera pārpildes uzbrukumi nopietni apdraud jūsu kiberdrošību, un noteikti ir svarīgi veikt piesardzības pasākumus pret tiem. Par laimi, ir iespējams bloķēt šos uzbrukumus un stiprināt aizsardzības mehānismus. Daudzas labas drošības prakses, piemēram, programmatūras atjaunināšana, lai labotu ielāpus, palīdz aizsargāt pret šādiem uzbrukumiem, kā arī citām ievainojamībām.