6th 11, 2009
at 10:05
by Piotr Wojtyła
in Bezpieczeństwo, Fuzzing
W rozbudowanych infrastrukturach sieciowych utrzymanie wysokiego i akceptowalnego poziomu bezpieczeństwa jest zadaniem bardzo żmudnym i trudnym. Nie wspominając nawet o nakładach finansowych, jakie trzeba posiadać, żeby o taki poziom zadbać. Pomijając jednak te przyziemne sprawy, dziś skupimy się trochę na działaniu urządzeń umożliwiających detekcję ruchu sieciowego, których dostosowywanie do potrzeb sieci można by wesprzeć np. fuzzingiem sieciowym.
Urządzenia do detekcji ruchu sieciowego (pomijając WAFy i Firewalle sieciowe, skupiając się na IPS i IDS), możemy podzielić wedle kilku różnych kategorii.
IDS vs IPS
IDS jest urządzeniem, który działa w sposób nieliniowy, tzn. ruch sieciowy nie przepływa bezpośrednio przez niego tylko jest do niego przekazywany. W przypadku wykrycia podejrzanego działania wysyłana jest stosowna informacja np. do sysloga lub też bezpośrednio do administratora.
IPS działają w sposób liniowy, ruch sieciowy jest nie tylko bezpośrednio analizowany przez urządzenie, ale może również w locie odrzucać, resetować połączenie i blokować podejrzany ruch z wykrytego adresu.
Netowork-based vs Host-based
Host-based to sposób implementacji IPS i IDS na urządzeniach końcowych np. serwerach albo stacjach roboczych. W ten sposób analizowany jest ruch skierowany do konkretnego urządzenia.
Network-based czyli rozmieszczenie IPS i IDS w infrastrukturze tak aby analizowały i broniły dostępów do danych segmentów sieci.
Sygnatury vs Anomalia
Podział ten, z racji dalszych fuzzingowych rozważań jest najbardziej interesujący. Detekcja na podstawie sygnatur jest zbliżona działaniem do zwyczajnych programów antywirusowych, które posiadamy na komputerach. Istnieje baza sygnatur, która odpowiada znanym infekcjom (atakom) i każdy plik (w naszym wypadku pakiet) jest z nią porównywany. Jeżeli takie porównanie zakończone zostanie pomyślnie to wtedy podnosi się alarm (oznaczający wykrycie intruza) i podejmuje się odpowiednią akcję.
Detekcja na podstawie anomalii polega na określeniu dla poszczególnego segmentu sieci, lub stacji końcowej (w zależności czy konfigurujemy rozwiązanie typu Network-based czy Host-based) profilu, w którym ustawiamy jaki ruch sieciowy jest charakterystyczny i uznajemy go za ‘normalny’, a wykryta anomalia, która odbiega od normalności jest uznana za ruch podejrzany.
Wady:
- Detekcja na podstawie sygnatur, krótko mówiąc jest ograniczona do sygnatur jakie znajdują się w posiadanej przez nas bazie. Zatem drobne modyfikacje znanych wektorów ataków lub całkowicie nowe wektory ataków powodują, że nasze urządzenia stają się bezbronne.
- Detekcja na podstawie anomalii rozwiązuje wadę detekcji na podstawie sygnatur, gdy złośliwy ruch sieciowy odbiega od przyjętego dla profilu ‘normalnego ruchu’. W tym wypadku dochodzimy do złotego wniosku, że sukces tej metody polega na idealnym wręcz dopasowaniu profilu do panujących realiów sieciowych. Proces ten jest bardzo trudny i czasochłonny.
Rozwiązaniem wad przedstawionych metod detekcji wydaje się być fuzzing, który może poprawić skuteczność działania urządzeń. Z jednej strony budowa fuzzera w oparciu o posiadane sygnatury, umożliwia nam sprawdzenie skuteczności porównywania sygnatur z ruchem sieciowym i ewentualnie powstałych false positive i false negative czyli blokowanie ruchu, który nie powinien zostać uznany za podejrzany i ruchu który był podejrzany a nie został zatrzymany.
Z drugiej strony fuzzer mógłby zostać wykorzystany do podobnej weryfikacji false positive i false negative w przypadku detekcji za pomocą anomalii. W bardzo prosty sposób nie dostosowując jego ustawień można by sprawdzić skuteczność jego działania dla ogólnie generowanych danych, lub zbliżyć jego działanie jak najbardziej do zadanego profilu. Pozostaje tylko pytanie czy nakład pracy i czasu związany z wyuczeniem fuzzera, szczególnie w tym drugim przypadku jest po prostu tego wart?