Hackeři mohou převzít kontrolu nad systémem maximalizací kapacity úložiště služby. Jak tedy hackeři takové útoky přetečením bufferu provádějí?

Jak hackeři útočí na systémy pomocí virů a malwaru? Někdy to může být ransomware; někdy to může být útok, který spotřebuje vaše systémové požadavky. Přetečení vyrovnávací paměti je jednou z těchto metod útoku – ale co to vlastně je? Jak tyto útoky fungují?

Co je přetečení vyrovnávací paměti?

Co jsou tedy vyrovnávací paměti a zásobníky? Vyrovnávací paměť je pole, kde některé vstupní informace, které zadáte počítači, čekají, než se dostanou do paměti. Vyvolání dat z paměti je únavná operace. Když je tedy v oblasti vyrovnávací paměti dostatek místa, zavoláte data přímo odtud. To znamená zvýšení výkonu vašeho zařízení. Samozřejmě, když je místo dostupné pro vyrovnávací paměť zaplněné, je nutné jej zapsat do paměti.

Zásobník je v podstatě datová struktura, ve které probíhají operace push (add) a pop (odebrání). Koncepty vyrovnávací paměti a zásobníku jsou velmi podobné; vyrovnávací paměť však funguje jako zásobník, který dočasně ukládá příchozí data.

instagram viewer

Přetečení vyrovnávací paměti může být náročné téma, ale jak název napovídá, dochází k němu, když dojde k přetížení dat. Chcete se například přihlásit do systému. Vývojáři mohou pro uživatelské jméno přidělit 250 bajtů prostoru. Pokud zadáte 300 bajtů dat, vyrovnávací paměť přeteče. Toto přetečení může ovlivnit další data v paměti a způsobit poškození.

To je skvělé pro hackery. Kyberzločinci mohou tento nepořádek kombinovat s různými útočnými vektory, například k hacknutí systému a přihlášení jako správce.

Abyste pochopili přetečení vyrovnávací paměti, hlavní témata, která musíte rozpoznat, budou vnitřní architektura CPU, paměťové registry a jak paměť zpracovává data. Zde je několik termínů o CPU, o kterých byste měli vědět.

Montážní kód

Nízkoúrovňový programovací jazyk, tedy blízko strojovému jazyku.

Buffer

Pevná velikost přidělený paměťový prostor.

Bajtový kód

Kompilovatelná střední jazyková forma kódu napsaná v jazyce vysoké úrovně.

Kompilátor

Program, který převádí programovací jazyk na strojový kód.

Halda

Dynamický, variabilní paměťový prostor.

Základy teorie paměti

Bez pochopení teorie paměti může být obtížné řešit problémy s přetečením vyrovnávací paměti v praxi. Můžete si to představit jako zkusit postavit dům, aniž byste věděli, jak udělat zeď.

Představte si, že chcete spustit přetečení vyrovnávací paměti z pohledu hackera. K tomu musíte manipulovat s pamětí a nechat CPU spustit váš kód. Pokud byste byli někým se zlým úmyslem, vaším cílem by zde bylo přetížit paměť a manipulovat také s přilehlými oblastmi paměti.

Nejprve se ale musíte zaměřit na pojmy halda, zásobník a textový segment.

Při vytváření zásobníku používá paměť vysoké adresy paměti. Vysoké adresy paměti znamenají oblast rozšířené paměti. Poté začnou hodnoty adresy klesat. Paměťový zásobník používá při využití paměti metodu zvanou LIFO (Last In, First Out). Proměnné v paměti zásobníku jsou platné pouze v rozsahu, ve kterém jsou definovány. Pokud jsou mimo tento rozsah, dojde k chybě.

Stacková paměť naproti tomu pracuje dynamicky a nemusí začínat na vysokých adresách. Paměť haldy není omezena; všechny limity jsou nastaveny operačním systémem. Je možné dynamicky měnit paměť haldy a tyto limity se mohou měnit podle potřeb uživatele během používání haldy. Limity paměti haldy závisí na faktorech určených operačním systémem a hardwarem. Jinými slovy, nabízí dynamické využití v rámci těchto limitů.

Textový segment obsahuje kód programu a datové segmenty obsahují globální data. Vysoký podíl adres zásobník a haldu paměti mezi nimi. Systém alokuje obě paměti za běhu.

Abyste lépe porozuměli přetečení vyrovnávací paměti, měli byste prozkoumat obecné datové registry, které architektura vašeho počítače používá k ukládání dat. Místo abyste analyzovali každý záznam jednotlivě, zaměřte se na to podstatné.

  • ESP (Extended Stack Ukazatel): Tento registr obsahuje adresu v horní části zásobníku.
  • EBP (rozšířený základní ukazatel): Toto drží základní ukazatel.
  • EIP (Extended Instruction Ukazatel): A tento registr obsahuje adresu další instrukce, která má být provedena.

Tyto technické termíny mohou znít trochu matoucí, ale představte si je všechny jako malé oddíly v paměti.

Jak útoky přetečením vyrovnávací paměti fungují?

Když přidáte nová data do libovolného zásobníku, budou tato data umístěna nahoře. Všechna nová data se poté přesunou dolů. ESP je na vrcholu zásobníku. Takže v tomto případě ESP přejde na nižší adresu paměti. Představte si, že data přidaná výše tlačí ESP dolů.

Když se spustí program, systém vytvoří zásobníkový rámec s lokálními proměnnými. Hlavním účelem útoku přetečením vyrovnávací paměti je získat přístup k EIP nebo zpáteční adrese. Hacker s přístupem k této adrese jí může přikázat, aby poukázala na jakýkoli škodlivý kód, který chtějí, což pak ovlivní širší systém.

S každým novým bitem dat zásobník roste směrem k EBP. Skutečná otázka zde zní, pokud zadáme příliš mnoho dat, můžeme tlačit EBP směrem k EIP? Tímto způsobem jsou požadovaná data nebo kód umístěna v EIP a můžete vidět požadované výsledky. Nezbývá než to spustit. Když program spustíte, ukáže na váš kód EIP a spustí se. V důsledku toho, pokud jste byli hackerem, provedli jste svůj první útok přetečením vyrovnávací paměti.

Chcete-li vzít příklad z jiného úhlu, můžete zvážit kapaliny různých hustot, nazývané ESP, EBP a EIP, v nádobě. Představte si, že ESP je umístěn v horní části nádoby, protože jeho hustota je nižší. Stejně jako olivový olej a voda by se neměly míchat. Škodlivý kód je tedy další kapalina – když ji přidáte do kontejneru, naruší tuto rovnováhu, vytlačí část kapaliny a smíchá se s EIP. To bude indikovat přetečení vyrovnávací paměti.

Jak se chránit před útoky přetečením vyrovnávací paměti

Jak tomu tedy zabránit?

Za prvé, je důležité osvojit si správnou praxi kódování během procesu vývoje softwaru, aby se minimalizovala zranitelnosti zabezpečení. Pečlivě napsaný kód může snížit pravděpodobnost přetečení vyrovnávací paměti.

Dalším krokem je použití obranných mechanismů umožňujících monitorování paměťových oblastí, kontrolu limitů vyrovnávacích pamětí a detekci útoků. Nakonec musíte pravidelně aktualizovat systémy a aplikovat záplaty. Aktualizace, které opravují zranitelnosti, ztěžují útočníkům zneužití známých zranitelností. Použití obranných nástrojů, jako je software a firewall, také poskytuje další vrstvu zabezpečení.

Podnikněte kroky proti přetečení vyrovnávací paměti

Útoky s přetečením vyrovnávací paměti představují významnou hrozbu pro vaši kybernetickou bezpečnost a je přirozeně důležité proti nim přijmout preventivní opatření. Naštěstí je možné tyto útoky blokovat a posilovat obranné mechanismy. Mnoho dobrých bezpečnostních postupů, jako je udržování aktualizace softwaru za účelem opravy záplat, pomáhá chránit před podobnými útoky a dalšími zranitelnostmi.