Dwa ruchy i... jesteśmy w Windows 7

Luka w antywirusie = luka w bezpieczeństwie

Czasami do uzyskania dostępu do jądra systemu Windows Vista, 7 oraz Server 2008R2, może być wykorzystane w pełni oficjalne narzędzie, takie jak sterownik sprzętu lub oprogramowanie antywirusowe. Plik taki jest podpisany i zaakceptowany, zatem może zostać załadowany. Jeśli w takim sterowniku znajdą się poważne błędy koncepcyjne, można będzie je wykorzystać do przejęcia kontroli i załadowania dowolnego kodu do jądra systemu. Przykładem może być biblioteka oprogramowania antywirusowego firmy Kaspersky Lab, która zawierała funkcje manipulujące tablicami ochrony.

Mechanizm ataku zakładał:

1. Przygotowanie kodu w przestrzeni użytkownika;

2. Otwarcie podatnego na atak urządzenia systemowego;

3. Pozyskanie istotnych wskaźników funkcji jądra systemu (kernel function pointers);

4. Zmianę odwołań systemowych, by użyły nowego kodu w przestrzeni użytkownika;

5. Uruchomienie odwołania systemowego;

6. W ten sposób, dzięki fragmentowi kodu, zdjęto ochronę strony z SystemSrvTable, dokonano zmian i przywrócono ochronę ponownie;

7. Wywołania systemowe umożliwiły skopiowanie tokenu z zaufanego procesu do innego, arbitralnie wybranego przez napastnika;

8. Za to odpowiedzialny był fragment kodu w trybie kernel mode, manipulujący obiektem KeServiceDescriptorTable;

9. W momencie przejęcia tokenu, proces pracuje na poziomie uprawnień obiektu, z którego ten token skopiowano;

10. Token ten jest dziedziczony przez procesy potomne.

W ten sposób można przejąć kontrolę nad kernel mode nawet nie posiadając uprawnień administratora, do udanego ataku wystarczy luka w bezpieczeństwie któregoś z podpisanych i zaakceptowanych sterowników.

Znalezienie takiej luki wymagało dużej wiedzy i sporo pracy związanej z reverse engineeringiem kilku bibliotek przy pomocy narzędzia IDA. Prezentację wykonał Björn Brolin, pokazując na żywo wszystkie procesy, począwszy od znalezienia błędu, napisania przykładowej aplikacji eksploitującej lukę w bibliotece, aż po przejęcie kontroli nad kernel mode w systemie Windows 7.

Firma Kaspersky Lab bardzo prędko uaktualniła swoje oprogramowanie, usuwając ten błąd, niemniej stara wersja sterownika nadal ma ważny podpis oraz akceptację. Z tego wynika, że plik ten w dalszym ciągu umożliwia przejęcie kontroli nad systemem operacyjnym nawet wtedy, gdy użytkownik pracuje na koncie o bardzo ograniczonych uprawnieniach.

Nieoficjalnie mówi się, że z tej luki korzystali cyberprzestępcy, eksploitując najpierw lukę w bezpieczeństwie przeglądarki Internet Explorer 8 (albo jednego z jej dodatków, takiego jak wtyczka Flash), a potem za pomocą klbg.sys z pakietu Kaspersky, przejmowali kontrolę nad systemem operacyjnym. Podobne luki nadal znajdują się w innych sterownikach, m.in. do kart graficznych, sieciowych oraz urządzeń storage i komunikacyjnych.

Więcej o Windows 7 na specjalnym serwisie Computerworl.


TOP 200