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]