h9 12006 firewall

Upload: vinegere

Post on 06-Jul-2015

97 views

Category:

Documents


0 download

TRANSCRIPT

Omijanie zapr sieciowychOliver Karow

Artyku opublikowany w numerze 1/2006 magazynu hakin9. Zapraszamy do lektury caego magazynu. Wszystkie prawa zastrzeone. Bezpatne kopiowanie i rozpowszechnianie artykuu dozwolone pod warunkiem zachowania jego obecnej formy i treci. Magazyn hakin9, Software-Wydawnictwo, ul. Piaskowa 3, 01-067 Warszawa, [email protected]

Omijanie zapr sieciowychTechnikaOliver Karow

stopie trudnoci

Firewalle s czsto uznawane za niezawodny sposb ochrony przed nieuprawnionym dostpem. Jednak zapory sieciowe rwnie maj swoje saboci mona je omija, wykorzystujc bdy w konfiguracji albo luki w oprogramowaniu. Intruz moe zdoby dostp do systemu na wiele rnych sposobw.

O

chrona sieci przed atakami i niechcianym dostpem z niezaufanych sieci, takich jak Internet, to jeden z najwikszych problemw wspczesnych systemw informatycznych. W pokonaniu tych trudnoci pomagaj firewalle. Ich podstawowym zadaniem jest oddzielanie sieci i podejmowanie decyzji, czy dany pakiet moe zosta przesany z jednego segmentu do drugiego. Zapory sieciowe mona podzieli na kilka rodzajw, w zalenoci od sposobu realizowania przez nie tych zada. Dwa najpopularniejsze typy to filtry pakietw wykorzystujce mechanizm rutingu oraz firewalle warstwy aplikacji, korzystajce z rozwiza typu proxy (patrz Ramka Firewalle podstawowe infrormacje). Niezalenie od rodzaju, firewall potrzebuje pewnych przesanek, by mc podj decyzj czy pakiet bdzie przekazany do miejsca przeznaczenia. Jest to tak zwana polityka firewalla w postaci list dostpu lub regu filtrowania. Przyjrzyjmy si, jak mona omija takie polityki, wykorzystujc ze reguy filtrowania, saboci popularnych protokow oraz ograniczenia rnych typw firewalli.

Wykrywanie firewalli

Zanim system znajdujcy si za zapor zostanie zaatakowany, intruz musi sprawdzi, czy firewall w ogle istnieje. Nie jest to zawsze tak oczywiste, jak si wydaje administratorzy firewalli czsto stosuj rne sztuczki, by zapobiec wykryciu zapory. Jednak poniewa firewall moe ingerowa w rezultaty ataku, dobrze jest wiedzie o jego istnieniu. Zajmijmy si najpierw technikami wykorzystywanymi do wykrywania takich rozwiza.

Z artykuu dowiesz si... jak dziaaj firewalle, jak wykrywa zapory sieciowe, w jaki sposb mona omija firewalle, wykorzystujc nieprawidow konfiguracj lub luki w programach.

Co powiniene wiedzie... powiniene zna protokoy TCP/IPv4, powiniene zna model referencyjny ISO/OSI.

2

hakin9 Nr 1/2006

www.hakin9.org

Omijanie firewalli

Firewalle podstawowe informacje

Traceroute

Oglnie rzecz ujmujc, firewall to system poczony z rnymi sieciami, majcy wiele interfejsw i mechanizm filtrowania, ktry umoliwia przepuszczanie lub blokowanie ruchu midzy sieciami. Firewalle mona podzieli na kategorie wedug warstw protokou TCP/IP wykorzystywanych do analizy i przesyania pakietw.

Filtry pakietw

Filtry pakietw analizuj pakiety w warstwie sieci (3) i warstwie transportu (4) modelu ISO/OSI. Oznacza to, e podczas procesu podejmowania decyzji zapory tego typu kieruj si nastpujcymi kryteriami: protok (ICMP, OSPF, AH, ESP itp.), rdowy adres IP, docelowy adres IP, port rdowy, port docelowy, flagi TCP (SYN, ACK, RST, FIN itp.).

Stanowe/dynamiczne filtry pakietw

Stanowy filtr pakietw ma wicej moliwoci ledzi kade poczenie i zapisuje te informacje w wewntrznych tablicach stanw. Kiedy pakiet wychodzcy przechodzi przez filtr pakietw (nawizuje poczenie), porty i adresy IP potrzebne do odebrania pakietw z odpowiedzi s otwierane na czas poczenia, a potem zamykane. Co wicej, niektre stanowe filtry pakietw mog dynamicznie otwiera porty, ktre zostan wynegocjowane podczas dozwolonego poczenia klienta i serwera. Korzystaj z tego niektre rozwizania, takie jak Oracle czy Portmapper.

Firewalle warstwy aplikacji

Firewalle poziomu aplikacji s w stanie analizowa pakiety a do warstwy aplikacji modelu ISO/OSI. Poza tym, e maj funkcjonalno filtrw stanowych/ dynamicznych, mog te bada adunek pakietu. O ile filtr pakietw podejmuje decyzje wycznie na podstawie nagwkw, o tyle firewall poziomu aplikacji moe bada informacje zwizane z okrelonymi aplikacjami. Umoliwia to na przykad przepuszczanie caego ruchu HTTP na porcie 80 TCP z wyjtkiem da typu CONNECT czy DELETE . Firewalle poziomu aplikacji wymagaj uruchomionej specjalnej usugi proxy dla kadego protokou monitorowanego przez zapor. Usugi proxy nie zawsze s dostpne, wic wikszo producentw firewalli dodatkowo implementuje moliwoci filtra pakietw i podstawow funkcjonalno proxy bez zdolnoci analizy protokou.

Firewalle hybrydowe i warstwy 2

Wielu producentw stosuje technik hybrydow, by poczy ze sob najlepsze cechy wszystkich firewalli, czyli czy stanowe filtry pakietw z zaporami warstwy aplikacji. Na rynku dostpne s take firewalle warstwy 2. Nie s tak popularne jak filtry pakietw i zapory warstwy aplikacji, s zwykle stosowane na poziomie interfejsu, zalenie od producenta.

Listing 1. Traceroute zablokowane przez firewall# traceroute www.dummycompany.de traceroute to www.dummycompany.de (10.10.10.10), 30 hops max, 40 byte packets 1 10.255.255.254 0.373 ms 0.203 ms 0.215 ms (...) 10 router.company1.de (10.1.1.254) 88.080 ms 88.319 ms 87.921 ms 11 router.company2.de (10.2.2.254) 87.881 ms 89.541 ms 88.081 ms 12 router.company3.de (10.3.3.254) 86.749 ms 86.919 ms 86.734 ms 13 router.company4.de (10.4.4.254) 87.216 ms 87.312 ms 87.307 ms 14 * * *

ledzenie tras (tracerouting) to mechanizm stosowany do wykrywania ruterw przekazujcych pakiety na drodze do ich celu. Jeli po drodze znajduje si firewall, moe odpowiedzie na pakiet traceroute. Poniewa tracerouting to bardzo stara technika, wikszo firewalli j blokuje. Wci jednak istnieje kilka nieporozumie zwizanych z funkcjonowaniem tego rozwizania, co pozwala intruzom przedosta si przez zabezpieczenia. Listing 1 przedstawia efekt dziaania polecenia traceroute po zablokowaniu go przez firewall. Jak wida, program ten dziaa, dopki nie dotrze do systemu o adresie 10.4.4.254. Na tym hocie znajduje si co, co blokuje traceroute. Sprbujmy zrozumie jak dziaa ledzenie tras (patrz te Rysunek 1). U celu okrelenia trasy pakietu IP pole TTL nagwka IP jest wykorzystywane w taki sposb, e zostaje zmniejszone o 1 za kadym razem, gdy dociera do rutera. Jeeli ruter otrzyma pakiet z TTL o wartoci 2, zmniejszy t warto o 1 i jeli otrzymany TTL jest rwny lub wikszy od 1, pakiet zostaje przekazany do nastpnego rutera zgodnie z danymi o rutingu. Natomiast jeeli ruter otrzyma pakiet z TTL o wartoci 1, zmniejszy j i w efekcie poniewa otrzymana warto bdzie rwna 0 nie przekae pakietu do nastpnego rutera. Zamiast tego wyle nadawcy powiadomienie, e pakiet zosta odrzucony w drodze do celu. Program traceroute rozpoczyna dziaanie od wysania pierwszego pakietu z TTL rwnym 1, wic otrzymuje komunikat ICMP o wyganiciu TTL (TTL-expired). Nastpnie zwiksza TTL do 2, by przej przez pierwszy ruter i otrzymuje taki sam komunikat od drugiego rutera na trasie. Kontynuuje ten proces do momentu dotarcia do celu. Poniewa kady ruter wysya taki komunikat (o ile nie jest skonfigurowany inaczej), traceroute jest w stanie stworzy list ruterw. Warto rwnie wiedzie, e istniej dwie rne implementacje pro-

www.hakin9.org

hakin9 Nr 1/2006

3

Technika

bowa omin te filtry, wykorzystujc pakiety TCP. Przeledmy jeszcze raz tras do docelowego rutera. Tym razem skorzystamy z narzdzia hping2, ktre umoliwia wysyanie spreparowanych pakietw (patrz Listing 2). Jak wida, rozpoznalimy jeszcze jeden odcinek trasy (hop). O ile polecenie traceroute zostao zablokowane przy 13. ruterze, o tyle hping2 dao nam dodatkowe wyniki.

Analiza pakietw zwrotnychRysunek 1. Zasada dziaania traceroutingu Listing 2. ledzenie tras za pomoc pakietw TCP przy uyciu hping2# hping2 -T -t 1 -S -p 80 www.dummycompany.de HPING www.dummycompany.de (eth0 10.10.10.10 ): S set, 40 headers + 0 data bytes hop=1 TTL 0 during transit from ip=10.255.255.254 name=UNKNOWN hop=1 hoprtt=12.4 ms (...) hop=10 TTL 0 during transit from ip=10.1.1.254 name=router.company1.de hop=11 TTL 0 during transit from ip=10.2.2.254 name=router.company2.de hop=12 TTL 0 during transit from ip=10.3.3.254 name=router.company3.de hop=13 TTL 0 during transit from ip=10.4.4.254 name=router.company4.de hop=14 TTL 0 during transit from ip=10.5.5.254 name=UNKNOWN len=46 ip=10.10.10.10 flags=SA DF seq=15 ttl=107 id=12852 win=29200 rtt=95.6 ms len=46 ip=10.10.10.10 flags=R DF seq=15 ttl=107 id=12856 win=0 rtt=194.6 ms

Listing 3. Wysyanie pakietu na zamknity port# hping2 -S -p 99 -c 1 www.dontexist.com HPING www.dontexist.com (eth0 192.168.10.10): S set, 40 headers + 0 data bytes ICMP Packet filtered from ip=192.168.9.254

Aby zbada, czy firewall istnieje, mona porwna pakiety zwrotne z otwartych portw z tymi pochodzcymi z portw zamknitych. Przeanalizujmy kilka sztuczek, ktre mog uatwi ten proces. Uyjmy najpierw hping2 do wysania pakietu do naszego celu, na port, ktry moemy uzna za zamknity (patrz Listing 3). Jednoczenie sprbujmy obserwowa ruch sieciowy za pomoc narzdzia tcpdump (Listing 4). Zobaczymy komunikat ICMP destination unreachable w postaci wiadomoci filtra admin prohibited z adresu 192.168.9.254. Wiadomo wiadczy o tym, e dostp do portu 99 TCP systemu docelowego jest filtrowany za pomoc listy dostpu rutera. Poniewa jest to oczywisty dowd na istnienie firewalla, zajmijmy si inn technik, opart na analizie wartoci TTL.

Listing 4. Obserwacja ruchu sieciowego# tcpdump -i eth0 -n tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes 12:59:18.778417 IP 172.16.1.1.1866 > 192.168.10.10.99: S 1958445360:1958445360(0) win 512 12:59:18.786914 IP 192.168.9.254 > 172.16.1.1 icmp 36: host 192.168.10.10 unreachable - admin prohibited filter

Rnice TTL

gramu traceroute. Pierwsza uywa pakietw ICMP echo request (na przykad tracert w systemach Windows), za druga pakietw UDP (wikszo implementacji uniksowych). Oba warianty wykorzystuj technik opart na polach TTL. Administrator firewalla musi wic pa-

mita, by odfiltrowa obie implementacje traceroute.

TCP traceroute

Poniewa wiemy, e pole TTL jest czci nagwka IP i e popularne filtry traceroute blokuj jedynie pakiety UDP i ICMP, moemy spr-

Za kadym razem, gdy pakiet IP przechodzi przez urzdzenie rutujce, jego TTL zostaje zmniejszony o 1. Jeli wic mamy serwer chroniony przez zapor sieciow zainstalowan na wydzielonym systemie, pakiety pochodzce z serwera mog mie inny TTL ni pakiety pochodzce z tego firewalla. Teraz musimy sprbowa otrzyma pakiet odpowiadajcy zarwno z serwera, jak i potencjalnego systemu z firewallem, a nastpnie porwna wartoci TTL obu pakietw. Jeli wartoci te bd si rni, bdzie to prawdopodobnie wiadczyo o istnieniu firewalla.

4

hakin9 Nr 1/2006

www.hakin9.org

Omijanie firewalli

Aby zmusi oba systemy do odpowiedzi, moemy wysa jeden pakiet na port otwarty, a drugi na zamknity port docelowego systemu w naszym przypadku odpowiednio 80 TCP i 99 TCP (patrz Listing 5). Jak wida, wartoci TTL rni si o 1. Oznacza to, e znalelimy firewall chronicy docelowy serwer.

Listing 5. Porwnanie wartoci TTL# hping2 -S -p 80 -c 1 www.randomname.com HPING www.randomname.com (eth0 192.100.100.10): S set, 40 headers + 0 data bytes len=46 ip=192.100.100.10 flags=SA DF seq=0 ttl=55 id=0 win=5840 rtt=7.6 ms # hping2 -S -p 99 -c 1 www.randomname.com HPING www.randomname.com (eth0 192.100.100.10): S set, 40 headers + 0 data bytes len=46 ip=192.100.100.10 flags=RA DF seq=0 ttl=56 id=0 win=0 rtt=7.6 ms

Okrelanie typu firewalla

Powysze techniki pozwalaj zdoby dowd na istnienie firewalla. Jeli uda nam si okreli adres IP tego urzdzenia, za pomoc sztuczek bdziemy mogli zdoby dodatkowe informacje, takie jak typ zapory i uyty system operacyjny.

Listing 6. Wykrywanie systemu operacyjnego i firewalla za pomoc narzdzia nmap# nmap -sS -F -n -O -p 80,99,443 192.168.190.1 Starting nmap 3.50 ( http://www.insecure.org/nmap/ ) at 2005-10-09 17:23 CEST Interesting ports on 192.168.190.1: PORT STATE SERVICE 80/tcp open http 99/tcp closed metagram 443/tcp open https Device type: firewall|broadband router|general purpose Running: Checkpoint Solaris 8, Belkin embedded, Sun Solaris 8 OS details: Checkpoint Firewall-1 NG on Sun Solaris 8, Belkin DSL/Cable Router, Sun Solaris 8, Sun Trusted Solaris 8

TCP fingerprinting

Wykorzystajmy fakt, e kady stos IP w systemie posuguje si okrelonymi wzorcami, ktre mona wykorzysta do okrelenia typu i wersji systemu operacyjnego. Poniewa wikszo programowych firewalli wpywa na zachowanie stosu IP, czsto mona take okreli typ i wersj zainstalowanej zapory. Uyjemy rzecz jasna narzdzia nmap, majcego wbudowan funkcj wykrywania systemu operacyjnego (patrz Listing 6). Wystarczy przeskanowa trzy porty, by z duym prawdopodobiestwem okreli, e nasza zapora to Checkpoint Firewall-1 NG uruchomiona w systemie Solaris. Zajmijmy si innym firewallem (Listing 7) Symantec Enterprise Firewall. Jak wida, nmap nie by w stanie okreli systemu operacyjnego i typu zapory, ale mnogo otwartych portw moe wskazywa na to, e jest to firewall oparty na proxy. Producentw takich rozwiza jest za niewielu. W tej sytuacji, poza fingerprintingiem za pomoc narzdzia nmap, warto przyjrze si portom typowym dla rnych producentw zapr. Na przykad wspomniany Symantec Enterprise Firewall (SEF) uywa dwch charakterystycznych portw, 2456 TCP do administracji przez WWW i 888 TCP

Listing 7. Fingerprinting zapory Symantec Enterprise FirewallStarting nmap 3.50 ( http://www.insecure.org/nmap/ ) at 2005-10-10 13:43 CEST Interesting ports on 192.168.99.1: (The 1193 ports scanned but not shown below are in state: closed) PORT STATE SERVICE 21/tcp open ftp 22/tcp open ssh 23/tcp open telnet 25/tcp open smtp 53/tcp open domain 80/tcp open http 119/tcp open nntp 139/tcp open netbios-ssn 443/tcp open https 481/tcp open dvs 512/tcp open exec 513/tcp open login 514/tcp open shell 554/tcp open rtsp 1720/tcp open H.323/Q.931 2456/tcp open unknown 5631/tcp open pcanywheredata 7070/tcp open realserver No exact OS matches for host (If you know what OS is running on it, see http://www.insecure.org/cgi-bin/nmap-submit.cgi).

do uwierzytelniania Out of Band. Porwnanie wynikw skanowania z Tabel 1 przybliy nas nieco do okrelenia typu firewalla (przy okazji dobrze skonfigurowany firewall warstwy aplikacji nie bdzie

mia tylu otwartych zewntrznych portw). Checkpoint Firewall-1 take korzysta z charakterystycznych portw, midzy innymi administracyjnych 256264 TCP oraz 1818018265 TCP.

www.hakin9.org

hakin9 Nr 1/2006

5

Technika

Listing 8. Sprawdzanie banerw# > < < < < < < < < netcat www.raptorfirewall.nix 80 HEAD / HTTP/1.0 HTTP/1.1 503 Service Unavailable MIME-Version: 1.0 Server: Simple, Secure Web Server 1.1 Date: Fri, 17 Sep 2004 19:08:35 GMT Connection: close Content-Type: text/html Firewall Error: Service Unavailable

Warto take wiedzie, e nmap nie jest jedynym narzdziem, ktre mona wykorzysta do skanowania firewalli pomocne s take narzdzia takie jak xprobe czy p0f. Wicej przydatnych informacji o fingerprintingu opublikowalimy w Artykule OS fingerprinting jak nie da si rozpozna, hakin9 4/2004.

Sprawdzanie banerw

Listing 9. Normalne skanowanie i skanowanie z portw rdowych# nmap -sS -p 1-65535 192.168.0.1 Starting nmap 3.50 ( http://www.insecure.org/nmap/ ) at 2005-10-09 17:01 CEST Interesting ports on 192.168.0.1: (The 1658 ports scanned but not shown below are in state: closed) PORT STATE SERVICE 80/tcp open http Nmap run completed -- 1 IP address (1 host up) scanned in 6.607 seconds

# nmap -sS -g 80 -p 1024-65535 192.168.0.1 Starting nmap 3.50 ( http://www.insecure.org/nmap/ ) at 2005-10-09 17:01 CEST Interesting ports on 192.168.0.1: (The 1657 ports scanned but not shown below are in state: closed) PORT STATE SERVICE 80/tcp open http 6000/tcp open X11 Nmap run completed -- 1 IP address (1 host up) scanned in 6.607 seconds

Aby zdoby wicej danych i upewni si, z jakim firewallem mamy do czynienia, moemy wykorzysta technik sprawdzania banerw. Na przykad acuch tekstu Server: Simple, Secure Web Server 1.1 pozwoli nam z atwoci zidentyfikowa demon HTTP jako cz zapory Symantec Personal Firewall (Listing 8). Trzeba pamita, e takie dane nie s zbyt wiarygodne w przypadku wikszoci demonw mona je atwo zmieni. Jednak w poczeniu z informacjami uzyskanymi podczas fingerprintingu TCP i numerami otwartych portw staj si cenn przesank uatwiajc identyfikacj typu zapory.

Omijanie firewalli

Tabela 1. Otwarte porty, ktre mog pomc okreli typ firewalla Firewall Symantec Enterprise Firewall Symantec Enterprise Firewall Checkpoint FW1-NG Checkpoint FW1-NG Checkpoint FW1-NG Checkpoint FW1-NG Numer portu 888/TCP 2456/TCP 256/TCP 257/TCP 18181/TCP 18190/TCP Przeznaczenie Demon OOB Administracja przez WWW Zarzdzanie FW1_log OPSEC, protok Content Vectoring Protocol Interfejs administracyjny

Kiedy intruz pozna ju typ zastosowanego firewalla, ma kilka moliwoci, by go omin. Przyjrzyjmy si sposobom zdobywania nieuprawnionego dostpu do systemw chronionych zapor, takim jak wykorzystywanie le skonfigurowanych list dostpu, saboci protokow czy bdw w oprogramowaniu.

Ataki portu rdowego

Zacznijmy od prostych filtrw pakietw. Podejmuj one decyzje, analizujc nagwki IP lub TCP/UDP kadeDziaanie Zezwl Opis Zezwolenie na dania HTTP pochodzce od klienta Zezwolenie na odpowied serwera na danie HTTP Regua czyszczca

Tabela 2. Minimalna lista dostpu dla ruchu HTTP L.p. rdowy adres IP 1 Wewntrzny Docelowy adres IP Zewntrzny Port rdowy >1024 TCP Port docelowy 80 TCP

2

Zewntrzny

Wewntrzny

80 TCP

>1024 TCP

Zezwl

3

Dowolny

Dowolny

Dowolny

Dowolny

Odrzu

6

hakin9 Nr 1/2006

www.hakin9.org

Omijanie firewalli

Tryby FTP: aktywny i pasywny

Protok FTP wykorzystuje do komunikacji dwa kanay pomidzy klientem a serwerem. Kana komend jest uywany do wysyania polece serwerowi i odpowiedzi do klienta. Jeeli przesyane s dane (wysyanie lub pobieranie pliku, pobieranie listy zawartoci katalogu), zostaje ustanowiony dodatkowy kana danych. Protok FTP stosuje dwa tryby nawizywania kanau danych aktywny i pasywny. Rnica midzy nimi polega na tym, ktra strona inicjuje ten typ poczenia. W przypadku trybu aktywnego serwer FTP czy si z klientem. Nastpnie klient FTP informuje serwer za pomoc komendy PORT, pod jakim adresem IP i na jakim porcie bdzie nasuchiwa pocze z serwera. Natomiast w trybie pasywnym to wanie klient FTP czy si z serwerem, a potem serwer musi poinformowa klienta, jaki adres i port umoliwia nawizanie kanau danych. W celu wejcia w tryb pasywny klient FTP musi wysa komend PASV. W odpowiedzi serwer nadele klientowi informacj o gniazdach w formacie IP,IP,IP,IP,Hbyte,Lbyte, gdzie Hbyte i Lbyte to porty, z ktrymi naley si poczy. Natomiast oktety adresu IP s oddzielone przecinkami, nie kropkami (patrz te Rysunki 2 i 3).

go pakietu. Zwykle sprawdzaj rdowy i docelowy adres IP oraz docelowy i rdowy port w celu podjcia decyzji o przepuszczeniu lub zablokowaniu pakietw. Aby stworzy prost regu dostpu pozwalajc uytkownikom wewntrznej sieci surfowa po Internecie (czyli sieci zewntrznej), potrzebujemy dwch regu jednej dla pakietw wychodzcych (da HTTP) i drugiej dla przychodzcych (odpowiedzi z serwera). Stworzenie odpowiedniej reguy wymaga jedynie wiedzy o tym, e serwer WWW nasuchuje domylnie na porcie 80 TCP, za numeru portu rdowego wybieranego przez klienta HTTP (przegldark) nie da si przewidzie, cho zazwyczaj jest on wyszy ni 1024. Tabela 2 prezentuje minimaln list dostpu dla takiej sytuacji. Na pierwszy rzut oka ten zestaw regu nie wyglda niebezpiecznie. L.p. 1 rdowy adres IP Wewntrzny Docelowy adres IP Zewntrzny

Regua 1 zezwala na wychodzce dania HTTP, za regua 2 zezwala na pakiety odpowiadajce. Trzecia regua suy do blokowania pozostaego ruchu, wic zostaa nazwana regu czyszczc. Jednak jeli przyjrzymy si bliej regule 2, zobaczymy, e pakiet pochodzcy z Internetu, skierowany do sieci wewntrznej, nadchodzcy z portu rdowego 80 i przychodzcy na port wyszy ni 1024, przedostanie si przez filtr pakietw. Taka technika nosi nazw ataku wysokiego portu (high port attack) lub ataku portu rdowego (source port attack). Wykorzystuje ona bowiem fakt, e atakujcy musi tylko zmodyfikowa swojego klienta do wykorzystywania znanego portu, na przykad 80 TCP, jako portu rdowego. Dziki temu bdzie mg zaatakowa usugi za firewallem nasuchujce na wysokich portach. Niektre z takich usug to serwer X-WinPort rdowy >1024 TCP Port docelowy Flaga TCP 80 TCP SYN

dow (6000-6063/TCP), Windows Terminal Server (3389 TCP) oraz popularne porty aplikacji webowych, takich jak Jakarta Tomcat (8080 TCP) czy BEA WebLogic (7001 TCP). Do sprawdzenia, czy nasz firewall jest podatny na ten atak moemy uy narzdzia nmap z opcj -g, co pozwoli nam zdefiniowa port rdowy. Listing 9 prezentuje rnic midzy skanowaniem normalnym a wykorzystujcym port rdowy. Jak wida, za pomoc tej prostej techniki odkrylimy jeszcze jeden otwarty port (6000 TCP). Jednak intruz nie bdzie w stanie poczy si z tym portem, chyba e port rdowy klienta bdzie ustawiony na 80 TCP. Najprostsz metod nawizania poczenia za pomoc portu rdowego jest uycie programu Fpipe firmy Foundstone. Jest to narzdzie dla Windows, lecz dziaa take w Linuksie (pod Wine). Uruchomienie go z nastpujcymi opcjami:> FPipe -l 100 -s 80 -r 6000 192.168.0.1

otworzy demona nasuchujcego na lokalnym porcie 100. Wszystkie pakiety wysane na ten port bd mie w nagwku port rdowy 80 i zostan przekierowane na adres 192.168.0.1:6000. Jeli testujemy podatno firewalla na ataki z portw rdowych, powinnimy take przeprowadzi prby przy uyciu portw 53 (DNS), 21 (FTP) i 88 (Kerberos) przeznaczenie tych protokow sprawia, e zwizanie z nimi reguy czci zapr s bardzo sabe. Na przykad CheckDziaanie Zezwl Opis Zezwolenie na wychodzcy od klienta ruch HTTP Zezwolenie serwerowi na odpowiedzi na dania HTTP Regua czyszczca

Tabela 3. Zestaw regu firewalla stanowego dotyczcych ruchu HTTP

2

Zewntrzny

Wewntrzny

80 TCP

>1024 TCP

!SYN

Zezwl

3

Dowolny

Dowolny

Dowolny

Dowolny

Dowolna

Odrzu

www.hakin9.org

hakin9 Nr 1/2006

7

Technika

na regua zezwala na cay ruch pochodzcy ze rdowego portu 88 (Kerberos). Zapobieganie temu atakowi wymaga zmian w rejestrze systemowym.

Firewalle stanowe

Rysunek 2. Dziaanie aktywnego trybu FTP

Aby uniemoliwi atakujcemu nawizywanie pocze z wewntrznymi systemami przez symulowanie odpowiedzi na wczeniejsze dania, firewall musi potrafi rozrnia pakiety odpowiadajce od pakietw nawizujcych nowe poczenie. Zapora moe w tym celu sprawdza rne flagi wewntrz nagwkw TCP. Poniewa kada nowa sesja TCP/IP rozpoczyna si od ustawionej flagi SYN, a wszystkie kolejne pakiety maj ustawion przynajmniej flag ACK, jest to znaczne uatwienie dla firewalla. W dodatku wewntrzna tablica stanw pomaga ledzi sesje, szczeglnie w przypadku komunikacji UDP. Jak moemy zobaczy w Tabeli 3, odpowied serwera HTTP zostanie przepuszczona tylko wtedy, jeli nagwek TCP nie ma ustawionej flagi SYN (negacja wyraona za pomoc znaku wykrzyknika). W takim wypadku atak z portu rdowego ju nie zadziaa (chyba e kto uywajcy iptables zapomni ustawi pozycji !SYN w regule), a intruz bdzie musia poszuka innej techniki.

Rysunek 3. Dziaanie pasywnego trybu FTP point FW1 do wersji 4.1 uywa sugerowanych regu (Implied rules), zezwalajcych na cay ruch DNS w dowolnym kierunku. L.p. 1 2 3 4 5 rdowy adres IP Docelowy adres IP Implementacja filtra IPSec firmy Microsoft, ktr mona skonfigurowa jako lokalny firewall, ma podobn luk. Wbudowana, niewidoczPort rdowy >1024 TCP Port docelowy 21 TCP >1024 TCP >1024 TCP 20 TCP Dowolny Flaga TCP SYN !SYN SYN !SYN Dowolna

Wykorzystywanie aktywnego trybu FTP

Jednym z najczciej uywanych w Internecie protokow jest FTP (File Transfer Protocol). ProtoDziaanie Zezwl Zezwl Zezwl Zezwl Odrzu Opis Kana komend Kana komend Kana danych Kana danych Regua czyszczca

Tabela 4. Zestaw regu zezwalajcy na aktywne poczenia FTP

Wewntrzny Zewntrzny Zewntrzny Zewntrzny

Wewntrzny 21 TCP Wewntrzny 20 TCP >1024 TCP Dowolny

Wewntrzny Zewntrzny Dowolny Dowolny

8

hakin9 Nr 1/2006

www.hakin9.org

Omijanie firewalli

k ten moe dziaa na dwa rne sposoby w trybie aktywnym lub pasywnym (patrz Ramka Tryby FTP: aktywny i pasywny). Najwaniejsz rnic midzy nimi jest sposb nawizywania pocze. W trybie aktywnym klient FTP tworzy kana komend, za serwer tworzy kana danych. W trybie pasywnym oba kanay s ustalane przez klienta FTP. Atak na aktywny tryb FTP jest bardzo podobny do ataku na porty rdowe. Jednak w tym wypadku tryb aktywny wymusza na firewallu akceptacj pakietw przychodzcych z ustawion flag SYN dla kanau danych (w Tabeli 4 znajduje si przykadowy zestaw regu). Oznacza to, e nawet jeli zapora sprawdza flagi SYN, nie uchroni to przed intruzem prbujcym nawiza poczenie na porty wysze ni 1024 ze rdowego portu 20. Aby sprawdzi, czy firewall jest podatny na ten typ ataku, moemy uy programu nmap tym razem z opcj -g 20, zamiast -g 80 jak w poprzednim przypadku. Do zmodyfikowania portu rdowego w celu nawizania poczenia z wewntrzn usug na wysokim porcie mona uy programu Fpipe.

Listing 10. Komunikacja w trybie pasywnym FTP# < > < > < > < nc ftp.hakin9.org 21 220-Welcome to hakin9.org. user anonymous 331 Please specify the password. pass secret 230 Login successful. pasv 227 Entering Passive Mode (192,168,200,23,230,242)

Listing 11. Otwarcie porty za pomoc pasywnego trybu FTP# nc ftp.hakin9.org 21 220-Welcome to hakin9.org. user anonymous 331 Please specify the password. pass secret 230 Login successful. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA227 Entering Passive Mode (192,168,200,23,0,2) 500 command not understood: 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA227 Entering Passive Mode (192,168,200,23,0,22)'

Wykorzystanie pasywnego FTP

powiedzi serwer (linia sma) wskazuje klientowi, ktry adres IP i port bdzie akceptowa poczenie w kanale danych. Chronica serwer FTP zapora nie ma informacji wystarczajcych do okrelenia, ktry port zostanie wybrany na kana danych przez serwer. Istniej dwie moliwoci modyfikacji regu w celu zezwolenia na komunikacj: Otwarcie wszystkich wysokich portw dla pocze przychodzcych do serwera FTP. Jest to

bardzo niebezpieczne, szczeglnie w przypadku istnienia wielu serwerw w jednej sieci, wic to rozwizanie nie jest zalecane. Analiza komunikacji midzy klientem a serwerem. Jeeli firewall zarejestruje w kanale komend polecenie w postaci 227Entering Passive Mode (IP,IP,IP,I P,Hbyte,Lbyte)

Wikszo wspczesnych serwerw FTP umoliwia stosowanie trybu pasywnego, niestety nie mona tego powiedzie o wielu klientach (choby domylnym kliencie FTP firmy Microsoft). Jednak nawet korzystanie z pasywnego FTP moe nie wystarczy do ochrony systemu przed niechcianym dostpem do wewntrznych komputerw. Zajmijmy si wic komunikacj FTP w trybie pasywnym aby zwikszy czytelno przykadw, do nawizywania pocze uyjemy narzdzia netcat (patrz Listing 10). Pierwsze sze linii to standardowa komunikacja FTP dotyczca czenia i logowania do serwera. W sidmej linii serwer FTP jest informowany o wykorzystaniu pasywnego trybu do transferu danych. W od-

wysane z serwera do klienta, stworzy tymczasow regu zezwalajc na poczenie przychodzce na adres IP i port zdefiniowane w komendzie.

Rysunek 4. Skanowanie FTP bounce

www.hakin9.org

hakin9 Nr 1/2006

9

Technika

Przy takiej konfiguracji mona oszuka zapor, zmuszajc j do otwarcia wybranego portu. Poniewa parametr w formacie IP,IP,IP,IP,Hbyte,Lbyte jest wysyany przez kana komend od serwera do klienta, intruz moe zmusi serwer FTP do wysania spreparowanego komunikatu. Mona to zrobi przez wymuszenie komunikatu o bdzie zawierajcego acuch dotyczcy poczenia pasywnego. Jeeli do serwera FTP zostanie wysana nieistniejca komenda, w niektrych przypadkach zwrci on komunikat o bdzie zawierajcy wysan komend, na przykad cannot understand command AAAAAAAAAAA227 Entering Passive Mode 1,2,3,4,0,22. Jeli wic obliczymy rozmiar komunikatu o bdzie w taki sposb, by nie mieci si w jednym pakiecie IP, a nieistniejca komenda znajdzie si w osobnym pakiecie (a cig komendy zwizanej z poczeniem pasywnym znajdzie si w nastpnym pakiecie), by moe uda si otworzy dodatkowy port na firewallu. Gdy firewall odczyta pierwszy pakiet zawierajcy znaki A , po prostu przekae pakiet. Ale jeeli odczyta te acuch 227 Entering Passive Mode (192,168,200,23,0,22), stworzy tymczasow regu zezwalajc na poczenie klienta FTP z portem 22 serwera 192.168.200.23. Podobny mechanizm tworzenia dynamicznych filtrw moe by te wykorzystywany w innych protokoach, takich jak sqlnet Oracle.

Fragmentacja

Kady system operacyjny prbuje ustawi maksymalny rozmiar pakietu IP tak, by by on rwny maksymalnemu rozmiarowi ramki w warstwie 2. W przypadku Ethernetu to maksimum jest rwne 1518 bajtom i nosi nazw Maximum Transfer Unit (MTU). Poniewa ramka Ethernet potrzebuje 18 bajtw na dane nagwkowe, przestrze dostpna dla pakietu IP to 1500 bajtw. Podczas wdrwki w sieci pakiet IP moe napotka ruter, ktry w zwizku z ograniczeniami w stosowanej technologii warstwy 2 nie bdzie w stanie przyjmowa tak duych pakietw. Aby dane mogy przej przez urzdzenie o MTU mniejszym ni 1500, musz zosta podzielone na wiele mniejszych pakietw. To zjawisko nazywa si fragmentacj. Z kolei serwer docelowy musi zebra wszystkie fragmenty IP i poukada je w odpowiedniej kolejnoci ten proces nosi nazw reasemblacji. Wymaga on pewnej iloci danych, by poskada pakiety w poprawnym porzdku i nie wymiesza fragmentw z rnych pocze przychodzcych do tego samego serwera. Nagwek IPv4 zawiera dwa pola niezbdne do reasemblacji Fragment offset i Identification (ID). Kady fragment tego samego datagramu ma takie samo pole ID. Umoliwia to stosowi IP rozpoznanie wszystkich pakietw nalecych do datagramu. Do ukadania pakietw w odpowiedniej kolejnoci uywane jest pole Fragment Offset. Pierwszy fragment pakietu ma zerowy offset, za kady nastpny zwiksza si o dugo czci fragmentu z danymi. Bit More fragments (MF) nagwka IP okrela, czy aktualny fragment jest ostatni.

Skanowanie FTP bounce

nastpujca: IP,IP,IP,IP,Hbyte,Lbyte, na przykad PORT 192,168,100,10,0,123. Serwer jest wtedy w stanie nawiza poczenie z adresem 192.168.100.10:123. Zrozumiae jest, e adres IP nie musi si ogranicza do adresu klienta niektre serwery FTP zezwalaj na uycie dowolnego adresu. Po wydaniu polecenia w rodzaju dir serwer prbuje poczy si z okrelonym adresem IP i portem. W zalenoci od tego, czy port jest zamknity czy otwarty, serwer zwrci kod bdu lub kod sukcesu. Analiza kodu statusu umoliwia atakujcemu sprawdzenie stanu portu. Program nmap umoliwia skanowanie FTP bounce:$ nmap -b \ anonymous@myftpserver:21 \ targetserver

datnoci na atak proxy bouncing jest ustawienie zewntrznego interfejsu firewalla jako proxy HTTP i prba przegldania stron na lokalnych serwerach WWW. Ustawienie proxy dla przegldarki Lynx wyglda nastpujco:# http_proxy='mojfirewall.pl:8080' # no_proxy='localhost' # export http_proxy no_proxy

Przegldanie lokalnych stron WWW jest ju proste:# lynx 192.168.100.20

Skanowanie FTP bounce (patrz Rysunek 4) wykorzystuje funkcje aktywnego FTP do skanowania systemw za firewallem. Serwer tworzy kana danych, nawizujc poczenie z otwartym portem klienta FTP. Poniewa serwer nie jest w stanie rozpozna portu wykorzystywanego przez klienta do transferu danych, dostarczenie tych informacji za porednictwem kanau komend staje si obowizkiem wspomnianego klienta. Operacj t wykonuje si za pomoc komendy PORT. Skadnia jest

HTTP proxy bouncing

Programowe firewalle czsto filtruj ruch HTTP, dziaajc na zasadzie proxy HTTP, transparentnego lub nie. Problem z takim proxy polega na tym, e jeli jest le skonfigurowane, moe dawa dostp do wewntrznych serwerw. Najatwiejszym sposobem przetestowania zapory pod ktem po-

Ciekaw cech tej techniki jest fakt, e za jej pomoc mona dosta si z zewntrz nawet do prywatnych adresw IP atakujcy czy si tylko z oficjalnym adresem firewalla i wysya do demona HTTP danie poczenia z celem. Poniewa demon zna rwnie wewntrzne, prywatne adresy IP, moe si z nimi poczy. Warto rwnie sprbowa zdoby dostp do rnych portw wewntrznych serwerw:# lynx 192.168.100.20:25

Jednak niektre przegldarki, jak Mozilla Firefox, domylnie blokuj

10

hakin9 Nr 1/2006

www.hakin9.org

Omijanie firewalli

takie dania po stronie klienta. Lepiej wic wykonywa testy za pomoc narzdzi netcat czy telnet.

HTTP Connect

Polecenie HTTP CONNECT zwykle jest uywane do tunelowania ruchu SSL przez serwer proxy. Serwer ten po prostu otwiera sesj TCP pomidzy proxy a docelowym serwerem i przekazuje dane klienta. Niestety, niektre firewalle nie sprawdzaj poprawnoci docelowych adresw IP oraz portw, tym samym otwierajc intruzom moliwoci ataku. Zapory powinny by konfigurowane tak, by porty suce do administracji byy dostpne wycznie z wewntrznych interfejsw sieciowych. Uniemoliwia to atakujcym wykorzystanie eksploitw przeciwko demonowi logowania uytkownikw lub zgadywanie hase firewalla. Podatno zwizana z poleceniem CONNECT umoliwia intruzom nawizywanie poczenia z interfejsem administratora z zewntrznych sieci:# nc firewall 8080 CONNECT 127.0.0.1:22 HTTP/1.0 SSH-1.99-OpenSSH_3.8p1

Rysunek 5. Zwyka reasemblacja pakietw TCP

Rysunek 6. Atak nakadajcych si fragmentw nadpisanie nagwka

Atak nakadajcych si fragmentw

Atakujcy mog take wykorzysta CONNECT do nawizywania pocze z wewntrznymi systemami. Polecenie to tak samo jak atak proxy bounce umoliwia czenie si z wewntrznymi maszynami za pomoc prywatnych adresw IP:# nc firewall 8080 CONNECT 10.1.1.100:25 HTTP/1.0 220 mailserver ESMTP

Jak wida, sprawdzanie firewalli pod ktem podatnoci CONNECT jest bardzo atwe. Ta sama technika moe by uywana do zdobywania informacji o wewntrznych zakresach adresw IP i do skanowania przypominajcego atak FTP bounce. Co ciekawe, czoowe firewalle, takie jak Checkpoint FW1 lub Astaro Secure Linux, byy w starszych wersjach podatne na ataki HTTP Connect.

Celem ataku nakadajcych si fragmentw (overlapping fragment) jest nadpisanie danych z nagwka UDP lub TCP ju po podjciu przez firewall decyzji w oparciu o pierwszy fragment. Jeeli podczas komunikacji TCP lub UDP wystpi fragmentacja, tylko pierwszy fragment zawiera dane z nagwka TCP/UDP (takie jak port docelowy). Atak ten mona przeprowadzi na przykad wtedy, gdy regua firewalla zezwala na poczenia z portem 80 TCP serwera WWW, ale jednoczenie zabrania pocze z demonem SSH na tym samym serwerze (port 22). Atakujcy fragmentuje datagram IP (patrz Ramka Fragmentacja) i ustawia w nagwku TCP port docelowy na 80. Fragment dociera do firewalla i spenia wymogi reguy Allow. Poniewa wszystkie fragmenty IP datagramu maj ten sam adres IP i pole ID, firewall przepuszcza wszystkie nastpne fragmenty z tym samym IP i tymi samymi adresami IP (rdowym i docelowym), ktre mia pierwszy fragment. Offset pierwszego datagramu jest zerowy, za jego koniec znajduje si na przykad w bajcie 128. Offset drugiego fragmentu powinien mie warto rozpoczynajc si zaraz po bajcie 128. Jeli offset

jest mniejszy ni 128, cz pierwszego fragmentu zostanie nadpisana (tak zwany offset ujemny). Jeeli atakujcy obliczy offset drugiego fragmentu w taki sposb, by nadpisa on docelowy port nagwka TCP, bdzie mona zmieni warto portu z 80 na 22 (patrz Rysunki 5 i 6). Po zakoczeniu procesu reasemblacji, na firewallu lub docelowym hocie, zostaje nawizane poczenie na port 22 TCP (zamiast 80). Ominicie firewalla si powiodo. Istnieje kilka innych implementacji atakw wykorzystujcych fragmentacj w Ramce W Sieci mona znale przykad ciekawej techniki agresji na IPFilter w systemach z rodziny BSD.

Ataki wykorzystujce tunelowanie

Intruz moe mie potrzeb komunikowania si przez firewall, na przykad z koniem trojaskim lub tyln furtk zainstalowan w wewntrznym systemie. Atakujcy wysya, dajmy na to, polecenia do trojana i chce otrzyma rezultaty tych komend z powrotem. Jeli reguy filtrowania zapory umoliwiaj tylko ruch wychodzcy w typowych protokoach, takich jak HTTP, FTP czy DNS, intruz musi uy do komunikacji jednego z nich. Na nieszczcie dla atakuj-

www.hakin9.org

hakin9 Nr 1/2006

11

Technika

Tabela 5. Przykady podatnoci firewalli Produkt Checkpoint Secure Platform Checkpoint VPN-1 Checkpoint VPN-1 Cisco IOS Firewall Cisco Catalyst 6500/6700 Podatno Moliwo ominicia regu firewalla Przepenienie bufora ASN.1 Przepenienie bufora ISAKMP Przepenienie bufora proxy uwierzytelniajcego Moliwo ominicia moduu ACL usug firewalla mania spreparowanej nazwy hosta, na przykad b2xpdmVyIGthcm93.zladomena.com, gdzie b2xpdmVyIGthcm93 to zakodowane dane. Poniewa wewntrzny serwer nazw nie obsuguje tej domeny, przekae danie do serwera NSTX atakujcego. Serwer DNS intruza moe wydoby i odkodowa nazw hosta z dania. Aby mc odesa dane z powrotem do klienta, serwer nazw atakujcego umieszcza dane w rekordzie TXT. Jest to wolny tekstowy rekord, ktry moe by uywany do innych celw na przykad do publikowania kluczy PGP. Firewall bdzie mia wic kopot z rozrnieniem midzy poprawnym rekordem TXT a ukryt informacj od trojana. Wicej informacji o atakach wykorzystujcych tunelowanie mona znale w dokumencie Firewall Piercing (patrz Ramka W Sieci).

O autorze

Oliver Karow pracuje jako gwny konsultant ds. bezpieczestwa u jednego z producentw rozwiza w zakresie bezpieczestwa. Obecnie koncentruje si na firewallach, technologiach IDS/IPS, audytach bezpieczestwa i testach penetracyjnych. Oliver studiuje te informatyk na jednej z niemieckich uczelni korespondencyjnych. Pracuje w brany IT od 1994 r. a od roku 1999 zajmuje si bezpieczestwem informatycznym.

cego niektre wspczesne firewalle sprawdzaj skadni ruchu warstwy aplikacji pod ktem zgodnoci z dokumentami RFC. Jeeli zawarto poczenia nie jest zgodna z RFC, zostanie ono zablokowane. Intruzi o tym wiedz i wykorzystuj w atakach tunelowanie, korzystajc z narzdzi, ktre nie naruszaj zasad okrelonych w RFC ukrywaj dane w poprawnych poleceniach protokow. Jeli dodatkowo dane te s zakodowane lub zaszyfrowane za pomoc 7-bitowych znakw ASCII, wykrycie ich przez firewall jest prawie niemoliwe. Dobrym przykadem s tunele oparte na protokoach DNS i HTTP. Mimo e narzdzia do tunelowania HTTP zgodne z RFC takie jak rwwwshell (patrz Ramka W Sieci) s wzgldnie atwe w implementacji. tunele DNS s nieco bardziej skomplikowane. Ciekawym tunelem DNS wykorzystujcym midzy innymi technik zwan namedropping jest ten wykorzystujcy protok Name Server Transport Protocol (NSTX), wymaga on jednak klienta i serwera zgodnego z NSTX. W dodatku serwer musi by autorytatywny dla domeny (patrz Ramka W Sieci). Wyobramy sobie, e atakujcy jest autorytatywny dla domeny zladomena.com i e skutecznie zaatakowa ju serwer wewntrz sieci chronionej przez firewall. Intruz chce mie moliwo zdalnej kontroli nad systemem z zewntrz wysya polecenia i otrzymywa odpowiedzi. Jeeli klient chce przesa dane do serwera, wysya danie otrzy-

najmniejszego problemu atakujcy moe go skonfigurowa wedug wasnych potrzeb. W przypadku podatnoci dajcych intruzom zdalny dostp do powoki, wszystkie ataki na wewntrzne systemy pochodz z adresu IP zapory. Brak wielopoziomowego firewalla oznacza brak dalszych zabezpiecze sieci. Podatnoci zwizane ze zdalnym wykonaniem kodu s niestety odnajdowane w czoowych firewallach cakiem czsto. Wystarczy zajrze na stron http:// www.securityfocus.com/ (patrz Tabela 5).

Wnioski

Podatnoci firewalli

Bezpieczestwo sieci zaley od zabezpiecze firewalla. Jeli ten ostatni jest podatny na ataki przepenienia bufora, mona go omin bez

Jest wiele metod ominicia firewalli. niektre z nich wynikaj z maych moliwoci produktw, inne za ze zej konfiguracji bd luk w urzdzeniach. Jednak wdroenie wielopoziomowej technologii penostanowych firewalli i regularne kontrole rodowiska zapory mog zapewni dobr ochron wewntrznych sieci. l

W Sieci http://cert.uni-stuttgart.de/archive/bugtraq/2001/04/msg00121.html Thomas Lopatic, A fragmentation attack against IP Filter, http://www.ccc.de/congress/2004/fahrplan/files/221-firewallpiercing _21c3.pdf Maik Hensche i Frank Becker Firewall Piercing Creative exploitation of valid Internet protocols, http://www.thc.org/download.php?t=r&f=rwwwshell-2.0.pl.gz rwwwshell, implementacja tunelu HTTP, http://www.csnc.ch/static/services/research/dnstunnel.html implementacja tunelu DNS.

12

hakin9 Nr 1/2006

www.hakin9.org