Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00281 005141 12583263 na godz. na dobę w sumie
Skanowanie sieci z Kali Linux. Receptury - ebook/pdf
Skanowanie sieci z Kali Linux. Receptury - ebook/pdf
Autor: Liczba stron: 424
Wydawca: Helion Język publikacji: polski
ISBN: 978-83-283-0990-6 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> hacking >> bezpieczeństwo systemów
Porównaj ceny (książka, ebook (-20%), audiobook).

Bezpieczeństwo sieci w Twoich rękach!

W dzisiejszych czasach większość systemów informatycznych na świecie podłączona jest do Internetu. To rozwiązanie ma jedną wadę — dowolna osoba może spróbować przełamać zabezpieczenia sieci i uzyskać nieuprawniony dostęp do danych przetwarzanych w Twoich systemach. Jak temu zaradzić? Odpowiedź znajdziesz w tej książce.

Kali Linux to specjalna dystrybucja systemu Linux, która ułatwia skanowanie sieci pod kątem bezpieczeństwa. Zawarty w niej zestaw narzędzi pozwala na analizę najczęstszych problemów, a co za tym idzie, dzięki niej możesz błyskawicznie uszczelnić Twój system, tak aby przełamanie zabezpieczeń nie było prostym zadaniem. Wszystko, co musisz zrobić, zostało tu przedstawione w formie receptur. Sięgnij po tę książkę i przekonaj się, jak wykrywać dostępne hosty w sieci, skanować sieć za pomocą narzędzi ARPing, Nmap lub NetDiscover oraz odkrywać otwarte porty. Dowiedz się, w jaki sposób możesz zdalnie zidentyfikować uruchomiony system operacyjny, przeprowadzać ataki DoS (ang. Denial of Service) oraz testować aplikacje sieciowe. To doskonała lektura, która w rękach wprawnego administratora pozwoli na zdecydowane zwiększenie bezpieczeństwa sieci. Warto w nią zainwestować!

Sięgnij po tę książkę i:

Ponad 90 praktycznych receptur prezentujących sposób wykorzystania własnych skryptów i narzędzi dostępnych w systemie Kali Linux do efektywnego skanowania systemów działających w sieci

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

Tytuł oryginału: Kali Linux Network Scanning Cookbook Tłumaczenie: Grzegorz Kowalczyk ISBN: 978-83-283-0987-6 Copyright © Packt Publishing 2014. First published in the English language under the title: ‘Kali Linux Network Scanning Cookbook – (9781783982141)’. Polish edition copyright © 2015 by Helion S.A. All rights reserved. All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from the Publisher. Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji. Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli. Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce. Wydawnictwo HELION ul. Kościuszki 1c, 44-100 GLIWICE tel. 32 231 22 19, 32 230 98 63 e-mail: helion@helion.pl WWW: http://helion.pl (księgarnia internetowa, katalog książek) Pliki z przykładami omawianymi w książce można znaleźć pod adresem: ftp://ftp.helion.pl/przyklady/skakar.zip Drogi Czytelniku! Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/skakar Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję. Printed in Poland. • Kup książkę • Poleć książkę • Oceń książkę • Księgarnia internetowa • Lubię to! » Nasza społeczność Spis tre(cid:258)ci O autorze O korektorach merytorycznych Wst(cid:218)p Rozdzia(cid:239) 1. Wprowadzenie Konfiguracja (cid:258)rodowiska testowego z wykorzystaniem pakietu VMware Player (Windows) Konfiguracja (cid:258)rodowiska testowego z wykorzystaniem pakietu VMware Fusion (Mac OS X) Instalacja systemu Ubuntu Server Instalacja systemu Metasploitable2 Instalacja systemu Windows Zwi(cid:218)kszanie p(cid:239)aszczyzny ataku na system Windows Instalacja systemu Kali Linux Instalacja i konfiguracja SSH Instalacja pakietu Nessus w systemie Kali Linux Konfiguracja pakietu Burp Suite w systemie Kali Linux Praca z edytorami tekstu VIM i Nano Rozdzia(cid:239) 2. Wykrywanie hostów w sieci Skanowanie sieci na warstwie 2. przy u(cid:285)yciu programu Scapy Skanowanie sieci na warstwie 2. przy u(cid:285)yciu programu ARPing Skanowanie sieci na warstwie 2. przy u(cid:285)yciu programu Nmap Skanowanie sieci na warstwie 2. przy u(cid:285)yciu programu NetDiscover Skanowanie sieci na warstwie 2. przy u(cid:285)yciu programu Metasploit Skanowanie sieci na warstwie 3. przy u(cid:285)yciu polecenia ping (ICMP) Skanowanie sieci na warstwie 3. przy u(cid:285)yciu programu Scapy Skanowanie sieci na warstwie 3. przy u(cid:285)yciu programu Nmap Skanowanie sieci na warstwie 3. przy u(cid:285)yciu programu fping Skanowanie sieci na warstwie 3. przy u(cid:285)yciu programu hping3 Skanowanie sieci na warstwie 4. przy u(cid:285)yciu programu Scapy Skanowanie sieci na warstwie 4. przy u(cid:285)yciu programu Nmap Skanowanie sieci na warstwie 4. przy u(cid:285)yciu programu hping3 7 9 11 17 18 23 26 30 32 35 38 41 45 49 53 57 61 69 74 78 80 84 88 97 100 103 109 119 123 Poleć książkęKup książkę Spis tre(cid:286)ci Rozdzia(cid:239) 3. Skanowanie portów Skanowanie portów UDP Skanowanie portów TCP Skanowanie portów UDP przy u(cid:285)yciu programu Scapy Skanowanie portów UDP przy u(cid:285)yciu programu Nmap Skanowanie portów UDP przy u(cid:285)yciu programu Metasploit Skanowanie typu stealth przy u(cid:285)yciu programu Scapy Skanowanie typu stealth przy u(cid:285)yciu programu Nmap Skanowanie typu stealth przy u(cid:285)yciu programu Metasploit Skanowanie typu stealth przy u(cid:285)yciu programu hping3 Skanowanie typu TCP Connect przy u(cid:285)yciu programu Scapy Skanowanie typu TCP Connect przy u(cid:285)yciu programu Nmap Skanowanie typu TCP Connect przy u(cid:285)yciu pakietu Metasploit Skanowanie typu TCP Connect przy u(cid:285)yciu programu Dmitry Skanowanie portów TCP przy u(cid:285)yciu programu Netcat Skanowanie typu zombie przy u(cid:285)yciu programu Scapy Skanowanie typu zombie przy u(cid:285)yciu programu Nmap Rozdzia(cid:239) 4. Fingerprinting, czyli identyfikacja systemów operacyjnych i us(cid:239)ug sieciowych Przechwytywanie banerów przy u(cid:285)yciu programu Netcat Przechwytywanie banerów przy u(cid:285)yciu programu obiektów socket j(cid:218)zyka Python Przechwytywanie banerów przy u(cid:285)yciu programu Dmitry Przechwytywanie banerów przy u(cid:285)yciu programu skryptów Nmap NSE Przechwytywanie banerów przy u(cid:285)yciu programu Amap Identyfikacja us(cid:239)ug sieciowych przy u(cid:285)yciu programu Nmap Identyfikacja us(cid:239)ug sieciowych przy u(cid:285)yciu programu Amap Identyfikacja us(cid:239)ug systemów operacyjnych przy u(cid:285)yciu programu Scapy Identyfikacja us(cid:239)ug systemów operacyjnych przy u(cid:285)yciu programu Nmap Identyfikacja us(cid:239)ug systemów operacyjnych przy u(cid:285)yciu programu xProbe2 Pasywna identyfikacja systemów operacyjnych przy u(cid:285)yciu programu p0f Analiza SNMP przy u(cid:285)yciu programu Onesixtyone Analiza SNMP przy u(cid:285)yciu programu SNMPWalk Identyfikacja zapór sieciowych przy u(cid:285)yciu programu Scapy Identyfikacja zapór sieciowych przy u(cid:285)yciu programu Nmap Identyfikacja zapór sieciowych przy u(cid:285)yciu pakietu Metasploit Rozdzia(cid:239) 5. Skanowanie w poszukiwaniu podatno(cid:258)ci i luk w zabezpieczeniach Skanowanie podatno(cid:258)ci i luk w zabezpieczeniach przy u(cid:285)yciu silnika Nmap NSE Skanowanie podatno(cid:258)ci i luk w zabezpieczeniach przy u(cid:285)yciu modu(cid:239)ów pomocniczych pakietu Metasploit Tworzenie profili skanowania programu Nessus Skanowanie podatno(cid:258)ci i luk w zabezpieczeniach przy u(cid:285)yciu programu Nessus Skanowanie podatno(cid:258)ci i luk w zabezpieczeniach z poziomu wiersza polece(cid:241) przy u(cid:285)yciu programu Nessuscmd Weryfikowanie podatno(cid:258)ci i luk w zabezpieczeniach za pomoc(cid:200) sesji HTTP Weryfikowanie podatno(cid:258)ci i luk w zabezpieczeniach za pomoc(cid:200) protoko(cid:239)u ICMP 4 131 132 133 136 142 146 149 157 162 168 171 178 183 190 192 196 201 205 207 210 214 216 218 220 222 226 232 234 236 239 240 242 255 257 261 262 268 272 275 280 282 285 Poleć książkęKup książkę Spis tre(cid:286)ci Rozdzia(cid:239) 6. Ataki typu DoS Fuzzing jako metoda wykrywania podatno(cid:258)ci na przepe(cid:239)nienie bufora Ataki typu buffer overflow DoS Ataki typu Smurf DoS Ataki typu DNS amplification DoS Ataki typu SNMP amplification DoS Ataki typu NTP amplification DoS Ataki typu SYN flood DoS Ataki typu Sock stress DoS Przeprowadzanie ataków DoS za pomoc(cid:200) skryptów Nmap NSE Przeprowadzanie ataków DoS za pomoc(cid:200) pakietu Metasploit Przeprowadzanie ataków DoS za pomoc(cid:200) innych exploitów Rozdzia(cid:239) 7. Skanowanie i testowanie aplikacji sieciowych Skanowanie aplikacji sieciowych za pomoc(cid:200) programu Nikto Skanowanie SSL/TLS za pomoc(cid:200) programu SSLScan Skanowanie SSL/TLS za pomoc(cid:200) programu SSLyze Definiowanie docelowej aplikacji sieciowej w pakiecie Burp Suite Zastosowanie modu(cid:239)u Burp Suite Spider Zastosowanie narz(cid:218)dzi z pakietu Burp Suite wspomagaj(cid:200)cych zbieranie informacji i profilowanie celu Zastosowanie modu(cid:239)u Burp Suite Proxy Zastosowanie skanera aplikacji sieciowych pakietu Burp Suite Zastosowanie modu(cid:239)u Burp Suite Intruder Zastosowanie modu(cid:239)u Burp Suite Comparer Zastosowanie modu(cid:239)u Burp Suite Repeater Zastosowanie modu(cid:239)u Burp Suite Decoder Zastosowanie modu(cid:239)u Burp Suite Sequencer Wstrzykiwanie kodu SQL za pomoc(cid:200) metody GET i programu sqlmap Wstrzykiwanie kodu SQL za pomoc(cid:200) metody POST i programu sqlmap Wstrzykiwanie kodu SQL za pomoc(cid:200) programu sqlmap z wykorzystaniem przechwyconych (cid:285)(cid:200)da(cid:241) Automatyczne skanowanie w poszukiwaniu podatno(cid:258)ci CSRF Testowanie podatno(cid:258)ci na wstrzykiwanie polece(cid:241) za pomoc(cid:200) protoko(cid:239)u HTTP Testowanie podatno(cid:258)ci na wstrzykiwanie polece(cid:241) za pomoc(cid:200) protoko(cid:239)u ICMP Rozdzia(cid:239) 8. Automatyzacja narz(cid:218)dzi systemu Kali Linux Analiza wyników dzia(cid:239)ania programu Nmap za pomoc(cid:200) polecenia grep Skanowanie portów z wykorzystaniem programu Nmap i dedykowanego wykonywania skryptów NSE Wyszukiwanie i eksploatacja podatno(cid:258)ci z wykorzystaniem skryptów NSE i pakietu Metasploit Wyszukiwanie i eksploatacja podatno(cid:258)ci z wykorzystaniem programu Nessuscmd i pakietu Metasploit Wielow(cid:200)tkowa eksploatacja podatno(cid:258)ci i luk w zabezpieczeniach z wykorzystaniem pakietu Metasploit i (cid:239)adunków typu reverse shell payload 289 291 294 297 301 310 319 321 327 331 334 340 345 347 349 352 354 356 359 361 363 365 367 369 372 374 376 380 383 385 388 390 393 394 396 399 403 405 5 Poleć książkęKup książkę Spis tre(cid:286)ci Wielow(cid:200)tkowa eksploatacja podatno(cid:258)ci i luk w zabezpieczeniach z wykorzystaniem pakietu Metasploit i pliku backdoora Wielow(cid:200)tkowa eksploatacja podatno(cid:258)ci i luk w zabezpieczeniach z wykorzystaniem pakietu Metasploit i weryfikacji ICMP Wielow(cid:200)tkowa eksploatacja podatno(cid:258)ci i luk w zabezpieczeniach z wykorzystaniem pakietu Metasploit i tworzeniem kont z uprawnieniami administratora 413 408 411 Skorowidz 417 6 Poleć książkęKup książkę 2 Wykrywanie hostów w sieci Wykrywanie hostów w sieci to proces maj(cid:200)cy na celu wyszukiwanie i rozpoznawanie komputerów, serwerów, zapór sieciowych, routerów i innych urz(cid:200)dze(cid:241) pod(cid:239)(cid:200)czonych do sieci. W kontek(cid:258)cie testów penetracyjnych wykrywanie hostów jest zazwyczaj przeprowadzane po to, by zidenty- fikowa(cid:202) potencjalne cele ataku. Zadaniem podczas takiego skanowania nie jest gromadzenie szczegó(cid:239)owych informacji o hostach w sieci, ale wykrywanie obecno(cid:258)ci takich hostów i ich lo- kalizacji w sieci. W rezultacie przeprowadzonego wykrywania powiniene(cid:258) otrzyma(cid:202) list(cid:218) ad- resów IP hostów, któr(cid:200) mo(cid:285)esz wykorzysta(cid:202) do dalszych analiz. W tym rozdziale omówimy wiele sposobów wykrywania hostów w sieci przy u(cid:285)yciu ró(cid:285)nych protoko(cid:239)ów sieciowych dzia(cid:239)aj(cid:200)cych na 2., 3. i 4. warstwie modelu OSI. Znajdziesz tutaj nast(cid:218)puj(cid:200)ce receptury: (cid:81) Skanowanie sieci na warstwie 2. przy u(cid:285)yciu programu Scapy. (cid:81) Skanowanie sieci na warstwie 2. przy u(cid:285)yciu programu ARPing. (cid:81) Skanowanie sieci na warstwie 2. przy u(cid:285)yciu programu Nmap. (cid:81) Skanowanie sieci na warstwie 2. przy u(cid:285)yciu programu NetDiscover. (cid:81) Skanowanie sieci na warstwie 2. przy u(cid:285)yciu programu Metasploit. (cid:81) Skanowanie sieci na warstwie 3. przy u(cid:285)yciu polecenia ping (ICMP). (cid:81) Skanowanie sieci na warstwie 3. przy u(cid:285)yciu programu Scapy. (cid:81) Skanowanie sieci na warstwie 3. przy u(cid:285)yciu programu Nmap. (cid:81) Skanowanie sieci na warstwie 3. przy u(cid:285)yciu programu fping. (cid:81) Skanowanie sieci na warstwie 3. przy u(cid:285)yciu programu hping3. (cid:81) Skanowanie sieci na warstwie 4. przy u(cid:285)yciu programu Scapy. (cid:81) Skanowanie sieci na warstwie 4. przy u(cid:285)yciu programu Nmap. (cid:81) Skanowanie sieci na warstwie 4. przy u(cid:285)yciu programu hping3. Poleć książkęKup książkę Skanowanie sieci z Kali Linux. Receptury Zanim jednak rozpoczniemy szczegó(cid:239)owe omawianie poszczególnych technik, musimy przed- stawi(cid:202) kilka podstawowych zagadnie(cid:241) i poj(cid:218)(cid:202). Model OSI (ang. Open Systems Interconnection) to standard zdefiniowany przez organizacj(cid:218) ISO (ang. International Organization for Standar- dization), opisuj(cid:200)cy struktur(cid:218) komunikacji sieciowej. Model OSI podzielony jest na siedem warstw (cid:258)ci(cid:258)le ze sob(cid:200) wspó(cid:239)pracuj(cid:200)cych i definiuj(cid:200)cych sposób, w jaki dane mog(cid:200) by(cid:202) przekazy- wane mi(cid:218)dzy ró(cid:285)nymi systemami. Wy(cid:285)sze warstwy modelu OSI s(cid:200) zwykle widoczne, a u(cid:285)ytkow- nik jest ich (cid:258)wiadomy, podczas gdy warstwy ni(cid:285)sze dzia(cid:239)aj(cid:200) w sposób zupe(cid:239)nie przezroczysty dla przeci(cid:218)tnego u(cid:285)ytkownika, który nawet nie zdaje sobie sprawy z ich obecno(cid:258)ci. Poszcze- gólne warstwy modelu OSI zosta(cid:239)y przedstawione poni(cid:285)ej. Warstwa modelu OSI Opis warstwy Przyk(cid:239)adowe protoko(cid:239)y Warstwa 7.: warstwa aplikacji Najwy(cid:285)sza warstwa protoko(cid:239)u OSI, wykorzystywana HTTP, FTP, Telnet Warstwa 6.: warstwa prezentacji Warstwa 5.: warstwa sesji Warstwa 4.: warstwa transportowa przez aplikacje do przesy(cid:239)ania danych w sieci. Warstwa 6. definiuje sposób formatowania b(cid:200)d(cid:283) organizacji przesy(cid:239)anych danych. Zadaniem tej warstwy jest zarz(cid:200)dzanie przebiegiem komunikacji (sesji) podczas po(cid:239)(cid:200)czenia mi(cid:218)dzy dwoma hostami sieciowymi, jej synchronizacja i zako(cid:241)czenie. Warstwa transportowa zapewnia integralno(cid:258)(cid:202) transmisji i inne us(cid:239)ugi odpowiadaj(cid:200)ce za po(cid:239)(cid:200)czenie mi(cid:218)dzy hostami. Warstwa 3.: warstwa sieciowa Warstwa sieciowa jest odpowiedzialna za okre(cid:258)lanie Warstwa 2.: warstwa (cid:239)(cid:200)cza danych trasy, jak(cid:200) przesy(cid:239)ane s(cid:200) pakiety (trasowanie po(cid:239)(cid:200)czenia). Zadaniem warstwy (cid:239)(cid:200)cza danych jest upakowanie strumienia danych w ramki i przesy(cid:239)anie ich do warstwy fizycznej. ASCII, JPEG, PDF, PNG, DOCX NetBIOS, PPTP, RPC, SOCKS TCP, UDP IPv4, IPv6, ICMP, IPSec ARP Warstwa 1.: warstwa fizyczna Warstwa fizyczna jest odpowiedzialna za przesy(cid:239)anie strumienia danych za po(cid:258)rednictwem no(cid:258)nika (cid:239)(cid:200)cz(cid:200)cego komunikuj(cid:200)ce si(cid:218) ze sob(cid:200) urz(cid:200)dzenia. Zadaniem ni(cid:285)szych warstw modelu OSI jest zapewnienie, (cid:285)e dane przesy(cid:239)ane w sieci dotr(cid:200) do swojego miejsca przeznaczenia. Bardzo cz(cid:218)sto protoko(cid:239)y sieciowe wykorzystywane na tych war- stwach wymagaj(cid:200), aby systemy ko(cid:241)cowe przesy(cid:239)a(cid:239)y odpowiedzi na otrzymane (cid:285)(cid:200)dania, dzi(cid:218)ki czemu tych protoko(cid:239)ów mog(cid:200) u(cid:285)ywa(cid:202) potencjalni napastnicy do identyfikacji hostów dzia(cid:239)aj(cid:200)cych w sieci. Zanim przejdziemy do szczegó(cid:239)owych receptur, przedstawimy jeszcze kilka protoko(cid:239)ów dzia(cid:239)aj(cid:200)cych na poszczególnych warstwach oraz poka(cid:285)emy, w jaki sposób mog(cid:200) by(cid:202) wykorzysty- wane do wykrywania hostów w sieci. Skanowanie sieci na warstwie 2. za pomoc(cid:200) protoko(cid:239)u ARP ma nast(cid:218)puj(cid:200)ce zalety i wady: (cid:81) Zalety: (cid:81) Du(cid:285)a szybko(cid:258)(cid:202). 58 Poleć książkęKup książkę Rozdzia(cid:225) 2. • Wykrywanie hostów w sieci (cid:81) Du(cid:285)a niezawodno(cid:258)(cid:202). (cid:81) Wady: (cid:81) Nie pozwala na wykrywanie systemów zdalnych (protokó(cid:239) nieroutowalny). Skanowanie sieci na warstwie 2. mo(cid:285)na przeprowadza(cid:202) z wykorzystaniem protoko(cid:239)u ARP (ang. Address Resolution Protocol). ARP to protokó(cid:239) warstwy (cid:239)(cid:200)cza danych, który zajmuje si(cid:218) przede wszystkim translacj(cid:200) logicznych adresów IP warstwy 3. na fizyczne adresy MAC warstwy 2. Kiedy dany system musi dowiedzie(cid:202) si(cid:218), jaki adres fizyczny MAC odpowiada docelowemu adre- sowi IP, rozsy(cid:239)a broadcast z (cid:285)(cid:200)daniem ARP do lokalnego segmentu sieci. Pakiet z (cid:285)(cid:200)daniem ARP po prostu zadaje wszystkim hostom w sieci pytanie: „Kto ma ten adres IP?”. Po otrzy- maniu takiego zapytania system, który ma poszukiwany adres IP, komunikuje si(cid:218) bezpo(cid:258)red- nio z systemem zadaj(cid:200)cym pytanie, przesy(cid:239)aj(cid:200)c odpowied(cid:283) ARP zawieraj(cid:200)c(cid:200) adres MAC (dru- ga warstwa modelu OSI). Po otrzymaniu odpowiedzi system wysy(cid:239)aj(cid:200)cy (cid:285)(cid:200)danie aktualizuje zawarto(cid:258)(cid:202) swojego bufora ARP, w którym tymczasowo zapisywany jest rekord wi(cid:200)(cid:285)(cid:200)cy poszu- kiwany adres IP z adresem MAC. Protokó(cid:239) ARP mo(cid:285)e by(cid:202) u(cid:285)ywany do wykrywania aktyw- nych hostów, poniewa(cid:285) otrzymanie od zdalnego hosta odpowiedzi na przes(cid:239)ane (cid:285)(cid:200)danie nie wymaga przeprowadzenia (cid:285)adnego uwierzytelniania ani autoryzacji. W rezultacie dla potencjalnego napastnika maj(cid:200)cego mo(cid:285)liwo(cid:258)(cid:202) pod(cid:239)(cid:200)czenia si(cid:218) do sieci lo- kalnej wyszukanie dzia(cid:239)aj(cid:200)cych w niej hostów jest zadaniem wr(cid:218)cz trywialnym. Mo(cid:285)na je wy- kona(cid:202) poprzez wysy(cid:239)anie serii (cid:285)(cid:200)da(cid:241) ARP do wszystkich adresów IP z danej podsieci i nast(cid:218)pnie zapisywanie adresów IP, z których przes(cid:239)ane zosta(cid:239)y odpowiedzi. Wyszukiwanie hostów w sieci z wykorzystaniem protoko(cid:239)u ARP ma jednak swoje zalety i wady. Niew(cid:200)tpliwie jest to bardzo skuteczne rozwi(cid:200)zanie, g(cid:239)ównie ze wzgl(cid:218)du na fakt, (cid:285)e jest najszybsz(cid:200) i daj(cid:200)c(cid:200) najbardziej wiary- godne wyniki metod(cid:200) skanowania. Z drugiej strony nale(cid:285)y pami(cid:218)ta(cid:202), (cid:285)e niestety ARP jest proto- ko(cid:239)em nieroutowalnym i z tego wzgl(cid:218)du mo(cid:285)e by(cid:202) u(cid:285)ywany jedynie do wykrywania hostów w sieci lokalnej. Skanowanie sieci na warstwie 3. z wykorzystaniem protoko(cid:239)u ICMP ma nast(cid:218)puj(cid:200)ce zalety i wady: (cid:81) Zalety: (cid:81) Pozwala na wykrywanie hostów zdalnych (protokó(cid:239) routowalny). (cid:81) Wzgl(cid:218)dnie du(cid:285)a szybko(cid:258)(cid:202) dzia(cid:239)ania. (cid:81) Wady: (cid:81) Wolniejsze ni(cid:285) skanowanie ARP. (cid:81) Protokó(cid:239) ICMP jest cz(cid:218)sto blokowany przez zapory sieciowe. Skanowanie na warstwie 3. jest prawdopodobnie najbardziej znan(cid:200) i najpowszechniej stoso- wan(cid:200) przez administratorów i personel techniczny metod(cid:200) wykrywania aktywnych hostów w sie- ci. S(cid:239)ynne polecenie ping, które mo(cid:285)esz znale(cid:283)(cid:202) zarówno w systemach Windows, jak i Linux, dzia(cid:239)a w(cid:239)a(cid:258)nie na warstwie 3. i wykorzystuje protokó(cid:239) ICMP (ang. Internet Control Message Protocol). Cho(cid:202) protokó(cid:239) ICMP ma ca(cid:239)kiem sporo interesuj(cid:200)cych funkcji, jedn(cid:200) z najbardziej u(cid:285)ytecznych s(cid:200) komunikaty (cid:285)(cid:200)dania echa (ang. Echo Request) i odpowiedzi na echo (ang. Echo Reply). (cid:191)(cid:200)danie ICMP Echo Request jest technicznym odpowiednikiem sytuacji, w której jeden 59 Poleć książkęKup książkę Skanowanie sieci z Kali Linux. Receptury system pyta drugi: „Hej, jeste(cid:258) tam?”. Jak mo(cid:285)na si(cid:218) spodziewa(cid:202), odpowied(cid:283) ICMP Echo Reply to komunikat, za pomoc(cid:200) którego zapytany system odpowiada: „Tak, jestem”. Aby spraw- dzi(cid:202), czy pod danym adresem IP kryje si(cid:218) jaki(cid:258) host, nasz system mo(cid:285)e na ten adres przes(cid:239)a(cid:202) (cid:285)(cid:200)danie ICMP Echo Request. Je(cid:285)eli host, który ma taki adres IP, jest w(cid:239)(cid:200)czony i odpowiednio skonfigurowany, po otrzymaniu takiego (cid:285)(cid:200)dania prze(cid:258)le odpowied(cid:283) ICMP Echo Reply. Proto- kó(cid:239) ICMP mo(cid:285)e by(cid:202) z powodzeniem wykorzystywany do wykrywania hostów w ca(cid:239)ych sie- ciach, poprzez sukcesywne pingowanie w p(cid:218)tli kolejnych adresów IP z danego zakresu. W wyniku takiej operacji powiniene(cid:258) otrzyma(cid:202) list(cid:218) adresów IP, z których nades(cid:239)ane zosta(cid:239)y odpowiedzi na ping. Skanowanie sieci na warstwie 3. jest bardzo efektywnym rozwi(cid:200)zaniem, poniewa(cid:285) do wykrywania hostów wykorzystuje protokó(cid:239) routowalny, ale mimo to ma równie(cid:285) swoje wady. Po pierwsze, skanowanie z u(cid:285)yciem protoko(cid:239)u ICMP nie jest tak szybkie jak w przy- padku protoko(cid:239)u ARP. Po drugie, taki rodzaj skanowania nie daje tak pewnych rezultatów jak skanowanie ARP, poniewa(cid:285) niektóre systemy s(cid:200) celowo skonfigurowane tak, aby nie odpowia- da(cid:202) na (cid:285)(cid:200)dania ICMP Echo Request, a co gorsza, protokó(cid:239) ICMP jest bardzo cz(cid:218)sto blokowany przez zapory sieciowe. Nie zmienia to jednak w niczym faktu, (cid:285)e jest to szybki, wygodny i cz(cid:218)sto stosowany sposób wykrywania obecno(cid:258)ci hostów w zdalnych sieciach. Skanowanie na warstwie 4. to bardzo efektywne rozwi(cid:200)zanie, poniewa(cid:285) publicznie dost(cid:218)pne systemy znajduj(cid:200) si(cid:218) najcz(cid:218)(cid:258)ciej w publicznej przestrzeni adresów IP i udost(cid:218)pniaj(cid:200) ró(cid:285)ne us(cid:239)ugi sieciowe za po(cid:258)rednictwem protoko(cid:239)ów TCP (ang. Transmission Control Protocol) lub UDP (ang. User Datagram Protocol). W (cid:283)le zabezpieczonych (cid:258)rodowiskach sieciowych odpo- wied(cid:283) ze zdalnego serwera mo(cid:285)na otrzyma(cid:202) po przes(cid:239)aniu na jego adres IP niemal dowolnego (cid:285)(cid:200)dania UDP lub TCP. Z drugiej strony, je(cid:285)eli w skanowanym (cid:258)rodowisku zaimplementowana jest zapora sieciowa z analiz(cid:200) stanu pakietów (ang. statefull filtering/statefull firewall), otrzy- ma(cid:202) odpowied(cid:283) ze zdalnego hosta b(cid:218)dzie mo(cid:285)na tylko w przypadku, kiedy (cid:285)(cid:200)danie SYN zo- stanie przes(cid:239)ane na konkretny port sieciowy, na którym dzia(cid:239)a okre(cid:258)lona us(cid:239)uga sieciowa. Co ciekawe, w wi(cid:218)kszo(cid:258)ci sytuacji u(cid:285)ycie odpowiednio dobranego (cid:285)(cid:200)dania pozwala na wykrywanie hostów nawet w bardzo dobrze skonfigurowanych i zabezpieczonych (cid:258)rodowiskach sieciowych. Bior(cid:200)c jednak pod uwag(cid:218) fakt, (cid:285)e istnieje 65 536 dost(cid:218)pnych portów UDP i TCP, pe(cid:239)ne ska- nowanie us(cid:239)ug na wszystkich portach mo(cid:285)e by(cid:202) bardzo czasoch(cid:239)onne. Z tego powodu najlepszym podej(cid:258)ciem do skanowania sieci na warstwie 4. z u(cid:285)yciem protoko(cid:239)ów TCP i UDP b(cid:218)dzie wy- pracowanie rozs(cid:200)dnego kompromisu pomi(cid:218)dzy dok(cid:239)adno(cid:258)ci(cid:200) i funkcjonalno(cid:258)ci(cid:200) skanu. Skanowanie sieci na warstwie 4. z wykorzystaniem protoko(cid:239)u TCP ma nast(cid:218)puj(cid:200)ce zalety i wady: (cid:81) Zalety: (cid:81) Pozwala na wykrywanie systemów zdalnych (protokó(cid:239) routowalny). (cid:81) Daje bardziej wiarygodne wyniki ni(cid:285) ICMP (filtrowanie jest mniej powszechne lub implementowane selektywnie). (cid:81) Wady: (cid:81) Obecno(cid:258)(cid:202) zapór sieciowych z analiz(cid:200) stanu pakietów mo(cid:285)e powodowa(cid:202), (cid:285)e otrzymane wyniki b(cid:218)d(cid:200) niejednoznaczne. (cid:81) Dok(cid:239)adne skanowanie mo(cid:285)e zajmowa(cid:202) wiele czasu. 60 Poleć książkęKup książkę Rozdzia(cid:225) 2. • Wykrywanie hostów w sieci Skanowanie sieci na warstwie 4. z wykorzystaniem protoko(cid:239)u TCP polega na wysy(cid:239)aniu do potencjalnych adresów przeznaczenia pakietów TCP z ustawionymi ró(cid:285)nymi flagami, które mog(cid:200) powodowa(cid:202) ró(cid:285)ne reakcje zdalnego hosta, pozwalaj(cid:200)ce na jego identyfikacj(cid:218). Nieocze- kiwane otrzymanie pakietu z ustawion(cid:200) flag(cid:200) FIN (ang. Finish) czy ACK (ang. Acknowledge) bardzo cz(cid:218)sto mo(cid:285)e powodowa(cid:202) odes(cid:239)anie przez zdalnego hosta odpowiedzi RST (ang. Reset). Wys(cid:239)anie pakietów SYN (ang. Synchronize) do zdalnego hosta bardzo cz(cid:218)sto powoduje otrzymanie odpowiedzi SYN+ACK lub RST, w zale(cid:285)no(cid:258)ci od statusu danej us(cid:239)ugi sieciowej. Zamiarem ata- kuj(cid:200)cego nie jest wymuszenie otrzymania konkretnej odpowiedzi, ale po prostu otrzymanie do- wolnej odpowiedzi — dowolna odpowied(cid:283) ze zdalnego hosta jest dla nas wystarczaj(cid:200)cym potwierdzeniem, (cid:285)e taki host istnieje. Skanowanie sieci na warstwie 4. z wykorzystaniem protoko(cid:239)u UDP ma nast(cid:218)puj(cid:200)ce zalety i wady: (cid:81) Zalety: (cid:81) Pozwala na wykrywanie systemów zdalnych (protokó(cid:239) routowalny). (cid:81) Pozwala na wykrywanie systemów zdalnych, na których wszystkie us(cid:239)ugi TCP s(cid:200) filtrowane przez zapor(cid:218) sieciow(cid:200). (cid:81) Wady: (cid:81) Niespójny sposób u(cid:285)ycia i filtrowanie odpowiedzi ICMP Port Unreachable (port niedost(cid:218)pny) powoduje, (cid:285)e zastosowanie tej metody do masowego skanowania sieci daje niemiarodajne rezultaty. (cid:81) Specyficzne dla poszczególnych us(cid:239)ug sieciowych metody sondowania powoduj(cid:200) ograniczenie dok(cid:239)adno(cid:258)ci skanowania i zwi(cid:218)kszaj(cid:200) czas jego realizacji. Skanowanie z wykorzystaniem protoko(cid:239)u UDP polega na wysy(cid:239)aniu sonduj(cid:200)cych pakietów UDP do ró(cid:285)nych portów sieciowych w celu wymuszenia odpowiedzi zdalnego systemu. Skanowanie UDP mo(cid:285)e by(cid:202) czasami bardzo efektywne w wykrywaniu hostów, na których wszystkie us(cid:239)ugi TCP s(cid:200) filtrowane przez zapor(cid:218) sieciow(cid:200). Z drugiej jednak strony skanowanie UDP cz(cid:218)sto jest niemiarodajne, poniewa(cid:285) niektóre us(cid:239)ugi odpowiadaj(cid:200) na pakiety UDP za pomoc(cid:200) komu- nikatów ICMP Port Unreachable, podczas gdy inne mog(cid:200) odpowiada(cid:202) tylko na odpowiednio dobrane (cid:285)(cid:200)dania dostosowane wy(cid:239)(cid:200)cznie do okre(cid:258)lonych us(cid:239)ug. Dodatkowo bardzo cz(cid:218)sto pa- kiety ICMP s(cid:200) filtrowane przez regu(cid:239)y ruchu wychodz(cid:200)cego na zaporach sieciowych, co po- woduje, (cid:285)e masowe skanowanie sieci za pomoc(cid:200) tej metody staje si(cid:218) problematyczne. Z tego powodu efektywne zastosowanie skanowania UDP wymaga zazwyczaj dobrania technik spe- cyficznych dla poszczególnych us(cid:239)ug sieciowych. Skanowanie sieci na warstwie 2. przy u(cid:285)yciu programu Scapy Scapy to pot(cid:218)(cid:285)ne, interaktywne narz(cid:218)dzie, za pomoc(cid:200) którego mo(cid:285)esz przechwytywa(cid:202), anali- zowa(cid:202) i modyfikowa(cid:202) ruch sieciowy. Co wi(cid:218)cej, mo(cid:285)esz równie(cid:285) u(cid:285)ywa(cid:202) tego narz(cid:218)dzia do tworzenia i wstrzykiwania do sieci w(cid:239)asnych pakietów sieciowych, zgodnych ze standardami 61 Poleć książkęKup książkę Skanowanie sieci z Kali Linux. Receptury ró(cid:285)nych protoko(cid:239)ów komunikacyjnych. Scapy to tak(cid:285)e biblioteka funkcji j(cid:218)zyka Python, dzi(cid:218)ki której mo(cid:285)esz tworzy(cid:202) bardzo wydajne skrypty przetwarzaj(cid:200)ce i modyfikuj(cid:200)ce ruch sieciowy. W tym podrozdziale poka(cid:285)emy, w jaki sposób mo(cid:285)esz pos(cid:239)u(cid:285)y(cid:202) si(cid:218) programem Scapy do ska- nowania sieci z wykorzystaniem protoko(cid:239)u ARP oraz jak przy u(cid:285)yciu biblioteki Scapy pisa(cid:202) w j(cid:218)zyku Python skrypty skanuj(cid:200)ce sie(cid:202) na warstwie 2. modelu OSI. Przygotuj si(cid:218) Aby mo(cid:285)na by(cid:239)o za pomoc(cid:200) pakietu Scapy przeprowadzi(cid:202) skanowanie na warstwie 2., w sieci lokalnej musi dzia(cid:239)a(cid:202) przynajmniej jeden system, który b(cid:218)dzie odpowiada(cid:239) na (cid:285)(cid:200)dania ARP. W przedstawionym przyk(cid:239)adzie wykorzystujemy kombinacj(cid:218) systemów Linux i Windows. Wi(cid:218)cej szczegó(cid:239)owych informacji na temat instalacji i konfiguracji tych systemów w naszym (cid:258)ro- dowisku testowym znajdziesz w rozdziale 1., w recepturach „Instalacja systemu Metasploitable2” oraz „Instalacja systemu Windows”. Oprócz tego w tej recepturze b(cid:218)dziemy u(cid:285)ywa(cid:202) edytorów tekstu, takich jak VIM czy Nano, do napisania skryptu skanuj(cid:200)cego w j(cid:218)zyku Python i zapisania go w systemie plików. Wi(cid:218)cej szczegó(cid:239)owych informacji na temat pisania skryptów znajdziesz w rozdziale 1., w recepturze „Praca z edytorami tekstu VIM i Nano”. Jak to zrobi(cid:202)? Aby zrozumie(cid:202), jak dzia(cid:239)a skanowanie z wykorzystaniem protoko(cid:239)u ARP, u(cid:285)yjemy programu Scapy do utworzenia w(cid:239)asnych pakietów sieciowych ARP, za pomoc(cid:200) których b(cid:218)dziemy mogli wykrywa(cid:202) oraz identyfikowa(cid:202) hosty w sieci LAN. By uruchomi(cid:202) program Scapy w systemie Linux, przejd(cid:283) do okna terminala i wykonaj polecenie scapy. Nast(cid:218)pnie mo(cid:285)esz u(cid:285)y(cid:202) funkcji display() do wy(cid:258)wietlenia domy(cid:258)lnej konfiguracji obiektów ARP tworzonych w programie Scapy, tak jak to zosta(cid:239)o przedstawione poni(cid:285)ej. root@KaliLinux:~# scapy Welcome to Scapy (2.2.0) ARP().display() ###[ ARP ]### hwtype= 0x1 ptype= 0x800 hwlen= 6 plen= 4 op= who-has hwsrc= 00:0c:29:fd:01:05 psrc= 172.16.36.232 hwdst= 00:00:00:00:00:00 pdst= 0.0.0.0 Zauwa(cid:285), (cid:285)e zarówno (cid:283)ród(cid:239)owy adres IP, jak i adres MAC zosta(cid:239)y automatycznie skonfigurowane na warto(cid:258)ci odpowiadaj(cid:200)ce hostowi, na którym zosta(cid:239) uruchomiony program Scapy. Warto(cid:258)ci te nigdy nie s(cid:200) zmieniane, z wyj(cid:200)tkiem sytuacji, w której chcesz ukry(cid:202) swój rzeczywisty adres (cid:283)ró- d(cid:239)owy. Domy(cid:258)lna warto(cid:258)(cid:202) kodu operacji ARP (ang. ARP opcode) jest automatycznie ustawiana 62 Poleć książkęKup książkę Rozdzia(cid:225) 2. • Wykrywanie hostów w sieci na warto(cid:258)(cid:202) who-has, która okre(cid:258)la, (cid:285)e generowany pakiet b(cid:218)dzie (cid:285)(cid:200)da(cid:239) przes(cid:239)ania powi(cid:200)zania adresu IP z adresem MAC. W takiej sytuacji jedynym parametrem, który musisz poda(cid:202), jest adres IP celu. Aby to zrobi(cid:202), utworzymy nowy obiekt, przypisuj(cid:200)c funkcj(cid:218) ARP do zmiennej. Na- zwa zmiennej obiektowej nie ma znaczenia (w naszym przyk(cid:239)adzie b(cid:218)dzie to arp_request). Kod zosta(cid:239) przedstawiony poni(cid:285)ej. arp_request = ARP() arp_request.pdst = 172.16.36.135 arp_request.display() ###[ ARP ]### hwtype= 0x1 ptype= 0x800 hwlen= 6 plen= 4 op= who-has hwsrc= 00:0c:29:65:fc:d2 psrc= 172.16.36.132 hwdst= 00:00:00:00:00:00 pdst= 172.16.36.135 Zwró(cid:202) uwag(cid:218), (cid:285)e za pomoc(cid:200) funkcji display() mo(cid:285)na sprawdzi(cid:202), czy warto(cid:258)ci parametrów konfiguracyjnych obiektu ARP zosta(cid:239)y zmienione zgodnie z oczekiwaniami. W przyk(cid:239)adzie u(cid:285)y- jemy adresu IP hosta docelowego, dzia(cid:239)aj(cid:200)cego w naszym (cid:258)rodowisku testowym. Aby wys(cid:239)a(cid:202) gotowe (cid:285)(cid:200)danie ARP i wy(cid:258)wietli(cid:202) otrzyman(cid:200) odpowied(cid:283), mo(cid:285)emy teraz u(cid:285)y(cid:202) funkcji sr1(). sr1(arp_request) Begin emission: ......................................*Finished to send 1 packets. Received 39 packets, got 1 answers, remaining 0 packets ARP hwtype=0x1 ptype=0x800 hwlen=6 plen=4 op=is-at hwsrc=00:0c:29:3d:84:32 psrc=172.16.36.135 hwdst=00:0c:29:65:fc:d2 pdst=172.16.36.132 | Padding load= \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 | Innym sposobem wykonania takiej samej operacji mo(cid:285)e by(cid:202) bezpo(cid:258)rednie wywo(cid:239)anie tej funkcji i przekazanie jej w wierszu polecenia wszystkich niezb(cid:218)dnych argumentów, tak jak to zosta(cid:239)o poka- zane na listingu poni(cid:285)ej. Dzi(cid:218)ki takiemu rozwi(cid:200)zaniu mo(cid:285)emy unikn(cid:200)(cid:202) konieczno(cid:258)ci tworzenia do- datkowych zmiennych, a tak(cid:285)e zrealizowa(cid:202) ca(cid:239)(cid:200) operacj(cid:218) za pomoc(cid:200) jednego wiersza kodu. sr1(ARP(pdst= 172.16.36.135 )) Begin emission: .........................*Finished to send 1 packets. Received 26 packets, got 1 answers, remaining 0 packets ARP hwtype=0x1 ptype=0x800 hwlen=6 plen=4 op=is-at hwsrc=00:0c:29:3d:84:32 psrc=172.16.36.135 hwdst=00:0c:29:65:fc:d2 pdst=172.16.36.132 | Padding load= \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 | 63 Poleć książkęKup książkę Skanowanie sieci z Kali Linux. Receptury Jak wida(cid:202), we wszystkich przedstawionych przypadkach po wys(cid:239)aniu (cid:285)(cid:200)dania otrzymywana jest odpowied(cid:283) wskazuj(cid:200)ca, (cid:285)e do adresu IP 172.16.36.135 przypisany jest adres MAC 00:0C:29:3D:84:32. Je(cid:285)eli teraz ponownie wykonasz tak(cid:200) operacj(cid:218), ale jako argument wywo(cid:239)ania podasz adres IP nieaktywnego hosta, nie otrzymasz (cid:285)adnej odpowiedzi, a uruchomiona funkcja b(cid:218)dzie przez ca(cid:239)y czas analizowa(cid:202) nadchodz(cid:200)cy ruch na lokalnym interfejsie sieciowym. Aby zatrzyma(cid:202) dzia(cid:239)anie funkcji, powiniene(cid:258) nacisn(cid:200)(cid:202) kombinacj(cid:218) klawiszy Ctrl+C. Zamiast tego mo(cid:285)esz równie(cid:285) podczas wywo(cid:239)ywania funkcji zdefiniowa(cid:202) maksymalny czas, po którym jej dzia(cid:239)anie zostanie zako(cid:241)czone (ang. timeout). Wykorzystanie parametru timeout nabiera szczególnego znaczenia, je(cid:285)eli u(cid:285)ywasz Scapy z poziomu skryptów j(cid:218)zyka Python. By ustawi(cid:202) maksymalny czas dzia(cid:239)ania, musisz w wierszu polecenia u(cid:285)y(cid:202) dodatkowego argumentu wywo- (cid:239)ania funkcji wysy(cid:239)aj(cid:200)cej (cid:285)(cid:200)danie ARP, reprezentuj(cid:200)cego czas, wyra(cid:285)ony w sekundach, przez jaki funkcja b(cid:218)dzie oczekiwa(cid:239)a na nadej(cid:258)cie odpowiedzi. arp_request.pdst = 172.16.36.134 sr1(arp_request, timeout=1) Begin emission: ......................................................................... ............Finished to send 1 packets. ................................. ......................................................................... ........................................ Received 3285 packets, got 0 answers, remaining 1 packets Je(cid:285)eli teraz, po ustawieniu parametru timeout, wy(cid:258)lemy (cid:285)(cid:200)danie ARP do nieistniej(cid:200)cego hosta, po up(cid:239)ywie oznaczonego czasu otrzymamy informacj(cid:218), (cid:285)e (cid:285)adna odpowied(cid:283) nie zosta(cid:239)a otrzy- mana. Co ciekawe, odpowiedzi na (cid:285)(cid:200)dania wys(cid:239)ane przez funkcj(cid:218) mog(cid:200) równie(cid:285) by(cid:202) przypi- sane do zmiennej, dzi(cid:218)ki czemu mo(cid:285)emy dalej przetwarza(cid:202) otrzyman(cid:200) odpowied(cid:283) poprzez od- wo(cid:239)anie si(cid:218) do takiej zmiennej, tak jak to zosta(cid:239)o przedstawione poni(cid:285)ej. response = sr1(arp_request, timeout=1) Begin emission: ....................................*Finished to send 1 packets. Received 37 packets, got 1 answers, remaining 0 packets response.display() ###[ ARP ]### hwtype= 0x1 ptype= 0x800 hwlen= 6 plen= 4 op= is-at hwsrc= 00:0c:29:3d:84:32 psrc= 172.16.36.135 hwdst= 00:0c:29:65:fc:d2 pdst= 172.16.36.132 ###[ Padding ]### load= \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 64 Poleć książkęKup książkę Rozdzia(cid:225) 2. • Wykrywanie hostów w sieci Scapy mo(cid:285)e by(cid:202) równie(cid:285) wykorzystywany jako biblioteka funkcji dla skryptów w j(cid:218)zyku Py- thon, dzi(cid:218)ki którym mo(cid:285)esz zautomatyzowa(cid:202) nu(cid:285)(cid:200)ce, cz(cid:218)sto powtarzane zadania. Dzi(cid:218)ki po(cid:239)(cid:200)- czeniu elastyczno(cid:258)ci Pythona z funkcjonalno(cid:258)ci(cid:200) bibliotek Scapy mo(cid:285)esz bez trudu napisa(cid:202) skrypt przechodz(cid:200)cy w p(cid:218)tli przez kolejne adresy IP lokalnych podsieci i wysy(cid:239)aj(cid:200)cy do ka(cid:285)dego z hostów odpowiednie (cid:285)(cid:200)danie ARP. Przyk(cid:239)ad w pe(cid:239)ni funkcjonalnego skryptu, przeprowa- dzaj(cid:200)cego skanowanie sieci na warstwie 2., zosta(cid:239) przedstawiony poni(cid:285)ej. #!/usr/bin/python import logging import subprocess logging.getLogger( scapy.runtime ).setLevel(logging.ERROR) from scapy.all import * if len(sys.argv) != 2: print Usage - ./arp_disc.py [interface] print Example - ./arp_disc.py eth0 print Example will perform an ARP scan of the local subnet to which eth0 is assigned sys.exit() interface = str(sys.argv[1]) ip = subprocess.check_output( ifconfig + interface + | grep inet addr | cut -d : -f 2 | cut -d -f 1 , shell=True).strip() prefix = ip.split( . )[0] + . + ip.split( . )[1] + . + ip.split( . )[2] + . for addr in range(0,254): answer=sr1(ARP(pdst=prefix+str(addr)),timeout=1,verbose=0) if answer == None: pass else: print prefix+str(addr) Pierwszy wiersz skryptu wskazuje lokalizacj(cid:218) interpretera j(cid:218)zyka Python, dzi(cid:218)ki czemu skrypt mo(cid:285)e zosta(cid:202) wykonany bez konieczno(cid:258)ci podawania tej informacji w wierszu wywo(cid:239)ania. Na- st(cid:218)pnie skrypt importuje wszystkie funkcje Scapy oraz definiuje poziomy logowania, co po- zwala na wyeliminowanie niepotrzebnych elementów w wynikach dzia(cid:239)ania programu. Dalej importowana jest biblioteka subprocess, która pozwala na (cid:239)atwe wyodr(cid:218)bnianie informacji z wywo(cid:239)a(cid:241) systemowych. Drugi blok kodu zawiera instrukcj(cid:218) warunkow(cid:200), sprawdzaj(cid:200)c(cid:200), czy w wierszu polece(cid:241) zosta(cid:239)a podana odpowiednia liczba argumentów wywo(cid:239)ania skryptu. Je(cid:285)eli nie, na ekranie wy(cid:258)wietlana jest krótka informacja, sk(cid:239)adaj(cid:200)ca si(cid:218) z opisu sk(cid:239)adni, przyk(cid:239)adu wywo(cid:239)ania oraz okre(cid:258)lenia przeznaczenia skryptu. Dalej znajduje si(cid:218) pojedynczy wiersz kodu, w którym argument wywo(cid:239)ania skryptu zostaje przypisany do zmiennej interface. Kolejny blok kodu wykorzystuje funkcj(cid:218) check_output() z biblioteki subprocess do wywo(cid:239)ania polecenia ifconfig i za pomoc(cid:200) polece(cid:241) grep i cut wy- odr(cid:218)bnia z wyników jego dzia(cid:239)ania adres IP interfejsu sieciowego podanego jako argument 65 Poleć książkęKup książkę Skanowanie sieci z Kali Linux. Receptury wywo(cid:239)ania skryptu. Wynik tej operacji zostaje przypisany do zmiennej ip. Nast(cid:218)pnie za po- moc(cid:200) funkcji split ze zmiennej ip wyodr(cid:218)bniany jest podci(cid:200)g znaków reprezentuj(cid:200)cy adres /24 tej podsieci. Na przyk(cid:239)ad je(cid:285)eli w zmiennej ip przechowywany jest adres 192.168.11.4, to do zmiennej prefix zostanie przypisana warto(cid:258)(cid:202) 192.168.11.. W ostatnim bloku kodu umiesz- czona zosta(cid:239)a p(cid:218)tla for, która realizuje w(cid:239)a(cid:258)ciwe skanowanie. P(cid:218)tla przechodzi kolejno przez warto(cid:258)ci od 0 do 254 i w ka(cid:285)dej iteracji warto(cid:258)(cid:202) licznika p(cid:218)tli jest do(cid:239)(cid:200)czana do prefiksu sieci. W naszym przyk(cid:239)adzie przedstawionym wcze(cid:258)niej (cid:285)(cid:200)danie ARP zostanie rozes(cid:239)ane do wszystkich hostów o adresach IP od 192.168.11.0 do 192.168.11.254. Je(cid:285)eli dany host ode(cid:258)le odpowied(cid:283), na ekranie wy(cid:258)wietlony zostanie jego adres IP, wskazuj(cid:200)cy, (cid:285)e host o takim adresie jest aktywny. Po zapisaniu skryptu w lokalnym katalogu na dysku mo(cid:285)esz spróbowa(cid:202) uruchomi(cid:202) go z poziomu okna terminala, wpisuj(cid:200)c w wierszu wywo(cid:239)ania kropk(cid:218), prawy uko(cid:258)nik i nazw(cid:218) skryptu, tak jak to zosta(cid:239)o przedstawione w przyk(cid:239)adzie poni(cid:285)ej. root@KaliLinux:~# ./arp_disc.py Usage - ./arp_disc.py [interface] Example - ./arp_disc.py eth0 Example will perform an ARP scan of the local subnet to which eth0 is assigned Je(cid:285)eli skrypt zostanie uruchomiony bez (cid:285)adnych argumentów wywo(cid:239)ania, na ekranie wy(cid:258)wietlony zostanie wspomniany wcze(cid:258)niej opis sposobu u(cid:285)ycia, z którego wynika, (cid:285)e poprawne urucho- mienie skryptu wymaga podania jednego argumentu, reprezentuj(cid:200)cego nazw(cid:218) interfejsu siecio- wego, który zostanie u(cid:285)yty do przeprowadzenia skanu. W przyk(cid:239)adzie przedstawionym poni(cid:285)ej skrypt zosta(cid:239) wywo(cid:239)any dla interfejsu eth0. root@KaliLinux:~# ./arp_disc.py eth0 172.16.36.1 172.16.36.2 172.16.36.132 172.16.36.135 172.16.36.254 Po uruchomieniu skrypt sprawdza, do jakiej podsieci lokalnej pod(cid:239)(cid:200)czony jest interfejs eth0, wykonuje skanowanie ARP i wy(cid:258)wietla na ekranie list(cid:218) adresów IP hostów, które przes(cid:239)a(cid:239)y od- powied(cid:283) na (cid:285)(cid:200)danie ARP. Aby sprawdzi(cid:202), jak ten skan dzia(cid:239)a na poziomie sieci, mo(cid:285)esz wcze(cid:258)niej uruchomi(cid:202) program Wireshark, w(cid:239)(cid:200)czy(cid:202) przechwytywanie ruchu sieciowego i po uruchomieniu skryptu obserwowa(cid:202), jak (cid:285)(cid:200)dania ARP s(cid:200) wysy(cid:239)ane do kolejnych hostów i jak aktywne hosty odsy(cid:239)aj(cid:200) odpowiedzi, tak jak to pokazano na rysunku poni(cid:285)ej. W razie potrzeby mo(cid:285)esz (cid:239)atwo przekierowa(cid:202) wyniki dzia(cid:239)ania skryptu do pliku tekstowego na dysku. Tego pliku b(cid:218)dziesz móg(cid:239) nast(cid:218)pnie u(cid:285)y(cid:202) do przeprowadzania kolejnych skanów. Przekie- rowanie strumienia danych z wyj(cid:258)cia skryptu mo(cid:285)esz uzyska(cid:202), do(cid:239)(cid:200)czaj(cid:200)c na ko(cid:241)cu polecenia znak wi(cid:218)kszo(cid:258)ci ( ) i nazw(cid:218) pliku, w którym maj(cid:200) zosta(cid:202) zapisane dane, tak jak to zosta(cid:239)o przed- stawione w przyk(cid:239)adzie poni(cid:285)ej. 66 Poleć książkęKup książkę Rozdzia(cid:225) 2. • Wykrywanie hostów w sieci root@KaliLinux:~# ./arp_disc.py eth0 output.txt root@KaliLinux:~# ls output.txt output.txt root@KaliLinux:~# cat output.txt 172.16.36.1 172.16.36.2 172.16.36.132 172.16.36.135 172.16.36.254 Po zako(cid:241)czeniu dzia(cid:239)ania skryptu i zapisaniu wyników dzia(cid:239)ania w pliku mo(cid:285)esz u(cid:285)y(cid:202) polecenia ls do sprawdzenia, czy plik wynikowy zosta(cid:239) utworzony, a nast(cid:218)pnie za pomoc(cid:200) polecenia cat wy(cid:258)wietli(cid:202) zawarto(cid:258)(cid:202) tego pliku. W razie potrzeby mo(cid:285)esz (cid:239)atwo zmodyfikowa(cid:202) skrypt tak, aby wysy(cid:239)a(cid:239) (cid:285)(cid:200)dania ARP tylko do hostów, których adresy IP znajduj(cid:200) si(cid:218) w pliku tekstowym, podanym jako argument wywo(cid:239)ania skryptu. Aby to zrobi(cid:202), musimy najpierw utworzy(cid:202) plik tekstowy, w którym b(cid:218)dzie zapisana lista adresów IP hostów do przeskanowania. T(cid:218) list(cid:218) mo(cid:285)na przygotowa(cid:202) za pomoc(cid:200) edytorów tekstu takich jak VIM czy Nano. Aby przetestowa(cid:202) popraw- no(cid:258)(cid:202) dzia(cid:239)ania zmodyfikowanej wersji skryptu, powiniene(cid:258) w tym pliku umie(cid:258)ci(cid:202) adresy za- równo aktywnych hostów (które odkryli(cid:258)my wcze(cid:258)niej), jak i kilka nieaktywnych adresów IP z tej podsieci. Plik z list(cid:200) adresów mo(cid:285)esz przygotowa(cid:202) za pomoc(cid:200) jednego z polece(cid:241) przedstawionych poni(cid:285)ej. root@KaliLinux:~# vim iplist.txt root@KaliLinux:~# nano iplist.txt Po utworzeniu pliku z list(cid:200) adresów IP mo(cid:285)esz za pomoc(cid:200) polecenia cat sprawdzi(cid:202) jego za- warto(cid:258)(cid:202). Zak(cid:239)adaj(cid:200)c, (cid:285)e plik zosta(cid:239) poprawnie przygotowany i zapisany na dysku, na ekranie po- winna si(cid:218) pojawi(cid:202) lista zawieraj(cid:200)ca adresy IP, które wpisa(cid:239)e(cid:258) w edytorze tekstu. root@KaliLinux:~# cat iplist.txt 172.16.36.1 172.16.36.2 172.16.36.232 172.16.36.135 172.16.36.180 172.16.36.203 172.16.36.205 172.16.36.254 Aby utworzy(cid:202) skrypt, który b(cid:218)dzie pobiera(cid:239) list(cid:218) adresów IP do skanowania z pliku tekstowego, mo(cid:285)esz albo zmodyfikowa(cid:202) skrypt z poprzedniego (cid:202)wiczenia, albo po prostu utworzy(cid:202) nowy skrypt. Poniewa(cid:285) nasz skrypt b(cid:218)dzie odczytywa(cid:239) dane z pliku na dysku, musimy do niego wsta- wi(cid:202) kilka nowych polece(cid:241), realizuj(cid:200)cych w j(cid:218)zyku Python operacje plikowe. Przyk(cid:239)ad kodu takiego skryptu zosta(cid:239) przedstawiony poni(cid:285)ej. #!/usr/bin/python import logging logging.getLogger( scapy.runtime ).setLevel(logging.ERROR) from scapy.all import * 67 Poleć książkęKup książkę Skanowanie sieci z Kali Linux. Receptury if len(sys.argv) != 2: print Usage - ./arp_disc.py [filename] print Example - ./arp_disc.py iplist.txt print Example will perform an ARP scan of the IP addresses listed in iplist.txt sys.exit() filename = str(sys.argv[1]) file = open(filename, r ) for addr in file: answer = sr1(ARP(pdst=addr.strip()),timeout=1,verbose=0) if answer == None: pass else: print addr.strip() Jedyn(cid:200) istotn(cid:200) ró(cid:285)nic(cid:200) mi(cid:218)dzy tym skryptem a jego poprzedni(cid:200) wersj(cid:200) jest to, (cid:285)e zamiast zmiennej interface tworzona jest teraz zmienna obiektowa file. Plik, którego nazwa zosta(cid:239)a przekazana do skryptu, zostaje otwarty za pomoc(cid:200) funkcji open(). Zauwa(cid:285), (cid:285)e drugim argu- mentem wywo(cid:239)ania tej funkcji jest litera r, wskazuj(cid:200)ca, (cid:285)e plik powinien zosta(cid:202) otwarty w trybie tylko do odczytu. Po otwarciu pliku p(cid:218)tla for pobiera z niego kolejne adresy IP, wysy(cid:239)a do nich (cid:285)(cid:200)danie ARP i wy(cid:258)wietla na ekranie adresy hostów, z których nadesz(cid:239)y odpowiedzi. Nowy skrypt mo(cid:285)e by(cid:202) uruchamiany w taki sam sposób jak jego poprzednia wersja: root@KaliLinux:~# ./arp_disc.py Usage - ./arp_disc.py [filename] Example - ./arp_disc.py iplist.txt Example will perform an ARP scan of the IP addresses listed in iplist.txt Je(cid:285)eli skrypt zostanie uruchomiony bez (cid:285)adnych argumentów wywo(cid:239)ania, na ekranie wy(cid:258)wietlo- ny zostanie wspomniany wcze(cid:258)niej opis sposobu u(cid:285)ycia. Wynika z niego, (cid:285)e poprawne urucho- mienie skryptu wymaga podania jednego argumentu, reprezentuj(cid:200)cego nazw(cid:218) pliku tekstowego z list(cid:200) adresów IP hostów, które powinny by(cid:202) przeskanowane. W przyk(cid:239)adzie przedstawionym poni(cid:285)ej lista adresów IP znajduje si(cid:218) w pliku o nazwie iplist.txt, zlokalizowanym w bie(cid:285)(cid:200)cym ka- talogu roboczym. root@KaliLinux:~# ./arp_disc.py iplist.txt 172.16.36.2 172.16.36.1 172.16.36.132 172.16.36.135 172.16.36.254 Po uruchomieniu skrypt zacznie rozsy(cid:239)a(cid:202) (cid:285)(cid:200)dania ARP do hostów, których adresy IP znajduj(cid:200) si(cid:218) w pliku, i wy(cid:258)wietli na ekranie adresy hostów, z których otrzymane zostan(cid:200) odpowiedzi. Ka(cid:285)dy wy(cid:258)wietlony adres IP reprezentuje aktywny system, pod(cid:239)(cid:200)czony do sieci LAN. Podobnie jak pokazywali(cid:258)my w poprzednim przyk(cid:239)adzie, w razie potrzeby mo(cid:285)esz bez trudu przekierowa(cid:202) wyniki dzia(cid:239)ania skryptu do pliku na dysku. Aby to zrobi(cid:202), powiniene(cid:258) na ko(cid:241)cu wiersza wy- wo(cid:239)ania skryptu doda(cid:202) znak wi(cid:218)kszo(cid:258)ci ( ) i nazw(cid:218) pliku, w którym maj(cid:200) zosta(cid:202) zapisane dane. 68 Poleć książkęKup książkę Rozdzia(cid:225) 2. • Wykrywanie hostów w sieci root@KaliLinux:~# ./arp_disc.py iplist.txt output.txt root@KaliLinux:~# ls output.txt output.txt root@KaliLinux:~# cat output.txt 172.16.36.2 172.16.36.1 172.16.36.132 172.16.36.135 172.16.36.254 Po zako(cid:241)czeniu dzia(cid:239)ania skryptu i zapisaniu wyników w pliku mo(cid:285)esz u(cid:285)y(cid:202) polecenia ls do sprawdzenia, czy plik wynikowy zosta(cid:239) utworzony, a nast(cid:218)pnie za pomoc(cid:200) polecenia cat wy(cid:258)wie- tli(cid:202) zawarto(cid:258)(cid:202) tego pliku. Jak to dzia(cid:239)a? Skanowanie ARP w bibliotece Scapy jest realizowane za pomoc(cid:200) funkcji sr1() (ang. send/receive one; wy(cid:258)lij/odbierz jeden pakiet). Funkcja po wywo(cid:239)aniu wstrzykuje do sieci pakiet zdefiniowany przez argument wywo(cid:239)ania i nast(cid:218)pnie oczekuje na nadej(cid:258)cie odpowiedzi. W naszym przy- padku rozsy(cid:239)ane jest (cid:285)(cid:200)danie ARP typu broadcast. Zastosowanie biblioteki Scapy znakomicie u(cid:239)atwia implementacj(cid:218) takiego rozwi(cid:200)zania w skryptach i pozwala na jego wykorzystanie do skanowania wielu systemów naraz. Skanowanie sieci na warstwie 2. przy u(cid:285)yciu programu ARPing ARPing to narz(cid:218)dzie dzia(cid:239)aj(cid:200)ce z poziomu wiersza polece(cid:241) konsoli. Jego funkcjonalno(cid:258)(cid:202) jest nieco zbli(cid:285)ona do funkcjonalno(cid:258)ci powszechnie u(cid:285)ywanego polecenia ping. Za pomoc(cid:200) tego narz(cid:218)dzia mo(cid:285)esz sprawdzi(cid:202), czy host o podanym adresie IP z sieci lokalnej jest aktywny. W tej recepturze poka(cid:285)emy, w jaki sposób mo(cid:285)esz u(cid:285)ywa(cid:202) programu ARPing do wykrywania aktyw- nych hostów dzia(cid:239)aj(cid:200)cych w sieci lokalnej. Przygotuj si(cid:218) Aby mo(cid:285)na by(cid:239)o za pomoc(cid:200) pakietu ARPing przeprowadzi(cid:202) skanowanie na warstwie 2., w sie- ci lokalnej musi dzia(cid:239)a(cid:202) przynajmniej jeden system, który b(cid:218)dzie odpowiada(cid:239) na (cid:285)(cid:200)dania ARP. W przedstawionych przyk(cid:239)adach wykorzystujemy kombinacj(cid:218) systemów Linux i Windows. Wi(cid:218)- cej szczegó(cid:239)owych informacji na temat instalacji i konfiguracji tych systemów w naszym (cid:258)ro- dowisku testowym znajdziesz w rozdziale 1., w recepturach „Instalacja systemu Metasploitable2” oraz „Instalacja systemu Windows”. Oprócz tego w tej recepturze b(cid:218)dziemy u(cid:285)ywa(cid:202) edytorów 69 Poleć książkęKup książkę Skanowanie sieci z Kali Linux. Receptury tekstu, takich jak VIM czy Nano, do napisania skryptu skanuj(cid:200)cego w j(cid:218)zyku Python i zapisania go w systemie plików. Wi(cid:218)cej szczegó(cid:239)owych informacji na temat pisania skryptów znajdziesz w rozdziale 1., w recepturze „Praca z edytorami tekstu VIM i Nano”. Jak to zrobi(cid:202)? ARPing to narz(cid:218)dzie, które pozwala na wysy(cid:239)anie (cid:285)(cid:200)da(cid:241) ARP i sprawdzanie, czy host docelowy jest aktywny i czy odpowiada na przes(cid:239)ane (cid:285)(cid:200)dania. Do poprawnego dzia(cid:239)ania program ARPing wymaga podania argumentu wywo(cid:239)ania reprezentuj(cid:200)cego adres IP skanowanego hosta, tak jak to zosta(cid:239)o zaprezentowane poni(cid:285)ej. root@KaliLinux:~# arping 172.16.36.135 -c 1 ARPING 172.16.36.135 60 bytes from 00:0c:29:3d:84:32 (172.16.36.135): index=0 time=249.000 usec --- 172.16.36.135 statistics --- 1 packets transmitted, 1 packets received, 0 unanswered (0 extra) W przedstawionym przyk(cid:239)adzie do adresu rozg(cid:239)oszeniowego przesy(cid:239)ane jest pojedyncze (cid:285)(cid:200)danie ARP, zawieraj(cid:200)ce (cid:285)(cid:200)danie przes(cid:239)ania fizycznego adresu hosta o adresie IP 172.16.36.135. Jak (cid:239)a- two zauwa(cid:285)y(cid:202) w wynikach dzia(cid:239)ania, odpowied(cid:283) na przes(cid:239)ane (cid:285)(cid:200)danie nades(cid:239)a(cid:239) host o adresie MAC 00:0C:29:3D:84:32. Program ARPing mo(cid:285)e by(cid:202) jeszcze bardziej efektywnie wykorzysty- wany do skanowania sieci na warstwie 2., je(cid:285)eli zostanie u(cid:285)yty w skrypcie pow(cid:239)oki bash ska- nuj(cid:200)cym wiele hostów jednocze(cid:258)nie. Aby skorzysta(cid:202) z tego narz(cid:218)dzia w skrypcie do skanowania wielu hostów, musimy najpierw znale(cid:283)(cid:202) w wynikach dzia(cid:239)ania unikatowy ci(cid:200)g znaków, który pozwoli nam na odró(cid:285)nienie sytuacji, gdy otrzymamy odpowied(cid:283) z aktywnego hosta, od tej, kiedy nie otrzymujemy (cid:285)adnej odpowiedzi na wys(cid:239)ane (cid:285)(cid:200)danie. Aby znale(cid:283)(cid:202) taki ci(cid:200)g znaków, powiniene(cid:258) wykona(cid:202) polecenie arping, podaj(cid:200)c jako argument wywo(cid:239)ania adres IP dowolnego nieaktywnego hosta, tak jak to zosta(cid:239)o przedstawione poni(cid:285)ej. root@KaliLinux:~# arping 172.16.36.136 -c 1 ARPING 172.16.36.136 --- 172.16.36.136 statistics --- 1 packets transmitted, 0 packets received, 100 unanswered (0 extra) Analizuj(cid:200)c otrzymane odpowiedzi, (cid:239)atwo zauwa(cid:285)y(cid:202), (cid:285)e ci(cid:200)g znaków bytes from pojawia si(cid:218) w wynikach dzia(cid:239)ania polecenia arping tylko w sytuacji, kiedy badany adres IP nale(cid:285)y do ak- tywnego hosta, a co wi(cid:218)cej, w tym samym wierszu znajduje si(cid:218) równie(cid:285) adres IP takiego hosta. Teraz, korzystaj(cid:200)c z polecenia grep, mo(cid:285)emy (cid:239)atwo wyodr(cid:218)bni(cid:202) z wyników dzia(cid:239)ania programu ARPing wiersze zawieraj(cid:200)ce adresy IP aktywnych hostów, tak jak to zosta(cid:239)o przedstawione w przyk(cid:239)adzie poni(cid:285)ej. root@KaliLinux:~# arping -c 1 172.16.36.135 | grep bytes from 60 bytes from 00:0c:29:3d:84:32 (172.16.36.135): index=0 time=291.000 usec root@KaliLinux:~# arping -c 1 172.16.36.136 | grep bytes from root@KaliLinux:~# 70 Poleć książkęKup książkę Rozdzia(cid:225) 2. • Wykrywanie hostów w sieci Zastosowanie polecenia grep do wyszukiwania w wynikach dzia(cid:239)ania polecenia arping ci(cid:200)gu znaków bytes from pozwala na wy(cid:258)wietlenie wierszy zawieraj(cid:200)cych adresy IP aktywnych hostów. Po wykonaniu takiej samej operacji dla nieaktywnego adresu IP nie zostaj(cid:200) zwrócone (cid:285)adne wyniki, co zosta(cid:239)o zilustrowane za pomoc(cid:200) drugiego polecenia w przyk(cid:239)adzie powy(cid:285)ej. Teraz, korzystaj(cid:200)c z polecenia cut z odpowiednio zdefiniowanym separatorem (opcja -d) i numerem pola (opcja -f), mo(cid:285)emy (cid:239)atwo wyodr(cid:218)bni(cid:202) z tego ci(cid:200)gu znaków sam adres IP. Polecenie cut jest wykorzystywane w pow(cid:239)oce bash do dzielenia wierszy tekstu na elementy sk(cid:239)adowe w oparciu o podany separator i wy(cid:258)wietlania elementów o podanych numerach pól. Poprzez odpowiednie potokowanie polece(cid:241) pow(cid:239)oki mo(cid:285)emy w (cid:239)atwy sposób wyodr(cid:218)bni(cid:202) z wyników dzia(cid:239)ania polece- nia arping adres MAC aktywnego hosta. Przyk(cid:239)ad takiego rozwi(cid:200)zania zosta(cid:239) pokazany poni(cid:285)ej. root@KaliLinux:~# arping -c 1 172.16.36.135 | grep bytes from 60 bytes from 00:0c:29:3d:84:32 (172.16.36.135): index=0 time=10.000 usec root@KaliLinux:~# arping -c 1 172.16.36.135 | grep bytes from | cut -d -f 4 00:0c:29:3d:84:32 W podobny sposób mo(cid:285)emy bez problemu wyodr(cid:218)bni(cid:202) adres IP aktywnego hosta; aby to zro- bi(cid:202), musimy tylko nieco zmodyfikowa(cid:202) definicje separatorów i numery pól w wywo(cid:239)aniach polecenia cut: root@KaliLinux:~# arping -c 1 172.16.36.135 | grep bytes from 60 bytes from 00:0c:29:3d:84:32 (172.16.36.135): index=0 time=328.000 usec root@KaliLinux:~# arping -c 1 172.16.36.135 | grep bytes from | cut -d -f 5 (172.16.36.135): root@KaliLinux:~# arping -c 1 172.16.36.135 | grep bytes from | cut -d -f 5 | cut -d ( -f 2 172.16.36.135): root@KaliLinux:~# arping -c 1 172.16.36.135 | grep bytes from | cut -d -f 5 | cut -d ( -f 2 | cut -d ) -f 1 172.16.36.135 Po znalezieniu sposobu na wyodr(cid:218)bnienie adresu IP z wyników dzia(cid:239)ania polecenia arping mo(cid:285)emy z (cid:239)atwo(cid:258)ci(cid:200) zaimplementowa(cid:202) takie rozwi(cid:200)zanie w p(cid:218)tli w skrypcie pow(cid:239)oki bash, który b(cid:218)dzie skanowa(cid:239) ca(cid:239)(cid:200) podsie(cid:202) lokaln(cid:200) i wy(cid:258)wietla(cid:239) adresy IP aktywnych hostów. Przyk(cid:239)ad takiego skryptu zosta(cid:239) przedstawiony na listingu poni(cid:285)ej. #!/bin/bash if [ $# -ne 1 ]; then echo Usage - ./arping.sh [interface] echo Example - ./arping.sh eth0 echo Example will perform an ARP scan of the local subnet to which eth0 is assigned exit fi interface=$1 prefix=$(ifconfig $interface | grep inet addr | cut -d : -f 2 | cut -d -f 1 | cut -d . -f 1-3) 71 Poleć książkęKup książkę Skanowanie sieci z Kali Linux. Receptury for addr in $(seq 1 254); do arping -c 1 $prefix.$addr | grep bytes from | cut -d -f 5 | cut -d ( -f 2 | cut -d ) -f 1 done W pierwszym wierszu naszego przyk(cid:239)adowego skryptu zdefiniowana zostaje lokalizacja po- w(cid:239)oki bash. Dalej znajdziesz blok kodu, którego zadaniem jest ustalenie, czy w wierszu wy- wo(cid:239)ania skryptu zosta(cid:239) podany odpowiedni argument wywo(cid:239)ania. Jest to realizowane poprzez proste sprawdzenie, czy liczba argumentów wywo(cid:239)ania jest ró(cid:285)na od 1. Je(cid:285)eli oczekiwany ar- gument wywo(cid:239)ania nie zosta(cid:239) podany, na ekranie wy(cid:258)wietlany jest opis sposobu u(cid:285)ycia i skrypt ko(cid:241)czy dzia(cid:239)anie. W opisie dzia(cid:239)ania mo(cid:285)emy znale(cid:283)(cid:202) informacj(cid:218), (cid:285)e argumentem wywo(cid:239)ania skryptu powinna by(cid:202) nazwa lokalnego interfejsu sieciowego. W kolejnym bloku kodu podany argument wywo(cid:239)ania jest przypisywany do zmiennej o nazwie interface. Warto(cid:258)(cid:202) tej zmien- nej jest nast(cid:218)pnie wykorzystywana jako argument wywo(cid:239)ania polecenia ifconfig, z którego wyników dzia(cid:239)ania jest wyodr(cid:218)bniany prefiks adresu podsieci lokalnej. Na przyk(cid:239)ad je(cid:285)eli ad- res IP interfejsu sieciowego to 192.168.11.4, do zmiennej prefix przypisany zostanie adres 192.168.11. Nast(cid:218)pnie do generowania kolejnych warto(cid:258)ci ostatniego oktetu adresu IP lokal- nej podsieci /24 wykorzystywana jest p(cid:218)tla for. Dla ka(cid:285)dego z wygenerowanych adresów IP wywo(cid:239)ywane jest polecenie arping. Wyniki dzia(cid:239)ania tego polecenia s(cid:200) potokowane do polecenia grep, które „przepuszcza” dalej tylko wiersze zawieraj(cid:200)ce ci(cid:200)g znaków bytes from (a jak wiemy z naszych wcze(cid:258)niejszych rozwa(cid:285)a(cid:241), takie wiersze zawieraj(cid:200) adresy IP aktywnych hostów w sieci). Wyniki dzia(cid:239)ania polecenia grep s(cid:200) nast(cid:218)pnie potokowane przez seri(cid:218) polece(cid:241) cut, które wyod- r(cid:218)bniaj(cid:200) tylko adres IP. Zwró(cid:202) uwag(cid:218), (cid:285)e blok polece(cid:241) p(cid:218)tli for zamiast (cid:258)rednikiem zosta(cid:239) za- ko(cid:241)czony znakiem , dzi(cid:218)ki czemu zadania realizowane w p(cid:218)tli b(cid:218)d(cid:200) wykonywane równolegle, a nie sekwencyjnie, co w drastyczny sposób wp(cid:239)ynie na zredukowanie czasu niezb(cid:218)dnego do przeskanowania podanego zakresu adresów IP. Poni(cid:285)ej przedstawiamy sposób wywo(cid:239)ania na- szego skryptu. root@KaliLinux:~# ./arping.sh Usage - ./arping.sh [interface] Example - ./arping.sh eth0 Example will perform an ARP scan of the local subnet to which eth0 is assigned root@KaliLinux:~# ./arping.sh eth0 172.16.36.1 172.16.36.2 172.16.36.132 172.16.36.135 172.16.36.254 W razie potrzeby mo(cid:285)esz (cid:239)atwo przekierowa(cid:202) wyniki dzia(cid:239)ania skryptu do pliku tekstowego na dysku. Aby to zrobi(cid:202), powiniene(cid:258) na ko(cid:241)cu wiersza wywo(cid:239)ania skryptu doda(cid:202) znak wi(cid:218)k- szo(cid:258)ci ( ) i nazw(cid:218) pliku, w którym maj(cid:200) zosta(cid:202) zapisane dane. Przyk(cid:239)ad takiego rozwi(cid:200)zania zosta(cid:239) przedstawiony poni(cid:285)ej. root@KaliLinux:~# ./arping.sh eth0 output.txt root@KaliLinux:~# ls output.txt output.txt root@KaliLinux:~# cat output.txt 72 Poleć książkęKup książkę Rozdzia(cid:225) 2. • Wykrywanie hostów w sieci 172.16.36.1 172.16.36.2 172.16.36.132 172.16.36.135 172.16.36.254 Po zako(cid:241)czeniu dzia(cid:239)ania skryptu i zapisaniu wyników dzia(cid:239)ania w pliku mo(cid:285)esz u(cid:285)y(cid:202) polece- nia ls do sprawdzenia, czy plik wynikowy zosta(cid:239) utworzony, a nast(cid:218)pnie za pomoc(cid:200) polecenia cat wy(cid:258)wietli(cid:202) zawarto(cid:258)(cid:202) tego pliku. W razie potrzeby mo(cid:285)esz (cid:239)atwo zmodyfikowa(cid:202) ten skrypt tak, aby wysy(cid:239)a(cid:239) (cid:285)(cid:200)dania ARP tylko do hostów, których adresy IP znajduj(cid:200) si(cid:218) w pliku tekstowym podanym jako argument wywo(cid:239)ania. By to zrobi(cid:202), musisz utworzy(cid:202) plik tekstowy, w którym b(cid:218)dzie zapisana lista adresów IP hostów do przeskanowania. Mo(cid:285)esz równie(cid:285) u(cid:285)y(cid:202) tego sa- mego pliku z list(cid:200) adresów IP, z którego korzystali(cid:258)my wcze(cid:258)niej w przyk(cid:239)adzie ze skryptem Scapy, omawianym w poprzedniej recepturze. #!/bin/bash if [ $# -ne 1 ]; then echo Usage - ./arping.sh [input file] echo Example - ./arping.sh iplist.txt echo Example will perform an ARP scan of all IP addresses defined in iplist.txt exit fi file=$1 for addr in $(cat $file); do arping -c 1 $addr | grep bytes from | cut -d -f 5 | cut -d ( -f 2 | cut -d ) -f 1 done Jedyn(cid:200) wi(cid:218)ksz(cid:200) ró(cid:285)nic(cid:200) pomi(cid:218)dzy tym skryptem a jego poprzedni(cid:200) wersj(cid:200) jest to, (cid:285)e zamiast nazwy interfejsu sieciowego podczas wywo(cid:239)ania skryptu musisz poda(cid:202) nazw(cid:218) pliku tekstowe- go zawieraj(cid:200)cego list(cid:218) adresów IP do sprawdzenia. Argument wywo(cid:239)ania skryptu jest przeka- zywany do zmiennej file. Nast(cid:218)pnie skrypt za pomoc(cid:200) p(cid:218)tli for przechodzi kolejno przez wszystkie adresy IP zapisane w pliku i dla ka(cid:285)dego z nich wywo(cid:239)uje polecenie arping. Aby uruchomi(cid:202) skrypt, powiniene(cid:258) w wierszu wywo(cid:239)ania wpisa(cid:202) kropk(cid:218), prawy uko(cid:258)nik i nazw(cid:218) skryptu, tak jak to zosta(cid:239)o przedstawione w przyk(cid:239)adzie poni(cid:285)ej. root@KaliLinux:~# ./arping.sh Usage - ./arping.sh [input file] Example - ./arping.sh iplist.txt Example will perform an ARP scan of all IP addresses defined in iplist.txt root@KaliLinux:~# ./arping.sh iplist.txt 172.16.36.1 172.16.36.2 172.16.36.132 172.16.36.135 172.16.36.254 73 Poleć książkęKup książkę Skanowanie sieci z Kali Linux. Receptury Je(cid:285)eli skrypt zostanie uruchomiony bez (cid:285)adnych argumentów, na ekranie zostanie wy(cid:258)wie- tlony krótki opis sposobu u(cid:285)ycia, wskazuj(cid:200)cy, (cid:285)e argumentem wywo(cid:239)ania powinien by(cid:202) plik tekstowy zawieraj(cid:200)cy list(cid:218) adresów IP. Po ponownym wywo(cid:239)aniu skryptu z w(cid:239)a(cid:258)ciwym argu- mentem skrypt rozpoczyna dzia(cid:239)anie i wy(cid:258)wietla na ekranie list(cid:218) adresów IP aktywnych ho- stów w sieci lokalnej, wybranych z listy adresów IP zawartych w pliku. W razie potrzeby mo(cid:285)esz bez trudu przekierowa(cid:202) wyniki dzia(cid:239)ania skryptu do pliku na dysku. Aby to zrobi(cid:202), powiniene(cid:258) na ko(cid:241)cu wiersza wywo(cid:239)ania skryptu doda(cid:202) znak wi(cid:218)kszo(cid:258)ci ( ) i nazw(cid:218) pliku, w którym maj(cid:200) zosta(cid:202) zapisane dane,
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Skanowanie sieci z Kali Linux. Receptury
Autor:

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: