Hogyan működnek a puffertúlcsordulási támadások? Hackerként a színfalak mögé

Hogyan működnek a puffertúlcsordulási támadások? Hackerként a színfalak mögé
Az Önhöz hasonló olvasók támogatják a MUO-t. Amikor a webhelyünkön található linkek használatával vásárol, társult jutalékot kaphatunk. Olvass tovább.

Hogyan támadják meg a hackerek vírusokat és rosszindulatú programokat használó rendszereket? Néha ez lehet zsarolóprogram; néha ez lehet egy támadás, amely felemészti a rendszerkövetelményeket. A puffertúlcsordulás az egyik ilyen támadási mód – de mi is ez valójában? Hogyan működnek ezek a támadások?





MAKEUSEOF A NAP VIDEÓJA GÖRGÖZSEN A TARTALOM FOLYTATÁSHOZ

Mi az a puffertúlcsordulás?

Mi tehát valójában a puffer és a verem? A puffer egy olyan mező, ahol a számítógépnek adott bemeneti információk várnak, mielőtt elérnék a memóriát. Az adatok előhívása a memóriából egy rendszerfárasztó művelet. Tehát ha van elég hely a pufferterületen, közvetlenül innen hívja meg az adatokat. Ez teljesítménynövekedést jelent az eszköz számára. Természetesen, ha a puffer számára rendelkezésre álló hely megtelik, szükségessé válik a memória írása.





hogyan lehet kollázst készíteni a facebook bejegyzésben

A verem lényegében egy adatstruktúra, amelyben az adatküldés (add) és pop (eltávolítás) műveletek zajlanak. A puffer és a verem fogalma meglehetősen hasonló; a puffer azonban úgy működik, mint egy verem, amely ideiglenesen tárolja a bejövő adatokat.





A puffertúlcsordulás kihívást jelenthet, de ahogy a neve is sugallja, akkor fordul elő, ha túlterhelt az adatok. Például be szeretne jelentkezni egy rendszerbe. A fejlesztők 250 bájt helyet foglalhatnak a felhasználónév számára. Ha 300 bájtnyi adatot ad meg, a puffer túlcsordul. Ez a túlcsordulás hatással lehet a memóriában lévő egyéb adatokra, és kárt okozhat.

Ez nagyszerű a hackerek számára. A kiberbűnözők kombinálhatják ezt a rendetlenséget különböző támadási vektorokkal, például feltörhetik a rendszert, és rendszergazdaként jelentkezhetnek be.



A puffertúlcsordulás megértéséhez a fő témák, amelyeket fel kell ismernie, a következők lesznek A CPU belső architektúrája , a memóriaregiszterek és a memória adatfeldolgozási módja. Íme néhány kifejezés a CPU-ról, amelyeket tudnia kell.





Összeszerelési kód





Alacsony szintű programozási nyelv , azaz közel a gépi nyelvhez.

Puffer

Fix méret lefoglalt memóriaterület .

Byte kód

Magas szintű nyelven írt kód lefordítható középfokú nyelvi formája.

Fordítóprogram

Programozási nyelvet gépi kóddá alakító program.

Halom

Dinamikus, változó memóriaterület.

Az emlékezetelmélet alapjai

A memóriaelmélet megértése nélkül nehéz lehet a gyakorlatban megoldani a puffertúlcsordulási problémákat. Úgy képzelheti el, mintha házat akarna építeni anélkül, hogy tudná, hogyan kell falat csinálni.

Képzelje el, hogy puffertúlcsordulást szeretne futtatni egy hacker szemszögéből. Ehhez manipulálnia kell a memóriát, és a CPU-val kell végrehajtania a kódot. Ha rosszindulatú valaki, akkor a cél a memória túlterhelése és a szomszédos memóriaterületek manipulálása lenne.

  Diagram, amelyen a halom lefelé és a halom növekedése látható

De mindenekelőtt a kupac, a verem és a szövegszegmens fogalmára kell összpontosítania.

A verem létrehozása közben a memória magas memóriacímeket használ. A nagy memóriacímek a kiterjesztett memóriaterületet jelentik. Ezután a címértékek csökkenni kezdenek. A memóriaverem a LIFO (Last In, First Out) nevű módszert használja a memóriahasználat során. A veremmemóriában lévő változók csak abban a körben érvényesek, amelyben meghatározásra kerültek. Ha kívül esnek ezen a hatókörön, hiba lép fel.

A veremmemória viszont dinamikusan működik, és nem kell magas címekről kezdenie. A kupacmemóriának nincs beállított korlátja; minden korlátot az operációs rendszer szab meg. Lehetőség van a kupacmemória dinamikus megváltoztatására, és ezek a korlátok a kupachasználat során a felhasználó igényei szerint változhatnak. A kupacmemória korlátai az operációs rendszer és a hardver által meghatározott tényezőktől függenek. Más szóval, ezeken a határokon belül dinamikus használatot kínál.

A szövegszegmens a programkódot, az adatszegmensek pedig globális adatokat tartalmaznak. Magas címek megosztása verem és kupac memória maguk között. A rendszer mindkét memóriát lefoglalja futás közben.

A puffertúlcsordulás jobb megértése érdekében meg kell vizsgálnia azokat az általános célú adatregisztereket, amelyeket a számítógép architektúrája használ az adatok tárolására. Ahelyett, hogy minden rekordot külön-külön elemezne, összpontosítson a lényegre.

  • ESP (Extended Stack Pointer): Ez a regiszter tartalmazza a címet a verem tetején.
  • EBP (Extended Base Pointer): Ez tartja az alapmutatót.
  • EIP (Extended Instruction Pointer): És ez a regiszter tartalmazza a következő végrehajtandó utasítás címét.

Ezek a szakkifejezések kissé zavaróan hangzanak, de képzeljük el mindegyiket kis memóriapartícióként.

Hogyan működnek a puffertúlcsordulási támadások?

Amikor új adatokat ad hozzá bármely veremhez, ezek az adatok a tetejére kerülnek. Ezután minden új adat lejjebb kerül. Az ESP a verem tetején található. Tehát ebben az esetben az ESP alacsonyabb memóriacímre megy. Képzelje el, hogy a fent hozzáadott adatok lenyomják az ESP-t.

  Diagram, amely azt mutatja, hogy a puffertér valahol az ESP és az EBP között van

Amikor egy program elindul, a rendszer létrehoz egy verem keretet helyi változókkal. A puffertúlcsordulási támadás fő célja az EIP-hez vagy a visszatérési címhez való hozzáférés. Az ehhez a címhez hozzáféréssel rendelkező hacker parancsot adhat neki, hogy mutasson rá bármilyen rosszindulatú kódra, amelyre szüksége van, és ez hatással lesz a szélesebb rendszerre.

  Diagram, amely a visszaküldési címet célzó ESP-ben lévő adatokat mutatja

Minden egyes új adatbittel a verem az EBP felé növekszik. Az igazi kérdés itt az, hogy ha túl sok adatot adunk meg, tudjuk-e tolni az EBP-t az EIP felé? Így a kívánt adat vagy kód az EIP-n található, és láthatja a kívánt eredményeket. Már csak futni kell. A program futtatásakor az Ön EIP-kódjára mutat, és elindítja a végrehajtást. Ennek eredményeként, ha hacker volt, akkor végrehajtotta az első puffertúlcsordulási támadást.

Ha a példát más szemszögből szeretnénk venni, megfontoljuk a különböző sűrűségű, ESP, EBP és EIP folyadékokat egy tartályban. Képzelje el, hogy az ESP a tartály tetején található, mert a sűrűsége kisebb. Csakúgy, mint az olívaolaj és a víz, ezeket sem szabad összekeverni. A rosszindulatú kód tehát egy másik folyadék – amikor hozzáadja a tartályhoz, felborítja ezt az egyensúlyt, kiszorítja a folyadékot, és összekeveredik az EIP-vel. Ez puffer túlcsordulást jelez.

Hogyan védekezzünk a puffertúlcsordulási támadások ellen

Szóval hogyan lehet megakadályozni, hogy ez megtörténjen?

Először is fontos a helyes kódolási gyakorlat alkalmazása a szoftverfejlesztési folyamat során a biztonsági rések minimalizálása érdekében. A gondosan megírt kód csökkentheti a puffertúlcsordulás valószínűségét.

Egy másik lépés a védelmi mechanizmusok használata, amelyek lehetővé teszik a memóriaterületek megfigyelését, a pufferek korlátainak ellenőrzését és a támadások észlelését. Végül rendszeresen frissítenie kell a rendszereket, és javítania kell. A sebezhetőségeket javító frissítések megnehezítik a támadók számára az ismert biztonsági rések kihasználását. Ezenkívül a védelmi eszközök, például a szoftver és a tűzfal használata további biztonsági réteget biztosít.

Tegyen lépéseket a puffertúlcsordulás ellen

A puffertúlcsordulási támadások jelentős veszélyt jelentenek a kiberbiztonságra, és természetesen fontos az ellenük irányuló óvintézkedések megtétele. Szerencsére meg lehet akadályozni ezeket a támadásokat és megerősíteni a védekező mechanizmusokat. Számos jó biztonsági gyakorlat, például a szoftverek frissítése a javítások javítása érdekében, segít megvédeni az ilyen támadásokat és más biztonsági réseket.

hogyan lehet csatlakozni egy netflix párthoz