Kernel hibakereső
A kernel hibakereső olyan szoftver, amely az operációs rendszer kernel szintjén fut, és lehetővé teszi a kernel és összetevőinek hibakeresését.
Alkalmazás
A kernel hibakeresőknek számos felhasználási területük van. Íme néhány közülük:
- Illesztőprogramok hibakeresése. Ez különösen igaz a kernel módú illesztőprogramokra.
- Az operációs rendszer kernelének hibakeresése . Ez a folyamat a kernel működésében fellelhető hibák kereséseként, a kernelkód módosításaként értendő. A zárt rendszerek, például a Windows esetében új kihívást jelent: az adatstruktúrák és a kernelfunkciók dokumentálása.
- A BSOD megszüntetése és megelőzése . A hibakereső lehetővé teszi egy problémás program, például egy illesztőprogram összeállítási kódjának megtekintését , és ha rendelkezik megfelelő ismeretekkel, módosíthatja azt a hibák kijavítása érdekében.
- Rosszindulatú kódok hibakeresése . Az ilyen programok gyakran aktívan befolyásolják az operációs rendszer kernelét, és megváltoztatják a rendszerfunkciók viselkedését. Az ilyen programok logikájának megértéséhez többek között ellenőrizni kell a kernel viselkedését. Ennek az az oka, hogy a felhasználói módú hibakereső csak az operációs rendszer által kínált API-kra támaszkodik. Ezek az API-k maguk is közvetítők a kernelhez képest, és ha egy rosszindulatú programnak vagy bármely más programnak sikerül átvennie az irányítást a megfelelő kernelfunkciók felett, akkor a hibakereső egy ilyen program irányítása alá kerül.
- Szoftver sebezhetőségek és írásbeli kihasználások keresése . Az exploit a bemeneti adatok feldolgozása során a programhibákra támaszkodik, ami csak a működése során nyilvánul meg. Így a kutatónak két problémával kell szembenéznie:
- Keresse meg a sebezhetőséget tartalmazó helyet
- Írjon olyan kódot, amely kihasználhatja a talált biztonsági rést.
Mivel nagyon gyakran nem forráskóddal érkezik a szoftver, hanem csak bináris formában, és maguk a sérülékenységek is gépfüggőek, ez a két probléma speciális eszközöket igényel. Amikor egy programot statikusan megvizsgálnak olyan eszközök, mint például a disassembler , a program viselkedésének számos részlete fel nem ismerve marad, például azok a memóriahelyek, amelyekhez a program hozzáfér, nehezebb meghatározni a programkód végrehajtási útvonalát. A hibakereső lehetővé teszi a program vezérlését a végrehajtás során, és megvizsgálja a benne bekövetkező változásokat a végrehajtás bármely szakaszában. A debugger programverem, processzorregiszterek állapotát megjelenítő képessége lehetővé teszi, hogy különféle információkat tudjunk meg a program egyes eseményekre adott reakciójáról, a kódvégrehajtás logikájáról. Ez lehetővé teszi mind a fent említett első, mind a második probléma megoldását. Ennek példája a Hacking: The Art of the Exploit [1] című könyv 3. fejezetében található.
Működési alapelvek
A kernelszintű hibakereső megfelelő működéséhez módosítani kell az operációs rendszer kernelén. Ezt gyakran úgy oldják meg, hogy további modulokat helyeznek be a kernelbe. Valójában a kernel szintű hibakereső elfogja azokat a globális rendszerfunkciókat, amelyek a következőkért felelősek:
- Memória hozzáférés
- Folyamatok létrehozása/vége
A kernel hibakeresője a különféle kerneltáblákhoz való hozzáférést is szabályozza. Egy másik fontos pont a processzorállapot-kezelés, mivel a processzorok hardverszinten támogatják a lépésről lépésre történő nyomkövetést és a töréspontokat.
Ennek a szoftverosztálynak a leghíresebb képviselői
- softICE . A Numega által kifejlesztett és a DriverStudio -val terjesztett, saját fejlesztésű hibakereső. A softICE nem hivatalos buildjeit különféle hackercsoportok készítettek. A softICE a Windows különböző verzióiban biztosította a kód hibakeresését, és széleskörű képességei miatt nem hivatalos szabvány volt a szoftver-visszafejtő körökben . Később azonban elhagyták. Ma már egyre ritkábban használják, mivel nem kompatibilis a Windows Vistával és a 7 -tel [2] Ugyanakkor a softICE jórészt az ilyen eszközök használatának ideológiájának alapja lett. Csak Windows platformon működik
- WinDbg, KD, LiveKD. A WinDbg a hivatalos ingyenes és zárt forráskódú hibakereső, amelyet a Microsoft Windows rendszerhez készült hibakereső eszközei tartalmaznak. GUI-orientált. A hozzá tartozó karakterkészletek lehetővé teszik a Windows kernel felfedezését. A KD egy másik hibakereső a Microsofttól, amely a Windows kernel felfedezésére szolgál. A LiveKD egy ingyenes rendszermag-hibakereső a Sysinternalstól , amely lehetővé teszi a rendszer hibakeresését egy második számítógép használata nélkül, amit az előző két hibakereső megkövetel. Ezt Mark Russinovich és David Solomon The Internals of Windows című könyve írja le részletesebben. [3]
- Syser. A kínai programozók által kifejlesztett SoftICE utódja. Támogatja a SoftICE stílusú interfészt. Kompatibilis az új Windows operációs rendszerekkel, támogatja a többprocesszoros rendszereket. Fizetős zárt forráskódú termék.
- KDB. Kernel szintű hibakereső az SGI *nix-hez . A magon lévő folttal aktiválva [4] . nyílt forráskódú projekt.
- lineice. Egy másik nyílt forráskódú kernel hibakereső a *nix számára. Néhány kompatibilitási probléma van az új Linux kernelekkel
Alkalmazási problémák
Nagyon fontos, hogy a hibakereső kompatibilis legyen annak az operációs rendszernek a kernelével, ahol használják, mivel a hibakereső módosítja a kernel alapvető struktúráit, amelyek változatról verzióra változnak. A hibakereső rossz verziójának használata kiszámíthatatlan rendszerviselkedéshez vezethet.
Egy másik meglehetősen komoly probléma a más alkalmazások kernel szintű illesztőprogramjai és a hibakereső közötti ütközés. Példa erre, hogy a Daemon Tools program nem tud futni, amíg a kernel hibakeresője aktív. Egyes programok megtagadják a működést, ha hibakeresőt észlelnek a rendszeren, vagy megkísérlik a hibakeresést
Lásd még
Jegyzetek
- ↑ "Hacking: The Art of the Exploit", 135-155. oldal - Ez a GDB felhasználói módú hibakeresőt használja , de ez nem változtat a metódusok lényegén.
- ↑
Chris Kaspersky, Eva Rocco "A szétszerelés művészete" 9. o.
- ↑ M. Russinovich, D. Solomon Microsoft Windows Internals: Windows Server 2003, Windows XP, Windows 2000. 29-31. oldal (hibakeresési szimbólumok, hibakeresők leírása, tanulmányi példa), 82-83.
- ↑ SGI – Fejlesztői Központ nyílt forráskódú | KDB (downlink) . Letöltve: 2010. augusztus 15. Az eredetiből archiválva : 2010. november 26.. (határozatlan)
Irodalom
Linkek