
Firewall/IDS i podszywanie sięWielu pionierów ineternetu wykorzystywało globalną otwartą sieć opartą
o uniwersalną przestrzeń adresową pozwalającą na tworzenie wirtualnych
połączeń pomiędzy dwoma dowolnymi węzłami. Pozwalało to hostom na równoprawną
komunikację przy której każdy mógł serwować i pobierać dane od drugiego.
Ludzie mogli uzyskać dostęp do wszystkich swoich systemów z dowolnego miejsca
w sieci. Wizja nieograniczonej łączności została ograniczona przez wyczerpujące
się zapasy wolnych adresów IP i względy bezpieczeństwa. We wczesnych latach
90-tych organizacje zaczęły masowo wprowadzać systemy zaporowe dla ograniczenia
możliwości komunikacji. Duże sieci zostały otoczone kordonem zabezpieczeń w
postaci proxy aplikacyjnych, translacji adresów i filtrowania pakietów.
Niczym nie ograniczany przepływ informacji ustąpił ścisłym regulacjom
dotyczącym dozwolonych dróg komunikacji i treści nimi przesyłanych. Zabezpieczenia sieciowe takie jak systemy zaporowe mogą bardzo utrudnić
uzyskiwanie informacji o sieci i jej architekturze.
Nmap posiada wiele funkcji pozwalających zrozumieć działanie złożonych sieci i
na weryfikacje działania filtrów pakietów i ich zgodności z założeniami.
Pozwala nawet na omijanie źle zaimplementowanych zabezpieczeń. Jednym z
najlepszych sposobów na poznanie bezpieczeństwa swojej sieci jest próba jego
przełamania. Zacznij myśleć jak atakujący, który stosuje techniki z tej części
dokumentacji przeciwko Twojej sieci. Uruchom skanowania FTP bounce, Idle, dodaj
fragmentację pakietów lub spróbuj uruchomić tunel omijający lokalne proxy. W połączeniu z ograniczeniami aktywności sieciowej, firmy coraz częściej
rozpoczynają monitorowanie ruchu sieciowego za pomocą systemów detekcji intruzów
(IDS). Wszystkie popularne systemy IDS mają dołączone reguły wykrywające
skanowania Nmapa, ponieważ skanowania takie czasami poprzedzają ataki. Wiele z tych
systemów ostatnio przeistoczyło się w systemy prewencji
(IPS), które aktywnie przeciwstawiają się niepożądanemu ruchowi. Niestety, dla
administratorów sieci i producentów systemów IDS, wiarygodne wykrywanie złych
intencji poprzez analizę pakietów jest ciężkim orzechem do zgryzienia.
Cierpliwi atakujący, posiadający odpowiednie umiejętności podparte
możliwościami Nmapa zwykle mogą ominąć systemy detekcji intruzów i ich
działania nie zostaną wykryte. W tym samym czasie administratorzy muszą się
zmagać z ogromną ilością fałszywych alarmów dotyczących niepoprawnie
zaklasyfikowanej zupełnie niewinnej komunikacji. Co jakiś czas ktoś sugeruje, że Nmap nie powinien oferować możliwości
omijania systemów zaporowych czy systemów IDS. Argumentują to możliwością
wykorzystania tych funkcji także przez atakujących, a nie tylko przez
administratorów podnoszących bezpieczeństwo swoich sieci. Problemem jest
sama logika, ponieważ atakujący i tak będą wykorzystywali tego typu metody
używając innych narzędzi lub samemu wprowadzając odpowiednią
funkcjonalność do kodu Nmapa. Równocześnie administratorzy będą mieli
utrudniony dostęp do odpowiednich narzędzi i ich praca będzie trudniejsza.
Uruchomienie nowoczesnego, bezpiecznego serwera FTP jest dużo skuteczniejszą
metodą ochrony niż ograniczanie dostępności do narzędzi pozwalających na
przeprowadzanie ataków FTP bounce. Nie ma magicznej kuli (lub opcji Nmapa) do przełamywania i obchodzenia
systemów zaporowych i IDS. Wymaga to umiejętności i doświadczenia. Dokładne
instrukcje wykraczają poza zakres tej dokumentacji, która jest jedynie listą
dostępnych opcji wraz z opisami jak one działają. -
-f (fragmentacja pakietów);
--mtu (Używanie wybranego MTU)
Opcja -f powoduje wykorzystywanie przy
skanowaniu (włączając w to skanowanie ping) małych pofragmentowanych
pakietów. Idea polega na podzieleniu nagłówka TCP na wiele pakietów,
co powoduje utrudnienia w ich przetwarzaniu przez filtry pakietów,
systemy detekcji intruzów oraz irytujące komplikacje przy ustalaniu
co się dzieje. Ale uwaga! Wiele programów ma problemy przy obsłudze
tego typu pakietów. Przestarzały sniffer Sniffit wykonuje
nieprawidłową operacje i zostaje zamknięty zaraz po odebraniu już
pierwszego z takich pakietów. Dodanie tej opcji spowoduje
automatyczne dzielenie wszystkich pakietów wysyłanych przez Nmapa
na mniejsze o rozmiarze maksymalnie 8 bajtów. Przykładowo 20 bajtowy
nagłówek TCP zostanie podzielony na 3 pakiety: najpierw dwa po 8
bajtów i ostatni 4 bajty. Oczywiście każdy fragment dostaje własny
nagłówek IP. Dodanie drugiej opcji -f powiększa
wykorzystywany rozmiar fragmentów z 8 do 16 (redukując ilość
fragmentów). Możliwe jest również podanie własnego rozmiaru za
pomocą opcji --mtu. Nie używaj parametru
-f, jeśli używasz --mtu. Podawany
rozmiar musi być wielokrotnością 8. W niektórych systemach filtry
pakietów nie otrzymują bezpośrednio pakietów, tylko są one wstępnie
kolejkowane, tak jak w Linuxie przy ustawieniu opcji
CONFIG_IP_ALWAYS_DEFRAG w kernelu, jednak w wielu przypadkach takie
opcje nie są włączane ze względów wydajnościowych. Opcja taka nie
jest również włączana jeśli zachodzi możliwość routowania
poszczególnych pakietów różnymi ścieżkami. Niektóre systemy
operacyjne potrafią defragmentować pakiety wysyłane przez kernel,
Linux z iptables i modułem śledzenia połączeń jest jednym z
przykładów. Uruchamiając skanowanie można podsłuchać za pomocą
sniffera takiego jak Ethereal, czy wychodzące pakiety są rzeczywiście
pofragmentowane. Jeśli system powoduje tego typu problemy, można
wypróbować opcje --send-eth, która pomija stos
TCP/IP i wysyła bezpośrenio ramki ethernetowe. -
-D <decoy1 [,decoy2][,ME],...>
(Ukrywaj skanowanie za pomocą innych hostów)
Powoduje skanowanie, wykrywane jako przychodzące z kilku miejsc
równocześnie. System IDS może wykryć 5-10 różnych skanowań z różnych
adresów, jednak nie będzie w stanie ocenić który z nich jest
prawdziwym źródłem pochodzenia, a które tylko niewinnymi zasłonami.
Chociaż metoda ta może zostać rozpoznana poprzez śledzenie ścieżki
pakietów na routerach i innych aktywnych mechanizmów, ogólnie jest
efektywną techniką na ukrywanie swojego adresu IP. Podwając listę poszczególnych hostów-zasłon, trzeba je
oddzielić przecinkami, można również na tej liście umieścic
ME oznaczające pozycję własnego
adresu IP na liście. W przypadku wykorzystania przynajmniej 6-tej
pozycji na liście dla własnego IP, wiele popularnych systemów
wykrywających skanowania (na przykład scanlogd firmy Solar Designer)
nawet nie pokaże prawdziwego źródła pochodzenia pakietów na liście
ataków. Jeśli ME nie zostanie
dodane, Nmap umieści je losowo na liście. Należy zwrócić uwagę, ze hosty-przykrywki powinny być dostępne,
inaczej będzie można łatwo wykryć host skanujący i że można niechcący
dokonać ataku SYN flood na hosty skanowane. Bezpieczniej jest używać
adresów IP zamiast nazw systemów-przykrywek, bo nie zostawi to
informacji w logach ich serwera nazw. Przykrywki są używane zarówno przy początkowym skanowaniu ping
(z wykorzystaniem ICMP, SYN ACK itp), podczas skanowania portów jak i
przy wykrywaniu systemu operacyjnego. Technika ta nie działa podczas
wykrywania wersji i skanowania metodą connect(). Używanie zbyt wielu adresów hostów-przykrywek znacznie spowalnia
skanowanie i może nawet spowodować zmniejszenie dokładności. Dodatkowo
niektórzy dostawcy usług odfiltrowują pakiety podszywające się pod
adresy z innych sieci, jednak wielu nie robi tego wcale. -
-S <adres_ip> (Ustawienie adresu nadawcy)
W niektórych przypadkach Nmap nie potrafi ustalić właściwego
adresu nadawcy (i wyświetli stosowny komunikat). W takim przypadku
należy za pomocą opcji -S podać adres lokalnego
interfejsu przez który mają być wysyłane pakiety. Inną możliwością tej opcji jest podmiana adresu nadawcy tak,
by cel skanowania uważał, że skanuje go ktoś inny.
Wyobraź sobie, ze firmę nagle zacznie skanować konkurencja! W
przypadku takiego użycia, zwykle będzie wymagana opcja
-e, a zalecana również -P0. -
-e <interfejs> (Użyj wybranego interfejsu)
Informuje Nmapa przez który interfejs ma wysyłać i odbierać
pakiety. Nmap powinien wykryć go automatycznie, ale jeśli mu się
nie uda, można to zrobić ręcznie. -
--source-port <numerportu>;
-g <numerportu> (Używaj podanego portu źródłowego)
Jednym z najczęściej spotykanych problemów konfiguracyjnych jest ufanie
danym przychodzącym z określonego portu źródłowego. Łatwo jest zrozumieć, czemu
tak się dzieje. Administrator instaluje nowiusieńki system zaporowy, którego
jedyną wadą są zgłoszenia od niepocieszonych użytkowników, którym nagle
przestały działać aplikacje. Przykładem może być DNS, ponieważ odpowiedzi na
zapytania z zewnętrznych serwerów przestały dochodzić do sieci. Innym
przykładem jest FTP, przy stosowaniu aktywnych połączeń zewnętrzne serwery
próbują utworzyć połączenia powrotne do klienta żądającego przesłania pliku.
Bezpieczne rozwiązanie dla tych problemów istnieje, często w formie
aplikacyjnych serwerów proxy lub analizy protokołu przez systemy zaporowe.
Niestety istnieją również inne łatwiejsze, ale i mniej bezpieczne
rozwiązania. Wielu administratorów wpada w pułapkę zakładając, że dane
przychodzące z portu 53 są zawsze odpowiedziami serwera DNS, a z 20 aktywnymi
połączeniami FTP i zezwalając na przechodzenie takiego ruchu przez system
zaporowy. Często zakładają, że żaden atakujący nie spróbuje wykorzystać
takiej luki. Zdaża się również, że problem taki zostaje wprowadzony do
konfiguracji jako tymczasowe rozwiązanie, jednak zapominają o jego zmianie
na bardziej bezpieczne. Przepracowani administratorzy nie są jedynymi, którzy wpadają w taką
pułapkę. Wiele komercyjnych produktów jest dostarczanych z podobnymi
problemami. Zdarzyło się to nawet firmie Microsoft, której filtry IPsec
dostarczone z Windows 2000 i XP zawierają regułę wpuszczającą cały ruch
TCP i UDP pochodzący z portu 88 (Kerberos). Innym dobrze znanym przykładem jest
Zone Alarm personal firewall, który do wersji 2.1.25 włącznie nie filtrował
pakietów UDP z portów 53 (DNS) i 67 (DHCP). Nmap oferuje dwie ekwiwalentne opcje -g i
--source-port pozwalające na wykorzystanie opisanej wyżej
funkcjonalności poprzez podanie numeru portu z którego wysyła dane,
o ile jest to tylko możliwe. Nmap musi używać różnych numerów portów dla
poprawnego działania niektórych testów wykrywających system operacyjny,
zapytania DNS również ignorują opcję --source-port, ponieważ
Nmap wykorzystuje do tego biblioteki systemowe. Większość typów skanowania
TCP, włączając skanowanie SYN obsługuje tę opcję we wszystkich przypadkach,
podobnie jak i UDP. -
--data-length <rozmiar> (Dodawaj losowe dane
do wysyłanych pakietów)
Domyślnie Nmap wysyła pakiety o minimalnej wielkości
zawierające jedynie sam nagłówek. Pakiety TCP mają 40 bajtów, a ICMP
tylko 28. Ta opcja pozwala dołączać do większości pakietów losowe
dane o podanym rozmiarze. Pakiety używane do detekcji systemu
operacyjnego (-O) pozostają nie zmienione, ale przy
większości pakietów ping i skanowania portów opcja ta jest
wykorzystywana. Powiększanie pakietów spowalnia proces skanowania,
jednocześnie czyniąc go mniej podejrzanym. -
--ttl <wartość> (Ustaw czas życia pakietu IP)
Ustawia czas życia (TTL) pakietów na podaną wartość. -
--randomize-hosts (Losowanie kolejności skanowania hostów)
Opcja powoduje włączenie losowania kolejności hostów w każdej
grupie do 8096 hostów przed ich skanowaniem. Zachowanie takie czyni
skanowanie mniej oczywistym dla wielu systemów monitorujących sieci,
zwłaszcza w połączeniu z opcją spowalniającą skanowanie. Możliwe jest
losowanie z jeszcze większych grup, poprzez zmianę stałej
PING_GROUP_SZ w pliku nmap.h
i rekompilacji. Innym rozwiązaniem jest wygenerowanie listy adresów
IP za pomocą opcji lista skanowania (-sL -n -oN
<nazwapliku>) i losowemu
pomieszaniu adresów na niej za pomocą skryptu Perla, oraz podaniu jej
Nmapowi za pomocą opcji -iL. -
--spoof-mac <adres mac, prefiks, lub nazwa producenta
> (Podmieniaj adres MAC)
Podaje Nmapowi adres MAC z użyciem którego będą wysyłane
wszystkie pakiety ethernet. Opcja włącza również automatycznie
--send-eth dla uzyskania pewności wysyłania
pakietów na poziomie ethernetu. Podany adres MAC może przyjmować
wiele postaci. Jeśli zostanie podany znak “0”,
Nmap wybierze kompletnie losowy adres MAC na czas trwania danej
sesji. Podanie parzystej ilości cyfr heksadecymalnych
(mogą być oddzielone dwukropkami), spowoduje wykorzystanie jej jako
adresu MAC, przy czym jeśli podano mniej niż 12 cyfr szestnastkowych,
Nmap wypełni pozostałość 6 bajtów losowymi wartościami. Jeśli
podany ciąg nie jest 0 lub liczbą heksadecymalną, Nmap poszuka w
pliku nmap-mac-prefixes nazwy
producenta zawierającego podany ciąg (duże i małe litery nie są
rozróżniane) i jeśli znajdzie, użyje identyfikatora producenta
OUI (3 bajty) wypełniając pozostałe 3 bajty losowo.
Przykłady poprawnych argumentów to
Apple, 0,
01:02:03:04:05:06,
deadbeefcafe,
0020F2, Cisco itp. -
--badsum (Wysyłanie pakietów z nieprawidłową sumą kontrolną TCP/UDP)
Powoduje wstawianie do nagłówków wysyłanych pakietów
nieprawidłowych sum kontrolnych. Jako że prawie każdy stos IP
odrzuci tego typu pakiety, otrzymana odpowiedź najprawdopodobniej
pochodzi od systemu zaporowego lub IDS, które nie przejmują się
sumami kontrolnymi. Dokładniejszy opis tej techniki znajduje się
pod adresem http://nmap.org/p60-12.txt
|
|