Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

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

Podobne prezentacje


Prezentacja na temat: "… czyli tu, tam, i z powrotem Mateusz j00ru Jurczyk SecDay, Wrocław 2009 Hispasec."— Zapis prezentacji:

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

2 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 Windows2

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

4 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 Windows4

5 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 softwareowych 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 Windows5

6 NazwaRok powstaniaAutor System operacyjny Wirus Stoned1987r.?DOS BootRoot2005r. Derek Soeder, Ryan Permeh Windows XP PiXie2006r.Derek SoederWindows XP BOOT-KIT2007r. Nitin Kumar, Vipin Kumar Windows 2000, XP, 2003 Wirus Sinowal (aka Mebroot) 2007r.? Windows 2000, XP, 2003, Vista 09/21/2009 Bootkit versus Windows6

7 NazwaRok powstaniaAutor System operacyjny Vbootkit 2007r. Nitin Kumar, Vipin Kumar Windows Vista TPMKit 2007r. Nitin Kumar, Vipin Kumar - KON-BOOT 2008r. (?)Piotr Bania Windows: wszystkie od XP Linux: Gentoo, Ubuntu, Debian, Fedora Vbootkit r. Nitin Kumar, Vipin Kumar Windows 7 RC x64 Stoned Bootkit 2009r.Peter KleissnerWszystkie od XP 09/21/2009 Bootkit versus Windows7

8 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 Windows8

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

10 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 Windows10

11 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 Windows11

12 09/21/2009 Bootkit versus Windows12 B I O S 00h 01h 02h 03h … 13h … FFh M B RV B R NTLDR16 OsLoader.EXE kdcom.dllbootvid.dllHAL.DLL NTOSKRNL.EXE SYSTEM DRIVERS SMSS.EXE SSDT NtCreateFileNtSetInformationProcessNtCloseNtAddAtomNtReadFile CSRSS.EXELSASS.EXEWINLOGON.EXE KODBIOSKODBIOS

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

14 Piszemy bootkita – technikalia 09/21/2009 Bootkit versus Windows14

15 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 Windows15

16 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 Windows16

17 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 Windows17

18 09/21/2009 Bootkit versus Windows18 B I O S 00h 01h 02h 03h … 13h … FFh BOOTKIT KODBIOSKODBIOS 00h 01h 02h 03h … 13h … FFh

19 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 Windows19

20 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 Windows20

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

22 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 Windows22

23 09/21/2009 Bootkit versus Windows23 B I O S 00h 01h 02h 03h … 13h … FFh BOOTKIT M B R V B R KODBIOSKODBIOS

24 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 Windows24

25 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 Windows25

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

27 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 Windows27

28 09/21/2009 Bootkit versus Windows28 B I O S 00h 01h 02h 03h … 13h … FFh BOOTKIT M B R V B R KODBIOSKODBIOS NTLDR16 OsLoader.EXE kdcom.dllbootvid.dllHAL.DLL NTOSKRNL.EXE SSDT NtCreateFileNtSetInformationProcessNtCloseNtAddAtomNtReadFile SSDT NtCreateFileNtSetInformationProcessNtCloseNtAddAtomNtReadFile

29 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 Windows29

30 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 Windows30

31 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 Windows31

32 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 Windows32

33 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 Windows33

34 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 Windows34

35 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 Windows35

36 09/21/2009 Bootkit versus Windows36 B I O S 00h 01h 02h 03h … 13h … FFh BOOTKIT M B R V B R KODBIOSKODBIOS NTLDR16 OsLoader.EXE kdcom.dllbootvid.dllHAL.DLL NTOSKRNL.EXE SSDT NtCreateFileNtSetInformationProcessNtCloseNtAddAtomNtReadFile SYSTEM DRIVERS SMSS.EXE CSRSS.EXELSASS.EXEWINLOGON.EXE

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

38 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 Windows38

39 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 Windows39

40 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 Windows40

41 09/21/2009 Bootkit versus Windows41 B I O S 00h 01h 02h 03h … 13h … FFh BOOTKIT M B R V B R KODBIOSKODBIOS BOOTMGR16 BOOTMGR.EXE WINRESUME.EXEWINLOAD.EXE kdcom.dllbootvid.dllHAL.DLL NTOSKRNL.EXE SYSTEM DRIVERS SMSS.EXE CSRSSLSASSWINLOGON SSDT NtCreateFileNtSetInformationProcessNtCloseNtAddAtomNtReadFile

42 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 Windows42

43 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 Windows43

44 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 Windows44

45 Dzi ę kuj ę za uwag ę ! Q & A Tech blog: 09/21/2009 Bootkit versus Windows45


Pobierz ppt "… czyli tu, tam, i z powrotem Mateusz j00ru Jurczyk SecDay, Wrocław 2009 Hispasec."

Podobne prezentacje


Reklamy Google