22 października 2009

Pierwsze wrażenia po premierze… Windows 7 nie jest bezpieczny!!!



Oto jesteśmy dziś świadkami światowej (w tym polskiej) premiery nowego systemu operacyjnego z rodziny Windows. Windows 7, będący następcą kompletnie nieudanej Visty, prawdopodobnie okaże się dla Microsoftu szczęśliwą siódemką i powtórzy komercyjny sukces Windowsa XP. System ten niestety nie zapewni nam jednak bezpiecznego środowiska pracy... Przyjrzyjmy się więc jakie błędy popełnił Microsoft w systemach zabezpieczeń Siódemki!


Hasła lokalnych użytkowników Windows 7 mogą zostać w bardzo prosty sposób złamane


Potencjalny intruz będzie w stanie, w bardzo prosty sposób, złamać hasła użytkowników lokalnych. Problem ten opisałem szczegółowo we wcześniejszych artykułach:



Błędy projektowe w mechanizmie UAC, powodują, że dowolny kod może uzyskać w Siódemce uprawnienia administracyjne

Mechanizm Kontroli konta użytkownikaUAC (ang. User Account Control) został po raz pierwszy zaprezentowany w Windows Vista. Celem tego rozwiązania jest ostrzeganie użytkownika przed wprowadzeniem ważnych zmian w systemie oraz blokowanie wykonania aplikacji mogących mieć wpływ na stabilność bądź bezpieczeństwo systemu do czasu wyrażenie przez uprawnionego użytkownika świadomej zgody na ich działanie.

W Windows Vista mechanizm ten w praktyce sprowadza się do znienawidzonego przez użytkowników, wyskakującego co chwilę okienka z prośbą o wyrażenie zgody na dalsze działanie. W związku z szeroką krytyką użytkowników Visty, Microsoft postanowił zmienić nieco mechanizm UAC w Siódemce. Z założenia mechanizm miał się stać bardziej inteligentny i w efekcie nie nękać już użytkownika ciągłymi prośbami o potwierdzenie. W tym celu, przy domyślnych ustawieniach, część zaufanych aplikacji (podpisanych cyfrowo przez Microsoft), takich jak programy systemowe, uzyskała możliwość uzyskania uprawnień systemowych bez wyrażania dodatkowej zgody przez użytkownika poprzez UAC. W efekcie użytkownik Windows 7 nie jest już rzeczywiście nękany na każdym kroku przez Kontrolę konta użytkownika.

Okazało się jednak, że takie rozwiązanie wprowadza poważną lukę w systemie zabezpieczeń Siódemki. Otóż jeśli złośliwy kod odwoła się do systemu za pośrednictwem zaufanej aplikacji, uzyska automatycznie pełne uprawnienia administracyjne! Sytuacja taka stawia więc zupełnie pod znakiem zapytania skuteczność mechanizmu UAC w Windows 7. Co więcej, Microsoft nie zamierza (a niektórzy specjaliści twierdzą, że po prostu jest to niewykonalne) w pełni załatać tej luki, twierdząc, że wynika ona z przyjętych założeń projektowych...

Nie trzeba było długo czekać, by pojawił się działający proof-of-concept exploit. Mowa o dostępnym (wraz z kodami źródłowymi) pod następującym adresem programie Win7Elevate. Exploit ten korzystając z rozmaitych uprzywilejowanych przez UAC aplikacji i procesów firmy Microsoft może za ich pośrednictwem rozszerzyć uprawnienia dowolnej aplikacji. Przykładowo, korzystając z procesu explorer.exe (620) udało mi się uruchomić program cmd.exe dysponujący pełnymi prawami administracyjnymi, co przedstawiłem na poniższym zrzucie ekranu.

Mechanizm UAC, przy domyślnych ustawieniach, nie zauważał w trakcie całego procesu niczego podejrzanego...

Poniżej można również obejrzeć film prezentujący możliwości tego exploita.




Bootkit dla Windows 7 

W ostatnim czasie coraz większą karierę robią bootkity. Te specjalne rootkity są niezwykle groźne, gdyż zaczynają swe działanie zazwyczaj jeszcze przed uruchomienim systemu operacyjnego, dzięki czemu są w stanie w locie modyfikować funkcje systemowe. Zazwyczaj jest to możliwe poprzez ingerencję w MBR dysku twardego. Charakterystyka bootkitów sprawia, ze ich wykrycie jest niezwykle trudne lub praktycznie możliwe!

W trakcie konferencji Hack In The box Security (HITB), która odbyła się w tym roku w Dubaju, Nitin Kumar oraz Vipin Kumar przedstawili ostateczny, jak się wydaje, sposób na złamanie zabezpieczeń Windows 7

Otóż celem bootkita VbootKit 2.0 jest dokonanie zmian w kernelu Windows 7, jednak tak by nie zaburzyć normalnej funkcjonalności systemu oraz by nie wzbudzić podejrzeń mechanizmów ochronnych kernela (takich jak PatchGuard). Działanie bootkita odbywa się jedynie w pamięci operacyjnej, żaden z plików na dysku nie jest modyfikowany. Sama zasada działania jest stosunkowo prosta. Otóż do manipulacji niskopoziomowymi operacjami dyskowymi wykorzystano przerwanie INT 13 i to wystarcza by w locie modyfikować ładowane po kolei pliki systemowe, aż do osiągnięcia kontroli nad samym kernelem. Jednym słowem program ten, zajmujący dosłownie 3 KB, może pozwolić crackerowi na przejęcie całkowitej kontroli nad najnowszym systemem Windows!

Jeśli chodzi o samą obsługę bootkita, jest ona stosunkowo prosta. Należy docelową maszynę zbootować ze specjalnie przygotowanej płyty. Następnie za pomocą klienta pingv możemy zdalnie kontrolować zachowanie bootkita. Składnia poleceń programu pingv jest następująca pingv HostNameOrIPAddress CommandByte CommandData. Przykładowo, polecenie: pingv nazwa_lub_adres_IP_celu 4 spowoduje wyzerowanie haseł wszystkich użytkowników w docelowym systemie.

Bootkit ten oferuje więc niesamowite możliwości ingerencji w mechanizmy bezpieczeństwa nowego Windowsa, do tego pozwala potencjalnemu intruzowi na zdalne sterowanie wszystkimi swymi funkcjami. Jedynym pocieszeniem jest w tym momencie fakt, że nie istnieje możliwość zdalnego wprowadzenia programu VbootKit do systemu operacyjnego.

Na stronie NVlabs dostępny jest kod źródłowy bootkita, gotowe plike ISO i EXE (pingv) oraz obszerna prezentacja opisująca dokładnie zasadę działania tego niezwykle interesującego oprogramowania.

Na zakończenie oraz pocieszenie dodam tylko, że nie istnieje jeszcze (powszechnie znany) sposób na zdalne przejęcie kontroli nad Windows 7 :).


Artykuł autorski HCSL - Wojciech Smol