05 grudnia 2010

Czy na pewno możemy ufać swojej karcie sieciowej?

Rootkit, czyli oprogramowanie zdolne do skutecznego ukrywania (przed nami, naszym systemem operacyjnym oraz naszymi programami zabezpieczającymi) faktu występowania w naszym systemie złośliwego lub niepożądanego kodu, stanowi obecnie jedno z najpoważniejszych zagrożeń. Szczególe zagrożenie stanowią zaś rootkity, które zostaną wprowadzone do firmware'u, czyli wewnętrznego oprogramowania sterującego, które obecne jest niemal w każdym z poszczególnych sprzętowych komponentów dzisiejszych pecetów oraz serwerów. Spójrzmy więc na podstawie pewnego bardzo interesującego przykładu na to, na co mogą pozwolić potencjalnemu intruzowi właśnie tego typu ataki.

Rootkity obecne na naszych dyskach twardych w postaci plików zdolnych do upośledzania działania systemu operacyjnego lub rozmaitych rozwiązań ochronnych w celu ukrycia właściwej infekcji stanowią spore zagrożenie, z całą pewnością nie są jednak niewykrywalne. Wystarczy bowiem taki dysk twardy przeskanować w innym zdrowym systemie operacyjnym, a obecność wszystkich złośliwych programów (w tym samego rootkitu) powinna zostać bez problemu ujawniona. Zupełnie inaczej ma się jednak sprawa z rootkitem obecnym w wewnętrznym oprogramowaniu naszego sprzętu, czyli np. w oprogramowaniu sterującym pracą naszej karty sieciowej.

Guillaume Delugré, francuski specjalista z dziedziny inżynierii wstecznej, zaprezentował niedawno praktyczną implementację przykładowego rootkita przeznaczonego dla kart sieciowych. Na podstawie żmudnej analizy oryginalnego (oczywiście całkowicie zamkniętego) firmware'u oraz samego układu EEPROM obecnego w bardzo popularnej karcie sieciowej Broadcom Ethernet NetExtreme, badaczowi udało się stworzyć własne oprogramowanie sterujące. Oczywiście nie obyło się bez interesującego pokazu możliwości wbudowania w taki oto sposób rootkita wprost w kartę sieciową.

Na co pozwala potencjalnemu intruzowi tego typu rootkit? Otóż przede wszystkim wykrycie tak wprowadzonego złośliwego kodu jest w przypadku najpopularniejszych dziś rozwiązań obronnych niemal zupełnie niemożliwe do wykonania. Tak przygotowany firmware jest w stanie przechwytywać oraz generować dowolny ruch sieciowy i to bez jakiejkolwiek wiedzy samego systemu operacyjnego pracującego na danej maszynie. Nawet jeśli więc wyłączymy kartę sieciową z poziomu systemu operacyjnego, intruz i tak może być w stanie nawiązać skuteczną komunikację, uzyskując swego rodzaju stały punkt dostępowy do naszej sieci.

Co równie ciekawe, dzięki temu, że kraty sieciowe uzyskują bezpośredni dostęp do pamięci operacyjnej komputera za pomocą mechanizmu DMA (ang. Direct Memory Access), taki rootkit będzie w stanie zapewnić intruzowi praktycznie swobodny dostęp do całego naszego systemu. Spójrzmy na mały praktyczny pokaz możliwości:


Jak mogliśmy zobaczyć, pomimo wyłączenia interfejsu sieciowego eth0, sama karta sieciowa nadal była w stanie odpowiadać na specjalnie spreparowane pakiety ICMP Echo Request (TTL=42), na co pozwalał poniższy fragment kodu obecny w spreparowanym oprogramowaniu sterującym:
Na tej podstawie łatwo możemy sobie już wyobrazić niemal nieograniczone możliwości, jakie daje rootkit obecny w karcie sieciowej.

Na koniec pozostaje już tylko pytanie, w jaki sposób skutecznie bronić się przed tego typu zagrożeniami? Czy możemy być pewni, że nasz producent fabrycznie nie wbudował tego typu rootkita lub też dostawca sprzętu komputerowego nie naruszył przypadkiem integralności wewnętrznego oprogramowania poszczególnych komponentów naszych pecetów i serwerów? Jak zwykle liczę na to, że wspólnie zastanowimy się nad tym problemem!

[źródło]

Komentarze (10)

Wczytywanie... Logowanie...
  • Zalogowany jako
Jeśli nie zaczęli wbudowywać, to zaczną w najbliższym czasie.
Skoro można odczytać firmware urządzenia, to można też je porównać (sumy kontrolne) z odczytem z drugiego, identycznego urządzenia ale kupionego w innym państwie. W przypadku wystąpienia różnicy wiemy, że coś jest nie tak. Oczywiście nie trzeba od razu zamawiać drugiej karty sieciowej, być może jako konsumenci powinniśmy wymagać od producenta dostarczenia sum kontrolnych (skoro nie chcą dać źródeł) firmware i metod pozwalających na weryfikację poprawności oprogramowania na naszym sprzęcie.
Nie uchroni to przed złośliwym działaniem producenta, ale jak najbardziej uchroni przed działaniami dystrybutorów i wirusów.

Czy w przypadku DMA sprzęt powinien mieć prawa do zapisu w całej pamięci? Rozumiem, że dla siebie dostaje trochę, w celu przyspieszenia działania. Ale czy powinien mieć dostęp do pamięci systemu operacyjnego? Czy dostęp jest niezależny od OSu, czy system może jednak zastrzec pewien obszar, tak że sprzet nie ma do niego dostępu?
2 odpowiedzi · aktywny mniej niż minuta temu
Dostaje pełen dostęp, bo wszystko działa w trybie Kernela, który zawsze ma pełne uprawnienia i zawsze tam są wszystkie wczytywane sterowniki

PS. Ciekawostka: Windows CE od wersji 6 pozwala na wczytywanie sterowników do user-mode, ale nie wiem, czy jakikolwiek inny system to potrafi np. na x86.
Oczywiście można kontrolować integralność każdego oprogramowania wewnętrznego w każdym komponencie, pytanie tylko czy obecnie przyjęte standardy i procedury bezpieczeństwa przewidują takie działania i czy obecne sprzętowe i programowe rozwiązania zabezpieczające pozwalają na łatwe przeprowadzanie tego typu inspekcji? Raczej nie. Cóż więc z tego, że w teorii możemy coś wykryć, skoro obecnie raczej żadna organizacja nie stosuje tego typu metod detekcyjnych?
akapit tekstu: "Rootkity obecne na naszych dyskach twardych w postaci plików zdolnych do upośledzania działania systemu operacyjnego lub rozmaitych rozwiązań ochronnych w celu ukrycia właściwej infekcji stanowią spore zagrożenie, z całą pewnością nie są jednak niewykrywalne." ... z moich doświadczeń wynika, że nie ma się nigdy pewności, że malware-rootkit nie pozostawił śladów po sobie w formie trudnej do identyfikacji, nawet jeśli maszyna została przeskanowana z poziomu innej, to i tak często bywało, ze po usunięciu szkodników, system zachowywał się sporadycznie podejrzanie, chociaż dostępne narzędzia mówiły o braku takowych zagrożeń na dysku. Co do rootkit'a sprzętowego, to niestety smutną wiadomość przynosi ten artykuł, bo niestety nie zawsze istnieje możliwość dokonania zrzutu takiego wbudowanego firmware, a jeśli nawet się to uda, to analiza często bywa niemożliwa. Tylko tego brakuje, żeby 'wiodący' producenci zaczęli gmerać takimi sprawami .... Sony już w swojej historii pokazywało takowe zapędy, wiec wszystko jeszcze przed nami .... .
1 odpowiedź · aktywny 747 tygodni temu
No cóż, weź też pod uwagę to, że obecne programy antywirusowe i wszelakie inne rozwiązania anty-X nie są doskonałe i między innymi dlatego nie mamy pewności, czy brak wykrycia oznacza zupełny brak zagrożeń, czy jedynie niezdolność do wykrycia konkretnego zagrożenia (np. ze względu na brak odpowiednich sygnatur itd. itp.).
podobno ochronę przed tego typu atakami może zapewnić wykorzystanie sprzętowego mechanizmu zwanego IOMMU, który wirtualizuje adresy pamięci fizycznej dostępnej dla DMA (tak jak MMU wirtualizuje przestrzenie adresowe procesów). Jest to obecne w najnowszych płytach głównych, ale ciekawe kiedy, jeśli w ogóle pojawi się wsparcie w mainstreamowych OS'ach. QubesOS to wykorzystuje, ale jest to system obecnie raczej eksperymentalny.
Rozwiązanie proste. Stworzyć otwartą wersję firmware i pilnować by cały czas była w niezmienionej formie na naszym epromie cyklicznie pobierając i porównując z oryginałem (na podst. sum kontrolnych).

Zabawy w ograniczanie dostępu do DMA mija się z celem, po to był stworzony, by był szybki i nie miał ograniczeń.
zawsze mozna uruchomic na routerze po drodze tcpdumpa i na "podejrzanym" kompie a pozniej porownac te pakiety ;)
1 odpowiedź · aktywny mniej niż minuta temu
w sensie porownac pakiety wysnifowane przez obydwa procesy. Czyli te przechodzace przez dany interfejs wg naszego systemu oraz te przechodzace przez niego w rzeczywistosci.

Wyślij nowy komentarz

Comments by