Ladicí program jádra
Ladicí program jádra je software, který běží na úrovni jádra operačního systému a umožňuje ladit jádro a jeho součásti.
Aplikace
Ladicí programy jádra mají mnoho využití. Zde jsou některé z nich:
- Ladění ovladačů. To platí zejména pro ovladače režimu jádra.
- Ladění jádra operačního systému . Tento proces je chápán jako hledání chyb ve fungování jádra, úprava kódu jádra. V případě uzavřených systémů, jako je Windows, vyvstává nová výzva: dokumentování datových struktur a funkcí jádra.
- Eliminace a prevence BSOD . Ladicí program vám umožňuje zobrazit kód sestavení problematického programu, jako je ovladač , a pokud máte patřičné znalosti, můžete jej upravit, abyste opravili chyby.
- Ladění škodlivého kódu . Takové programy poměrně často aktivně ovlivňují jádro operačního systému a mění chování systémových funkcí. Abychom pochopili logiku takových programů, je nutné mimo jiné ovládat chování jádra. Je to proto, že ladicí program uživatelského režimu se spoléhá pouze na rozhraní API nabízená samotným operačním systémem. Tato API samotná jsou prostředníky ve vztahu k jádru, a pokud se škodlivému programu nebo jinému programu podaří převzít kontrolu nad chováním odpovídajících funkcí jádra, pak bude debugger pod kontrolou takového programu.
- Hledání zranitelností softwaru a zneužití při psaní . Exploity spoléhají na chyby programu při zpracování vstupních dat, což se projeví až při jeho provozu. Výzkumník tedy čelí dvěma problémům:
- Najděte místo, které obsahuje zranitelnost
- Napište kód, který dokáže zneužít nalezenou chybu zabezpečení.
Vzhledem k tomu, že software velmi často není dodáván se zdrojovým kódem, ale pouze v binární podobě, a zranitelnosti samotné jsou závislé na stroji, vyžadují tyto dva problémy speciální nástroje. Když je program staticky zkoumán nástroji, jako je disassembler , mnoho detailů chování programu zůstává nerozpoznaných, například místa v paměti, ke kterým program přistupuje, je obtížnější určit cestu provádění programového kódu. Ladicí program vám umožňuje ovládat program během provádění a zkoumat změny, které v něm nastanou v jakékoli fázi provádění. Schopnost debuggeru zobrazit stav zásobníku programu, registrů procesoru umožňuje zjistit různé informace o reakci programu na určité události, logiku provádění kódu. To nám umožňuje vyřešit první i druhý výše zmíněný problém. Příklad, jak se to dělá, lze nalézt v kapitole 3 knihy Hacking: The Art of the Exploit [1]
Základní principy činnosti
Ladicí program na úrovni jádra vyžaduje změny jádra operačního systému, aby správně fungoval. Dost často se to řeší zavedením dalších modulů do jádra. Ve skutečnosti debugger na úrovni jádra zachycuje funkce globálního systému, které jsou zodpovědné za:
- Přístup do paměti
- Vytvořit/ukončit procesy
Ladicí program jádra také řídí přístup k různým tabulkám jádra. Dalším důležitým bodem je správa stavu procesoru, protože procesory podporují krok za krokem trasování a body přerušení na úrovni hardwaru.
Nejznámější představitelé této třídy softwaru
- softICE . Proprietární debugger vyvinutý společností Numega a distribuovaný s DriverStudio. Neoficiální sestavení softICE byly vytvořeny různými hackerskými skupinami. softICE poskytoval ladění kódu na různých verzích Windows a byl díky svým širokým možnostem neoficiálním standardem v kruzích softwarového reverzního inženýrství . Následně však bylo opuštěno. Nyní se používá stále méně, protože není kompatibilní s Windows Vista a 7 [2] Zároveň se softICE z velké části stalo základem ideologie používání takových nástrojů. Funguje pouze na platformě Windows
- WinDbg, KD, LiveKD. WinDbg je oficiální bezplatný a uzavřený ladicí program, který je součástí ladicích nástrojů společnosti Microsoft pro Windows. Je orientovaný na GUI. Znakové sady pro něj umožňují prozkoumat jádro Windows. KD je další debugger od společnosti Microsoft, který je navržen tak, aby prozkoumal jádro Windows. LiveKD je bezplatný ladicí program jádra od společnosti Sysinternals , který vám umožňuje ladit váš systém bez použití druhého počítače, což vyžadují předchozí dva ladicí programy. Toto je podrobněji popsáno v knize Marka Russinoviche a Davida Solomona The Internals of Windows. [3]
- Syser. Nástupce SoftICE vyvinutý čínskými programátory. Podporuje rozhraní ve stylu SoftICE. Kompatibilní s novými operačními systémy Windows, podporuje víceprocesorové systémy. Placený produkt s uzavřeným zdrojem.
- KDB. Debugger na úrovni jádra pro *nix od SGI . Aktivuje se přiložením záplaty na jádro [4] . opensource projekt.
- lineice. Další ladicí program jádra OpenSource pro *nix. Existují určité problémy s kompatibilitou s novými linuxovými jádry
Problémy s aplikací
Je velmi důležité, že debugger musí být kompatibilní s jádrem operačního systému, kde se používá, protože debugger upravuje základní struktury jádra, které mají tendenci se verze od verze měnit. Použití nesprávné verze ladicího programu může vést k nepředvídatelnému chování systému.
Dalším poměrně vážným problémem je konflikt mezi ovladači na úrovni jádra jiných aplikací a debuggerem. Příkladem je nemožnost spuštění programu Daemon Tools, když je aktivní ladicí program jádra. Některé programy odmítnou fungovat, pokud zjistí přítomnost debuggeru v systému nebo se pokusí je odladit
Viz také
Poznámky
- ↑ "Hacking: The Art of the Exploit", str. 135-155 - Používá ladicí program uživatelského režimu GDB , ale to nemění podstatu metod.
- ↑
Chris Kaspersky, Eva Rocco "Umění rozebírat" str.9
- ↑ M. Russinovich, D. Solomon Microsoft Windows Internals: Windows Server 2003, Windows XP, Windows 2000. str. 29-31 (symboly ladění, popis debuggerů, příklad studie), str. 82-83 další příklad
- ↑ SGI – Developer Central Open Source | KDB (downlink) . Získáno 15. srpna 2010. Archivováno z originálu dne 26. listopadu 2010. (neurčitý)
Literatura
Odkazy