Nmap:” narzędzie hakerskie „dla specjalistów ds. bezpieczeństwa

Nmap:” narzędzie hakerskie „dla specjalistów ds. bezpieczeństwa

Justin Hutchens

security-326154_640

pojęcie „etycznego hakera” zawsze było ironiczne. Rozwijające się trendy etycznego hakowania i ofensywnego bezpieczeństwa zmieniły branżę bezpieczeństwa informacji w jedną z najbardziej samonapędzających się gałęzi przemysłu na świecie.

oprogramowanie i narzędzia używane do zabezpieczania podatnych zasobów informacyjnych są tymi samymi narzędziami, które można wykorzystać do ich wykorzystania. Może jest odwrotnie. Być może narzędzia, które zostały stworzone wyłącznie w celu wykorzystania zasobów informacyjnych, są obecnie wykorzystywane do ich ochrony. Przypuszczam, że jest to debata, która może trwać wiecznie i jest tak naprawdę kolejnym przykładem ” co było pierwsze … kura czy jajko?”

celem tego eseju nie jest omawianie filozoficznej kwestii intencji. Moje intencje są skromniejsze. Staram się jedynie uzasadnić znaczenie narzędzia, które zostało konsekwentnie oznaczone jako złośliwe oprogramowanie hakerskie. Narzędziem, o którym mówię, jest Network Mapper, w skrócie Nmap. Niezależnie od tego, czy jesteś szalonym agentem, który chce podżegać do globalnej rewolucji, czy profesjonalistą ds. bezpieczeństwa sieci (miejmy nadzieję, że ten drugi, a nie ten pierwszy), nmap powinien mieć stałe miejsce w twoim zestawie narzędzi. Być może, zamiast rzucać krytykę na niezwykle funkcjonalne narzędzie sieciowe, powinniśmy pociągnąć jednostki do odpowiedzialności za ich działania i zastanowić się nad znanym zastrzeżeniem Benjamina Parkera…”z wielką mocą przychodzi wielka odpowiedzialność.”Pomimo niektórych twierdzeń, że jest inaczej, nmap nie jest złośliwym oprogramowaniem. I myślę, że jedynym powodem, dla którego jest często określany jako taki, jest imponująca lista możliwości. Pomimo możliwości wyrządzenia szkody, nmap z pewnością może odegrać ważną rolę w zabezpieczeniu infrastruktury sieciowej w profesjonalnym środowisku.

Nmap stale ewoluował z prostego narzędzia do skanowania w pełnowartościową platformę do testów penetracyjnych. Może być używany na każdym etapie procesu audytu zabezpieczeń, w tym wykrywania sieci, skanowania portów, wyliczania usług, mapowania luk w zabezpieczeniach, a nawet eksploatacji. W tym artykule omówię możliwości nmap, ponieważ odnoszą się one do każdego etapu procesu testów penetracyjnych.

instalacja i przygotowanie

oczywiście przed użyciem nmap ważne jest, aby mieć zainstalowaną wersję funkcjonalną w używanym systemie. Domyślnie nmap jest już zainstalowany w większości systemów operacyjnych do testów penetracyjnych i zabezpieczeń sieciowych, takich jak Kali-Linux, Backtrack, DEFT, Node-Zero, Security Onion i NST. Można go jednak również załadować na prawie każdą wybraną platformę. Nmap można łatwo zainstalować na wszystkich powszechnie używanych systemach operacyjnych, w tym Windows, Linux i OSX. Istnieje również dokumentacja do instalacji na bardziej niejasnych platformach, takich jak BSD, Solaris, AIX i AmigaOS. Pakiety instalacyjne i instrukcje dotyczące instalacji na każdym z tych systemów można znaleźć pod adresem http://nmap.org/book/install.html.

Zenmap – interfejs graficzny

oprócz tradycyjnego interfejsu wiersza poleceń dla nmap, istnieje również graficzny interfejs front-end o nazwie Zenmap. Zenmap jest również zintegrowany z wieloma różnymi platformami testów penetracyjnych, o których wcześniej wspomniano. Jednak nie jest domyślnie instalowany w Kali-Linux (platforma, z której będę korzystać w tym samouczku). Na szczęście znajduje się w repozytorium instalacji i można go łatwo zainstalować za pomocą jednego polecenia:

apt-get install zenmap

interfejs Zenmap nie tylko skutecznie usprawnia to, co w przeciwnym razie wymagałoby skomplikowanych poleceń, ale może być również niezwykle użytecznym narzędziem do nauki korzystania z nmap. Używa „profili” do zapisywania powszechnie używanych konfiguracji skanowania do późniejszej modyfikacji i/lub użycia. Spójrz na obraz interfejsu Zenmap, który jest przedstawiony na rysunku 1 i pokrótce omówimy każdy z komponentów.

f1

Rysunek 1. Interfejs graficzny Zenmap

pierwszym komponentem jest pole docelowe (Rysunek 1. A). W tym polu możesz określić systemy zdalne, w których chcesz przeprowadzić skanowanie. Można wprowadzić pojedynczy adres IP (np. 192.168.1.1), można wprowadzić sekwencyjny zakres adresów IP (np. 192.168.1.0-255) lub możesz użyć notacji CIDR do określenia żądanej podsieci (np. 192.168.1.0/24). Drugim elementem jest pole profilu (Rys. 1. B). Możesz kliknąć strzałkę rozwijaną po prawej stronie tego pola, aby zobaczyć kilka wstępnie skonfigurowanych profili do skanowania. Profile umożliwiają zapisywanie często używanych konfiguracji skanowania do wykorzystania w przyszłości. Możesz także tworzyć własne profile, które pojawią się na tej liście (omówimy to w dalszej części tego artykułu). Trzecim elementem jest pole poleceń (Rys. 1. C). To pole wskaże polecenie, które zostanie wysłane do zaplecza. Aby uruchomić polecenie pojawiające się w tym polu, wystarczy kliknąć przycisk Skanuj. Wartość w tym polu można modyfikować bezpośrednio; zostanie ona jednak automatycznie wypełniona na podstawie wartości pola docelowego i wybranego profilu. Jeśli jesteś nowy w nmap, powinieneś zwrócić szczególną uwagę na to pole, ponieważ zapewni Ci to lepsze zrozumienie odpowiedniej składni i użycia różnych poleceń nmap. Czwarty składnik to lista hostów / usług (Rysunek 1. D). Po wykonaniu skanowania informacje zostaną wypełnione na tej liście. Jeśli masz wybrany przycisk hosty, wszystkie wykryte adresy IP hostów zostaną wyświetlone. A jeśli masz wybrany przycisk usługi, wszystkie wykryte usługi sieciowe zostaną wyświetlone. Komponent końcowy (Rys. 1. E) to miejsce, w którym możesz sortować wszystkie informacje, które zostały wytworzone przez wszystkie skany, które wykonałeś. Zakładka wyjście Nmap wyświetli dokładny wynik, który byłby dostarczony, gdyby polecenie zostało wprowadzone z interfejsu wiersza poleceń. Zawartość karty porty / hosty będzie się różnić w zależności od tego, czy na liście wybrano przycisk hosty lub usługi. Jeśli przycisk Hosts jest zaznaczony, informacje w zakładce porty / hosty będą odzwierciedlać usługi, które zostały zidentyfikowane na aktywnie podświetlonym adresie IP na liście. W przeciwnym razie, jeśli przycisk usługi jest wybrany, informacje w zakładce porty / hosty będą identyfikować wszystkie hosty, które miały określoną usługę, która jest podświetlona na liście. Karta topologia zapewni graficzną reprezentację logicznej topologii sieci, obejmującą wszystkie hosty, które zostały odkryte przez skanowanie. Użyje zwróconych wartości TTL (Time-To-Live) do wyświetlenia logicznej orientacji hostów względem siebie. Karta Szczegóły hosta to miejsce, w którym znajdziesz większość informacji, które zostały odkryte na temat wybranego hosta. Informacje te obejmują adresy MAC, adresy IP, otwarte porty, zidentyfikowane usługi, informacje o systemie operacyjnym i wszelkie dodatkowe informacje, które zostały zebrane. Na koniec karta skany zawiera historię skanów wykonanych podczas sesji.

u góry ekranu zobaczysz kilka różnych rozwijanych menu zawierających skanowanie, narzędzia, profil i pomoc. Menu Pomoc jest oczywiste. Menu skanowanie zawiera opcje tworzenia nowych skanów, zapisywania skanów lub otwierania wcześniej zapisanych skanów. Menu Narzędzia zawiera kilka dodatkowych funkcji, które mogą być używane do sortowania i porządkowania informacji zebranych podczas skanowania. Menu Profil zawiera opcje tworzenia nowych profili skanowania lub edycji istniejących profili.

omówimy teraz krótko, jak utworzyć nowy profil, a następnie uruchomić skanowanie za pomocą tego profilu. Aby rozpocząć, wybierz menu rozwijane profil, a następnie wybierz ” nowy profil lub polecenie.”Otworzy to interfejs konfiguracji profilu, który można zobaczyć na rysunku 2.

f2

Rysunek 2. Edytor profili Zenmap

pierwsza zakładka (Zakładka profil) pozwala na utworzenie unikalnej nazwy i opisu profilu. Wszystkie inne karty są, gdzie można określić różne konfiguracje, które będą używane w skanowaniu. Jak widać na karcie Skanowanie wyświetlanej na rysunku 2, utworzenie profilu skanowania jest tak proste, jak zaznaczenie pól opcji, które chcesz włączyć, wprowadzenie wartości, aby te opcje mogły być skutecznie wykorzystane lub wybranie ze wstępnie zdefiniowanych opcji z menu rozwijanego. Jeśli nie masz pewności co do funkcji lub właściwego użycia dowolnej opcji, możesz najechać na nią kursorem myszy, a Kolumna pomocy po prawej stronie ekranu zostanie automatycznie wypełniona informacjami o tym, co robi dana opcja, a także odpowiednimi wartościami i składnią dla żądanych pól wejściowych. Przy każdym drobnym dostosowaniu konfiguracji skanowania pole polecenia u góry jest odpowiednio dostosowywane. Ta funkcja sprawia, że Zenmap jest niezwykle skutecznym narzędziem do nauki prawidłowego używania poleceń nmap. Po skonfigurowaniu opcji skanowania zgodnie z własnymi upodobaniami możesz wybrać przycisk skanowania w prawym górnym rogu ekranu do jednorazowego użycia lub wybrać opcję Zapisz zmiany w prawym dolnym rogu. Przycisk Zapisz zmiany zapisze profil o nazwie podanej na pierwszej karcie Konfiguracja i może być użyty natychmiast lub później, wybierając go po nazwie z menu rozwijanego Profil na głównym interfejsie Zenmap. Chociaż Zenmap jest bardzo potężny, nie powinieneś pozwolić, aby stał się kulą, która uniemożliwia Ci naukę funkcji wiersza poleceń nmap. Chociaż Zenmap może wykonywać wiele z tych samych funkcji, nadal ma swoje ograniczenia i nie jest tak potężny jak Nmap. Aby efektywnie i w pełni wykorzystać nmap, ważne jest zapoznanie się z interfejsem wiersza poleceń.

Network Discovery

pierwszym krokiem w procesie testów penetracyjnych, który zamierzamy omówić, jest network discovery. Zanim dokonasz oceny bezpieczeństwa systemów informatycznych w sieci, musisz najpierw zidentyfikować to, co oceniasz. Istnieje wiele różnych sposobów wykrywania hostów w sieci za pomocą nmap. W tej sekcji omówimy, jak używać nmap do wykrywania hostów na warstwach 2, 3 i 4 Modelu OSI, a także omówimy zalety i wady każdego z nich. Przykład polecenia wykonującego wykrywanie warstwy 2 można zobaczyć tutaj:

nmap-PR-sn 192.168.1.0-255

przełącznik -PR określa ping ARP. Używa to pakietów ARP warstwy 2 (Address Resolution Protocol) do identyfikacji hostów działających w określonym zakresie. Robi to, wysyłając żądanie transmisji ARP dla każdego ze zidentyfikowanych adresów IP. Jeśli w sieci znajduje się aktywny host z jednym z tych adresów IP, ten host wyśle odpowiedź ARP do systemu skanowania z jego adresem IP i odpowiadającym mu adresem MAC warstwy 2. Nmap zbierze odpowiedzi od wszystkich hostów na żywo, a następnie zwróci listę hostów, które zostały odkryte. Przełącznik -sn jest używany do żądania, aby nmap nie wykonywał żadnego skanowania portów. Zapobiega to przesyłaniu dodatkowego ruchu, wykraczającego poza to, co jest konieczne do przeprowadzenia przeszukiwania hosta warstwy 2. Odkrycie warstwy 2 jest skuteczne, ponieważ jest najszybsze ze wszystkich trzech opcji. Jest to jednak ograniczone przez fakt, że może być wykonywane tylko przeciwko hostom, które znajdują się w tej samej sieci lokalnej, co system, który wykonuje skanowanie.

w przypadku hostów zdalnych musisz użyć wykrywania warstwy 3 lub warstwy 4. Przykład polecenia, które może być użyte do wykrycia warstwy 3 to:

nmap-PE-sn 109.74.11.0-255

to polecenie wyśle serię żądań ICMP echo na każdy adres IP warstwy 3 na liście. Nmap zbierze wszystkie otrzymane odpowiedzi ICMP echo i zwróci listę wszystkich hostów na żywo. To skanowanie discovery jest wolniejsze niż wykonywanie ping ARP, ale zwróci wyniki dla hostów w sieciach zdalnych.

na koniec Załóżmy, że próbujesz odkryć zdalne systemy (więc nie możesz użyć warstwy 2), które znajdują się za zaporą, która usuwa cały przychodzący ruch ICMP (więc nie możesz użyć warstwy 3). Aby rozwiązać ten problem, trzeba będzie wykonać wykrywanie w warstwie transportowej (warstwa 4). Istnieje kilka różnych sposobów wykorzystania skanów warstwy 4 do wykrywania. Jedną ze skutecznych metod jest użycie Pingu UDP. Przykładem polecenia ping UDP jest:

Nmap-PU53-sn 109.74.11.0-255

to polecenie generuje serię zapytań o status serwera DNS dla każdego z docelowych adresów IP. Seria odpowiedzi na zapytania DNS zostanie odebrana z hostów na żywo, a Nmap zwróci te wyniki. Ponieważ DNS jest powszechnie używaną usługą na porcie UDP 53, przy użyciu tej techniki można zidentyfikować dodatkowe hosty aktywne, które mogły zostać skonfigurowane tak, aby nie reagowały na ruch ICMP. Kolejną skuteczną alternatywą dla ICMP ping jest użycie Pingu TCP ACK. Przykład tego można zobaczyć poniżej:

Nmap-PA80-sn 109.74.11.0-255

to polecenie wyśle serię niechcianych odpowiedzi ACK na podany port dla wszystkich hostów z zakresu IP. Ponieważ te pakiety ACK były poza kontekstem jakiejkolwiek ustalonej linii komunikacji, live hosts odpowie pakietem TCP RST, wskazując, że komunikacja powinna zostać przerwana. Nmap zbierze te odpowiedzi jako wskazanie żywych hostów, a następnie zwróci ich listę.

skanowanie portów i wyliczanie usług

teraz, gdy odkryliśmy aktywne adresy IP w sieci, przeciwko którym przeprowadzamy test penetracyjny, musimy następnie zidentyfikować otwarte porty w każdym systemie i usługi działające na tych portach. Skanowanie portów TCP w zdalnych systemach jest najbardziej podstawową funkcją nmap. Aby wykonać skanowanie TCP systemu docelowego, użyj polecenia basic:

nmap 109.74.11.34

podobnie jak inne polecenia nmap, może to być również używane do wykonywania skanowania przeciwko wielu hostom za pomocą serii sekwencyjnej (192.168.1-255) lub notacji CIDR (192.168.1.0/24). To standardowe polecenie Nmap wykonuje skanowanie na 1000 powszechnie używanych portów TCP. Alternatywnie, możesz określić pojedynczy port do skanowania za pomocą przełącznika-p, a następnie numeru portu, który chcesz skanować.

nmap 109.74.11.34-p 21

powyższe polecenie skanuje port TCP 21 w podanym systemie. Możesz również skanować szereg portów za pomocą przełącznika-p, a następnie wymieniać żądane porty, oddzielając je przecinkami.

Nmap 109.74.11.34-p 80,443

to polecenie skanuje porty 80 i 443 w docelowym systemie. Można skanować sekwencyjny zakres portów za pomocą przełącznika -p, po którym następuje pierwsza wartość w zakresie, myślnik, a następnie ostatnia wartość w zakresie.

nmap 109.74.11.34-p 0-100

powyższe polecenie skanuje pierwsze 100 portów. Aby zeskanować wszystkie 65 536 portów TCP na obiekcie docelowym, użyj następującego polecenia:

nmap 109.74.11.34-p 0-65535

możesz użyć skanowania TCP ACK, aby zidentyfikować porty, które są filtrowane. Aby to zrobić, użyj przełącznika-sA. Następnie można określić port lub serię portów. Żadna Specyfikacja portu nie skanuje standardowych 1000 portów. Spowoduje to zwrócenie listy filtrowanych portów. Przykład tego polecenia można zobaczyć poniżej:

Nmap 109.74.11.34-sA

testerzy penetracji i specjaliści ds. bezpieczeństwa czasami skanują tylko otwarte porty TCP w systemach docelowych. Pomijanie usług UDP może spowodować całkowite przeoczenie rażących luk w zabezpieczeniach, które mogą łatwo prowadzić do kompromisu. Aby wyszukać usługi UDP w systemie docelowym, użyj następującego polecenia:

nmap 109.74.11.34-sU

ponieważ usługi UDP nie są zorientowane na połączenie w taki sam sposób, jak usługi TCP, zajmie to więcej czasu niż typowe skanowanie TCP. Czas potrzebny na ukończenie skanowania UDP można skrócić, skanując w poszukiwaniu określonych portów. Porty można określić tak samo jak w przypadku skanowania TCP.

nmap 109.74.11.34-sU-P 69

powyższe polecenie wykonuje skanowanie portu UDP 69, powszechnie używanego portu dla TFTP (Trivial File Transport Protocol). Możliwe jest również zidentyfikowanie wersji i numeru wersji dla każdej konkretnej usługi. Aby to zrobić, użyj przełącznika-sV.

Nmap 109.74.11.34-sV

to polecenie użyje kombinacji przechwytywania banerów i analizy odpowiedzi sondy, aby spróbować zidentyfikować usługę i numer wersji tej usługi dla każdego skanowanego portu. Korzystając z podobnych technik, możliwe jest również, aby Nmap próbował określić system operacyjny, który jest uruchomiony na celu. Aby to zrobić, użyj przełącznika -O.

nmap 109.74.11.34-o

po zakończeniu, zwróci pozytywną identyfikację systemu operacyjnego lub Da najlepsze przypuszczenie, a następnie listę innych możliwych systemów operacyjnych.

zaawansowane techniki skanowania

istnieje powszechny problem, który często napotyka się podczas wykonywania testu penetracyjnego w średnich i dużych sieciach korporacyjnych. Większość firm i organizacji w dzisiejszych czasach stała się bardziej zorientowana na bezpieczeństwo i prawdopodobnie będzie miała zapory sieciowe lub systemy wykrywania włamań stojące między tobą a systemami, które próbujesz skanować. Aby skanować takie systemy, będziemy musieli zastosować bardziej zaawansowane techniki skanowania. Jednym ze sposobów, aby potencjalnie ominąć zapory sieciowe i / lub systemy wykrywania włamań, jest użycie tradycyjnych technik skanowania stealth, które są zintegrowane z nmap. Jedną z metod, które można zastosować, jest użycie wolniejszego szablonu czasowego. Szablony czasowe wahają się od -T0(paranoid scan) aż do -T5 (Insane scan). Im niższa wartość szablonu pomiaru czasu, tym wolniejsze będzie skanowanie. Wolniejsze skanowanie jest mniej prawdopodobne przez systemy wykrywania włamań. Przykładem skanowania paranoidalnego może być:

nmap 109.74.11.0-255-T0

inną techniką, która może być użyta do maskowania skanowania, jest zalanie sieci dodatkowym ruchem przynęty za pomocą przełącznika -D. Ta funkcja pozwoli Ci określić wiele adresów do sfałszowania ruchu z lub możesz użyć opcji RND do sfałszowania ruchu z losowych adresów.

nmap 109.74.11.0 – 255-D RND:5

oprócz wykonywania tradycyjnego skanowania portów TCP systemów docelowych, powyższe polecenie będzie również fałszować ruch z 5 losowych adresów, aby zaciemnić rzeczywisty ruch skanowania. Inną techniką, którą można zastosować, jest zmiana długości pakietów przesyłanych żądań. Niektóre systemy wykrywania włamań i zapory sieciowe upuszczają pakiety na podstawie długości pakietów podpisów. Aby temu zapobiec, można określić długość danych za pomocą przełącznika --data-length, a następnie Rozmiar pakietu w liczbie bajtów.

nmap 109.74.11.0-255 — Data-length 15

to polecenie wyśle cały ruch skanowania w pakietach o długości 15 bajtów. Chociaż może to być pomocne w unikaniu niektórych systemów wykrywania włamań opartych na sygnaturze, konsekwentne wysyłanie pakietów o nietypowej określonej długości pakietów może oznaczać systemy wykrywania włamań oparte na anomaliach. Systemy wykrywania włamań do sieci również oznaczą ruch, jeśli zaczniesz sekwencyjnie łączyć się z systemami w określonym zakresie sieci. Aby uniknąć sekwencji skanowania, można użyć przełącznika --randomize-hosts.

nmap 109.74.11.0-255 — randomize-hosts

powyższe polecenie będzie losowo skanować każdy host w zakresie, zamiast wykonywać je w kolejności (109.74.11.0, następnie 109.74.11.1, następnie 109.74.11.2, itd…). Chociaż nie możesz sfałszować swojego adresu IP (ponieważ nie otrzymałbyś odpowiedzi niezbędnych do określenia otwartych portów), możesz sfałszować swój adres MAC. Aby to zrobić, możesz użyć przełącznika — spoof-mac, a następnie ID dostawcy, określony adres MAC lub 0.

nmap 109.74.11.0-255 –spoof-mac 0

użycie 0 jako argumentu spowoduje zastosowanie losowego adresu MAC do ruchu skanowania. Ostatnią techniką, o której warto wspomnieć, jest użycie przełącznika-f do pakietów fragmentacyjnych.

Nmap 109.74.11.0-255-f

fragmentacja pakietów oddzieli ładunki danych Twojego Ruchu skanującego na wiele pakietów, umożliwiając łatwiejsze ominięcie systemów wykrywania włamań lub zapór sieciowych. Chociaż wszystkie te techniki mogą być skuteczne w skanowaniu publicznie dostępnych serwerów za zaporą sieciową, zwykle nie są one wystarczające do skanowania hostów w sieci wewnętrznej. Podczas gdy niektóre publicznie dostępne serwery będą dostępne do skanowania, znaczna część infrastruktury wewnętrznej będzie głębsza w sieci i nie będzie tak łatwo dostępna. Rozważ schemat na rysunku 3. Jest to prosty przykład wspólnej konfiguracji w sieciach korporacyjnych.

f3

Rysunek 3. Wspólna Konfiguracja sieci

problem, który tutaj napotykamy, polega na tym, że sieć wewnętrzna leży za wewnętrzną zaporą, która ma surowsze zasady dotyczące ruchu wejściowego w porównaniu z zaporą zewnętrzną. Ta wewnętrzna zapora ogniowa prawdopodobnie blokuje ruch przychodzący ze zdalnych adresów w Internecie; jednak możliwe jest, że systemy w DMZ mogą komunikować się z wewnętrznymi systemami. Aby móc skanować te wewnętrzne systemy, musimy sprawić, aby systemy w DMZ działały w naszym imieniu. Omówimy kilka różnych sposobów, aby to zrobić, w tym skanowanie proxy, skanowanie zombie i skanowanie odbić FTP.

prawdopodobnie najprostszym sposobem skanowania wewnętrznych systemów jest użycie łańcucha proxy. Załóżmy, że uzyskaliśmy dostęp do usługi proxy w DMZ poprzez zlokalizowanie usługi proxy o otwartym dostępie, brutalne wymuszanie usługi proxy z hydra lub instalowanie usługi proxy na już zagrożonym komputerze. Po skonfigurowaniu systemu do kierowania ruchu przez ten serwer proxy możesz wykonać skanowanie nmap, korzystając z pełnego skanowania połączenia (-sT).

nmap 10.1.1.0-255-sT

jeśli nie ma dostępnej usługi proxy, istnieje kilka sprytnych sposobów na wykorzystanie maszyn w DMZ, aby uzyskać wyniki skanowania w systemach wewnętrznych. Jednym ze sposobów jest użycie skanowania zombie, zwanego również skanowaniem bezczynnym. Aby przeprowadzić skanowanie zombie przeciwko systemom w wewnętrznej sieci LAN, musimy znaleźć realnego hosta zombie w DMZ. Host zombie to każdy stosunkowo bezczynny system, który wykorzystuje przyrostowe sekwencjonowanie IPID. Aby zlokalizować hosta zombie, możemy użyć skryptu nmap do przeskanowania DMZ w poszukiwaniu systemu, który pasuje do tego opisu.

nmap –script ipidseq 109.74.11.0-255

ten skrypt wyśle serię pakietów do każdego hosta i wyśle numery IPID dla wszystkich otrzymanych odpowiedzi. Następnie przeanalizuje te liczby IPID, aby sklasyfikować każdy system jako sekwencję losową, wszystkie zera lub przyrostowe. Przykład wyjścia dla układu przyrostowego przedstawiono na rysunku 4.

f4

Rysunek 4. Host Zombie zlokalizowany ze skryptem sekwencji IPID

po uzyskaniu adresu IP naszego systemu zombie jesteśmy gotowi do próby skanowania zombie. Przed omówieniem sposobu wykonania skanowania krótko omówię, jak działa skanowanie. 5, aby zobaczyć diagram, co ma miejsce, gdy skanowanie zombie jest wykonywane na otwartym porcie.

f5

Rysunek 5. Skanowanie Zombie na otwartym porcie

po pierwsze, nasz skaner Nmap określa aktualną wartość IPID systemu zombie, wysyłając niechciany pakiet SYN / ACK. Ponieważ żaden pakiet SYN nie został pierwotnie wysłany przez system zombie w celu nawiązania połączenia, zombie następnie odpowiada na nasz skaner pakietem RST. Nasz system skanowania użyje wtedy IPID pakietu RST jako punktu odniesienia. Następnie nasz system skanowania natychmiast podąży za tym za pomocą sfałszowanego pakietu SYN wysłanego do systemu docelowego przy użyciu źródłowego adresu IP systemu zombie. Ponieważ źródłowy adres IP jest jednym w DMZ, to żądanie połączenia jest bardziej prawdopodobne, aby mogło przejść przez zaporę. Jeśli obiekt docelowy otrzyma pakiet, a port docelowy jest otwarty, wówczas zwróci pakiet SYN/ACK do systemu zombie (który według niego wysłał oryginalny pakiet SYN). Ponieważ ten pakiet SYN/ACK jest odbierany poza kontekstem, system zombie odpowie na system docelowy pakietem RST, zwiększając w ten sposób jego wartość IPID o jeden. Na koniec nasz skaner wyśle ostatni pakiet SYN/ACK do systemu zombie. Kolejna odpowiedź od zombie zwiększy IPID jeszcze raz. Tak więc, jeśli docelowy port w zdalnym systemie jest otwarty, ostateczna zwrócona wartość IPID będzie o dwie liczby wyższa niż oryginalna wartość. Alternatywnie, Rysunek 6 ilustruje, co ma miejsce, gdy port systemu docelowego jest zamknięty.

f6

Rysunek 6. Skanowanie Zombie pod kątem zamkniętego portu

jeśli port w docelowym systemie jest zamknięty, system zombie nie otrzymuje niechcianej odpowiedzi od celu i dlatego nie jest zachęcany do wysłania pakietu RST do celu. Jeśli więc wartość ipid ostatecznej odpowiedzi RST została zwiększona tylko o jeden, możemy wywnioskować, że port jest zamknięty, ponieważ żadna odpowiedź SYN/ACK nie została wysłana do systemu zombie w celu wywołania odpowiedzi RST. W przeciwnym razie, jeśli ostateczna wartość IPID została zwiększona o dwa razy od pierwotnej wartości, możemy wydedukować, że port w systemie docelowym musi zostać otwarty, ponieważ musiał odpowiedzieć na zombie, który zainicjował odpowiedź, która zwiększyła wartość ipid systemu zombie.

choć może to brzmieć niezwykle skomplikowanie; nie daj się zastraszyć opisem, ponieważ nmap wykonuje prawie całą pracę za Ciebie. Aby wykonać skanowanie zombie, wystarczy wprowadzić proste polecenie.

Nmap-sI 192.168.199.132-PN 192.168.199.130

przełącznik -sI nakazuje nmapowi wykonanie skanowania zombie przy użyciu następującego adresu IP jako hosta zombie (192.168.199.132). Przełącznik -Pn uniemożliwia nmap wykonanie wstępnego Pingu ICMP na systemie docelowym przed przystąpieniem do skanowania. Tak więc ostatni adres IP w poleceniu identyfikuje docelowy system. Wynik tego polecenia można zobaczyć na rysunku 7.

f7

Rysunek 7. Skanowanie Zombie wobec zamkniętego portu

należy zauważyć, że zakres IP, którego użyłem do wykazania tego skanowania zombie, jest prywatnym zakresem w mojej sieci wewnętrznej. Aby to działało skutecznie przeciwko sieci zdalnej, jak opisano w oryginalnym scenariuszu, systemy zarówno w DMZ, jak i w sieci wewnętrznej muszą znajdować się na publicznie routowalnych zakresach IP. Jeśli sieć wewnętrzna jest skonfigurowana na prywatnym zasięgu za serwerem NAT (Network Address Translation), to skaner nmap nie będzie w stanie wysłać sfałszowanego pakietu SYN na adres wewnętrzny ze zdalnej lokalizacji.

innym sposobem użycia systemów w DMZ do próby skanowania hostów w sieci wewnętrznej jest użycie FTP bounce. Niektóre starsze Serwery FTP obsługują możliwość przesyłania plików do systemu innej firmy. Jeśli odkryłeś serwer FTP w DMZ, który pozwala na anonimowe logowanie lub który został brutalnie wymuszony za pomocą Hydry, możesz przetestować serwer FTP, aby ustalić, czy obsługuje FTP bounce. Aby to zrobić, Użyj skryptu FTP-bounce.

nmap –script ftp-bounce –script-args

ftp-bounce.username=anonymous,

to polecenie używa skryptu nmap z argumentami nazwy użytkownika i hasła przeciwko serwerowi FTP. Po zakończeniu skanowanie wskaże, czy odbicie FTP jest możliwe, czy nie. Jeśli skrypt wskazuje, że funkcja FTP bounce działa, możesz użyć serwera FTP do przeprowadzenia skanowania portów w innych systemach w sieci. Rysunek 8 ilustruje, jak to działa.

f8

Rysunek 8. FTP bounce scan

skaner spróbuje wysłać dane binarne, za pośrednictwem funkcji FTP bounce, do docelowego systemu na wyznaczonym porcie. Jeśli dane zostaną przesłane, serwer FTP zgłosi to z powrotem do skanera, wskazując, że port w systemie docelowym jest otwarty. Aby wykonać FTP bounce scan, użyj przełącznika -b .

nmap-b ftpuser:: 21 10.1.1.128-255

w tym poleceniu funkcja -b jest używana do wykonania skanowania odbić ftp przy użyciu nazwy użytkownika „ftpuser” i hasła PassW0rd, przeciwko serwerowi FTP 192.168.11.201 hostowanemu na porcie TCP 21. Działania opisane na powyższym diagramie będą następnie wykonywane na każdym ze wspólnych portów 1000s na każdym z hostów docelowych od 10.1.1.128 do 10.1.1.255.

mapowanie i wykorzystywanie luk w zabezpieczeniach za pomocą NSE

po wykryciu hostów aktywnych w sieci docelowej i wyliczeniu otwartych portów i/lub uruchomionych usług na tych hostach można rozpocząć testowanie i wykorzystywanie luk w zabezpieczeniach. Dzięki nowo zintegrowanemu silnikowi skryptów NSE (Nmap Scripting Engine) istnieje wiele wstępnie załadowanych skryptów, które są dostarczane ze standardową instalacją nmap. Skrypty te mają szeroki zakres różnych funkcji, od podstawowego gromadzenia informacji (jak te dwa, które już omówiliśmy), mapowania luk, brutalnego wymuszania, odmowy świadczenia usług, a nawet zdalnej eksploatacji. Wszystkie te skrypty znajdują się w katalogu instalacyjnym nmap. W Kali-Linux można je znaleźć pod adresem /usr/share/nmap/scripts/. Aby przejść do tych skryptów i rozpocząć z nimi pracę, użyj następujących poleceń:

cd /usr/share/Nmap/scripts/

ls

polecenie cd zmieni katalog na lokalizację skryptów NSE, a polecenie ls wyświetli zawartość katalogu. Następnie możesz wyświetlić dowolny skrypt za pomocą polecenia cat, a następnie nazwy skryptu, który chcesz wyświetlić. Do celów tej demonstracji użyjemy ftp-vuln-cve2010-4221.nse. Aby wyświetlić zawartość tego skryptu, użyj następującego polecenia:

cat FTP-vuln-cve2010-4221.nse

f9

Rysunek 9. Zawartość skryptu NSE

Rysunek 9 wyświetla zawartość tego skryptu. Jeśli przejdziesz na górę zawartości skryptu, zobaczysz kilka przydatnych informacji zawierających opis skryptu, listę dodatkowych zasobów do odniesienia oraz odpowiednie użycie i składnię skryptu. Jednak sortowanie tych skryptów w katalogu i zlokalizowanie skryptu, który wykonuje określoną funkcję, może być bardzo żmudne. Moim zdaniem to właśnie tutaj Zenmap (interfejs graficzny, o którym wcześniej rozmawialiśmy) naprawdę błyszczy. Aby zademonstrować, jak pomocny może być Interfejs Zenmap podczas pracy ze skryptami NSE, otwórz go ponownie z wiersza poleceń za pomocą polecenia:

zenmap

następnie wybierz rozwijane menu Profil i kliknij „nowy profil lub polecenie.”Po otwarciu edytora profilu wybierz kartę Skrypty u góry ekranu. Rysunek 10 przedstawia obraz interfejsu skryptowego Zenmap.

f10

Rysunek 10. Interfejs skryptowy Zenmap

lista wszystkich dostępnych skryptów nmap znajduje się po lewej stronie ekranu. Możesz wybrać jedną z nich, aby włączyć ją do polecenia nmap. Niektóre skrypty będą wymagały argumentów, aby móc działać poprawnie. Skrypty uwierzytelniania Post często wymagają nazwy użytkownika i hasła dla określonych usług sieciowych. W przykładzie na rysunku 10, argumenty mogą być dostarczone w celu skonfigurowania ataku brute force, który ma być wykonany przeciwko usłudze MySQL. Możesz również łatwo przekazać argumenty skryptu, wprowadzając wartości w oknie argumenty. Argumenty te zostaną automatycznie wypełnione w wygenerowanym poleceniu nmap. Okno w górnym środku zawiera opis wybranego skryptu, odpowiednie użycie i składnię, a nawet kategorie opisujące funkcje skryptu. Kategorie te mogą być szczególnie przydatne, jeśli próbujesz wykonać określony rodzaj zadania, np. analizę luk w zabezpieczeniach. Po uruchomieniu skryptu NSE za pomocą polecenia Nmap, zobaczysz wyniki w standardowym wyjściu nmap. W przypadku skryptów brute force, wynik pokaże, czy atak brute force się powiódł, a jeśli tak, wyświetli wykrytą nazwę użytkownika i hasło. W przypadku skryptów podatnych na luki, wynik będzie wskazywał, czy luka jest obecna w systemie docelowym(systemach). A w przypadku skryptów eksploatacyjnych, wyjście dostarczy informacji o ładunku, który został następnie dostarczony do docelowego systemu.

Skrypty z Nmap

oprócz własnego zintegrowanego silnika skryptowego, Nmap obsługuje również kilka opcji wyjściowych, które ułatwiają korzystanie z tradycyjnych języków skryptowych do wykonywania analizy wyjściowej. Dwa formaty wyjściowe, które mogą być przydatne do skryptów obejmują wyjście greppable (-oG) i wyjście XML (-oX). XML może być skuteczny w przypadku języków skryptowych wyższego poziomu, które mają moduły, które mogą być importowane do parsowania XML, a wyjście greppable może być używane w połączeniu ze skryptami powłoki bash w celu usprawnienia analizy wyników nmap. Aby zademonstrować, w jaki sposób ta funkcja wyjściowa może być używana w połączeniu ze skryptami, przejrzymy Prosty 4-liniowy skrypt powłoki bash, wyświetlony na rysunku 11 w celu analizy wyników skanowania nmap.

f11

Rysunek 11. Analiza wyników Nmap skrypt Bash

rozważ scenariusz, w którym skanowanie nmap zostało już wykonane w bardzo dużej sieci, a wynik skanowania został zapisany w formacie greppable do skanowania sieci.plik txt. Załóżmy, że chcemy użyć Hydry do przeprowadzenia ataku brute force przeciwko wszystkim usługom FTP w sieci, ale nie chcemy tracić czasu, który byłby wymagany do ponownego skanowania portu 21 w całej sieci. Ten prosty skrypt wyodrębni wszystkie systemy, które mają otwarty określony port. Pierwsza linia pyta użytkownika o numer portu. Druga linia następnie przypisuje wartość wejściową użytkownika do zmiennej 'port’. Trzecia linia wskazuje użytkownikowi, że wszystkie systemy z tym otwartym portem zostaną wymienione. I na koniec, ostatnie polecenie jest tam, gdzie grep out wyników z Nmap greppable output. Skrypt używa polecenia grep do wyodrębnienia wszystkich linii z pliku wyjściowego, które odwołują się do określonego portu. Będzie to obejmować linie, które wyliczają każdą instancję, w której port jest otwarty, zamknięty lub filtrowany. Następnie, to rury, które wyjście do innej funkcji grep, który wyodrębnia tylko instancje, w których określony port jest otwarty. To wyjście jest następnie przekazywane do funkcji cięcia, która określa znak spacji jako ogranicznik, a następnie wyprowadza drugie pole. W ten sposób nasz skrypt wyświetla adres IP dla każdego systemu, który ma otwarty określony port. Rysunek 12 pokazuje wyjście skryptu.

f12

Rysunek 12. Nmap Result Analysis script Output

chociaż jest to bardzo prosty skrypt, pokazuje, jak łatwo można wyodrębnić informacje z formatu wyjściowego greppable. Po pozyskaniu tych zebranych informacji można z łatwością wykorzystać do dalszego tworzenia skryptów. Może być użyty jako punkt wyjścia do wykonania innego kolejnego zadania przeciwko każdemu systemowi, który został zidentyfikowany jako mający określony otwarty port.

wszechstronne narzędzie do testowania penetracji

łącząc jego różne możliwości, można łatwo wykonać kompletny test penetracyjny za pomocą samego nmap. Nie można zaprzeczyć, że nmap, z imponującą listą funkcji i możliwości, jest naprawdę potężnym narzędziem. W miarę upływu lat będzie on prawdopodobnie jeszcze potężniejszy, gdy więcej osób będzie nadal wnosić wkład w ten projekt. Jak dziecko z bronią ojca, nmap może być niebezpiecznym narzędziem w niewłaściwych rękach. Ale jeśli jest używany prawidłowo, może być nieocenionym atutem zapewniającym bezpieczeństwo infrastruktury sieciowej. Więc zawsze pamiętaj, aby używać go mądrze i używać go dobrze.

o autorze

jh

Justin Hutchens zajmuje się obecnie analizą luk w zabezpieczeniach sieciowych, wykrywaniem włamań i kryminalistyką cyfrową dla dużej sieci korporacyjnej z ponad 33 000 systemów sieciowych. Pełnił wiele różnych ról w dziedzinie technologii informatycznych, w tym projektowania sieci, rozwoju systemów, administracji bazami danych i bezpieczeństwa sieci. Obecnie prowadzi również kursy na temat testów penetracyjnych z systemami operacyjnymi Backtrack i Kali-Linux. Obecnie posiada tytuł licencjata w dziedzinie technologii informatycznych i wielu certyfikatów zawodowych, aby obejmować CISSP (Certified Information System Security Professional), CEH (Certified Ethical Hacker), ECSA (EC-Council Certified Security Analyst) i CHFI (Computer Hacking Forensic Investigator).

Write a Comment

Twój adres e-mail nie zostanie opublikowany.