Hvordan fungerer bufferoverløpsangrep? Går bak kulissene som hacker

Hvordan fungerer bufferoverløpsangrep? Går bak kulissene som hacker
Lesere som deg er med på å støtte MUO. Når du foretar et kjøp ved å bruke lenker på nettstedet vårt, kan vi tjene en tilknyttet provisjon. Les mer.

Hvordan angriper hackere systemer ved hjelp av virus og skadelig programvare? Noen ganger kan det være løsepengevare; noen ganger kan det være et angrep som bruker systemkravene dine. Bufferoverløp er en av disse angrepsmetodene – men hva er det egentlig? Hvordan fungerer disse angrepene?





MAKEUSE AV DAGENS VIDEO RULL FOR Å FORTSETTE MED INNHOLD

Hva er bufferoverløp?

Så hva er egentlig en buffer og stabel? Bufferen er et felt der noe inputinformasjon du gir til datamaskinen venter før de når minnet. Å hente data fra minnet er en systemtrettende operasjon. Så når det er nok plass i bufferområdet, ringer du dataene direkte herfra. Dette betyr et ytelsesløft for enheten din. Selvfølgelig, når plassen som er tilgjengelig for bufferen er full, blir det nødvendig å skrive den inn i minnet.





Stack er i hovedsak en datastruktur der data push (legg til) og pop (fjern) operasjoner finner sted. Konseptene buffer og stack er ganske like; bufferen fungerer imidlertid som en stabel som midlertidig lagrer innkommende data.





Bufferoverløp kan være et utfordrende tema, men som navnet antyder, oppstår det når det er overbelastning av data. For eksempel vil du logge inn på et system. Utviklerne kan tildele 250 byte plass til brukernavnet. Hvis du legger inn 300 byte med data, renner bufferen over. Dette overløpet kan påvirke andre data i minnet og forårsake skade.

Dette er flott for hackere. Nettkriminelle kan kombinere dette rotet med forskjellige angrepsvektorer, for eksempel for å hacke systemet og logge på som administrator.



For å forstå bufferoverløp, vil hovedemnene du må gjenkjenne CPUs interne arkitektur , minneregistre og hvordan minnet behandler data. Her er noen begreper om CPU-en du trenger å vite om.





Monteringskode





Et programmeringsspråk på lavt nivå , dvs. nær maskinspråk.

Buffer

hvordan se på YouTube -videoer uten å logge på

En fast størrelse tildelt minneplass .

Bytekode

En kompilerbar mellomspråklig form for kode skrevet på et høynivåspråk.

Kompilator

Et program som konverterer programmeringsspråk til maskinkode.

Heap

Dynamisk, variabel minneplass.

Grunnleggende om hukommelsesteori

Uten å forstå minneteori kan det være vanskelig å ta opp problemer med bufferoverløp i praksis. Du kan tenke på det som å prøve å bygge et hus uten å vite hvordan man lager en vegg.

Tenk deg at du vil kjøre et bufferoverløp fra en hackers synspunkt. For det må du manipulere minnet og få CPUen til å kjøre koden din. Hvis du var noen med ondsinnede hensikter, ville målet ditt her være å overbelaste minnet og manipulere sammenhengende minneområder også.

  Diagram som viser stabelen som vokser ned og haugen vokser opp

Men først av alt må du fokusere på konseptene heap, stack og tekstsegment.

Mens stabelen opprettes, bruker minnet høye minneadresser. Høye minneadresser betyr det utvidede minneområdet. Da begynner adresseverdiene å synke. Minnestakken bruker en metode kalt LIFO (Last In, First Out) under minnebruk. Variabler i stabelminne er bare gyldige innenfor det omfanget de er definert i. Hvis de er utenfor dette omfanget, vil det oppstå en feil.

beste nettsteder for å bygge en pc

Stack-minne, derimot, fungerer dynamisk og trenger ikke å starte på høye adresser. Det er ingen satt grense for haugminne; alle grenser er satt av operativsystemet. Det er mulig å endre heap-minnet dynamisk, og disse grensene kan endres i henhold til brukerens behov under heap-bruk. Begrensningene for heap-minne avhenger av faktorer som bestemmes av operativsystemet og maskinvaren. Med andre ord tilbyr den en dynamisk bruk innenfor disse grensene.

Tekstsegmentet inneholder programkoden og datasegmentene inneholder globale data. Høy adresseandel stack og heap minne blant dem selv. Systemet tildeler både minnet under kjøring.

For bedre å forstå bufferoverløp, bør du undersøke de generelle dataregistrene som datamaskinarkitekturen din bruker til å lagre data. I stedet for å analysere hver post individuelt, fokusere på det viktigste.

  • ESP (Extended Stack Pointer): Dette registeret har adressen øverst i stabelen.
  • EBP (Extended Base Pointer): Dette holder basispekeren.
  • EIP (Extended Instruction Pointer): Og dette registeret inneholder adressen til den neste instruksjonen som skal utføres.

Disse tekniske termene kan høres litt forvirrende ut, men se for deg alle som små partisjoner på minnet.

Hvordan fungerer bufferoverløpsangrep?

Når du legger til nye data til en hvilken som helst stabel, vil disse dataene bli plassert på toppen. Alle nye data flyttes deretter ned. ESP er på toppen av stabelen. Så i dette tilfellet går ESP til en lavere minneadresse. Se for deg at dataene som er lagt til ovenfor, skyver ESP-en ned.

  Diagram som viser at bufferplassen er et sted mellom ESP og EBP

Når et program begynner å kjøre, oppretter systemet en stabelramme med lokale variabler. Hovedformålet med et bufferoverløpsangrep er å få tilgang til EIP eller returadressen. En hacker med tilgang til denne adressen kan beordre den til å peke på hvilken som helst skadelig kode de vil ha, som da vil påvirke det bredere systemet.

  Et diagram som viser dataene i ESP rettet mot returadressen

Med hver ny bit av data, vokser stabelen mot EBP. Det virkelige spørsmålet her er, hvis vi legger inn for mye data, kan vi presse EBP mot EIP? På den måten er dataene eller koden du ønsker plassert på EIP, og du kan se resultatene du ønsker. Alt som gjenstår er å kjøre den. Når du kjører programmet, peker det på EIP-koden din og starter kjøringen. Som et resultat, hvis du var en hacker, vil du ha utført ditt første bufferoverløpsangrep.

For å ta eksemplet fra en annen vinkel, kan du vurdere væsker med forskjellige tettheter, kalt ESP, EBP og EIP, i en beholder. Tenk deg at ESP er plassert på toppen av beholderen fordi dens tetthet er lavere. Akkurat som olivenolje og vann, bør de ikke blandes. Den ondsinnede koden er altså en annen væske - når du legger den til beholderen, roter den til denne balansen, fortrenger litt væske og blandes med EIP. Dette vil indikere et bufferoverløp.

Slik beskytter du deg mot bufferoverløpsangrep

Så hvordan kan du stoppe dette fra å skje?

For det første er det viktig å ta i bruk god kodingspraksis gjennom hele programvareutviklingsprosessen for å minimere sikkerhetssårbarheter. Nøye skrevet kode kan redusere sannsynligheten for bufferoverløp.

Et annet trinn er å bruke forsvarsmekanismer for å tillate overvåking av minneregioner, sjekke grensene for buffere og oppdage angrep. Til slutt må du regelmessig oppdatere systemer og bruke oppdateringer. Oppdateringer som fikser sårbarheter gjør det vanskeligere for angripere å utnytte kjente sårbarheter. Bruk av forsvarsverktøy som programvare og brannmur gir også et ekstra lag med sikkerhet.

Iverksette tiltak mot bufferoverløp

Bufferoverløpsangrep utgjør en betydelig trussel mot cybersikkerheten din, og det er naturligvis viktig å ta forholdsregler mot dem. Heldigvis er det mulig å blokkere disse angrepene og styrke forsvarsmekanismene. Mange gode sikkerhetsrutiner, som å holde programvare oppdatert for å fikse oppdateringer, bidrar til å beskytte mot slike angrep, så vel som andre sårbarheter.