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:
- zezwolić na wszelką aktywność, która nie jest zakazana przez
reguły;
- blokować wszelką aktywność, która nie jest dozwolona przez
reguły;
- 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ą:
- 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.
- 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.
- 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ą.
- 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ą.
- 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ą:
- 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.
- 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.
- 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:
- podstawianie pliku wykonywalnego zaufanej aplikacji na dysku
twardym (zaimplementowana w teście wycieków Runner, zobacz sekcję Testy
wycieków);
- zastępowanie nazwy pliku nieznanej aplikacji nazwą pliku
zaufanej aplikacji (Test wycieku);
- 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:
- uruchomić przeglądarkę przy użyciu procesu powłoki Windows
Explorer.exe (Wallbreaker [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]);
- 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:
- zainstalowanie globalnego punktu zaczepienia. Jego kod jest
zlokalizowany w bibliotece dołączanej dynamicznie (CPILSuite [2,3], FireHole,
pcAudit, pcAudit2);
- 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:
- ł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]);
- lokalizowanie zaufanego procesu w pamięci RAM oraz wstrzykiwanie
do niego kodu (Thermite);
- ładowanie zaufanego procesu do pamięci RAM i tworzenie w nim
zdalnego wątku (AWFT [2,3]);
- ł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]);
- 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ą:
- 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);
- 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]);
- 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):
- WebBrowser Control, zaimplementowany w shdocvw.dll (OSfwbypass),
- 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:
- 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);
- 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);
- 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:
- 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.
- 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).
- 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).
- W naszej klasyfikacji metoda "Rekursywne zapytania"
należy do grupy Usługi systemowe.
- 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.
- 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.
- 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:
- 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.
- 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.
- 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
|