Home  |  Aktualności  |  e-Komunikacja  |  WWW  |  Bezpieczeństwo  |  Linux  |  Programy  |  GSM/UMTS  |  Rozrywka

Charakterystyka zapory sieciowej

Ocena skuteczności zapory sieciowej

Zapora sieciowa oferuje dodatkową ochronę do tej zapewnianej przez rozwiązania i narzędzia bezpieczeństwa. Dodatkowe bezpieczeństwo zyskuje coraz większe znaczenie ze względu na wzrost liczby nowych szkodliwych programów. Zapory sieciowe blokują niepożądany ruch sieciowy, zarówno wejściowy jak i wyjściowy. Testy wycieków, które stanowią temat tego artykułu, oceniają, jak skutecznie zapora sieciowa kontroluje ruch wyjściowy i chroni komputer przed wyciekami danych.  

Co to jest zapora sieciowa?

Jedną z funkcji dzisiejszych zintegrowanych systemów bezpieczeństwa jest umożliwianie użytkownikowi kontrolowania ruchu sieciowego, tzn. danych wysyłanych i otrzymywanych za pośrednictwem sieci przez aplikacje uruchomione na komputerze użytkownika. Komponent zapewniający taką kontrolę nosi nazwę zapory sieciowej. Istnieją sprzętowe oraz programowe zapory sieciowe (http://pl.wikipedia.org/wiki/Zapora_sieciowa). A artykule tym zbadano tylko zapory sieciowe programowe.

Dostępna jest spora liczba programowych zapór sieciowych: zarówno komercyjnych, jak i darmowych. Zapora sieciowa zainstalowana na bramie (serwerze, który przesyła ruch pomiędzy różnymi sieciami) nosi nazwę zapory sieciowej na poziomie serwera lub sieci. Zapory sieciowe zainstalowane na komputerze użytkownika nazywane są osobistymi zaporami sieciowymi, ponieważ chronią jedynie komputery, na których działają. Osobiste zapory sieciowe często wchodzą w skład zintegrowanych systemów bezpieczeństwa do ochrony komputerów osobistych. Przykładem może być osobista zapora sieciowa w produkcie Kaspersky Internet Security 7.0.


Rysunek 1. Zapora sieciowa w programie Kaspersky Internet Security 7.0

W celu spełnienia swojej głównej funkcji, tj. kontroli aktywności sieciowej, zapory sieciowe wykorzystują listy reguł, za pomocą których definiowana jest dozwolona oraz niedozwolona aktywność sieciowa dla różnych aplikacji. Reguła może zawierać wiele parametrów, takich jak kierunek transferu danych, protokół transferu danych (IP, TCP, UDP, ICMP itd.), adresy IP oraz porty lokalnych i zdalnych komputerów wymieniających dane.

Pojedyncza reguła kontroli aktywności sieciowej może być stosowana do wszystkich aplikacji w systemie. Wtedy nosi nazwę reguły pakietu.


Rysunek 2. Przykłady reguł dla programu Microsoft Outlook w Kaspersky Internet Security 7.0

Zapory sieciowe posiadają dwa tryby: interaktywny (w którym użytkownik jest pytany o akcję) oraz nieinteraktywny. W trybie nieinteraktywnym zapora sieciowa może:

  1. zezwolić na wszelką aktywność, która nie jest zakazana przez reguły;
  2. blokować wszelką aktywność, która nie jest dozwolona przez reguły;
  3. blokować wszelką aktywność sieciową.

Podstawowym trybem działania zapory sieciowej jest tryb interaktywny, nazywany również trybem uczenia. W trybie tym przy każdym wykryciu aktywności sieciowej, która nie została uwzględniona w żadnej ze zdefiniowanych wcześniej reguł, zapora sieciowa wyświetla okno dialogowe, które pyta użytkownika, czy zezwolić na taką aktywność, zablokować ją jednorazowo, czy też stworzyć regułę dla tego typu aktywności sieciowej.


Rysunek 3. Okno dialogowe wyświetlane przez zaporę sieciową programu Kaspersky Internet Security 7.0 w trybie uczenia

Ponieważ komputer przeciętnego użytkownika posiada kilkanaście aplikacji, które wykazują różne rodzaje aktywności sieciowej podczas działania, ręczne tworzenie listy reguł uwzględniających aktywność sieciową aplikacji jest złożonym i czasochłonnym zadaniem. Z tego powodu zapory sieciowe zawierają bazy predefiniowanych reguł dla znanych aplikacji sieciowych, takich jak Internet Explorer, Microsoft Outlook, Generic Host Process for Win32 Services (svchost.exe), Microsoft Application Error Reporting (dwwin.exe) oraz wiele innych.


Rysunek 4. Lista predefiniowanych reguł aplikacji dla zapory sieciowej programu Kaspersky Internet Security 7.0

Poniższy diagram pokazuje, w jaki sposób zapora sieciowa monitoruje dane wychodzące i chroni przed wyciekiem danych:


Rysunek 5. Działanie zapory sieciowej

Zapora sieciowa stanowi "ścianę", która odgradza aplikacje na komputerze użytkownika od innych komputerów w lokalnej sieci oraz w Internecie. Dla znanych (zaufanych) aplikacji (zaznaczonych na rys. 5 kolorem zielonym) istnieją reguły zezwalające ("luki" w "ścianie") pozwalające im transmitować dane poprzez zaporę sieciową do świata na zewnątrz. Gdy inna aplikacja będzie próbowała nawiązać aktywność sieciową, zostanie ona zablokowana ("uderzy w ścianę"), w rezultacie aplikacja nie będzie mogła transmitować danych do świata na zewnątrz (lub otrzymywać danych spoza zapory sieciowej). Jednak w każdym momencie użytkownik może stworzyć nowe reguły zezwoleń (zrobić nowe "luki" w "ścianie"), aby umożliwić aplikacji wymianę danych poprzez sieć.

Należy zauważyć, że niektóre zapory sieciowe posiadają również komponent zapobiegania włamaniom, który zapewnia ochronę przed atakami sieciowymi. Komponent ten skanuje wejściowy i wyjściowy ruch sieciowy w celu znalezienia pakietów sieciowych, które odpowiadają znanym szablonom ataków sieciowych znajdującym się w bazie danych. W przyszłości opublikujemy artykuł zawierający szczegółową analizę takich komponentów.

W jaki sposób zapory sieciowe mogą zwiększyć bezpieczeństwo?

Zapory sieciowe zapewniają dodatkową warstwę ochrony mogącą pomóc zablokować szkodliwe programy, które nie są wykrywane przez komponent antywirusowy zintegrowanego systemu bezpieczeństwa. Szkodliwy program może nie zostać wykryty, jeśli nie został dodany do antywirusowej bazy danych (dlatego nie może być wykrywany za pomocą tradycyjnych metod opartych na sygnaturach) oraz jeśli nie wykazuje wyraźnie szkodliwego czy chociażby podejrzanego zachowania (dlatego komponent analizy zachowania również go nie wykryje).

Przed jakim typem szkodliwych programów chroni zapora sieciowa? Praktycznie przed każdym szkodnikiem, który znajduje się aktualnie w obiegu. Chociaż brzmi to ogólnikowo, jest to prawda: obecnie funkcje większości szkodliwych programów wiąża się z aktywnością sieciową, przez co mogą zostać zablokowane przez zaporę sieciową. Na przykład:

Robaki sieciowe rozprzestrzeniają własne kopie za pośrednictwem sieci lokalnych/Internetu.

Trojany, stanowiące obecnie 91,4% wszystkich szkodliwych programów, również wymieniają dane za pośrednictwem sieci. Programy trojańskie obejmują:

  1. Backdoory - narzędzia te tworzone są w celu zapewnienia zdalnego zarządzania komputerami w sieci. Backdoory są kontrolowane zdalnie. Zapora sieciowa może łatwo zablokować wszystkie funkcje tych szkodników.
  2. Trojany PSW - programy te kradną szereg różnych informacji z zainfekowanych komputerów. Po wykradzeniu informacji trojan musi jeszcze przesłać je cyberprzestępcy. Właśnie na tym etapie zapora sieciowa może zablokować podejmowane przez program próby wysłania danych, a tym samym ochronić informacje użytkownika.
  3. Trojany downloadery - programy te pobierają nowe wersje innych szkodników (trojanów oraz programów adware) i instalują je na atakowanej maszynie. Programy z tej klasy wymieniają dane za pośrednictwem sieci, dlatego łatwo mogą zostać zablokowane przez zaporę sieciową.
  4. Trojany proxy - programy te uzyskują anonimowy dostęp do różnych zasobów internetowych bez wiedzy czy zgody użytkownika. Są wykorzystywane głównie do wysyłania spamu. Podobnie jak w przypadku trojanów downloaderów, aktywność sieciowa generowana przez trojany proxy może bez trudu zostać zablokowana przez zaporę sieciową.
  5. Trojany szpiegujące - jak sugeruje ich nazwa, programy te mogą być wykorzystywane do szpiegowania użytkowników zainfekowanych komputerów. Dane, łącznie z informacjami wprowadzanymi z klawiatury, zrzutami ekranów, listami aktywnych aplikacji oraz czynnościami użytkownika dotyczącymi tych aplikacji, są zapisywane w pliku na dysku twardym i regularnie wysyłane do cyberprzestępcy. Zapora sieciowa może zablokować próby wysłania danych przez nieznany program. Dzięki temu skradzione przez trojana dane użytkownika nie dotrą do zdalnego szkodliwego użytkownika.

Należy zauważyć, że zapory sieciowe nie mogą być wykorzystywane do zwalczania klasycznych wirusów. Wynika to z tego, że w przeciwieństwie do robaków, wirusy nie wykorzystują zasobów sieciowych w celu przeniknięcia do innych komputerów i w przeciwieństwie do trojanów nie muszą wysyłać danych ani otrzymywać poleceń.

Zapora sieciowa to system bezpieczeństwa, który trudno obejść. Chcąc ominąć ochronę antywirusową oraz mechanizm blokowania zachowań, autorzy szkodliwych programów testują i modyfikują swoje twory tak długo, aż obydwa komponenty ochrony nie będą w stanie wykryć szkodliwego kodu. Bardzo trudno obejść zaporę sieciową przy pomocy tej metody. Jeśli program generuje pewien rodzaj aktywności sieciowej, nie jest łatwo ukryć ją przed zaporą sieciową. Jedynym sposobem jest wykorzystanie wycieków.

Co to są wycieki i testy wycieków?

Wycieki to technologia obchodzenia mechanizmów zapory sieciowej służących do kontroli aktywności sieciowej, która pozwala aplikacjom nieposiadającym reguł zezwoleń na liście reguł zapory sieciowej na wysyłanie danych do odbiorców spoza sieci. Zapora sieciowa nie zapobiega wysyłaniu takich danych i nie informuje użytkownika o takiej aktywności sieciowej w trybie uczenia.

Dobrze zaprojektowana zapora sieciowa nie powinna pozwolić na żadne wycieki. Powinna potrafić wykryć wszelką próbę wejściowej i wyjściowej aktywności sieciowej. Z tego powodu analizując jakość ochrony zapewnianej przez zaporę sieciową stosuje się dwa kryteria: jakość ochrony wejściowej, tj. ochrony przed penetracją z zewnątrz sieci, oraz jakość ochrony wyjściowej, tj. ochrony przed wyciekami danych wysyłanych z komputera.

W testach jakości ochrony, jaką zapora sieciowa zapewnia przed penetracją z zewnątrz, stosowane są różne otwarte skanery portów (np. ShieldsUP! http://www.grc.com/default.htm, Quick test http://www.pcflank.com/test.htm itp.).

Aby zbadać, jak dobrze zapora sieciowa chroni przed wyciekami danych, wykorzystuje się testy wycieków. Są to niewielkie nieszkodliwe programy, które implementują jeden lub więcej wycieków. Programy te są w większości rozwijane przez ekspertów ds. bezpieczeństwa.

Naturalnie, jedynym sposobem spowodowania wycieku jest wykorzystanie istniejących "luk" (tj. reguł zezwoleń) dla znanych aplikacji. Wymaga to jednak "przekonania" zapory sieciowej, że aktywność sieciowa została zainicjowana przez zaufaną aplikację. Można to osiągnąć za pomocą wielu metod. Zanim przejdę do omówienia tych metod, przyjrzyjmy się podstawowym zasadom wykonywania aplikacji w dzisiejszych systemach operacyjnych.


Rysunek 6. Jak działa wyciek

Wykonywanie aplikacji we współczesnych systemach operacyjnych

Procesor komputera wykonuje listy instrukcji przechowywanych w pamięci RAM komputera. Listy instrukcji pogrupowane są w wątki wykonania, które można przyporzadkować do procesów aktualnie uruchomionych w pamięci RAM.

Pliki wykonywalne zawierają listy instrukcji procesora. Uruchomienie pliku wykonywalnego prowadzi do pojawienia się nowego procesu w systemie. Proces może zostać stworzony również programowo, przez inny proces. System operacyjny przechowuje drzewo procesów w pamięci RAM.

Należy zauważyć, że przestrzeń adresowa większości procesów w systemie zawiera nie tylko kod pliku wykonywalnego aplikacji, ale również kod licznych bibliotek dołączanych dynamicznie (DLL). Biblioteki te wykorzystywane są do przechowywania pewnych wspólnych funkcji używanych przez kilka aplikacji. Pozwala to programistom uniknąć dublowania tego samego kodu programu w różnych plikach wykonywalnych. Ta sama biblioteka może zostać załadowana do przestrzeni adresowej różnych procesów.


Rysunek 7. Wykonanie aplikacji

Klasyfikacja technologii wycieków

Aranżowanie wycieków

W sekcji tej zbadano technologie, które szkodliwa aplikacja może wykorzystać do "oszukania" zapory sieciowej. Rysunek 8 ilustruje podstawową koncepcję - w pamięci RAM znajdują się znane zaporze sieciowej procesy zaufanych aplikacji oraz proces nieznanej (szkodliwej) aplikacji.


Rysunek 8. Aranżowanie wycieku

Jeżeli nieznana aplikacja podejmie próbę zainicjowania aktywności sieciowej, zapora sieciowa zablokuje ją lub spowoduje wyświetlenie okna dialogowego, w którym użytkownik zostanie zapytany, jaka akcja powinna zostać podjęta.

Wyróżniamy 3 główne podejścia do obchodzenia ochrony zapewnianej przez zaporę sieciową:

  1. Oszukiwanie zapory sieciowej, tj. "przekonanie" jej, że aktywność sieciowa jest inicjowana przez zaufaną aplikację. Można tego dokonać, podstawiając plik wykonywalny zaufanej aplikacji na dysku twardym lub zastępując dane nieznanego procesu danymi zaufanego procesu w pamięci RAM.
  2. Wykonanie kodu "w imieniu" zaufanej aplikacji przez wstrzyknięcie biblioteki DLL lub niewielkiego fragmentu kodu nieznanej aplikacji do przestrzeni adresowej zaufanej aplikacji. Zapora sieciowa nie będzie mogła odróżnić aktywności sieciowej takich wstrzykniętych elementów od normalnej aktywności sieciowej zaufanej aplikacji.
  3. Wykorzystanie udokumentowanych interfejsów zaufanych aplikacji. Podczas wykorzystywania takich interfejsów aktywność sieciowa będzie inicjowana przez zaufane aplikacje. Będzie jednak kontrolowana przez niezaufaną aplikację, pozwalając jej na transmitowanie danych za pośrednictwem interfejsów do odbiorców spoza sieci bez wywoływania alarmów zapory sieciowej.

Wyróżniamy sześć technologii wycieków, które wykorzystują trzy opisane wyżej podejścia:

Lp. Podejście 1 (oszukiwanie) Podejście 2 (wykonanie kodu w imieniu zaufanej aplikacji) Podejście 3 (wykorzystywanie udokumentowanych interfejsów)
1 Zastępowanie    
2   Uruchamianie  
3   Wstrzykiwanie biblioteki DLL  
4   Wstrzykiwanie kodu  
5     Usługi przeglądarki
6     Usługi systemowe

Poniżej znajduje się szczegółowy opis tych technologii oraz ich potencjalne implementacje.

Technologie wycieków

Zastępowanie

Podstawianie pliku wykonywalnego zaufanej aplikacji na dysku twardym lub zastępowanie danych nieznanego procesu danymi zaufanego procesu w pamięci RAM. Metoda ta opiera się na "przekonywaniu" zapory sieciowej, że aktywność sieciowa została zainicjowana przez zaufany proces.

Są trzy metody zastępowania:

  1. podstawianie pliku wykonywalnego zaufanej aplikacji na dysku twardym (zaimplementowana w teście wycieków Runner, zobacz sekcję Testy wycieków);
  2. zastępowanie nazwy pliku nieznanej aplikacji nazwą pliku zaufanej aplikacji (Test wycieku);
  3. zastępowanie danych nieznanego procesu danymi zaufanego procesu w obrazie procesu ładowanym w pamięci RAM (Coat).

Poniższy diagram ilustruje pierwszy typ zastępowania:


Rys. 9. Podstawianie pliku zaufanego procesu na dysku twardym

Uruchamianie

Uruchamianie zaufanej aplikacji z parametrami wiersza poleceń. Metoda ta wykorzystuje fakt, że większość przeglądarek akceptuje adres strony internetowej, która ma zostać otwarta, w postaci parametru wiersza poleceń. Jeśli strona internetowa zawiera skrypt po stronie serwera (np. cgi), linia adresowa może zawierać również parametry, które będą wykorzystywane przez skrypt jako dane wejściowe. Parametry te mogą zawierać poufne informacje, np. dane skradzione przez oprogramowanie spyware. Istotne jest to, że cała aktywność sieciowa jest generowana przez przeglądarkę tak samo jak zwykle, dlatego reguły zapory sieciowej zawsze zezwolą na nią.

Aby uniemożliwić użytkownikowi zobaczenie okna przeglądarki, jest ona zwykle uruchamiana w trybie ukrycia. (Ghost, TooLeaky, Wallbreaker [1]).

Zamiast bezposredniego uruchomienia szkodliwy kod może również uruchomić przeglądarkę przy użyciu innego procesu. Na przykład:

  1. uruchomić przeglądarkę przy użyciu procesu powłoki Windows Explorer.exe (Wallbreaker [2]);
  2. uruchomić przeglądarkę przy użyciu procesu powłoki Windows Explorer.exe, który sam jest uruchamiany przy użyciu interpretera poleceń cmd.exe (Wallbreaker [3]);
  3. uruchomić przeglądarkę przy użyciu mechanizmu planowania zadań systemu Windows (Wallbreaker[4]). W tym przypadku proces zostanie uruchomiony w następującej sekwencji: AT.exe -> Svchost.exe-> Cmd.exe->Explorer.exe-> IExplore.exe.

Metoda ta została przedstawiona poniżej:


Rysunek 10. Uruchamianie zaufanej aplikacji z parametrami wiersza poleceń

Wstrzykiwanie biblioteki DLL

Wstrzykiwanie biblioteki dołączanej dynamicznie do przestrzeni adresowej zaufanego procesu. Metoda ta ładuje bibliotekę dołączaną dynamicznie szkodliwego programu do przestrzeni adresowej zaufanego procesu. Można to wykonać na kilka sposobów, jednak główne metody to:

  1. zainstalowanie globalnego punktu zaczepienia. Jego kod jest zlokalizowany w bibliotece dołączanej dynamicznie (CPILSuite [2,3], FireHole, pcAudit, pcAudit2);
  2. zmodyfikowanie wartości rejestru systemowego w celu dodania biblioteki dołączanej dynamicznie do listy bibliotek DLL, które są automatycznie ładowane przez system do każdego nowego procesu - klucz AppInit_DLLs (Jumper).

Obie metody są udokumentowane i wykorzystywane do legalnych celów.

Metoda ta została przedstawiona poniżej:


Rysunek 11. Wstrzykiwanie biblioteki dołączanej dynamicznie do zaufanego procesu

Wstrzykiwanie kodu

Wstrzykiwanie kodu do przestrzeni adresowej zaufanego procesu bez wykorzystania biblioteki dołączanej dynamicznie. Metoda ta polega na wstrzykiwaniu kodu wykonywalnego do przestrzeni adresowej zaufanego procesu. Po wstrzyknięciu kod ten może inicjować każdą aktywność sieciową, ponieważ zapora sieciowa uzna ją za aktywność zaufanej aplikacji. W przeciwieństwie do metody wstrzykiwania DLL, legalność tej operacji jest wątpliwa, mimo że istnieją udokumentowane metody wstrzykiwania kodu do procesów innych aplikacji. Takie wstrzykiwanie kodu jest czasami wykorzystywane przez legalne programy (np. debuggery), jednak w głównej mierze przez szkodliwe oprogramowanie.

Istnieje kilka metod wstrzykiwania kodu do procesów innych aplikacji. Poniżej przedstawiono kilka przykładów:

  1. ładowanie zaufanego procesu do pamięci RAM oraz łatanie pamięci procesu (AWFT [1], CPIL, DNStest). Może to być poprzedzone próbą uniknięcia wykrycia tej operacji przez zaporę sieciową poprzez wyłączenie punktów zaczepienia zapory sieciowej (CPILSuite[1]);
  2. lokalizowanie zaufanego procesu w pamięci RAM oraz wstrzykiwanie do niego kodu (Thermite);
  3. ładowanie zaufanego procesu do pamięci RAM i tworzenie w nim zdalnego wątku (AWFT [2,3]);
  4. ładowanie zaufanego procesu do pamięci RAM, tworzenie w nim zdalnego wątku, ładowanie kolejnego zaufanego procesu z tego wątku i łatanie jego pamięci przed wykonaniem (AWFT [4,5,6]);
  5. wykorzystywanie funkcji SetThreadContext w celu przejęcia kontroli nad wątkiem w zaufanym procesie (CopyCat).

Najczęściej atakowanymi procesami są procesy przeglądarek internetowych (Internet Explorer itd. - AWFT [1,2,4], testy CopyCat oraz Thermite), powłoki systemu operacyjnego (explorer.exe - AWFT [3,4], CPIL oraz CPILSuite [1]) oraz proces svchost.exe, który jest głównym procesem usług systemu Windows ładowanych z bibliotek kompilowanych dynamicznie (test DNStest).

Metoda ta została pokazana na poniższym schemacie:


Rysunek 12. Wstrzykiwanie szkodliwego kodu do zaufanego procesu

Usługi przeglądarki

Wykorzystywanie interfejsów programowych do kontrolowania przeglądarki internetowej. Metoda ta wykorzystuje różne mechanizmy w systemie Windows przeznaczone do poprawy interakcji między procesami różnych komponentów/aplikacji. Mechanizmy te obejmują:

  1. wysyłanie wiadomości systemu Windows do okna przeglądarki internetowej. Powoduje to zmianę wartości w linii adresowej przeglądarki, a wciśnięcie przycisku "Go" przekierowuje przeglądarkę do podanego adresu (Breakout);
  2. wykorzystywanie interfejsu DDE przeglądarki, tj. mechanizmu Dynamicznej Wymiany Danych http://pl.wikipedia.org/wiki/Dynamic_Data_Exchange). Biblioteka DDE została rozwinięta w celu rozszerzenia możliwości systemu wiadomości Windows, pozwalając dwóm aplikacjom na dynamiczną wymianę danych podczas wykonywania (obsługa DDE w różnych wersjach Internet Explorera została opisana w artykule dostępnym na stronie http://support.microsoft.com/kb/q160957) (Surfer, ZAbypass, WB [1,3,4]; CPILSuite [3]);
  3. wykorzystywanie przeglądarki jako serwera automatyzacji (mechanizm automatyzacji OLE oparty na modelu COM (http://pl.wikipedia.org/wiki/Object_Linking_and_Embedding). Automatyzacja OLE jest rozszerzeniem technologii DDE. Każda współczesna przeglądarka zapewnia interfejs COM (http://pl.wikipedia.org/wiki/Component_Object_Model), który może zostać wykorzystany przez inne programy jako serwer automatyzacji. Istnieją dwa komponenty COM przeglądarki Microsoft Internet Explorer w aplikacjach zewnętrznych (http://msdn2.microsoft.com/en-us/library/aa741313.aspx):
    1. WebBrowser Control, zaimplementowany w shdocvw.dll (OSfwbypass),
    2. interfejs MSHTML zaimplementowany w mshtml.dll (PCFlank).

    Metoda ta została pokazana na poniższym schemacie:


    Rysunek 13. Wykorzystanie interfejsów programów do kontrolowania przeglądarki

    Usługi systemowe

    Wykorzystywanie interfejsów programowych zapewnianych przez usługi systemowe. Metoda ta jest podobna do metody opisanej wyżej. Różnica polega na tym, że wykorzystywane interfejsy programowe są zapewniane przez komponenty systemu operacyjnego a nie przeglądarkę internetową. Windows XP oraz Windows Vista posiadają przynajmniej trzy takie interfejsy:

    1. BITS (Background Intelligent Transfer Service, http://msdn2.microsoft.com/en-us/library/Aa362827.aspx) - jest to inteligentna usługa pobierania plików wykorzystywana przez Windows Update oraz Windows Server Update Services. Pozwala ona na pobieranie łat i aktualizacji w tle, bez przeciążania kanałów komunikacji. Ponadto automatycznie wznawia pobieranie w przypadku utraty połączenia (BITSTester);
    2. Funkcje Windows DNS API (http://msdn2.microsoft.com/en-us/library/ms682100.aspx) mogą zostać wykorzystane do tworzenia rekursywnych zapytań DNS do internetowego serwera nazw. Dodatkowe dane, łącznie z poufnymi danymi użytkownika, mogą zostać wysłane w ramach pakietu DNS. Cyberprzestępca kontrolujący serwer nazw, który przetwarza zapytania DNS, może uzyskać te informacje poprzez przetwarzanie tego specjalnie stworzonego pakietu DNS (DNStester);
    3. Po aktywacji Windows Active Desktop interfejs zarządzania elementami i tapetą pulpitu Windows (IActiveDesktop, http://msdn2.microsoft.com/en-us/library/ms647199.aspx) może zostać wykorzystany do ustawienia strony HTML jako tapety pulpitu. Strona HTML może zawierać elementy, które łączą się z zewnętrznymi zasobami, w wyniku czego zasoby te są ładowanie w momencie aktywowania nowej tapety pulpitu (Breakout2).

    Różnice w istniejących klasyfikacjach wycieków

    Powyższa klasyfikacja nieznacznie różni się od klasyfikacji technologii wycieków podawanych na specjalistycznych stronach internetowych poświęconych analizie wycieków.

    Zgodnie z naszą wiedzą, pierwszą stroną internetową, na której publikowano systematyczne badania wycieków, była http://www.firewallleaktester.com. Klasyfikacja ta dostępna jest na stronie http://www.firewallleaktester.com/categories.htm.

    W 2006 roku pojawiła się inna strona, http://www.matousec.com. Jednym z ważniejszych projektów jest Windows Personal Firewall Analysis (Analiza osobistej zapory sieciowej systemu Windows) (http://www.matousec.com/projects/windows-personal-firewall-analysis/introduction-firewall-leak-testing.php). Klasyfikacja wycieków wykorzystana w tym badaniu jest podobna do tej, która znajduje się na stronie http://www.firewallleaktester.com, są jednak pewne różnice.

    Różnice między klasyfikacjami opisano poniżej. Klasyfikacja wykorzystana w tym artykule nie zawiera następujących metod:

    Lp. Metoda na stronie www.firewallleaktester.com Metoda na stronie www.matousec.com
    1 Ukryte reguły
    (Hidden rules)
    Domyślne reguły
    (Default Rules)
    2 Bezpośrednie wykorzystanie interfejsu sieciowego
    (Direct network interface use)
    Własny sterownik protokołu
    (Own Protocol Driver)
    3 Atak czasowy
    (Timing attack)
     
    4 Rekursywne zapytania
    (Recursive requests)
    5 Wstrzykiwanie do rejestru
    (Registry injection)
     
    6 Połączenie metod Windows Messaging + OLE Windows Messages oraz OLE Automation, DDE
    7   Unhooking

    Metody te nie zostały uwzględnione w naszej klasyfikacji z następujących powodów:

    1. Metoda "Ukryte reguły" nie jest sama w sobie wyciekiem (zobacz definicję wycieku powyżej), ponieważ nie implementuje żadnej technologii, która obchodzi mechanizm kontrolowania aktywności sieciowej w zaporze sieciowej. Metaoda ta sprawdza zestaw reguł pakietowych (odnoszących się do wszystkich aplikacji w systemie) wykorzystywany domślnie przez zaporę sieciową. Jeśli jeden z portów sieciowych jest otwarty dla wszystkich aplikacji, może zostać wykorzystany przez szkodliwą aplikację do wysyłania danych do odbiorców spoza sieci.
    2. Metoda "Bezpośrednie wykorzystywanie interfejsu sieciowego" obchodzi mechanizmy filtrowania ruchu sieciowego na "niskim" poziomie. Metoda ta tworzy alternatywny stos sterowników sieciowych, które przetwarzają pakiety pochodzące z karty sieciowej równolegle do stosów systemowych (TCP/IP itd.). Metoda ta nie została uwzględniona w naszej klasyfikacji, ponieważ nie istnieją obecnie żadne implementacje (testy wycieków) działające pod kontrolą współczesnych systemów operacyjnych, tj. Windows XP/Vista. Ponadto, jest wysoce nieprawdopodobne, że w przyszłości pojawią się nowe testy wycieków (lub szkodliwe programy) wykorzystujące tę metodę, ponieważ jest ona znacznie bardziej złożona niż inne metody, za pomocą których można przeprowadzenić ataki-wycieki. Metoda ta jest jednak wykorzystywana w trzech testach wycieków, które działają na przestarzałym już systemie Windows 9x:
      • MbTest (autor: "mbcx8nlp", 2003), wykorzystuje bibliotekę Winpcap,
      • Outbound (autor: HackBusters, 2001),
      • YALTA [2] (autor: Soft4ever, 2001).
    3. Metoda "Atak czasowy" nie została skategoryzowna jako oddzielna metoda w naszej klasyfikacji. Wynika to z tego, że obecnie praktycznie żadna zapora sieciowa nie może zostać ominięta przy użyciu technologii, na której jest oparta (restartowanie własnego procesu w celu zmiany PID, tj. identyfikatora procesu).
    4. W naszej klasyfikacji metoda "Rekursywne zapytania" należy do grupy Usługi systemowe.
    5. W naszej klasyfikacji metoda "Wstrzykiwanie do rejestru" została skategoryzowana jako wariant metody wstrzykiwanie DLL, ponieważ jej istota nie polega na modyfikowaniu rejestru, ale na wstrzykiwaniu biblioteki dołączanej dynamicznie do zaufanych procesów. Można tego dokonać między innymi poprzez wykorzystanie specjalnego klucza rejestru.
    6. W naszej klasyfikacji metody zgrupowane w kategorii "Windows Messaging + OLE" zostały umieszczone w grupach Usługi przeglądarki oraz Usługi systemowe. Uważamy, ze jest to bardziej logiczne, ponieważ zamiast opisywania implementacji technicznej (wysyłanie wiadomości itd.) odzwierciedla ona istotę technologii wycieku na wyższym poziomie - wykorzystywanie interfejsów programu do kontrolowania przeglądarki lub wykorzystywanie usług sieciowych systemu operacyjnego.
    7. Unhooking. Metoda ta opiera się na następującej koncepcji: aby zapewnić ochronę przed niektórymi technologiami wycieków, zapory sieciowe wykorzystują tzw. punkty zaczepienia w celu przechwytywania funkcji systemowych. Jeśli są one wyłączone (ang. "unhooked"), zapora sieciowa nie będzie mogła zwalczać wycieków. Z opisu tego wyraźnie wynika, że metoda ta jako taka nie jest wyciekiem, dlatego nie jest zawarta w naszej klasyfikacji wycieków. Jednak w połączeniu z "prawdziwą" metodą wycieków pomaga zweryfikować, jak skutecznie zapora sieciowa chroni przed taką metodą wycieków w trudnych warunkach, poprzez symulowanie sytuacji, w której szkodliwy kod aktywnie blokuje funkcjonalność zapory sieciowej.

    Wykorzystanie wycieków w szkodliwych programach

    Jeszcze kilka lat temu rzadko wykorzystywano zapory sieciowe do ochrony komputerów osobistych. Z tego powodu tylko niewielka liczba szkodliwych programów wykorzystywała wycieki do obejścia zapory sieciowej. Ostatnio jednak twórcy wirusów zaczęli stosować narzędzia automatyzacji, aby szybciej tworzyć nowe wariantów swoich szkodników. W rezultacie wzrosło znaczenie narzędzi zapewniających dodatkowe bezpieczeństwo komputerom osobistym, w szczególności zwiększyła się popularność zapory sieciowej.

    Ponieważ zapory sieciowe stają się coraz bardziej rozpowszechnione, twórcy szkodliwego oprogramowania aktywniej wykorzystują teraz wycieki w celu obejścia zapory sieciowej. Poniższa tabela zawiera przykłady istniejących szkodliwych programów wykorzystujących wszystkie 6 głównych metod wycieków.

    Lp. Metoda Szkodliwy program Data wykrycia Opis
    1 Zastępowanie Backdoor.Win32.Bifrose.aer 26 marca, 2007 Zastępuje MSN Messenger (C:\Program Files\MSN Messenger\msnmsgr.exe) własną kopią
    2 Uruchamianie poprzez parametry wiersza poleceń Trojan-Spy.Win32.Agent.se 26 lipca, 2007 Uruchamia Internet Explorer w ukrytym oknie ze ścieżką do pliku HTML w wierszu poleceń
    3 Wstrzykiwanie DLL Trojan-Spy.Win32.Goldun.pq 11 czerwca, 2007 Rejestruje DLL w kluczu rejestru AppInit_DLLs i wykorzystuje go do przechwytywania ruchu internetowego
    4 Wstrzykiwanie kodu do zaufanego procesu Trojan-Spy.Win32.Delf.uc 19 stycznia, 2007 Tworzy wątek w procesie winlogon.exe i wykorzystuje go do wysyłania danych do Internetu
    5 Usługi przeglądarki Trojan-PSW.Win32.LdPinch.bix 4 stycznia, 2007 Wykorzystuje interfejs IWebBrowser2 COM do wysyłania przechwyconych danych
    6 Usługi systemowe Trojan-Downloader.Win32.Nurech.br 8 czerwca, 2007 Wykorzystuje usługę systemową BITS do wysyłania poprzez Internet danych identyfikacji użytkownika (numer seryjny dysku)

    Należy zauważyć, że różne rodzaje wycieków odpowiadają różnym zastosowaniom i mogą być wykorzystywane w szkodliwych programach do różnych celów. W szczególności:

    1. Za pomocą parametrów wiersza poleceń można wysłać ograniczony zestaw danych, natomiast szkodliwy program może wykorzystać technologię BITS do umieszczenia bardzo dużych plików z komputera użytkownika.
    2. Metody oparte na wstrzykiwaniu DLL lub kodu do zaufanych procesów stosowane są również do celów innych niż obchodzenie zapór sieciowych, ponieważ mogą zostać wykorzystane nie tylko do wysyłania danych w imieniu zaufanego procesu bez wiedzy użytkownika, ale również do wykonywania szeregu innych operacji.
    3. Interfejsy kontroli przeglądarki (np. WebBrowser control) mogą być wykorzystywane nie tylko do wysyłania danych w imieniu przeglądarki Internet Explorer, ale również do kontrolowania uruchomionej kopii przeglądarki (np. zamykać wszystkie okna, w których adres strony nie spełnia pewnych warunków), modyfikować dokument załadowany w przeglądarce, wyświetlać okna komunikatów w przeglądarce itd.

    Testy wycieków

    Poniższa tabela zawiera stosowane obecnie testy wycieków oraz metody wycieków, które są przez nie testowane. Większość z wymienionych testów można pobrać ze strony http://www.matousec.com/projects/windows-personal-firewall-analysis/introduction-firewall-leak-testing.php lub http://www.firewallleaktester.com.

    Lp. Nazwa Autor Metoda Rok
    1 AWFT [6] Jos Pascoa Wstrzykiwanie kodu 2005
    2 BITSTester Tim Fish Usługi systemowe 2006
    3 Breakout Volker Birk Usługi przeglądarki Brak danych
    4 Breakout2 Volker Birk Usługi systemowe Brak danych
    5 Coat David Matousec Zastępowanie 2006
    6 CopyCat «Bugsbunny» Wstrzykiwanie kodu Brak danych
    7 CPIL Comodo Wstrzykiwanie kodu 2006
    8.1 CPILSuite [1] Comodo Wstrzykiwanie kodu + Uruchamianie 2006
    8.2 CPILSuite [2] Comodo Wstrzykiwanie biblioteki DLL + Uruchamianie 2006
    8.3 CPILSuite [3] Comodo Wstrzykiwanie biblioteki DLL + Usługi przeglądarki 2006
    9 DNStest Jarkko Turkulainen Wstrzykiwanie kodu 2004
    10 DNStest Jarkko Turkulainen Usługi systemowe 2004
    11 FireHole Robin Keir Wstrzykiwanie biblioteki DLL 2002
    12 FPR (38) David Matousec [unhooking] Brak danych
    13 Ghost Guillaume Kaddouch Uruchamianie Brak danych
    14 Jumper Guillaume Kaddouch Wstrzykiwanie biblioteki DLL 2006
    15 LeakTest Steve Gibson Uruchamianie 2002
    16 OSfwbypass Debasis Mohanty Usługi przeglądarki 2005
    17 pcAudit Internet Security Alliance Wstrzykiwanie biblioteki DLL 2002
    18 pcAudit2 Internet Security Alliance Wstrzykiwanie biblioteki DLL Brak danych
    19 PCFlank www.pcflank.com Usługi przeglądarki 2006
    20 Runner David Matousec Zastępowanie 2006
    21 Surfer Jarkko Turkulainen Usługi przeglądarki 2004
    22 Thermite Oliver Lavery Wstrzykiwanie kodu 2003
    23 TooLeaky Bob Sundling Uruchamianie 2001
    24 Wallbreaker [4] Guillaume Kaddouch Uruchamianie 2004
    25 YALTA Soft4ever [Reguły domyślne] 2001
    26 ZAbypass Debasis Mohanty Usługi przeglądarki 2005

    W poniższej tabeli skategoryzowaliśmy testy wycieków zgodnie z naszą klasyfikacją:

    Lp. Technologia Testy wycieków
    1 Zastępowanie Coat, LeakTest, Runner
    2 Uruchamianie Ghost, TooLeaky, Wallbreaker
    3 Wstrzykiwanie biblioteki DLL CPILSuite [2, 3], FireHole, Jumper, pcAudit, pcAudit2
    4 Wstrzykiwanie kodu AWFT, CopyCat, CPIL, CPILSuite [1], DNStest, Thermite
    5 Usługi przeglądarki Breakout, OSfwbypass, PCFlank, Surfer, ZAbypass
    6 Usługi systemowe BITSTester, Breakout2, DNStester

    Znaczenie wyników testów wycieków

    Co dają testy porównawcze zapór sieciowych wykorzystujące testy wycieków? Testy te przede wszystkim pomagają w ocenie jakości ochrony, a ich wyniki mogą ułatwić wybór zintegrowanego systemu ochrony komputera.

    Wybierając ochronę, użytkownicy często skupiają się wyłącznie na takich właściwościach jak współczynniki wykrywania i szybkość reakcji na nowe zagrożenia (np. opierając się na wynikach testów, takich jak te podawane na stronie http://www.av-comparatives.org oraz http://www.av-test.de). Jednak parametry te nie określają w pełni jakości ochrony. Równie ważne są takie cechy produktu, jak jakość komponentu proaktywnego w rozwiązaniu antywirusowym, skuteczność leczenia zainfekowanych komputerów, zdolność zwalczania aktywnych rootkitów oraz jakość autoochrony. Niestety autorzy testów porównawczych nie przywiązują do nich wystarczającej wagi. Podczas wyboru zintegrowanego produktu ochrony należy uwzględnić dodatkowe komponenty, takie jak system ochrony antyspamowej oraz zapora sieciowa.

    Jak już wcześniej pisałem, podczas oceny jakości ochrony zapewnianej przez zaporę sieciową, należy uwzględnić dwa kryteria: kontrolę danych wejściowych i kontrolę danych wyjściowych. Dobre wyniki w testach kontroli danych wyjściowych oznaczają, że zapora sieciowa nie jest jedynie dodatkiem w produkcie antywirusowym, ale zapewnia dodatkową warstwę ochrony, która może zapobiec wysłaniu poufnych danych użytkownika do cyberprzestępców, nawet gdy komponenty antywirusowe nie zdołały zablokować trojana.

    Uważamy, że produkty, które otrzymały "Bardzo dobrą" lub "Znakomitą" ocenę w testach wycieków przeprowadzonych przez http://www.matousec.com/projects/windows-personal-firewall-analysis/leak-tests-results.php zapewniają użytkownikom wystarczającą ochronę. Jeśli ochrona została oceniona jako "Dobra" czy też "Słaba" lub "Bardzo słaba", oznacza to, że twórcy szkodliwego oprogramowania będą w stanie obejść zaporę sieciową produktu przy użyciu praktycznie każdej metody.

    Wnioski

    Obecnie zapora sieciowa stanowi niezbędny komponent zintegrowanych systemów bezpieczeństwa IT. Nawet najnowsze systemy operacyjne, takie jak Windows Vista, nie są w stanie same zablokować wszystkich wycieków (chociaż począwszy od wersji Windows XP SP2 Windows zawiera zaporę sieciową, jej funkcjonalność została znacznie rozszerzona w Viście).

    Według wyników testu przeprowadzonego w marcu przez Guillaume Kaddouch (http://www.firewallleaktester.com/articles/vista_and_leaktests.html), Windows Vista Ultimate 64-bit z domyślnymi ustawieniami zablokował tylko 9 testów wycieków (zablokowane testy wycieków zostały zaznaczone w tabeli wyników kolorem zielonym).

    Lp. <> Uwagi
    1 Zastępowanie Coat, LeakTest, Runner
    2 Uruchamianie Ghost, TooLeaky, Wallbreaker
    3 Wstrzykiwanie biblioteki DLL CPILSuite [2, 3], FireHole, Jumper, pcAudit, pcAudit2
    4 Wstrzykiwanie kodu AWFT, CopyCat, CPIL, CPILSuite [1], DNStest, Thermite
    5 Usługi przeglądarki Breakout, OSfwbypass, PCFlank, Surfer, ZAbypass
    6 Usługi systemowe BITSTester, Breakout2, DNStester

    Najnowsza wersja systemu Windows posiada wyraźnie lepsze zabezpieczenia niż poprzednie dzięki licznym usprawnieniom, takim jak UAC, IE protected mode, Service hardening oraz Kernel Patch Protection (Vista x64). Jednak nawet Windows Vista wymaga zainstalowania programów bezpieczeństwa od innych producentów, aby zapewnić niezbędny poziom ochrony przed wyciekami.

    W przyszłości szkodliwe programy będą implementowały nowe metody w celu obejścia zarówno istniejących mechanizmów ochrony, jak i tych zawartych w nowym systemie operacyjnym. Z tego powodu wzrośnie znaczenie zapory sieciowej jako dodatkowego poziomu ochrony. W celu obejścia zapór sieciowych twórcy szkodliwego oprogramowania będą w coraz większym stopniu wykorzystywać technologie wycieków. To oznacza, że testy wycieków staną się kluczową metodą testowania niezawodności ochrony komputera.

    Źródło:
    Kaspersky Lab/ Autor: Nikolay Grebennikov