-sS(skanowanie TCP SYN)

Skanowanie SYN jest domyślną i najpopularniejszą opcją skanowania nie bez powodu. Można go wykonać szybko, skanując tysiące portów na sekundę w szybkiej sieci nie ograniczonej restrykcyjnymi firewallami. Jest również stosunkowo dyskretny i niewidoczny, ponieważ nigdy nie kończy połączeń TCP. Skanowanie SYN działa na każdym zgodnym stosie TCP, a nie zależy od idiosynkrazji konkretnych platform, jak w przypadku skanowania Nmap FIN/NULL/Xmas, Maimon i idle. Pozwala to również na wyraźne, niezawodne rozróżnienie pomiędzy stanami open, closed i filtered.

Ta technika jest często określana jako skanowanie półotwarte, ponieważ nie otwiera się pełnego połączenia TCP. Wysyłasz pakiet SYN, tak jakbyś miał zamiar otworzyć prawdziwe połączenie, a następnie czekasz na odpowiedź. SYN/ACK oznacza, że port nasłuchuje (jest otwarty), podczas gdy RST (reset) oznacza, że port nie nasłuchuje. Jeśli po kilku retransmisjach nie otrzymano odpowiedzi, port jest oznaczany jako filtrowany. Port jest również oznaczony jako filtrowany, jeśli zostanie odebrany błąd ICMP unreachable (typ 3, kod 0, 1, 2, 3, 9, 10 lub 13). Port jest również uważany za otwarty, jeżeli w odpowiedzi zostanie odebrany pakiet SYN (bez flagi ACK). Może to być spowodowane niezwykle rzadką cechą TCP znaną jako równoczesne otwarte lub dzielone połączenie handshake (zobacz https://nmap.org/misc/split-handshake.pdf).

-sT(TCP connect scan)

TCP connect scan jest domyślnym typem skanowania TCP, gdy skanowanie SYN nie jest opcją. Dzieje się tak w przypadku, gdy użytkownik nie ma uprawnień do surowych pakietów. Zamiast pisać surowe pakiety, jak większość innych typów skanowania, Nmap prosi system operacyjny o ustanowienie połączenia z maszyną docelową i portem poprzez wywołanie systemowe connect. Jest to to samo wywołanie systemowe wysokiego poziomu, którego przeglądarki internetowe, klienci P2P i większość innych aplikacji obsługujących sieć używają do nawiązania połączenia. Jest to część interfejsu programistycznego znanego jako Berkeley SocketsAPI. Zamiast odczytywać surowe odpowiedzi pakietów, Nmap używa tego API do uzyskania informacji o statusie każdej próby połączenia.

Gdy skanowanie SYN jest dostępne, jest to zwykle lepszy wybór. Nmaph ma mniejszą kontrolę nad połączeniem wysokiego poziomu niż w przypadku surowych pakietów, co czyni go mniej wydajnym. Wywołanie systemowe kompiluje połączenia z otwartymi portami docelowymi, zamiast wykonać reset połowy otwartych portów, co robi skanowanie SYN. Nie tylko trwa to dłużej i wymaga większej ilości pakietów, aby uzyskać te same informacje, ale również maszyny docelowe częściej rejestrują połączenie. Porządny IDS wyłapie oba te przypadki, ale większość maszyn nie ma takiego systemu alarmowego. Wiele usług na przeciętnym systemie uniksowym doda notatkę do sysloga, a czasami także kryptograficzny komunikat o błędzie, gdy Nmap połączy się, a następnie zamknie połączenie bez wysyłania danych. Prawdziwie żałosne usługi ulegają awarii, gdy tak się dzieje, ale to rzadkość. Administrator, który widzi w swoich logach kilka prób połączeń z jednego systemu, powinien wiedzieć, że został on przeskanowany.

-sU(Skanowanie UDP)

Podczas gdy większość popularnych usług w Internecie działa za pośrednictwem protokołu TCP, usługi UDP są szeroko rozpowszechnione. DNS, SNMP i DHCP (zarejestrowane porty 53, 161/162 i 67/68) to trzy z najbardziej popularnych usług. Ponieważ skanowanie UDP jest na ogół wolniejsze i trudniejsze niż TCP, niektórzy audytorzy bezpieczeństwa ignorują te porty. Jest to błąd, ponieważ podatne na ataki usługi UDP są dość powszechne, a napastnicy z pewnością nie ignorują całego protokołu. Na szczęście Nmap może pomóc w inwentaryzacji portówUDP.

Skanowanie UDP aktywowane jest opcją -sU. Może być połączone z typem skanowania TCP, takim jak SYN scan (-sS), aby sprawdzić oba protokoły w tym samym czasie.

SkanowanieUDP działa poprzez wysyłanie pakietów UDP na każdy z portów. Dla niektórych popularnych portów, takich jak 53 i 161, wysyłany jest specyficzny dla protokołu ładunek, aby zwiększyć szybkość odpowiedzi, ale dla większości portów pakiet jest pusty, chyba że podano opcje --data, --data-string lub --data-length.Jeśli zwrócony zostanie błąd ICMP port unreachable (typ 3, kod 3), port ma wartość closed. Inne błędy ICMP unreachable (typ 3, kody 0, 1, 2, 9, 10 lub 13) oznaczają port jako filtered. Sporadycznie serwis odpowie pakietem UDP, udowadniając, że jest to open. Jeżeli po retransmisji nie otrzymamy żadnej odpowiedzi, port jest klasyfikowany jako open|filtered. Oznacza to, że port może być otwarty, lub może filtry pakietów blokują komunikację. Detekcja wersji (-sV) może być użyta do odróżnienia prawdziwie otwartych portów od tych filtrowanych.

Dużym wyzwaniem przy skanowaniu UDP jest szybkie wykonanie skanowania.Otwarte i filtrowane porty rzadko wysyłają odpowiedzi, pozostawiając Nmapowi timeout, a następnie przeprowadzając retransmisje na wszelki wypadek, gdyby sonda lub odpowiedź zostały utracone. Zamknięte porty stanowią często jeszcze większy problem. Zazwyczaj odsyłają one błąd ICMP port unreachable. Jednak w przeciwieństwie do pakietówRST wysyłanych przez zamknięte porty TCP w odpowiedzi na SYN lub connectscan, wiele hostów domyślnie ogranicza liczbę komunikatówICMP o nieosiągniętym porcie.Linux i Solaris są w tym względzie szczególnie rygorystyczne. Na przykład, jądro Linuksa 2.4.20 ogranicza liczbę nieosiągalnych wiadomości do jednej na sekundę (w net/ipv4/icmp.c).

Nmap wykrywa ograniczenie prędkości i zwalnia odpowiednio, aby uniknąć zalania sieci bezużytecznymi pakietami, które maszyna docelowa porzuci. Niestety, linuksowe ograniczenie do jednego pakietu na sekundę sprawia, że skanowanie na 65 536 portach trwa ponad 18 godzin. Pomysły na przyspieszenie skanowania UDP to skanowanie większej liczby hostów równolegle, skanowanie najpierw tylko popularnych portów, skanowanie zza firewalla i używanie --host-timeout do pomijania powolnych hostów.

-sY(SCTP INIT scan)

SCTP jest stosunkowo nową alternatywą dla protokołów TCP i UDP, łączącą większość cech TCP i UDP, a także dodającą nowe funkcje, takie jak multi-homing i multi-streaming. Skanowanie SCTP INIT jest odpowiednikiem skanowania TCP SYN. Może być wykonywane szybko, skanując tysiące portów na sekundę w szybkiej sieci nie ograniczonej restrykcyjnymi firewallami. Podobnie jak skanowanie SYN, skanowanie INIT jest stosunkowo dyskretne i ukrywane, ponieważ nigdy nie kończy asocjacji SCTP. Pozwala również na wyraźne, niezawodne rozróżnienie między stanami open, closed i filtered.

Ta technika jest często określana jako skanowanie półotwarte, ponieważ nie otwiera pełnego skojarzenia SCTP. Wysyłasz chunk INIT, tak jakbyś miał zamiar otworzyć prawdziwą asocjację, a następnie czekasz na odpowiedź. Kawałek INIT-ACK wskazuje, że port nasłuchuje (jest otwarty), podczas gdy kawałek ABORT wskazuje, że port nie nasłuchuje. Jeśli nie otrzymamy odpowiedzi po kilku retransmisjach, port jest oznaczany jako filtrowany. Port jest również oznaczany jako filtrowany, jeśli zostanie odebrany błąd ICMPunreachable (typ 3, kod 0, 1, 2, 3, 9, 10 lub 13).

-sN;-sF;-sX(skanowanie TCP NULL, FIN i Xmas)

Te trzy typy skanowania (jeszcze więcej jest możliwych dzięki opcji--scanflags opisanej w następnej sekcji) wykorzystują subtelną lukę w TCP RFC do rozróżniania między portami open iclosed. Strona 65 RFC 793 mówi, że „jeśli stan portu to CLOSED …. przychodzący segment nie zawierający RST powoduje wysłanie RST w odpowiedzi.” Następnie na kolejnej stronie omówiono pakiety wysyłane na otwarte porty bez ustawionych bitów SYN, RST lub ACK, stwierdzając, że: „jest mało prawdopodobne, że tu trafisz, ale jeśli tak się stanie, porzuć segment i wróć.”

Podczas skanowania systemów zgodnych z tym tekstem RFC, każdy pakiet nie zawierający bitów SYN, RST lub ACK spowoduje zwrócenie RST, jeśli port jest zamknięty i brak odpowiedzi, jeśli port jest otwarty. Tak długo, jak żaden z tych trzech bitów nie jest zawarty, każda kombinacja pozostałych trzech (FIN, PSH i URG) jest OK. Nmap wykorzystuje to za pomocą trzech typów skanowania:

Null scan (-sN)

Nie ustawia żadnych bitów (nagłówek flagi TCP ma wartość 0)

FIN scan (-sF)

Ustawia tylko bit TCP FIN.

Xmas scan (-sX)

Ustawia flagi FIN, PSH i URG, o¶wietlaj±c pakiet jak choinkę.

Te trzy typy skanowania zachowuj± się dokładnie tak samo z wyj±tkiem flag TCP ustawionych w pakietach sondy. Jeśli odebrany zostanie pakiet RST, port jest uważany za closed, podczas gdy brak odpowiedzi oznacza, że jest to open|filtered. Port jest oznaczany jakofiltered, jeśli zostanie odebrany błąd ICMP unreachable (typ 3, kod0, 1, 2, 3, 9, 10 lub 13).

Kluczową zaletą tych typów skanowania jest to, że mogą one prześlizgnąć się przez niektóre niestateczne zapory sieciowe i filtry pakietów. Inną zaletą jest to, że te typy skanowania są nieco bardziej dyskretne niż nawet skanowanie SYN. Nie należy jednak na to liczyć – większość nowoczesnych produktów IDS może zostać skonfigurowana do ich wykrywania. Dużym minusem jest to, że nie wszystkie systemy stosują się do RFC 793. Wiele systemów wysyła odpowiedzi RST na sondy niezależnie od tego, czy port jest otwarty, czy nie. Powoduje to, że wszystkie porty są oznaczane jako closed. Główne systemy operacyjne, które to robią, to Microsoft Windows, wiele urządzeń Cisco, BSDI oraz IBM OS/400. To skanowanie działa jednak przeciwko większości systemów opartych na Uniksie. Inną wadą tych skanowań jest to, że nie potrafią odróżnić portów open od pewnych filtered, pozostawiając odpowiedźopen|filtered.

-sA(TCP ACK scan)

Skanowanie to różni się od innych omówionych do tej pory tym, że nigdy nie określa portów open (lub nawetopen|filtered). Jest ono używane do mapowania zestawów reguł firewalla, określając, czy są one stateful, czy nie, oraz które porty są filtrowane.

Pakiet sondy skanowania ACK ma ustawioną tylko flagę ACK (chyba że użyjesz --scanflags). Podczas skanowania niefiltrowanych systemów, porty open i closed zwrócą pakiet RST. Nmap oznaczy je wtedy jakounfiltered, co oznacza, że są osiągalne przez pakietACK, ale to czy są to porty open czyclosed jest nieokreślone. Porty, które nie odpowiadają lub odsyłają pewne komunikaty o błędach ICMP (typ 3, kod 0, 1, 2, 3, 9, 10 lub 13), są oznaczane jako filtered.

-sW(TCP Window scan)

Window scan jest dokładnie taki sam jak ACK scan, z wyjątkiem tego, że wykorzystuje szczegół implementacji niektórych systemów do odróżniania otwartych portów od zamkniętych, zamiast zawsze drukowaćunfiltered, gdy zwracany jest RST. Dokonuje tego poprzez badanie pola TCP Window w zwracanych pakietach RST. W niektórych systemach, otwarte porty używają dodatniego rozmiaru okna (nawet dla pakietów RST), podczas gdy zamknięte mają okno zerowe. Zamiast więc zawsze wyświetlać port jako unfiltered, gdy otrzymuje zwrot RST, Window scan wyświetla port jako open lubclosed, jeśli wartość TCP Window w tym resecie jest odpowiednio dodatnia lub zerowa.

Skanowanie to opiera się na szczegółach implementacji mniejszości systemów w Internecie, więc nie zawsze można mu ufać. Systemy które go nie obsługują zazwyczaj zwrócą wszystkie portyclosed. Oczywiście jest możliwe, że maszyna naprawdę nie ma otwartych portów. Jeżeli większość skanowanych portów toclosed, ale kilka popularnych portów (np. 22, 25, 53) to filtered, system jest najprawdopodobniej podatny na ataki. Zdarza się, że systemy wykazują wręcz odwrotne zachowanie. Jeśli twój skan wykaże 1000 otwartych portów i trzy zamknięte lub przefiltrowane, to te trzy porty mogą być naprawdę otwarte.

-sM(TCP Maimon scan)

Skanowanie Maimon nosi nazwę od nazwiska jego odkrywcy, Uriela Maimona. Opisał on tę technikę w numerze #49 Phrack Magazine (listopad 1996).Nmap, który zawierał tę technikę, został wydany dwa numery później.Technika ta jest dokładnie taka sama jak skany NULL, FIN i Xmas, z wyjątkiem tego, że sondą jest FIN/ACK. Zgodnie z RFC 793 (TCP), w odpowiedzi na taką sondę powinien zostać wygenerowany pakiet RST, niezależnie od tego, czy port jest otwarty, czy zamknięty. Uriel zauważył jednak, że wiele systemów opartych na BSD po prostu porzuca pakiet, jeśli port jest otwarty.

--scanflags(Custom TCP scan)

Naprawdę zaawansowani użytkownicy Nmapa nie muszą ograniczać się do oferowanych typów skanowania. Opcja --scanflags pozwala na zaprojektowanie własnego skanowania poprzez określenie dowolnych flag TCP. Pozwól sobie na kreatywność, jednocześnie unikając systemów wykrywania włamań, których producenci po prostu przeglądają stronę podręcznika Nmap, dodając konkretne reguły!

Argument --scanflags może być wartością liczbową, taką jak 9 (PSH i FIN), ale używanie nazw symbolicznych jest łatwiejsze. Wystarczy zmiksować dowolną kombinację URG,ACK, PSH,RST, SYN iFIN. Na przykład, --scanflagsURGACKPSHRSTSYNFIN ustawia wszystko, choć nie jest to zbyt użyteczne przy skanowaniu. Kolejność, w jakiej są one podane, nie ma znaczenia.

Oprócz określenia pożądanych flag, można określić typ skanowaniaTCP (taki jak -sA lub -sF).Ten typ bazowy mówi Nmapowi, jak interpretować odpowiedzi. Dla przykładu, skanowanie SYN traktuje brak odpowiedzi jako portfiltered, podczas gdy skanowanie FIN traktuje to samo jakoopen|filtered. Nmap zachowa się tak samo, jak w przypadku podstawowego typu skanowania, z tą różnicą, że użyje flag TCP, które podałeś. Jeśli nie określisz typu bazowego, użyty zostanie skan SYN.

-sZ(SCTP COOKIE ECHO scan)

SCTP COOKIE ECHO scan jest bardziej zaawansowanym skanowaniem SCTP. Wykorzystuje fakt, że implementacje SCTP powinny cicho zrzucać pakiety zawierające kawałki COOKIE ECHO na otwartych portach, ale wysyłać ABORT jeśli port jest zamknięty. Zaletą tego typu skanowania jest to, że nie jest ono tak oczywiste jak skanowanie INIT. Zaletą tego typu skanowania jest to, że nie jest ono tak oczywiste jak skanowanie INIT. Ponadto, mogą istnieć niestateczne zestawy reguł firewalla blokujące pakiety INIT, ale nie pakiety COOKIE ECHO. Nie należy się łudzić, że dzięki temu skanowanie portów będzie niewidoczne; dobry system IDS będzie w stanie wykryć również skanowanie SCTPCOOKIE ECHO. Minusem jest to, że skanowanie SCTP COOKIE ECHO nie potrafi rozróżnić portów open i filtered, pozostawiając stan open|filtered w obu przypadkach.

-sI <zombie host>(skanowanie bezczynności)

Ta zaawansowana metoda skanowania pozwala na prawdziwie ślepe skanowanie portów TCP celu (co oznacza, że żadne pakiety nie są wysyłane do celu z twojego prawdziwego adresu IP). Zamiast tego, unikalny atak typu side-channel wykorzystuje przewidywalne generowanie sekwencji ID fragmentacji IP na hoście zombie, aby uzyskać informacje o otwartych portach na celu. Systemy IDS wyświetlają skanowanie jako pochodzące ze wskazanej przez użytkownika maszyny zombie (która musi być włączona i spełniać określone kryteria). Szczegółowe informacje na temat tego fascynującego typu skanowania znajdują się w rozdziale „Skanowanie TCP w stanie bezczynności (-sI)”.

Poza tym, że jest to wyjątkowo skryte skanowanie (z powodu swojej ślepej natury), ten typ skanowania pozwala na odwzorowanie opartych na IP relacji zaufania między maszynami. Lista portów pokazuje otwarte porty z perspektywy hosta zombie. Możesz więc spróbować przeskanować cel za pomocą różnych hostów zombie, które Twoim zdaniem mogą być zaufane (poprzez reguły routera/filtra pakietów).

Możesz dodać dwukropek, a następnie numer portu do hosta zombie, jeśli chcesz zbadać konkretny port na zombie dla zmian IP ID. W przeciwnym razie Nmap użyje portu domyślnie używanego do pingów TCP (80).

-sO(skanowanie protokołu IP)

Skanowanie protokołu IP pozwala określić, które protokoły IP (TCP, ICMP, IGMP, itp.) są obsługiwane przez maszyny docelowe. Nie jest to technicznie rzecz biorąc skanowanie portów, ponieważ przechodzi przez numery protokołów IP, a nie numery portów TCP lub UDP. Jednak nadal używa opcji-p do wyboru numerów skanowanych protokołów, raportuje wyniki w normalnym formacie tabeli portów, a nawet używa tego samego silnika skanowania, co prawdziwe metody skanowania portów. Jest więc na tyle zbliżony do skanowania portów, że należy do tej kategorii.

Poza tym, że jest użyteczny sam w sobie, skanowanie protokołów demonstruje moc oprogramowania open-source. Chociaż podstawowa idea jest dość prosta, nie pomyślałem o jej dodaniu, ani nie otrzymałem żadnych próśb o taką funkcjonalność. Latem 2000 roku Gerhard Rieger wpadł na ten pomysł, napisał świetną łatkę implementującą go i wysłał ją na listę mailingowąannounce (wtedy nazywaną nmap-hackers).Włączyłem tę łatkę do drzewa Nmap i następnego dnia wypuściłem nową wersję. Niewiele komercyjnych programów ma użytkowników na tyle entuzjastycznych, aby projektować i wprowadzać własne ulepszenia!

Skanowanie protokołów działa w podobny sposób jak skanowanie UDP. Zamiast przeglądać pole numeru portu w pakiecie UDP, wysyła nagłówki pakietów IP i przegląda ośmiobitowe pole protokołu IP. Nagłówki są zazwyczaj puste, nie zawierają żadnych danych, ani nawet właściwego nagłówka dla danego protokołu. Wyjątkami są TCP, UDP, ICMP, SCTP i IGMP. Prawidłowy nagłówek dla tych protokołów jest dołączony, ponieważ niektóre systemy nie będą ich wysyłać, a także dlatego, że Nmap posiada już funkcje do ich tworzenia. Zamiast obserwować komunikaty ICMP portunreachable, skanowanie protokołu poszukuje komunikatów ICMPprotocol unreachable. Jeśli Nmap otrzyma odpowiedź w jakimkolwiek protokole od hosta docelowego, Nmap oznacza ten protokół jako open. Błąd ICMP protocol unreachable (typ 3, kod 2) powoduje, że protokół jest oznaczany jakoclosed, podczas gdy port unreachable (typ 3, kod 3) oznacza protokół open. Inne błędy ICMP unreachable (typ 3, kod 0, 1, 9, 10, lub 13) powodują oznaczenie protokołu jakofiltered (choć jednocześnie dowodzą, że ICMP jestopen). Jeśli po retransmisji nie otrzymano odpowiedzi, protokół jest oznaczanyopen|filtered

-b <FTP relay host>(FTP bounce scan)

Interesującą cechą protokołu FTP (RFC 959) jest obsługa tzw. połączeń proxy FTP. Pozwala to użytkownikowi połączyć się z jednym serwerem FTP, a następnie poprosić o przesłanie plików do innego serwera. Taka funkcja jest podatna na nadużycia na wielu poziomach, dlatego większość serwerów zaprzestała jej obsługi. Jednym z nadużyć, na które pozwala ta funkcja, jest powodowanie, że serwer FTP skanuje porty innych hostów. Wystarczy poprosić serwer FTP o wysłanie pliku na każdy interesujący port docelowego hosta po kolei. Komunikat o błędzie będzie opisywał, czy dany port jest otwarty, czy nie. Jest to dobry sposób na ominięcie firewalli, ponieważ organizacyjne serwery FTP są często umieszczane w miejscach, gdzie mają większy dostęp do innych wewnętrznych hostów niż jakikolwiek stary host internetowy. Nmap obsługuje skanowanie FTPbounce za pomocą opcji -b. Pobiera ona argument w postaci<username>:<password>@<server>:<port>.<Server> jest nazwą lub adresem IP podatnego na ataki serwera FTP. Podobnie jak w przypadku normalnego adresu URL, możesz pominąć<username>:<password>, w którym to przypadku używane są anonimowe dane logowania (użytkownik:anonymous hasło:-wwwuser@). Numer portu (i poprzedzający go dwukropek) również może zostać pominięty, w takim przypadku używany jest domyślny port FTP (21) na<server>.

Ta luka była szeroko rozpowszechniona w 1997 roku, kiedy wydano Nmap, ale w dużej mierze została naprawiona. Podatne serwery wciąż istnieją, więc warto spróbować, gdy wszystko inne zawiedzie. Jeśli Twoim celem jest ominięcie firewalla, przeskanuj sieć docelową na porcie 21 (lub nawet na wszystkich usługach FTP, jeśli skanujesz wszystkie porty za pomocą funkcji versiondetection) i użyj skryptuftp-bounceNSE. Nmap powie Ci, czy host jest podatny na ataki, czy nie. Jeśli próbujesz tylko zatrzeć ślady, nie musisz (i w zasadzie nie powinieneś) ograniczać się do hostów w sieci docelowej. Zanim zaczniesz skanować losowo wybrane adresy internetowe w poszukiwaniu podatnych serwerów FTP, weź pod uwagę, że administratorzy mogą nie być wdzięczni za nadużywanie ich serwerów w ten sposób.

admin

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.

lg