… czyli tu, tam, i z powrotem

Slides:



Advertisements
Podobne prezentacje
Wzmacniacz operacyjny
Advertisements

4. Relacyjny model baz danych
Prąd elektryczny Paweł Gartych kl. 4aE.
Jak efektywnie współpracować z rodzicami
Wykład nr 2: Struktura systemu komputerowego a system operacyjny
Systemy operacyjne Bibliografia:
Instalacja systemu Windows Vista
Systemów Operacyjnych
START SYSTEMU.
Asystent Gabinet Lekarski
Opracowanie: Maria W ą sik. Pierwsze komputery budowano w celu rozwi ą zywania konkretnych problemów. Gdy pojawiało si ę nowe zadanie, nale ż ało przebudowa.
Bootloader – program rozruchowy
Pytanie to coraz cz ęś ciej nasuwa si ę przeci ę tnemu cz ł owiekowi chc ą cemu stworzy ć now ą sie ć w domu. Pytanie to coraz cz ęś ciej nasuwa si.
Asystent Faktura. Plan prezentacji 1. Krótka ogólna informacja o programie 2. Licencjonowanie 3. Interfejs programu 4. Modu ł y i funkcje 5. Dostrajanie.
CREATIVE BRIEF. PYTANIA KIM? KIM? CZYM? CZYM?CO?
Edukacja informatyczna w szkole
Tworzenie aplikacji graficznych na przykładzie programu GregEditor
Wyszukiwanie materiałów z różnych źródeł na temat wybranego zawodu
Wirtualne spotkania Microsoft
Asystent CRM.
Zapraszamy na prezentację
Co to jest wirus komputerowy?
Budowa i organizacja zapisu danych na dysku twardym
Systemy plików FAT, FAT32, NTFS
Opracowanie: mgr Tomasz Durawa
OpenVPN – konfiguracja w systemie Linux i Windows.
Asystent Rejestr Umów.
Spis treści Architektura systemu windows Pamięć wirtualna Plik wymiany
Etapy uruchamiania systemu Pliki konfiguracyjne
Bezpieczny Internet.
Jak można nauczyć korzystania z prawdopodobieństwa.
 Prezentacja dla uczniów klas 1 realizuj ą cych zaj ę cia artystyczne wg programu „Kraina muzyki”.  Zeszyt ć wicze ń „ Ś wiat d ź wi ę ków”: - Modu.
Debian.
Katalog samochodowy prawdziwego mężczyzny.
„Jak pomóc uczniom się uczyć i czerpać z tego radość?” opracowała: Krystyna Turska.
NIE TAKI KOMPUTER STRASZNY JAK GO MALUJĄ PODSTAWY OBSŁUGI KOMPUTERA.
Czy wiesz, że?... INTERNET …TO JEST SPIS TREŚCI NIEBEZPIECZEŃSTWO SPOŁECZNOŚĆ INTERNETOWA DZIECKO W INTERNECIE ZAUFANE STRONY INTERNETOWE WIRUSY.
Tworzenie odwołania zewnętrznego (łącza) do zakresu komórek w innym skoroszycie Możliwości efektywnego stosowania odwołań zewnętrznych Odwołania zewnętrzne.
InMoST, Analiza architektury metodą ATAM Jerzy Nawrocki
PRACA Z APLIKACJAMI SYSTEM PRZEMIESZCZANIA oraz NADZORU WYROBÓW AKCYZOWYCH EMCS PL 1.
Cel analizy statystycznej. „Człowiek –najlepsza inwestycja”
 Czasem pracy jest czas, w którym pracownik pozostaje w dyspozycji pracodawcy w zakładzie pracy lub w innym miejscu wyznaczonym do wykonywania pracy.
Systemy operacyjne wczoraj, dziś i jutro. System operacyjny (ang. Operating System, skrót OS) oprogramowanie zarządzające systemem komputerowym, tworzące.
Kucharz zajmuje się przyrządzaniem różnego rodzaju potraw, dań, itd. Od kilkunastu lat sztuka kulinarna przeżywa swoisty renesans. Często to nie sam lokal,
CIMCO Edit z dodatkiem CNC-Calc koszty i korzyści Wdrożenie środowiska do tworzenia, edycji i symulacji programów NC Korzyści: -Tworzenie ścieżki narzędzia.
Bezpieczeństwo i zdrowie w pracy dotyczy każdego. Jest dobre dla ciebie. Dobre dla firmy. Partnerstwo dla prewencji Co badanie ESENER może nam powiedzieć.
Co potrafię w przyjaźni z komputerem?.  Z jakich elementów się składa? Z jakich elementów się składa?  Do czego służy? Do czego służy?  Jakie programy.
 Normy prawne dotyczące rozpowszechniania programów komputerowych Normy prawne dotyczące rozpowszechniania programów komputerowych  Formy ograniczeń.
Wypadkowa sił.. Bardzo często się zdarza, że na ciało działa kilka sił. Okazuje się, że można działanie tych sił zastąpić jedną, o odpowiedniej wartości.
EWALUACJA JAKO ISTOTNY ELEMENT PROJEKTÓW SYSTEMOWYCH Sonia Rzeczkowska.
LICEUM OGÓLNOKSZTAŁCĄCE NR VII OPRACOWAŁA ANETA RADOMYSKA ANALIZA ANKIET.
Xnet Communications Xnet Communications Polska Sp. z o.o.
© 2014 IBM Corporation COMMON POLSKA 2014 JDBC z IBM System i Tomasz Piela & Marcin Wilk Global Technlonogy Services, IBM.
Model warstwowy OSI Model OSI (Open Systems Interconnection) opisuje sposób przepływu informacji między aplikacjami programowymi w jednej stacji sieciowej.
Microsoft PowerPoint. Metodyka „dobrej” prezentacji.
Instalacja nienadzorowana windows xp Jakub klafta.
Wieloaspektowa analiza czasowo- kosztowa projektów ze szczególnym uwzględnieniem kryterium jakości rozwiązań projektowych AUTOR: ANNA MARCINKOWSKA PROMOTOR:
Definiowanie i planowanie zadań typu P 1.  Planowanie zadań typu P  Zadania typu P to zadania unikalne służące zwykle dokonaniu jednorazowej, konkretnej.
System operacyjny Renata P. System operacyjny - jest to zbiór nadrzędnych i niezbędnych programów umożliwiających pracę na komputerze. Jest on pośrednikiem.
Pliki-Partycje-Dyski
Akademia C# lab. 9 Zdarzenia i delegaty.
Który system wybrać?.
PROGRAMY DO KONTROLI RODZICIELSKIEJ
Git - system kontroli wersji
Bezpieczeństwo dostępu do danych w systemie Windows
Języki programowania.
Zakład Hydrotechniczny Rudna 26 styczeń 2017
Co to jest logistyka? Logistyka jest terminem opisuj ą cym wszelkie dzia ł ania zwi ą zane z : procesem planowania, organizowania, realizowania, kontrolowania.
Autor: Magdalena Linowiecka
Zapis prezentacji:

… czyli tu, tam, i z powrotem Hispasec Bootkit vs Windows … czyli tu, tam, i z powrotem Mateusz ‘j00ru’ Jurczyk SecDay, Wrocław 2009

Plan prezentacji 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

Kilka słów o mnie… 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

Bootkity - wprowadzenie 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

Bootkity – wprowadzenie cd. 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

Bootkity – historia Bootkit versus Windows 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) Windows 2000, XP, 2003, Vista 09/21/2009 Bootkit versus Windows

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

Bootkity – wprowadzenie cd. 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

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

Windows XP SP3 – ładowanie 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

Windows XP SP3 – ładowanie 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

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

Microsoft Windows XP SP3 Budzimy się! D E M O Microsoft Windows XP SP3 gets pwned hard 09/21/2009 Bootkit versus Windows

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

Budujemy kod bootkita 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

Budujemy kod bootkita 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

Budujemy kod bootkita 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

Bootkit – część druga Bootkit versus Windows K O D B I S 09/21/2009 B I O S K O D B I S 00h 01h 02h 03h … 13h FFh 00h 01h 02h 03h … 13h FFh BOOTKIT 09/21/2009 Bootkit versus Windows

Bootkit – część pierwsza 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

Bootkit – część pierwsza 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

Bootkit – część pierwsza Które przerwanie chcemy kontrolować? 09/21/2009 Bootkit versus Windows

Bootkit – część pierwsza 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

Bootkit – część pierwsza B I O S K O D B I S 00h 01h 02h 03h … 13h FFh M B R BOOTKIT V B R 09/21/2009 Bootkit versus Windows

Bootkit – część druga 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

Bootkit – część druga 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

Bootkit – część druga Bootkit versus Windows K O D B I S 09/21/2009 B I O S K O D B I S 00h 01h 02h 03h … 13h FFh M B R BOOTKIT V B R NTLDR16 OsLoader.EXE 09/21/2009 Bootkit versus Windows

Bootkit – część trzecia 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

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

Bootkit – część czwarta 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

Bootkit – część czwarta 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

Bootkit – część czwarta 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

Bootkit – część czwarta 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

Bootkit – część czwarta 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

Bootkit – część czwarta 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

Bootkit – część czwarta Modyfikacja pamięci wybranego procesu – schemat Ustaw hook na często używany syscall (np. NtClose, NtCreateFile) 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

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

Co nowego w procesie ładowania? Windows Vista SP2 / RC 7 Co nowego w procesie ładowania? 09/21/2009 Bootkit versus Windows

Windows Vista SP2 / RC 7 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

Windows Vista SP2 / RC 7 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

Windows Vista SP2 / RC 7 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

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

Warunki powodzenia bootkita Uwagi końcowe 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

Warunki powodzenia bootkita Uwagi końcowe 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

Uwagi końcowe 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

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