Niebezpieczny Skype
- 06.03.2007
Popularyzacja Skype'a stwarza nowe problemy dla administratorów IT, którzy muszą zadbać, by ten potencjalnie niebezpieczny program nie wyrządził realnych szkód w firmowym systemie IT.
Popularyzacja Skype'a stwarza nowe problemy dla administratorów IT, którzy muszą zadbać, by ten potencjalnie niebezpieczny program nie wyrządził realnych szkód w firmowym systemie IT.
Zagmatwany kod z pułapkami
Ostatnio po raz pierwszy udowodniono ponad wszelką wątpliwość, że jedna z wersji Skype'a pobiera z komputera dane umożliwiające jego identyfikację (numer seryjny płyty głównej). Nie jest to jedyna aplikacja, która to robi, Windows i Office pobierają znacznie więcej informacji, ale sposób, w jaki działa mechanizm Skype'a udowadnia, że przynajmniej niektóre zarzuty wobec niego mają uzasadnienie. Twórcy znanych aplikacji zawierających narzędzia do identyfikacji komputerów z reguły piszą o tym otwarcie w umowach licencyjnych. Najczęstszym uzasadnieniem wprowadzania tego typu mechanizmów jest ochrona antypiracka lub chęć zbierania statystyk użytkowania.
Analiza aplikacji i protokołu Narzędzia do blokowania lub usuwania Skype'a
- www.net-security.org
- www.skypekiller.com
- www.narus.com
- www.verso.com
- www.sonicwall.com
- www.packeteer.com
Skype jest usługą typu P2P (peer-to-peer), która wykorzystuje zaawansowane techniki omijania zapór sieciowych i potrafi się skutecznie wymknąć nawet najbardziej restrykcyjnie skonfigurowanym zaporom. Program potrafi skraść hasło dostępu do serwera proxy i wykorzystywać dowolne porty. Istnieje nawet wtyczka przeznaczona wyłącznie do tego, by połączenie działało, gdy w firmie zastosowany jest restrykcyjnie skonfigurowany MS Internet Security and Acceleration Server. Pakiety wysyłane przez Skype'a prawie nie mają stałych reguł umożliwiających ich odfiltrowanie. Sama aplikacja jest wprost najeżona pułapkami maksymalnie utrudniającymi rozpoznanie programu przy zastosowaniu technik reverse-engineering. Użycie typowych narzędzi do analizy kodu niewiele daje, a dopiero naprawdę doświadczony programista być może poradzi sobie z zagmatwanym kodem.
Przykładem takich pułapek jest mały plik 1.com, o rozmiarze zaledwie 46 bajtów, tworzony przez Skype'a w tymczasowym katalogu profilu użytkownika (wewnątrz%TEMP%). Jego wykrycie nie byłoby zapewne łatwe, gdyby nie to, że wersja 64-bitowa systemu Windows nie zawiera podsystemu NTVDM umożliwiającego uruchomienie starszych aplikacji 16-bitowych. O tym twórcy Skype'a najwyraźniej zapomnieli. Ponieważ zamknięcie jego procesu za pomocą menedżera zadań nie dawało dostępu do tego miniprogramu, trzeba było za pomocą odpowiednich narzędzi sztucznie wywołać załamanie systemu operacyjnego, zamykając proces WINLOGON. Po wstecznej analizie prostego kodu wyszło na jaw, że program ten czyta zawartość pamięci, gdzie znajduje się kopia BIOS płyty głównej. W 32-bitowych systemach Microsoftu jądro zezwala na odczyt przez podsystem NTVDM tego obszaru pamięci, dzięki czemu aplikacje dla DOS mogą skorzystać z informacji zapisanych w BIOS. I to właśnie robi ten program, przekazując zawartość BIOS-u potokiem do Skype'a. Na platformie 64-bitowej przy użyciu 64-bitowego Windows program nie może tego zrobić, gdyż nie ma tu NTVDM - stąd ten błąd.
Po co te wtyczki?
Wiele osób zadawało sobie to pytanie. Pierwsza odpowiedź wydaje się typowa - rozpoznanie kto i gdzie korzysta ze Skype'a. Ma to uzasadnienie, bowiem w niektórych krajach istnieje specjalny plan taryfowy polegający na wliczeniu wszystkich rozmów wychodzących do innych operatorów w abonament za usługę SkypeOut. Rozpoznawanie konkretnych komputerów ma na celu odkrycie użytkowników nadużywających tej usługi. Niemniej skojarzenie adresów IP, numerów seryjnych płyty głównej oraz informacji osobistych dostępnych np. w czacie jest bardzo poważnym ograniczeniem prywatności użytkowników. Warto zauważyć, że aplikacja w wersji dla Windows ma niemal nieograniczony dostęp do systemu, pracuje na poziomie uprawnień użytkownika, który w większości instalacji w domach ma prawa systemowe. Ponieważ narzędzie do przesyłania plików jest wbudowane w Skype'a, można mieć podejrzenia, że aplikacja może potencjalnie zawierać mechanizmy umożliwiające zdalne pobranie dowolnego pliku dostępnego dla użytkownika.Drugim powodem jest fakt sztucznego podziału użytkowników na podstawie producenta procesora komputera. Na przykład opcja rozmów konferencyjnych z większą liczbą rozmówców niż pięciu nie działa z procesorami innymi niż Intel Dual Core, chociaż wydajność niektórych procesorów AMD jest w zupełności wystarczająca. Na rynku już pojawiły się nieoficjalne wersje aplikacji pozbawione tego sztucznego ograniczenia. Ostatecznym dowodem jest pozew sądowy skierowany przeciw firmie Skype przez AMD (http://news.com.com/AMDs+lawyers+call+on+Skype/2100-1006_3-6044365.html ).
Skype nie daje dostępu do kodu źródłowego ogółowi użytkowników i dlatego nie jest możliwy audyt bezpieczeństwa aplikacji. Protokół Skype'a nie jest jawny, a ponadto stosuje techniki ukrywania strumienia danych, tak aby jego rozpoznanie wśród zaszyfrowanego potoku informacji wysyłanych przez Skype'a było trudne. Wersja Skype 3.0 dla Windows pokazuje dobitnie, że twórcy programu aktywnie walczą z producentami narzędzi do blokowania komunikacji P2P. O ile poprzednie wersje protokołu (zwłaszcza 2.0) zawierały pewne stałe sekwencje połączeń, o tyle najnowsza ma ich znacznie mniej i dlatego jest zdecydowanie trudniejsza do zablokowania.
Najprostsza metoda zablokowania starszej wersji protokołu Skype'a za pomocą zapory iptables w systemie Linux:
iptables —I FORWARD —p udp —m length
——length 39 —m u32 \ ——u32 '27&0 x8f=7'
——u32 '31=0 x527c4833 ' —j DROP
A zablokowanie Skype'a jest szczególnie istotne w firmach, gdyż aplikacja może zostać z powodzeniem użyta do przeskanowania sieci lokalnej, a oprócz tego jest wysoce prawdopodobne, że może zawierać błędy lub fragmenty kodu umożliwiające zdalną kradzież informacji. Należy pamiętać, że funkcjonalność programu obejmuje także przesyłanie danych wewnątrz szyfrowanego kanału komunikacyjnego. Możliwe jest wykonanie tunelu łączącego się zdalnie z aplikacjami cmd.exe, zaś połączenie vnc Server-vnc viewer jest dość proste do wykonania tą drogą.
Blokowanie Skype'a
Może to się odbywać na kilka sposobów. Najprostszym jest zablokowanie możliwości wykonania programu Skype.exe (stosowna opcja Don't Run w konfiguracji GPO domeny Active Directory) - skutkuje w przypadku mało doświadczonych użytkowników. Można także zastosować skrót MD5 binarium wykonywalnego i wpisać go na listę niedozwolonych aplikacji, ale proste użycie edytora i dopisanie dowolnych znaków na końcu pliku unieszkodliwi takie zabezpieczenie. Są już dedykowane narzędzia do masowego usuwania Skype'a ze wszystkich wybranych komputerów. Pakiety do analizy pracy wielu komputerów w sieci (takie jak Foglight firmy Quest) również mogą być użyte do wykrywania, gdzie i kiedy był używany Skype.