Paano Gumagana ang Buffer Overflow Attacks? Going Behind-the-Scenes bilang isang Hacker

Paano Gumagana ang Buffer Overflow Attacks? Going Behind-the-Scenes bilang isang Hacker
Ang mga mambabasang tulad mo ay tumutulong sa pagsuporta sa MUO. Kapag bumili ka gamit ang mga link sa aming site, maaari kaming makakuha ng isang affiliate na komisyon. Magbasa pa.

Paano inaatake ng mga hacker ang mga system gamit ang mga virus at malware? Minsan, maaari itong maging ransomware; minsan, maaari itong isang pag-atake na kumukonsumo sa iyong mga kinakailangan sa system. Ang buffer overflow ay isa sa mga paraan ng pag-atake na ito—ngunit ano ba talaga ito? Paano gumagana ang mga pag-atake na ito?





MAKEUSEOF VIDEO OF THE DAY MAG-SCROLL PARA MAGPATULOY SA NILALAMAN

Ano ang Buffer Overflow?

Kaya ano talaga ang isang buffer at stack? Ang buffer ay isang field kung saan naghihintay ang ilang impormasyon ng input na ibibigay mo sa iyong computer bago maabot ang memorya. Ang pag-recall ng data mula sa memorya ay isang nakakapagod na operasyon ng system. Kaya kapag may sapat na espasyo sa buffer area, direktang tatawagan mo ang data mula rito. Nangangahulugan ito ng pagpapalakas ng performance para sa iyong device. Siyempre, kapag ang puwang na magagamit para sa buffer ay puno na, ito ay nagiging kinakailangan upang isulat ito sa memorya.





Ang stack ay mahalagang istraktura ng data kung saan nagaganap ang mga pagpapatakbo ng push (add) at pop (alis) ng data. Ang mga konsepto ng buffer at stack ay medyo magkatulad; gayunpaman, gumagana ang buffer tulad ng isang stack na pansamantalang nag-iimbak ng papasok na data.





Ang mga buffer overflow ay maaaring maging isang mapaghamong paksa, ngunit gaya ng ipinahihiwatig ng pangalan, nangyayari ito kapag may labis na karga ng data. Halimbawa, gusto mong mag-log in sa isang system. Ang mga developer ay maaaring maglaan ng 250 byte na espasyo para sa username. Kung magpasok ka ng 300 bytes ng data, mag-uumapaw ang buffer. Ang overflow na ito ay maaaring makaapekto sa iba pang data sa memorya, na magdulot ng pinsala.

Ito ay mahusay para sa mga hacker. Maaaring pagsamahin ng mga cybercriminal ang gulo na ito sa iba't ibang vector ng pag-atake, halimbawa, para i-hack ang system at mag-log in bilang isang administrator.



Upang maunawaan ang buffer overflow, ang mga pangunahing paksa na kailangan mong kilalanin ay ang Panloob na arkitektura ng CPU , memory registers, at kung paano pinoproseso ng memorya ang data. Narito ang ilang termino tungkol sa CPU na kailangan mong malaman.





ay wish ligtas na bumili mula sa

Assembly Code





Isang mababang antas ng programming language , ibig sabihin, malapit sa machine language.

Buffer

Isang nakapirming laki inilalaan na espasyo ng memorya .

Byte Code

Isang compilable intermediate language form ng code na nakasulat sa isang mataas na antas ng wika.

Compiler

Isang program na nagko-convert ng programming language sa machine code.

xbox one x vs series x

Bunton

Dynamic, variable na memory space.

Ang Mga Batayan ng Teorya ng Memorya

Kung walang pag-unawa sa teorya ng memorya, maaaring mahirap tugunan ang mga isyu sa buffer overflow sa pagsasanay. Maaari mong isipin ito tulad ng pagsisikap na magtayo ng bahay nang hindi alam kung paano gumawa ng pader.

Isipin na gusto mong magpatakbo ng buffer overflow mula sa pananaw ng isang hacker. Para doon, kailangan mong manipulahin ang memorya at ipatupad sa CPU ang iyong code. Kung ikaw ay isang taong may malisyosong layunin, ang iyong layunin dito ay ang labis na karga ang memorya at manipulahin din ang magkadikit na mga lugar ng memorya.

  Diagram na nagpapakita ng stack na lumalaki pababa at heap na lumalaki

Ngunit una sa lahat, kailangan mong tumuon sa mga konsepto ng heap, stack, at segment ng teksto.

Habang ginagawa ang stack, gumagamit ang memory ng mataas na memory address. Ang mga address ng mataas na memorya ay nangangahulugan ng pinalawak na lugar ng memorya. Pagkatapos ay magsisimulang bumaba ang mga halaga ng address. Gumagamit ang memory stack ng paraan na tinatawag na LIFO (Last In, First Out) sa panahon ng paggamit ng memory. Ang mga variable sa stack memory ay may bisa lamang sa loob ng saklaw kung saan ang mga ito ay tinukoy. Kung wala sila sa saklaw na ito, magkakaroon ng error.

Ang stack memory, sa kabilang banda, ay gumagana nang pabago-bago at hindi kailangang magsimula sa matataas na address. Walang nakatakdang limitasyon sa heap memory; lahat ng limitasyon ay itinakda ng operating system. Posibleng dynamic na baguhin ang memory ng heap at maaaring magbago ang mga limitasyong ito ayon sa mga pangangailangan ng user sa panahon ng paggamit ng heap. Ang mga limitasyon ng heap memory ay nakasalalay sa mga salik na tinutukoy ng operating system at hardware. Sa madaling salita, nag-aalok ito ng dynamic na paggamit sa loob ng mga limitasyong ito.

Ang segment ng teksto ay naglalaman ng code ng programa at ang mga segment ng data ay naglalaman ng pandaigdigang data. Ibinahagi ang matataas na address stack at heap memory sa kanilang mga sarili. Ang system ay naglalaan ng parehong memorya sa runtime.

Upang mas maunawaan ang buffer overflow, dapat mong suriin ang pangkalahatang layunin ng mga rehistro ng data na ginagamit ng arkitektura ng iyong computer upang mag-imbak ng data. Sa halip na pag-aralan ang bawat tala nang paisa-isa, tumuon sa mga mahahalaga.

  • ESP (Extended Stack Pointer): Hawak ng rehistrong ito ang address sa tuktok ng stack.
  • EBP (Extended Base Pointer): Hawak nito ang base pointer.
  • EIP (Extended Instruction Pointer): At ang rehistrong ito ay nagtataglay ng address ng susunod na pagtuturo na isasagawa.

Ang mga teknikal na termino ay maaaring medyo nakakalito, ngunit isipin ang lahat ng mga ito bilang maliliit na partisyon sa memorya.

Paano Gumagana ang Buffer Overflow Attacks?

Kapag nagdagdag ka ng bagong data sa anumang stack, ilalagay ang data na ito sa itaas. Ang lahat ng bagong data ay inilipat pababa. Ang ESP ay nasa tuktok ng stack. Kaya sa kasong ito ang ESP ay napupunta sa isang mas mababang memory address. Isipin na ang data na idinagdag sa itaas ay nagtutulak sa ESP pababa.

  Diagram na nagpapakita ng buffer space na nasa pagitan ng ESP at EBP

Kapag nagsimulang tumakbo ang isang program, gagawa ang system ng stack frame na may mga lokal na variable. Ang pangunahing layunin ng isang buffer overflow attack ay upang makakuha ng access sa EIP o return address. Maaaring utusan ito ng isang hacker na may access sa address na ito na ituro ang anumang malisyosong code na gusto nila, na makakaapekto sa mas malawak na system.

  Isang diagram na nagpapakita ng data sa ESP na nagta-target sa Return Address

Sa bawat bagong bit ng data, lumalaki ang stack patungo sa EBP. Ang totoong tanong dito ay, kung maglalagay tayo ng masyadong maraming data, maaari ba nating itulak ang EBP patungo sa EIP? Sa ganoong paraan, ang data o code na gusto mo ay matatagpuan sa EIP at makikita mo ang mga resulta na gusto mo. Ang natitira na lang ay patakbuhin ito. Kapag pinatakbo mo ang program, tumuturo ito sa iyong EIP code at magsisimulang ipatupad. Bilang resulta, kung ikaw ay isang hacker, naisagawa mo ang iyong unang buffer overflow attack.

mag-download ng mga libreng pelikula sa aking telepono

Upang kunin ang halimbawa mula sa ibang anggulo, maaari mong isaalang-alang ang mga likido na may iba't ibang densidad, na tinatawag na ESP, EBP, at EIP, sa isang lalagyan. Isipin na ang ESP ay matatagpuan sa tuktok ng lalagyan dahil mas mababa ang density nito. Tulad ng langis ng oliba at tubig, hindi sila dapat maghalo. Ang malisyosong code, kung gayon, ay isa pang likido—kapag idinagdag mo ito sa lalagyan, ginugulo nito ang balanseng ito, pinapalitan ang ilang likido, at nahahalo sa EIP. Ito ay magsasaad ng buffer overflow.

Paano Magpoprotekta Laban sa Mga Pag-atake sa Buffer Overflow

Kaya paano mo ito mapipigilan na mangyari?

Una, mahalagang magpatibay ng mahusay na kasanayan sa coding sa buong proseso ng pagbuo ng software upang mabawasan ang mga kahinaan sa seguridad. Ang maingat na nakasulat na code ay maaaring mabawasan ang posibilidad ng buffer overflows.

Ang isa pang hakbang ay ang paggamit ng mga mekanismo ng pagtatanggol upang payagan ang pagsubaybay sa mga rehiyon ng memorya, pagsuri sa mga limitasyon ng mga buffer, at pag-detect ng mga pag-atake. Panghuli, kailangan mong regular na mag-update ng mga system at maglapat ng mga patch. Ang mga update na nag-aayos ng mga kahinaan ay nagpapahirap sa mga umaatake na samantalahin ang mga kilalang kahinaan. Gayundin, ang paggamit ng mga tool sa pagtatanggol gaya ng software at firewall ay nagbibigay ng karagdagang layer ng seguridad.

Kumilos Laban sa Buffer Overflows

Ang mga pag-atake ng buffer overflow ay nagdudulot ng malaking banta sa iyong cybersecurity at natural na mahalaga ang pag-iingat laban sa mga ito. Sa kabutihang palad, posibleng harangan ang mga pag-atake na ito at palakasin ang mga mekanismo ng pagtatanggol. Maraming mahusay na kasanayan sa seguridad, tulad ng pagpapanatiling na-update ang software upang ayusin ang mga patch, makakatulong na maprotektahan laban sa mga naturang pag-atake, pati na rin ang iba pang mga kahinaan.