Hacking

Malware - Detecting

Upload Malware

Doporučujeme














Naše Bannery








Toplist




Rootkit Hooking



V operačom systéme Win32 sú dva režímy - USER-mode a KERNEL-mode

Pod USER-mode bežia aplikácie, služby operačného systému (Session Manager\SubSystems) vrátanie knižníc advapi32.dll, user32.dll, kernel32.dll, shell.dll a podobne. Ešte nižšie pod týmito knižnicami je zavedená knižnica Ntdll.dll, čo je knižnica funkcií rozhrania API. Knižnica Ntdll.dll je nadradená ostatným .dll spomenutých vyššie (aj knižnici kernel32.dll, ktorá tiež obsahuje funkcie API), pretože využívajú funkcie práve z nej. Spustený rootkit využíva funkcie API, najčastejšie WriteProcessMemory, a tým hookuje procesy.

Hooknutie IAT (Import Address Table) -- Import Address Table je tabuľka obsahujúca importované príkazy a funkcie, ktoré následne s postupnosťou vykonáva. Spúšťa / inicializuje prvotné načítanie dát zo súborov - knižníc a podobne ešte pred úplným spustním samotného OS. Zvolíme si knižnicu kernel32, veľa rootkitov sa jej rado drží.
V časti IAT je definované načítanie knižnice kernel32.dll funkciou CALL - call dword ptr 0x11111111 , pričom 0x11111111 je cesta k súboru kernel32.dll, teda 5 bytové číslo. Čiže, pri nehooknutej IAT sa pokynom CALL 0x11111111 načíta kižnica kernel32. Nič ťažké.
Pri hookingu rootkit pozmení štruktúru volanej adresy (v našom prípade 0x11111111 - kernel.dll) a nahradí ho inou adresou (napr. 1A41041A), čo je adresa odkazujúca priamo na rootkit. Rootkit potom obsahuje pokyn  JMP 0x11111111 , ktorý zavolá adresu 0x11111111 - kernel32.dll.







Hooknutie InLine -- Podobný spôsob hooknutia ako u IAT s tým rozdielom, že rootkit nehookuje IAT, ale priamo knižnice (kernel32.dll). Do knižnice pridá funkciu JMP 0x1A41041A , ktorá spustí rootkit.






KERNEL-mode alebo jadro OS je režim, ktorý sa spúšťa ako úplne prvý po načítaní Biosu. Inicializuje USER-mode, tak ako aj systémové súbory (ovladače .sys), ovladače Anti-Virusov a ostatné drivere, ktoré sú v tomto mode zavedené. Systémové ovladače tvoria "most" medzi hardwarom počítača s ktorým komunikujú.


Modifikácia SSDT (System Service Descriptor Table) -- Spustený rootkit využíva API funkciu knižnice Ntdll.dll NTWriteFile, ktorou uloží do poľa EAX číslo a do poľa EDX adresu odkazujúce na parametre, ktoré sa majú vykonať. Po tomto kroku procesor zavolá inštrukciu SYSENTER, ktorá premiestni parametre na vykonanie do kernelu. Kernel má teraz za úlohu parametre preložiť do funkcií a vykonať ich. Zameria sa na SSDT. SSDT je tvorená SDT (Service Dispatch Table), čo je databáza funkcií a ich adries a SPT (Service Parameter Table), čo je databáza parametrov. Kernel zavolá funkciu Zwxxx obsiahnutú v súbore ntoskrnl.exe. Funkcia Zwxxx porovná parametre z adries registrov EDX a EAX s funkciami v SDT. Výsledné parametre uloží do operačnej pamäte. Pri modifikácií SSDT dochádza k nahradeniu funkcií. Pri volaniach API takto pozmenenej štruktúry funkcií SSDT, sa odkazuje na samotný rootkit.


Ukážka hookingu v UPM : HOOK


Spôsobov hookingu je však omnoho viacej. Pokiaľ sa rootkit dostane do kernelu, prakticky neexistujú hranice, ktoré by nemohol prekonať. Príkladom sú rootkity, ktoré sa prostedníctvom kernelu infiltrujú do interných častí hardware ako sú pamäť Biosu, Master Boot Sektor - MBR (príkladom sú rootkit Sinovall alebo niektoré varianty Virutu), a podobne.




















 SPAŤ

 
Joomla ACL by AceACL