Medzi aplikáciou a jej externými knižnicami je priestor na vloženie kódu. Vo svojej podstate to nie je zlé, ale je to skvelý spôsob, ako ublížiť.

Keď vývojári potrebujú rozšíriť funkčnosť programu, pre ktorý nemajú zdrojový kód, často sa obrátia na DLL háčik. Toto je neortodoxný spôsob, ako prinútiť program robiť niečo, na čo nie je určený.

Ide o to, že hackeri používajú túto techniku ​​aj zo všetkých nesprávnych dôvodov, ako je zbrojenie neškodných aplikácií alebo crackovanie softvéru. Čo je teda DLL hákovanie a ako to vlastne funguje?

Čo je to DLL?

Spustenie každej aplikácie závisí od niektorých súborov mimo jej základného kódu. Tieto externé súbory obsahujú kód a údaje, ktoré program potrebuje na správne fungovanie. Keď niektorý z týchto externých súborov zmizne, program môže mať problémy so stabilitou alebo môže úplne odmietnuť spustenie.

V operačnom systéme Windows sa tieto externé súbory nazývajú DLL alebo knižnice dynamických odkazov. Knižnice dynamických odkazov sú základnými komponentmi operačného systému Windows, poskytujú opakovane použiteľný kód a zdroje, ktoré možno zdieľať vo viacerých aplikáciách.

instagram viewer

Externé súbory v systéme Windows sú známe ako knižnice. Existujú dva typy knižníc: dynamické a statické. Dynamické knižnice sa načítajú za behu a statické knižnice sa načítajú v čase kompilácie. DLL je dynamická knižnica.

Čo je DLL hákovanie?

DLL hákovanie je technika, ktorá zahŕňa zachytenie a zmenu volaní funkcií, ktoré programy alebo procesy uskutočňujú do knižnice DLL. V podstate nastavenie Man-in-The-Middle je vytvorený tam, kde je hák umiestnený medzi programom a DLL, ktoré volá. Všetky alebo cielené volania funkcií sú potom sledované a zmenené.

Tu je príklad pracovného postupu pri útoku na DLL:

  1. Útočník analyzuje volania funkcií uskutočnené programom a súbory DLL, na ktorých závisí.
  2. Útočník vytvorí hák pomocou jednej z mnohých implementačných techník, ako je hákovanie IAT, inline hákovanie, COM hákovanie atď.
  3. Dochádza k ľubovoľnému spúšťaniu kódu.
  4. Spustenie pôvodného volania funkcie môže, ale nemusí nastať.
  5. Útočník zakryje ich stopy odstránením háku a vrátením všetkých vykonaných zmien.

DLL hákovanie je sofistikovaná technika, ktorú možno použiť na dobré účely (ako je rozšírenie funkčnosti programu, ladenie a protokolovanie) alebo za zlé (ako je obchádzanie bezpečnostných opatrení, krádež citlivých údajov, spustenie ľubovoľného kódu a písanie videohier hacky).

Ako funguje DLL hákovanie?

Predtým, ako sa pustíte do implementácie háčkovania DLL, je dôležité ujasniť si základy. Vráťme sa o krok späť a pochopíme, čo sa stane, keď program vykoná volanie funkcie do knižnice DLL.

Keď program volá funkciu v knižnici DLL, operačný systém najprv vyhľadá názov funkcie importnú tabuľku adries programu a získa adresu funkcie z exportnej adresy DLL Tabuľka.

Keď je adresa funkcie vyriešená, program môže prejsť na adresu funkcie, aby ju získal a vykonal. DLL hákovanie sa točí okolo zachytenia tohto procesu a presmerovania volania funkcie na inú funkciu. Existuje niekoľko spôsobov, ako implementovať hákovanie DLL. Pozrime sa na najčastejšie používané techniky na jeho realizáciu.

Môže to byť dosť technické, takže vám to môže pomôcť ste skúseným používateľom systému Windows alebo inak dobre rozumiete interným prvkom systému Windows.

Hákovanie IAT

IAT hooking je efektívna technika, ktorú autori malvéru bežne používajú na obchádzanie bezpečnostných opatrení a vyhýbanie sa detekcii. Importovať tabuľku adries (IAT) je dátová štruktúra, ktorá sa načíta do pamäte vždy, keď sa vytvorí nový proces. IAT obsahuje názvy všetkých importovaných volaní funkcií a ich pamäťové adresy.

Keď program volá funkciu v knižnici DLL, názov funkcie sa najprv vyhľadá v IAT a ak je adresa pamäte uvedenej funkcie sa nenachádza v IAT, potom sa zistí z exportnej adresy DLL Tabuľka.

Je to dátová štruktúra, kde sú všetky funkcie exportované DLL mapované na ich pamäťové adresy. Pri spájaní IAT môže protivník upraviť IAT procesu a nahradiť legitímne mapovania funkcií so škodlivými, čím narúšajú zamýšľanú operáciu a spúšťajú program svojvoľne kód.

Tu je návod, ako vyzerá všeobecný tok útoku v háku IAT:

  1. Program zavolá funkciu.
  2. Adresa funkcie sa nachádza v IAT.
  3. Vzhľadom k tomu, IAT bol závislý; adresa funkcie bola zmenená a je načítané miesto v pamäti škodlivej funkcie.
  4. Program preskočí na umiestnenie škodlivej funkcie a spustí sa ľubovoľný kód.
  5. Nakoniec sa vykoná pôvodné volanie funkcie.

Inline hákovanie

Inline hákovanie je technika háčkovania DLL, ktorá zahŕňa zmenu zdrojového kódu cieľovej funkcie s cieľom nasmerovať jej vykonávanie na špeciálnu funkciu. Inline Hooking, na rozdiel od IAT hooking, mení kód cieľovej funkcie priamo, čím dáva útočníkovi presnejšiu kontrolu nad tým, ako sa cieľová funkcia správa.

Vo vyššie uvedenom diagrame sledujte, ako bola legitímna funkcia narušená, aby poukázala na škodlivú funkciu. Po vykonaní všetkých inštrukcií v škodlivej funkcii sa vykoná inštrukcia skoku, aby sa vrátila do legitímnej funkcie, aby mohla dokončiť vykonávanie.

Protivníci využívajú inline hákovanie na vykonanie trvalých zmien v programe, ako je zmena parametrov alebo návratovej hodnoty funkcie.

Microsoft Obchádzky

Spoločnosť Microsoft Research vyvinula vlastný balík na prepojenie DLL s názvom Detours. Umožňuje programátorom sledovať a meniť volania funkcií uskutočnené programom. Obchádzky možno použiť na rôzne úlohy, vrátane, ale nie výlučne, na: prístrojové vybavenie, testovanie a odstraňovanie chýb.

Protivníci využívajú Detours na vykonávanie DLL vstrekovania a hákových útokov a vývojári ho často používajú na rozšírenie funkčnosti svojich aplikácií. Viac o balíku Obchádzky sa dozviete na stránke oficiálne úložisko GitHub.

Teraz viete, ako funguje DLL hákovanie

DLL hooking je sofistikovaná technika, ktorá, ak sa použije zo správnych dôvodov, môže zvýšiť možnosti vašej aplikácie alebo vám pomôže ladiť a optimalizovať softvér. Nanešťastie sa hákovanie častejšie používa ako kontradiktórna technika, a nie ako rozvojová. Preto je dôležité, aby ste prijali a dodržiavali osvedčené postupy zabezpečenia, ktoré zabezpečia, že vaše aplikácie budú bezpečné a bez útokov, ako je hákovanie a vstrekovanie.