dodany: 01.02.2013 | tagi: ,

Autor:

nmap – zaawansowane techniki skanowania

15

W pierwszym artykule można było dowiedzieć się jak zainstalować nmapa, przydatny skaner sieciowy, pod kontrolą różnych systemów operacyjnych. Drugi artykuł poruszał tematykę portów oraz ich stanów, ponadto zawierał informacje o podstawowych, lecz niedomyślnych sposobach skanowania. Taka wiedza powinna zupełnie wystarczyć do powierzchownych testów swojej zapory sieciowej, ale lepiej nie zakładać, że atakujący nie wykorzysta zaawansowanej metody skanowania w celu odnalezienia luki.

 

Zanim jednak przejdziemy do takich technik, warto zapoznać się z jeszcze jednym, względnie rzadko spotykanym protokołem. STCP jest alternatywą protokołów TCP i UDP łączącą większość ich cech, ale dodającą takie funkcje jak wielopowrotowe wsparcie oraz przesył pakietów w niezależnych strumieniach. Skanowanie SCTP INIT (-sY) jest analogicznym rodzajem skanowania do TCP SYN. Może być szybko przeprowadzone dzięki skanowaniu tysięcy portów na sekundę w sieci nieograniczonej zaporami, ponadto jasno wyróżnia otwarte, zamknięte i filtrowane porty.

Tak jak TCP SYN, SCTP bywa nazywane skanowaniem z połowicznym otwieraniem połączeń. Nmap wysyła pakiet inicjujący połączenie, tak jakby faktycznie miał je nawiązać, po czym oczekuje na odpowiedź od sprawdzanego systemu. W przypadku otrzymania odpowiedzi (INIT-ACK) port jest otwarty, natomiast odpowiedź ABORT świadczy odwrotność. Jeżeli nmap nie otrzyma odpowiedzi, port uznany jest za filtrowany. To tyle w kwestii podstawowych technik.

Istnieją trzy predefiniowane rodzaje skanowania wykorzystujące do rozróżnienia stanów portów kombinacje flag nieopisane w RFC. Cytując za RFC 793: jeżeli [docelowy, przyp. aut.] port jest ZAMKNIĘTY …. w odpowiedzi na pakiet niezawierający RST, wyślij odpowiedź RST. Kolejna strona rozważa przypadki wysłania pakietu do otwartego portu bez SYN, RST, ACK: takie sytuacje są mało prawdopodobne, jeżeli jednak się zdarzą, odrzuć taki pakiet.

Podczas skanowania systemów zgodnych z tym RFC, każdy pakiet niezawierający SYN, RST lub ACK powinien zaowocować odpowiedzią RST, jeżeli dany port jest zamknięty. Jeżeli nie otrzyma się odpowiedzi, port jest otwarty. Nmap oferuje trzy przełączniki wykorzystujące takie skanowanie:

  • skanowanie null (-sN), które nie ustawia żadnych flag, przez to nagłówek TCP zawiera 0;
  • skanowanie FIN (-sF) ustawiające flagę TCP FIN;
  • skanowanie Xmas (-sX), które ustawia flagi FIN, PSH i URG podświetlając pakiet niczym bożonarodzeniową choinkę.

Te trzy typy są tak naprawdę identyczne, różnią się tylko ustawionymi flagami TCP. Jeżeli pakiet RST nie zostanie odrzucony, nmap uznaje taki port za zamknięty – brak odpowiedzi oznaczany jest stanem otwarty/filtrowany. Port jest filtrowany, kiedy nmap otrzyma błąd ICMP unreachable.

Główną zaletą tych metod jest fakt, że mogą przemknąć się przez część zapór systemowych oraz filtrujących routerów. Co więcej, takie skanowanie jest bardziej niezauważalne niż skanowanie TCP SYN. Jednak trzeba być świadomym, że dzisiejsze systemy IDS potrafią wykrywać takie pakiety. Dodatkowo nie wszystkie systemy dosłownie realizują standard RFC 793. Część z nich wysyła w odpowiedzi pakiet RST niezależnie czy port jest otwarty, czy nie, przez co wszystkie porty oznaczane są jako zamknięte. Te systemy to Windows, wiele urządzeń Cisco, BSDI i IBM OS/400, ale nie uniksopochodne. Niestety skanowanie nie rozróżnia otwartych portów od filtrowanych – stąd wynik otwarty/filtrowany.

 

Kolejną techniką skanowania jest TCP ACK (-sA). Różni się od innych metod, bo nigdy nie wykrywa czy port jest otwarty lub otwarty/filtrowany. Wbrew pozorom jest przydatny, bo służy do sprawdzania reguł filtrowania portów. Domyślnie wysyłane pakiety zawierają jedynie flagę ACK. Niefiltrowane porty odpowiadają pakietami RST i w taki sposób są oznaczone przez nmapa. Nie określa to jednak czy port jest otwarty, czy zamknięty. Nieodpowiadające porty lub wysyłające błąd ICMP oznaczane są jako filtrowane.

 

Skanowanie TCP Window (-sW) od TCP ACK różni się wyłącznie tym, że odróżnia otwarte porty od zamkniętych. Opiera się to na sprawdzaniu pola TCP Window w otrzymanym pakiecie RST. Na niektórych systemach, otwarte porty zawierają dodatnią wartość TCP Window, podczas gdy zamknięte mają to pole puste lub równe 0. Na tej podstawie oceniany jest stan portu.

Należy pamiętać o podejściu z rezerwą do tego typu skanowania, gdyż opiera się na szczególnej implementacji stosu TCP zawartej w niewielkiej ilości systemów w Internecie. Wynik skanowania odpornych systemów wskaże wszystkie porty jako zamknięte. Oczywiście to prawdopodobne, że w rzeczy samej wszystkie takie są. Jeżeli poszczególne, popularne porty zostały oznaczone jako filtrowane, maszyna może być podatna. Jeżeli z tysiąca przeskanowanych portów tylko trzy są zamknięte lub filtrowanie, mogą być tak naprawdę otwarte.

 

Skanowanie TCP Maimon (-sM) zostało nazwane na cześć swojego odkrywcy, Uriela Maimona. Opisał on sposób skanowania w 49 numerze magazynu Phrack (listopad 1996). Wydanie nmapa wspierające takie skanowanie pojawiło się dwa numery później. Skanowanie Maimona różni się od null, FIN i Xmas użyciem flagi FIN/ACK. Jak głosi RFC 793 dotyczące TCP, nmap powinien otrzymać pakiet RST niezależnie czy port jest otwarty, czy zamknięty, jednakże wiele systemów opartych na BSD zwyczajnie nie odpowiada, jeżeli port jest otwarty.

 

Skanowanie SCTP COOKIE ECHO (-sZ) jest bardziej zaawansowanym skanowaniem SCTP. Wykorzystuje ono fakt, że implementacje SCTP powinny odrzucić pakiety COOKIE ECHO docierające do otwartych portów, ale odpowiedzieć ABORT w przypadku zamkniętych. Na pierwszy rzut oka nie różni się to od skanowania SCTP INIT. Główną zaletą jest to, że powinno być mniej wykrywalne. Ponadto niektóre zapory mogą blokować pakiety INIT, ale już nie COOKIE ECHO. Jednak nie wolno myśleć, że uczyni to skanowanie niewidocznym – dobry system IDS wykryje również ten skan. Niestety ta metoda nie rozróżnia otwartych portów od filtrowanych.

 

Ostatnim zdefiniowanym typem skanowania jest FTP Bounce (-b <host ftp>). W RFC 959 dotyczącym protokołu FTP opisane są połączenia proxy za pomocą serwerów FTP. Umożliwia to połączenie się z jednym serwerem, a następnie wysłanie plików do jeszcze innego. Jak łatwo się domyślić, funkcja ta była nadużywana i dzisiaj większość serwerów nie wspiera już takich połączeń. Jednym z możliwych sposobów nadużycia było zmuszenie serwera do skanowania portów na zewnętrznej maszynie za pomocą wysyłania pliku na kolejne interesujące użytkownika porty testowanego systemu. Komunikat błędu określa czy port jest otwarty, czy nie. Jest to dobry sposób na ominięcie firmowych firewalli, gdyż firmowe serwery FTP często podłączone są do tej samej sieci, co reszta maszyn w budynku. Przełącznik -b przyjmuje argument w postaci <nazwa użytkownika>:<hasło>@<serwer>:<port>. Można pominąć nazwę użytkownika i hasło – w takim przypadku nmap używa konta anonymous. Gdy zostanie pominięty port, użyty zostanie domyślny dla serwerów FTP, to znaczy 21.

Podatność ta była bardzo popularna, kiedy nmap był świeżo wydany, ale dzisiaj większość serwerów jest już odporna. Oczywiście zawsze znajdzie się wyjątek – warto zapoznać się ze skryptem (skrypty nmapa to temat na inny artykuł) ftp-bounce, dzięki któremu można dowiedzieć się czy serwer jest narażony na taki atak.

Pozostaje jeszcze opisać całkiem niestandardowe skanowanie oferowane przez -–scanflags. Jeżeli znasz protokół TCP, jak własną kieszeń, dzięki temu przełącznikowi możesz zaprojektować własny rodzaj skanowania ustawiając samodzielnie flagi. Na pewno oszuka to twórców systemów IDS, którzy pobieżnie przejrzeli dokumentację lub kod nmapa.

Argumenty przyjmowane przez -–scanflags mogą być numerycznymi wartościami flag, jak na przykład 9 (PSH i FIN), ale korzystanie z symbolicznych nazw jest prostsze. Skanowanie za pomocą –-scanflags URGACKPSHRSTSYNFIN ustawia wszystkie flagi, ale nie jest zbyt przydatne. Kolejność podawanych flag nie ma znaczenia.

Dodatkowo użytkownik może określić typ skanowania (na przykład -sA lub –sF). Informuje on nmapa, jak ma interpretować odpowiedzi. Przykładowo, skanowanie SYN oczekuje braku odpowiedzi, aby uznać port jako filtrowany, podczas gdy FIN określi taki port jako otwarty/filtrowany. Nmap zachowa się w zależności od określonego typu z tym wyjątkiem, że wyśle inne, określone przez użytkownika flagi. Jeżeli typ skanowania nie zostanie określony, zostanie użyte skanowanie SYN.

 

Tym samym opisane zostały wszelkie sposoby skanowania za pomocą nmapa, od tych podstawowych po te, w których użytkownik sam wszystko ustala. Tak jak zatytułowany był pierwszy artykuł, nmap to tylko pozornie proste narzędzie. A do zaoferowania ma znacznie więcej – chociażby silnik skryptów, któremu być może zostanie poświęcona kolejna seria artykułów.

avatar
WebSecurity.pl to największy w Polsce portal o bezpieczeństwie sieciowym.
WebSecurity.pl to codziennie aktualizowane źródło najnowszych informacji i interesujących artykułów z zakresu bezpieczeństwa IT. Na WebSecurity.pl dzielimy się z Wami wiedzą (know-how) i umiejętnościami (how-to), publikując pomocne wskazówki, porady, kursy i tutoriale. Na portalu znajdziecie także prezentacje sprzętu oraz recenzje oprogramowania. WebSecurity.pl to również baza najciekawszych i najważniejszych wydarzeń branżowych w Polsce i na świecie.

15 odpowiedzi na “nmap – zaawansowane techniki skanowania”

  1. avatar Dawid napisał(a):

    "Drugi artykuł poruszał tematykę portów oraz ich stanów, ponadto zawierał informacje o podstawowych, lecz niedomyślnych sposobach skanowania"
    Nie znalazłem drugiego artykułu. Można jakiś link?

  2. avatar Jozef napisał(a):

    Witam.

    Nie wiem gdzie zgłaszać błędy, więc piszę tutaj.

    Zdanie „Skanowanie TCP Window (-sW) od TCP ACK różni się wyłącznie tym, że odróżnia zamknięte porty od zamkniętych.” nie brzmi zbyt logicznie.

    Poza tym bardzo ciekawy artykuł.

    Pozdrawiam.

    • avatar Michał Smereczyński napisał(a):

      Dzięki za dobrą ocenę artykułu. W przytoczonym zdaniu była oczywiście pomyłka, chodziło odróżnienie otwartych od zamkniętych.

  3. avatar Dawid napisał(a):

    Nie było i dlatego napisałem. Nie był widoczny również w kategorii artykuły, po zgłoszeniu się dopiero pojawiły…

  4. avatar Anonim napisał(a):

    obviously just like your web site but you really need to look into the spelling for a number of your content regularly. A number of these are rife by using spelling problems and that i to discover this pretty frustrating to share with reality nevertheless I most certainly will surely return yet again.

  5. You may surely call at your enthusiasm in the perform you’re posting. The market desires for extra passionate freelancers just like you who may not be fearful to say that they believe that. All of the time chase the coronary heart.

  6. avatar خرید vpn napisał(a):

    I personally delight in, bring on I found just the thing I’m writing about with regard to. You could have was over my personal a number of day time very long hunt! The almighty Bless you gentleman. Have got a terrific day time. L8rs

  7. Excellent weblog here! Also your web site lots up very fast!

    What host are you the use of? Can I get your affiliate link on your host?

    I wish my web site loaded up as fast as yours lol

  8. avatar abortion information napisał(a):

    Hello there awesome web site! Male. Superb. Excellent. We’ll search for your site and also go ahead and take feeds furthermore? I am pleased to locate loads of beneficial information listed here from the upload, we wish workout far more associated with this consideration, thanks for discussing.

  9. avatar roger hiltes napisał(a):

    Pozostaje jeszcze opisać całkiem niestandardowe skanowanie oferowane przez -–scanflags. Jeżeli znasz protokół TCP, jak własną kieszeń, dzięki temu przełącznikowi facebook

  10. avatar roger yiles napisał(a):

    Główną zaletą tych metod jest fakt, że mogą przemknąć się przez część zapór systemowych oraz filtrujących routerów. Co więcej, takie skanowanie jest bardziej niezauważalne niż skanowanie TCP SYN. e bay.com

  11. avatar andre gils napisał(a):

    Należy pamiętać o podejściu z rezerwą do tego typu skanowania, gdyż opiera się na szczególnej implementacji stosu TCP zawartej w niewielkiej ilości systemów w Internecie. Wynik skanowania odpornych systemów wskaże wszystkie porty jako zamknięte. Oczywiście to prawdopodobne ewordpressthemes.net

  12. avatar rager yolis napisał(a):

    Tak jak TCP SYN, SCTP bywa nazywane skanowaniem z połowicznym otwieraniem połączeń. Nmap wysyła pakiet inicjujący połączenie, tak jakby faktycznie miał je nawiązać, po czym oczekuje na odpowiedź od sprawdzanego systemu. W przypadku otrzymania odpowiedzi (INIT-ACK) port jest otwarty, natomiast odpowiedź ewordpressthemes.com

  13. avatar roger niles napisał(a):

    Podatność ta była bardzo popularna, kiedy nmap był świeżo wydany, ale dzisiaj większość serwerów jest już odporna. Oczywiście zawsze znajdzie się wyjątek – warto zapoznać się ze skryptem (skrypty nmapa to temat na inny artykuł) ftp-bounce, dzięki któremu można dowiedzieć się czy serwer jest narażony na taki atak. <a href="http://www.ewordpressthemes.com” target=”_blank”>www.ewordpressthemes.com

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *