31 stycznia 2010

Exploit Kitrap0d wykorzystuje 17-letnią dziurę w Windows [video]

Kilka dni temu Tavis Ormandy upublicznił informacje na temat znalezionej przez siebie usterki ("KiTrap0D" Privilege Escalation Vulnerability) obecnej w systemach Windows, za pośrednictwem której użytkownik z ograniczonymi prawami może uzyskać uprawnienia systemowe. Problem ten dotyczy prawdopodobnie wszystkich 32-bitowych wersji począwszy od Windows NT 3.1 aż po Windows 7 i nie został do tej pory przez Microsoft załatany. Odpowiedni exploit wszedł już w skład środowiska Metasploit Framework, wobec czego prezentujemy dziś przykład praktycznego testu penetracyjnego testującego podatność docelowego systemu Windows XP na jego działanie.

Za błąd odpowiedzialna jest wprowadzona w 1993 roku Virtual DOS Machine (VDM), służąca do obsługi programów 16-bitowych (tryb Real Mode dla 8086). VDM opiera się na trybie wirtualnym 8086 (VM86) procesorów 80386 i między innymi obsługuje żądania dostępu do sprzętu. Tavis Ormandy (specjalista od bezpieczeństwa zatrudniony w firmie Google) znalazł w implementacji VDM kilka błędów, za pomocą których nieuprzywilejowany program 16-bitowy, może zmanipulować stos kernela należący do każdego z procesów. W ten sposób możliwe staje się wykonanie własnego kodu na prawach systemowych. Udostępniony przez Tavisa exploit pozwala na uzyskanie wiersza poleceń z najwyższymi uprawnieniami pod systemami Windows XP, Vista, Server 2003 i 2008 oraz Windowsem 7.

Zobaczmy więc działanie exploitu Kitrap0d w praktyce. Osoby nieobeznane z testami penetracyjnymi oraz podstawami pracy ze środowiskiem Metasploit, zachęcam jednak najpierw do przestudiowania wpisu Metasploit Framework: przykładowy test penetracyjny w praktyce.
Jak mogliśmy się przekonać, exploit Kitrap0d pozwolił na uzyskanie uprawnień systemowych i w konsekwencji wykonanie działań (wydobycie hashy systemowych haseł za pomocą polecenia hashdump) , które bez tego nie byłyby możliwe.

Pomimo, że Microsoft nie opublikował jeszcze odpowiednich poprawek, nie jesteśmy bezbronni. W celu zabezpieczenia się przed przejęciem uprawnień systemowych przez ograniczonych użytkowników wystarczy tylko uruchomić edytor zasad grupowych (Zasady grupy) i w drzewie Konfiguracja komputera | Konfiguracja użytkownika | Zgodność aplikacji włączyć opcję Zapobiegaj dostępowi do aplikacji 16-bitowych:
Wyłączenie wyżej wymienionej opcji w Edytorze Polityki Systemu jest możliwe dopiero od wersji systemu Windows 2003. Poza tym niektóre wydania Okien nie mają tego edytora.

Alternatywnym obejściem może być więc utworzenie klucza w Rejestrze \HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\AppCompat i ustawienie w nim D-Word VDMDisallowed = 1. W systemie XP exploit przestanie wtedy działać.