czyli tu, tam, i z powrotem



Podobne dokumenty
Narzędzie konfiguracji rozruchu

Systemy operacyjne i sieci komputerowe. 1 SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE. Etapy uruchamiania systemu

Systemy operacyjne i sieci komputerowe Szymon Wilk Etapy uruchamiania systemu 1

PARAGON GPT LOADER. Przewodnik

1) Czym jest architektura systemu Windows 7 i jak się ją tworzy? 2) Jakie są poszczególne etapy uruchomienia systemu Windows 7?

Windows Windows Millenium 33 Windows NT/ Rejestr Windows XP w systemie 64-bitowym 34

Rejestr HKEY_LOCAL_MACHINE

Rejestr Windows XP. Leksykon kieszonkowy

SYSTEMY OPERACYJNE. na przykładzie. MS Windows XP

Systemy operacyjne i sieci komputerowe Szymon Wilk System operacyjny 1

Wybrane programy do tworzenia bootowalnego dysku USB

Przedmiot: Technologia informacyjna

Połączenia. Instalowanie drukarki lokalnie (Windows) Co to jest drukowanie lokalne?

Backup & Recovery 12 Home

Paweł Skrobanek. C-3, pok pawel.skrobanek.staff.iiar.pwr.wroc.pl

Wirusy w systemie Linux. Konrad Olczak

MIGRATE TO 3TB. Przewodnik

Ćwiczenie Nr 6 Przegląd pozostałych najważniejszych mechanizmów systemu operacyjnego Windows

Instrukcja aktualizacji Windows 7 do Windows 8 na komputerach ADAX v.0.2

AE/ZP-27-16/14. Oprogramowanie do wykonywania kopii zapasowych oraz zarządzania maszynami wirtualnymi

Połączenia. Obsługiwane systemy operacyjne. Instalowanie drukarki przy użyciu dysku CD Oprogramowanie i dokumentacja

Konwersja maszyny fizycznej na wirtualną

Programowanie na poziomie sprzętu. Tryb chroniony cz. 1

Backup & Recovery 10 Home

SYSTEM OPERACYJNY. Monika Słomian

Prezentacja systemu RTLinux

dr inż. Jarosław Forenc

Bezpieczeństwo systemów komputerowych - wykład III i IV

PR P E R Z E E Z N E T N A T C A JA C JA KO K RP R O P RA R C A Y C JN Y A JN ACTINA DATA MANAGER

Temat: Windows 7 Centrum akcji program antywirusowy

IdyllaOS. Prosty, alternatywny system operacyjny. Autor: Grzegorz Gliński. Kontakt:

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

Jednolity Plik Kontrolny w IFK

Szkolenie autoryzowane. MS Administracja i obsługa Windows 7. Strona szkolenia Terminy szkolenia Rejestracja na szkolenie Promocje

Skrócony przewodnik OPROGRAMOWANIE PC. MultiCon Emulator

Instalacja, aktualizacja i migracja do Windows 7

Co to jest BCD? Jak możemy edytować magazyn BCD?

IBM SPSS Statistics dla systemu Windows Instrukcje dotyczące instalacji (jeden użytkownik)

Działanie systemu operacyjnego

ABC systemu Windows 2016 PL / Danuta Mendrala, Marcin Szeliga. Gliwice, cop Spis treści

Dział Dopuszczający Dostateczny Dobry Bardzo dobry Celujący

1. Podstawy...P Polecenia podstawowe...p... 18

Pierwsze kroki w systemie

Linux vs rootkits. - Adam 'pi3' Zabrocki

Q E M U.

Audyt zasobów sprzętowych i systemowych (za pomocą dostępnych apletów Windows oraz narzędzi specjalnych)

UNIX: architektura i implementacja mechanizmów bezpieczeństwa. Wojciech A. Koszek dunstan@freebsd.czest.pl Krajowy Fundusz na Rzecz Dzieci

Instrukcja obsługi SafeIT - modułu zdalnego sterowania do sterowników kotłów CO firmy Foster v1.0

Narzędzie Setup Instrukcja obsługi

Bezpieczeństwo systemów komputerowych. Java i JavaScript. Java i JavaScript. Java - historia

IBM SPSS Statistics dla systemu Windows Instrukcje dotyczące instalacji (licencja lokalna)

Język UML w modelowaniu systemów informatycznych

Działanie systemu operacyjnego

Jak wiemy, wszystkich danych nie zmieścimy w pamięci. A nawet jeśli zmieścimy, to pozostaną tam tylko do najbliższego wyłączenia zasilania.

IBM SPSS Statistics dla systemu Windows Instrukcje dotyczące instalacji (jeden użytkownik)

1. Podręcznik instalacji aplikacji EXR Creator Wstęp Instalacja Instalacja aplikacji EXR Creator z płyty CD

Necurs analiza malware (1)

Otwock dn r. Do wszystkich Wykonawców

Przegląd technik wirtualizacji i separacji w nowoczesnych systemach rodziny UNIX

Programowanie niskopoziomowe

Computer Setup Instrukcja obsługi

MSConfig, System ConfigurationUtility

Sektor. Systemy Operacyjne

WYKŁAD 3 Jądro systemu i procesy. Marcin Tomana Wyższa Szkoła Informatyki i Zarządzania

Internet Security Multi-Device PL Box 2-Device 1Year KL1941PBBFS

Struktura dysku. Dyski podstawowe i dynamiczne

Memeo Instant Backup Podręcznik Szybkiego Startu

Start systemu Windows Vista

Tworzenie partycji i dysków logicznych

Działanie systemu operacyjnego

Oprogramowanie. DMS Lite. Podstawowa instrukcja obsługi

SO2 - Procesy, wątki, zadania

Na komputerach z systemem Windows XP zdarzenia są rejestrowane w trzech następujących dziennikach: Dziennik aplikacji

Programowanie Niskopoziomowe

Computer Setup. Instrukcja obsługi

Tomasz Greszata - Koszalin

Narzędzie Setup. Instrukcja obsługi

Przegląd technik wirtualizacji i separacji w nowoczesnych systemach rodziny UNIX

Laboratorium - Instalacja Virtual PC

PROJEKTOWANIE SYSTEMÓW KOMPUTEROWYCH

DESKTOP Internal Drive. Przewodnik po instalacji

SSI Katalog. Program do katalogowania zawartości dysków. Dariusz Kalinowski

Asix. Konfiguracja serwera MS SQL dla potrzeb systemu Asix. Pomoc techniczna NIEZAWODNE ROZWIĄZANIA SYSTEMÓW AUTOMATYKI

Temat: Rootkit stworzony w oparciu o technikę "SSDT hooking". Autor: Damian Tykałowski. I. Cel projektu

Podstawy Techniki Komputerowej. Temat: BIOS

Systemy plików FAT, FAT32, NTFS

Działanie systemu operacyjnego

Mikroinformatyka. Wielozadaniowość

BIOS, tryb awaryjny, uśpienie, hibernacja

Acronis Universal Restore

Zastępstwa Optivum. Jak przenieść dane na nowy komputer?

Administratorzy systemów, inżynierowie, konsultanci, którzy wdrażają i zarządzają rozwiązaniami opartymi o serwery HP ProLiant

Przywracanie systemu

Partition Wizard Home Edition Aplikacja przeznaczona do partycjonowania dysków twardych, obsługująca również macierze RAID oraz dyski o pojemności

Instrukcja Instalacji

Instrukcja obsługi urządzenia DS150E z systemem operacyjnym Windows 7. Dangerfield luty 2010 V1.0 Delphi PSS

Instalacja aplikacji

SecureDoc Standalone V6.5

Transkrypt:

Hispasec czyli tu, tam, i z powrotem Mateusz j00ru Jurczyk SecDay, Wrocław 2009

Bootkity - wprowadzenie Windows XP SP3 ładowanie systemu DEMO bootkit w akcji Budujemy kod bootkitu Windows Vista SP2 / 7 RC co nowego? Pytania 09/21/2009 Bootkit versus Windows 2

Mateusz j00ru Jurczyk Reverse Engineer @ Hispasec Pentester / Bughunter Vexillium (http://vexillium.org) Autor bloga technicznego (http://j00ru.vexillium.org) 09/21/2009 Bootkit versus Windows 3

Z czym mamy do czynienia? Kod wykonywalny umieszczony na nośniku bootowalnym dowolnego typu (HDD, Floppy, CD/DVD, Flash memory) Nie ogranicza się do nośników lokalnych PXE (Preboot Execution Environment) Pierwsza kontrolowana jednostka egzekucji Pomijając możliwość modyfikacji BIOS Niezależność od konkretnej platformy systemowej Idealne wsparcie dla rootkita (lub jego integralna część) 09/21/2009 Bootkit versus Windows 4

Praktyczne możliwości Kontrola zachowania systemu operacyjnego Ominięcie zabezpieczeń/ograniczeń systemowych (DRM, PatchGuard itp.) Ważne kwestie kompatybilności Zdalna infekcja maszyn (PXE) Ominięcie software owych mechanizmów szyfrowania dysku (TrueCrypt) W skrócie możemy dokładnie tyle, ile sam system operacyjny, a nawet więcej 09/21/2009 Bootkit versus Windows 5

Nazwa Rok powstania Autor System operacyjny Wirus Stoned 1987r.? DOS BootRoot 2005r. Derek Soeder, Ryan Permeh Windows XP PiXie 2006r. Derek Soeder Windows XP BOOT-KIT 2007r. Nitin Kumar, Vipin Kumar Windows 2000, XP, 2003 Wirus Sinowal (aka Mebroot) 2007r.? Windows 2000, XP, 2003, Vista 09/21/2009 Bootkit versus Windows 6

Nazwa Rok powstania Autor Vbootkit 2007r. TPMKit 2007r. Nitin Kumar, Vipin Kumar Nitin Kumar, Vipin Kumar KON-BOOT 2008r. (?) Piotr Bania Vbootkit 2.0 2009r. Nitin Kumar, Vipin Kumar System operacyjny Windows Vista - Windows: wszystkie od XP Linux: Gentoo, Ubuntu, Debian, Fedora Windows 7 RC x64 Stoned Bootkit 2009r. Peter Kleissner Wszystkie od XP 09/21/2009 Bootkit versus Windows 7

Jak możemy się bronić? Zabezpieczenia software nie wystarczą sytuacja kto pierwszy, ten lepszy Pomimo to, Windows Vista utrudnia nam życie sumami kontrolnymi Zapobieganie a wykrywanie infekcji uprzywilejowany dostęp do dysku twardego Wprowadzenie zabezpieczeń sprzętowych Trusted Platform Module jednym ze skutecznych rozwiązań 09/21/2009 Bootkit versus Windows 8

Windows XP SP3 ładowanie 09/21/2009 Bootkit versus Windows 9

Ważne informacje System uruchamiany zawsze z HDD MBR i VBR w akcji Fazy ładowania tryb rzeczywisty i chroniony Zaczynamy w real-mode Za przełączanie w PM odpowiada wyznaczony moduł bootowania Piszemy kod obsługujący oba tryby działania procesora 09/21/2009 Bootkit versus Windows 10

Ważne informacje Schemat działania pojedynczej fazy Wykonaj konieczne operacje ładowania Wczytaj kolejny etap do pamięci wirtualnej Skocz do adresu docelowego Sposób wczytywania danych z HDD Tryb rzeczywisty przerwanie INT13h Tryb chroniony sterowniki jądra 09/21/2009 Bootkit versus Windows 11

NTOSKRNL.EXE M B R B I O S V B R NTLDR16 OsLoader.EXE 00h 01h 02h 03h 13h FFh K O D B I O S SMSS.EXE SYSTEM DRIVERS HAL.DLL bootvid.dll kdcom.dll CSRSS.EXE LSASS.EXE WINLOGON.EXE SSDT NtCreateFile NtSetInformationProcess NtClose NtAddAtom NtReadFile 09/21/2009 Bootkit versus Windows 12

D E M O Microsoft Windows XP SP3 gets pwned hard 09/21/2009 Bootkit versus Windows 13

Piszemy bootkita technikalia 09/21/2009 Bootkit versus Windows 14

Podstawowe założenia Całkowity brak operacji na dysku twardym Kod znajduje się na przenośnym nośniku wykluczamy podmianę oryginalnego MBR Jak najmniejszy objętościowo oczekiwany rozmiar to ok. 1kB kodu maszynowego Efekt docelowy: modyfikacja kodu jądra w sposób zwiększający nasze przywileje w systemie 09/21/2009 Bootkit versus Windows 15

Istotne spostrzeżenia Nie można przejść bezpośrednio z kodu trybu rzeczywistego do modyfikacji kernela W każdym momencie ładowania widzimy pewną część starych oraz aktualnych modułów Zmusza to do tworzenia łańcuchów modyfikacji, przechodzących po kolejnych etapach Na końcu docieramy do obrazu wykonywalnego jądra Sposób na gwarancję przechwycenia wykonywania w kolejnych etapach? 09/21/2009 Bootkit versus Windows 16

Istotne spostrzeżenia cd. Minimalizacja liczby modyfikowanych faz Pole widzenia pamięci jest zwykle szersze niż 1 poziom Przykładowe praktyczne ulepszenia jądra Modyfikacja boot logo wyświetlanego przez bootvid.dll Ominięcie procesu autoryzacji użytkownika Podniesienie uprawnień dowolnego procesu użytkownika (i.e. cmd.exe) 09/21/2009 Bootkit versus Windows 17

BOOTKIT B I O S 00h 01h 02h 03h 13h FFh K O D B I O S 09/21/2009 Bootkit versus Windows 18

Bootsektor (512b) ładowany pod adres 0x07C00 Ładowanie MBR pod ten sam adres, w celu uruchomienia Windows Realokacja w bezpieczne miejsce Bezpieczny sposób na alokację pamięci? Doczytanie pozostałych danych z napędu Odczytanie pierwszego sektora HDD pod zwolniony adres, przy użyciu przerwania INT13h 09/21/2009 Bootkit versus Windows 19

Sposoby na utrzymanie kontroli w systemie Modyfikacja kodu BIOS w pamięci Niebezpieczne Niewygodne Niekompatybilne Modyfikacja Tabeli Deskryptorów Przerwań Zawiera 256 elementów wskaźników na funkcje BIOS obsługujące konkretne funkcjonalności Każdy z nich zajmuje 4 bajty adresowanie segmentowe (16:16) Znajduje się pod adresem 0000:0000h 09/21/2009 Bootkit versus Windows 20

Które przerwanie chcemy kontrolować? 09/21/2009 Bootkit versus Windows 21

Interesujące możliwości INT 10h Video services INT 13h Low Level Disk Services INT 15h Miscellaneous INT 1Ah Real Time Clock Services Wybór zależny od sposobu i miejsca modyfikacji bootloadera Najczęściej (zawsze?) stosowany hook na przerwanie obsługi dysku (INT 13h) 09/21/2009 Bootkit versus Windows 22

B I O S BOOTKIT M B R V B R 00h 01h 02h 03h 13h FFh K O D B I O S 09/21/2009 Bootkit versus Windows 23

INT13h hook Kontrola wszystkich danych przepływających przez dysk Master Boot Record Volume Boot Record NTLDR16 OsLoader.EXE Nie wiemy, z jakim plikiem powiązane są odczytywane dane operujemy na adresowaniu CHS (Cylinder-Head-Sector) 09/21/2009 Bootkit versus Windows 24

Konieczność posługiwania się sygnaturami plików Kwestie kompatybilności Problem danych brzegowych Pliki wczytywane są blokami o określonej wielkości Unikalność sygnatury Najdalszym elementem bezpośrednio wczytywanym przez INT13h jest C:\NTLDR 09/21/2009 Bootkit versus Windows 25

B I O S BOOTKIT M B R V B R NTLDR16 OsLoader.EXE 00h 01h 02h 03h 13h FFh K O D B I O S 09/21/2009 Bootkit versus Windows 26

Kontekst OsLoader.exe tryb chroniony Pomimo 32-bitowego adresowania, istnieje dostęp do niskich obszarów pamięci Korzystając z okazji, relokujemy kod w wolne miejsce po stronie jądra (0x8??????) Decyzja co dalej? Dostęp do obrazu jądra systemu (NTOSKRNL) Dostęp do obrazu biblioteki obsługi sprzętu (HAL) Dostęp do obrazów podstawowych sterowników 09/21/2009 Bootkit versus Windows 27

B I O S BOOTKIT M B R V B R NTLDR16 NTOSKRNL.EXE OsLoader.EXE 00h 01h 02h 03h 13h FFh K O D B I O S HAL.DLL bootvid.dll kdcom.dll SSDT NtCreateFile NtSetInformationProcess NtClose NtAddAtom NtReadFile 09/21/2009 Bootkit versus Windows 28

Pierwsza modyfikacja podmiana logo Windows Cel bezpośredni obraz jądra NT Ntoskrnl.exe zawiera bitmapę bootowania w zasobach pliku PE Do wyświetlania i aktualizacji obrazu używa funkcji VidBitBlt i VidBufferToScreenBlt Dwie metody zmiany bitmapy Wyszukiwanie sygnatury logo w pamięci kernela i nadpisanie nowymi danymi Przechwytywanie wywołań eksportów BOOTVID.DLL i wprowadzanie poprawek run-time 09/21/2009 Bootkit versus Windows 29

Druga modyfikacja eskalacja uprawnień linii poleceń Cel bezpośredni wszystkie instancje cmd.exe Format przechowywania tokenów bezpieczeństwa procesów Obiekty opisujące wątki i procesy znajdują się w przestrzeni jądra Interesują nas konkretne pola struktury EPROCESS każdego istniejącego w systemie procesu cmd.exe: +0x084 UniqueProcessId : Ptr32 Void +0x088 ActiveProcessLinks : _LIST_ENTRY +0x0c8 Token : _EX_FAST_REF +0x174 ImageFileName : [16] UChar 09/21/2009 Bootkit versus Windows 30

Procesy połączone w dwukierunkowej liście łączonej Podstawowa technika ukrywania w pierwszych rootkitach jądra Pobranie adresu struktury EPROCESS aktualnego procesu: mov eax, [fs:0x124] mov eax, [eax+0x44] Przeszukiwanie listy w poszukiwaniu procesu o PID=4 (proces SYSTEM) Skopiowanie znalezionego wskaźnika Token do struktur opisujących wszystkie procesy o nazwie cmd.exe 09/21/2009 Bootkit versus Windows 31

Trzecia modyfikacja ominięcie autoryzacji użytkownika Cel bezpośredni proces LSASS.EXE Local Security Authority Subsystem Service - odpowiada za weryfikację danych logowania użytkownika Jeden z używanych modułów to msv1_0.dll Zawiera kod odpowiedzialny za porównywanie wprowadzonego oraz poprawnego hasha LM Oczekiwany rezultat modyfikacja dwóch bajtów w kontekście pamięci LSASS 09/21/2009 Bootkit versus Windows 32

Kod autoryzacyjny msv1_0.dll.text:77c6989d push 10h.text:77C6989F add ebx, 34h.text:77C698A2 push ebx.text:77c698a3 push esi.text:77c698a4 call RtlCompareMemory.text:77C698AA cmp eax, 10h.text:77C698AD jnz short loc_77c698c0 09/21/2009 Bootkit versus Windows 33

W jaki sposób aplikujemy patche? Modyfikacja logo podmiana bitmapy możliwa na etapie OsLoader.EXE Trudniejszy wariant zakłada podczepienie się pod funkcje bootvid.dll Przejmowanie wykonywania dla konkretnych aplikacji Patch kernel-side w kontekście cmd.exe Patch user-side w kontekście lsass.exe Procesy win32 korzystają z wywołań systemowych, które możemy modyfikować! 09/21/2009 Bootkit versus Windows 34

Modyfikacja pamięci wybranego procesu schemat 1. Ustaw hook na często używany syscall (np. NtClose, NtCreateFile) 2. W momencie wywołania funkcji Sprawdź, czy pole ImageFileName struktury EPROCESS jest równe oczekiwanemu LUB Sprawdź, czy przekazane argumenty są charakterystyczne dla zadanej aplikacji Przykład Ciąg \??\NETLOGON jako argument funkcji NtCreateFile, przekazywany (tylko?) przez LSASS.EXE 09/21/2009 Bootkit versus Windows 35

B I O S BOOTKIT M B R V B R NTLDR16 NTOSKRNL.EXE OsLoader.EXE 00h 01h 02h 03h 13h FFh K O D B I O S SMSS.EXE SYSTEM DRIVERS HAL.DLL bootvid.dll kdcom.dll CSRSS.EXE LSASS.EXE WINLOGON.EXE SSDT NtCreateFile NtSetInformationProcess NtClose NtAddAtom NtReadFile 09/21/2009 Bootkit versus Windows 36

Co nowego w procesie ładowania? 09/21/2009 Bootkit versus Windows 37

Podzielony NTLDR Windows Boot Manager BOOTMGR Zbudowany z dwóch części 16-bitowy nagłówek kod trybu rzeczywistego 32-bitowy plik Portable Executable kod trybu chronionego Windows Loader winload.exe Zajmuje się wyłącznie ładowaniem konkretnego systemu 09/21/2009 Bootkit versus Windows 38

BOOTMGR szczegóły Ładuje Boot Configuration Data z \Boot\Bcd Nowy format konfiguracji zastępuje boot.ini Wyświetla menu wyboru systemu W zależności od sytuacji, ładuje i uruchamia Winload.exe loader Windows Vista/7 Winresume.exe wznawianie działania po hibernacji NTLDR w przypadku wyboru starszej wersji systemu 09/21/2009 Bootkit versus Windows 39

Winload.exe druga część NTLDR Uruchamiany dla konkretnego OS Ładuje do pamięci niezbędne moduły jądra (ntoskrnl.exe, hal.dll, ) Przekazuje wykonywanie do kernela Winresume.exe przywraca działanie systemu po hibernacji 09/21/2009 Bootkit versus Windows 40

B I O S BOOTKIT M B R V B R BOOTMGR16 BOOTMGR.EXE NTOSKRNL.EXE 00h 01h 02h 03h 13h FFh K O D B I O S WINLOAD.EXE WINRESUME.EXE SMSS.EXE SYSTEM DRIVERS HAL.DLL bootvid.dll kdcom.dll CSRSS LSASS WINLOGON SSDT NtCreateFile NtSetInformationProcess NtClose NtAddAtom NtReadFile 09/21/2009 Bootkit versus Windows 41

Warunki powodzenia bootkita Przypadek I atak jednorazowy z użyciem przenośnego nośnika Wymaga fizycznego dostępu do atakowanej maszyny Wymaga możliwości bootowania z obcego medium (Konfiguracja BIOS, hasło dostępu, zaplombowana jednostka centralna) 09/21/2009 Bootkit versus Windows 42

Warunki powodzenia bootkita Przypadek II atak trwały z użyciem dysku twardego Wymaga wykonania operacji na surowych danych dysku twardego domyślny dostęp tylko adminów Standardowe zagadnienia bezpiecznego korzystania z internetu etc. Trudny (niemożliwy) w detekcji dla lokalnego systemu operacyjnego Banalny w detekcji dla systemu na zewnętrznym HDD 09/21/2009 Bootkit versus Windows 43

Tworzenie bootkita pouczające doświadczenie architektura systemów Ogromne zamieszanie wokół teoretycznych możliwości Oraz znacznie mniej przykładów praktycznych zastosowań jest się czego bać? Technologie sprzętowe czyżby koniec ery bootkitów? 09/21/2009 Bootkit versus Windows 44

Dziękuję za uwagę! Q & A E-mail: j00ru.vx@gmail.com Tech blog: http://j00ru.vexillium.org/ 09/21/2009 Bootkit versus Windows 45