Kernel debugger
En kärnfelsökning är programvara som körs på kärnnivån i ett operativsystem och låter dig felsöka kärnan och dess komponenter.
Applikation
Kerneldebuggers har många användningsområden. Här är några av dem:
- Felsökning av drivrutiner. Detta gäller särskilt för drivrutiner för kärnläge.
- Felsökning av operativsystemets kärna . Denna process förstås som sökningen efter fel i kärnans funktion, modifiering av kärnkoden. När det gäller slutna system som Windows uppstår en ny utmaning: att dokumentera datastrukturer och kärnfunktioner.
- Eliminering och förebyggande av BSOD . Debuggern låter dig se monteringskoden för ett problematiskt program, till exempel en drivrutin , och, om du har lämplig kunskap, göra justeringar i den för att åtgärda fel.
- Felsökning av skadlig kod . Sådana program påverkar ganska ofta aktivt operativsystemets kärna och ändrar beteendet hos systemfunktioner. För att förstå logiken i sådana program är det nödvändigt att kontrollera, bland annat, beteendet hos kärnan. Detta beror på att användarlägesfelsökaren endast förlitar sig på API:erna som erbjuds av operativsystemet självt. Dessa API:er är själva mellanhänder i förhållande till kärnan, och om ett skadligt program eller något annat program lyckas ta kontroll över beteendet hos motsvarande kärnfunktioner, så kommer debuggern att vara under kontroll av ett sådant program.
- Hitta sårbarheter i programvara och skrivutnyttjande . Exploater förlitar sig på programfel under bearbetningen av indata, vilket visar sig endast under dess drift. Därför står forskaren inför två problem:
- Hitta platsen som innehåller sårbarheten
- Skriv kod som kan utnyttja den hittade sårbarheten.
Eftersom mjukvaran väldigt ofta inte kommer med källkod, utan endast i binär form, och sårbarheterna i sig är maskinberoende, kräver dessa två problem specialverktyg. När ett program statiskt undersöks av verktyg som en disassembler förblir många detaljer om programmets beteende okända, till exempel de minnesplatser som programmet nås, är det svårare att fastställa sökvägen för programkodens exekvering. Debuggern låter dig styra programmet under körning och undersöka de ändringar som sker i det i vilket skede som helst av körningen. Debuggerns förmåga att visa programstackens tillstånd, processorregister låter dig ta reda på olika information om programmets reaktion på vissa händelser, logiken för kodexekvering. Detta gör att vi kan lösa både det första och det andra problemet som nämns ovan. Ett exempel på hur detta går till finns i kapitel 3 i boken Hacking: The Art of the Exploit [1]
Grundläggande funktionsprinciper
Felsökaren på kärnnivå kräver ändringar av operativsystemets kärna för att fungera korrekt. Ganska ofta löses detta genom att introducera ytterligare moduler i kärnan. Faktum är att felsökaren på kärnnivån fångar upp globala systemfunktioner som är ansvariga för:
- Minnesåtkomst
- Skapa/avsluta processer
Kärnfelsökaren kontrollerar också åtkomst till olika kärntabeller. En annan viktig punkt är hantering av processortillstånd, eftersom processorer stödjer steg-för-steg-spårning och brytpunkter på hårdvarunivå.
De mest kända representanterna för denna klass av programvara
- softICE . En egenutvecklad debugger utvecklad av Numega och distribuerad med DriverStudio. Inofficiella versioner av softICE har gjorts av olika hackergrupper. softICE tillhandahöll felsökning av kod på olika versioner av Windows och var, på grund av dess breda möjligheter, en inofficiell standard i mjukvarukretsar för reverse engineering . Den övergavs dock senare. Nu används det mindre och mindre, eftersom det inte är kompatibelt med Windows Vista och 7 [2] Samtidigt har softICE till stor del blivit grunden för ideologin att använda sådana verktyg. Fungerar endast på Windows-plattformen
- WinDbg, KD, LiveKD. WinDbg är den officiella gratis och sluten källkodsfelsökning som ingår i Microsofts felsökningsverktyg för Windows. Det är GUI-orienterat. Teckenuppsättningarna för den låter dig utforska Windows-kärnan. KD är en annan felsökare från Microsoft som är utformad för att utforska Windows-kärnan. LiveKD är en gratis kärnfelsökare från Sysinternals som låter dig felsöka ditt system utan att använda en andra dator, vilket är vad de tidigare två felsökarna kräver. Detta beskrivs mer i detalj i Mark Russinovich och David Solomons bok The Internals of Windows. [3]
- Syser. SoftICE efterträdare utvecklad av kinesiska programmerare. Stöder SoftICE stil gränssnitt. Kompatibel med nya Windows-operativsystem, stöder multiprocessorsystem. Betald produkt med sluten källkod.
- KDB. Debugger på kärnnivå för *nix av SGI . Aktiveras genom att applicera en patch på kärnan [4] . opensource-projekt.
- lineice. En annan OpenSource-kärnfelsökare för *nix. Det finns vissa kompatibilitetsproblem med nya Linux-kärnor
Programproblem
Det är mycket viktigt att debuggern måste vara kompatibel med kärnan i operativsystemet där den används, eftersom debuggern modifierar kärnans grundläggande strukturer, som tenderar att ändras från version till version. Att använda fel version av felsökaren kan leda till oförutsägbart systembeteende.
Ett annat ganska allvarligt problem är konflikten mellan drivrutinerna på kärnnivå för andra applikationer och felsökaren. Ett exempel är oförmågan hos Daemon Tools-programmet att köras medan kärnfelsökaren är aktiv. Vissa program vägrar att fungera om de upptäcker närvaron av en debugger på systemet eller försöker felsöka dem
Se även
Anteckningar
- ↑ "Hacking: The Art of the Exploit", s. 135-155 - Detta använder GDB -användarlägesfelsökningen , men detta ändrar inte essensen av metoderna.
- ↑
Chris Kaspersky, Eva Rocco "Konsten att demontera" s.9
- ↑ M. Russinovich, D. Solomon Microsoft Windows Internals: Windows Server 2003, Windows XP, Windows 2000. s. 29-31 (felsökningssymboler, beskrivning av debuggers, studieexempel), s. 82-83 ett annat exempel
- ↑ SGI - Utvecklarcentral med öppen källkod | KDB (nedlänk) . Hämtad 15 augusti 2010. Arkiverad från originalet 26 november 2010. (obestämd)
Litteratur
Länkar