Tehnike brzog mrežnog skeniranja (zmap)
Članovi tima: Valentina Bobetić, Gabriel Glogoški, Matija Kovaček, Toni Steyskal
Sadržaj
|
Uvod
Započnimo s upoznavanjem jednog od najboljih „open source“ mrežnih skenera koji omogućava skeniranje i istraživanje Interneta, a naziva se ZMap. ZMap na vrlo lagani način uz pomoć jedne virtualne mašine i jako dobre mreže, omogućava kompletno skeniranje svih IPv4 adresa u svega 5 minuta, a moguće je približavanje teoretskom limitu od 10 GB Etherneta.
ZMap je razvijen od strane tima računalnih znanstvenika sveučilišta u Michiganu:
- Zakir Durumeric
- Eric Wustrow
- J. Alex Halderman
Oni u svojem istraživačkom radu vrlo detaljno opisuju na koji način funkcionira ZMap, kako izgledaju moduli, kakve sve mogu biti izlazne datoteke u kojima se nalaze rezultati skeniranja.
Obzirom da je ZMap jedan od vrlo moćnih alata za skeniranje mreže, potrebno je imati na umu da skeniranjem svih IPv4 adresa, većina ljudi neće biti sretna što skenirate njihovu mrežu i zadirete u njihovu privatnost. Stoga je prilikom skeniranja, potrebno takve ljude izuzeti iz skeniranja i poštivati njihove želje. Ovaj trojac se potrudio i dao je listu najboljih praksa prilikom skeniranja u kojoj navode na koji način ne ulaziti u tuđu mrežu i vršiti skeniranje, već postupati prema određenim zakonima.
Na web stranici https://zmap.io/index.html pod karticom „Download“ može se skinuti posljednja verzija ZMap alata (posljednja verzija je 1.2.1) koja se može koristiti na Linuxu, Mac OS i BSD. Isto tako, prikazane su naredbe za instalaciju na pojedinom operativnom sustavu preko terminala te mogućnost tzv. „buildanja“ ZMap-a iz izvršne datoteke ako slučajno obična instalacija ne uspije.
U nastavku će biti objašnjeno kako izgleda naredba u terminalu , koje se sve naredbe koriste prilikom skeniranja mreže, koje su najbolje prakse kojih se valja držati kako ne bi ušli u nečiju mrežu bez dozvole, biti će prikazani dodatni moduli, što je to „blacklisting“ i kako pohraniti rezultate skeniranja u neki od oblika koji se nude.
--Valentina 09:50, 6. siječnja 2015. (CET)
Početak sa ZMap-om
Kao što je već spomenuto, ZMap je dizajniran da obavlja sveobuhvatno skeniranje IPv4 adresnog prostora ili njegovih velikih portova. Uvijek je potrebno imati na umu da je ZMap moćan alat i da njegovim pokretanjem se vrši potencijalno skeniranje cijelog IPv4 adresnog prostora u kojemu se šalje više od 1,4 milijuna paketa u sekundi što je izuzetno veliki broj paketa. Stoga je uvijek prije skeniranja, potrebno kontaktirati lokalne administratore mreže što je najbolje učiniti.
Po već unaprijed definiranom, ZMap će izvršiti TCP SYN skeniranje na određenom portu po maksimalnoj mogućoj brzini skeniranja. Primjerice, ako želimo skenirati 10.000 slučajnih adresa na portu 80 po brzini 10 Mbps, to ćemo napraviti na sljedeći način:
zmap --bandwidth=10M --target-port=80 --max-targets=10000 --output-file=results.csv<br\>
Postaviti ćemo širinu pojasa („bandwith“), port kojega želimo skenirati, koliko adresa želimo skenirati i kamo će se spremiti rezultat skeniranja i na koji način.
Drugačiji način ovog zapisa je sljedeći:
$ zmap -B 10M -p 80 -n 10000 -o results.csv<br\>
ZMap-u također možemo odrediti koje podmreže („subnet“) da skenira, kao na primjer ako želimo da skenira samo podmreže 10.0.0.0/8 i 192.168.0.0/16 na portu 80, to ćemo upisati na sljedeći način:
zmap -p 80 -o results.csv 10.0.0.0/8 192.168.0.0/16<br\>
Nakon što pokrenemo skeniranje, vidjeti ćemo da se nešto događa, odnosno da se svake sekunde ažurira izlazni rezultat skeniranja. Za ovaj zadnji upit izlazni rezultati bi se kretali ovako:
0% (1h51m left); send: 28777 562 Kp/s (560 Kp/s avg); recv: 1192 248 p/s (231 p/s avg); hits: 0.04% 0% (1h51m left); send: 34320 554 Kp/s (559 Kp/s avg); recv: 1442 249 p/s (234 p/s avg); hits: 0.04% 0% (1h50m left); send: 39676 535 Kp/s (555 Kp/s avg); recv: 1663 220 p/s (232 p/s avg); hits: 0.04% 0% (1h50m left); send: 45372 570 Kp/s (557 Kp/s avg); recv: 1890 226 p/s (232 p/s avg); hits: 0.04%
Izlazni rezultati prikazuju postotak napredovanja skeniranja i preostalo vrijeme do kraja skeniranja, koliko je paketa poslano, a koliko je primljeno i po kojoj brzini i prosječnoj brzini, te „hit-rate“.
Svaka mreža ima drugačiju brzinu skeniranja, pa rezultat skeniranja najviše ovisi o brzini skeniranja. Ponekad to može trajati jako dugo, ako je mrežna brzina velika, a ako nije, onda to može trajati i po nekoliko sati. Najveći problem, najviše za početnike je ako ne znamo brzinu skeniranja, odnosno brzinu koju naša mreža može podržati. Najbolje je eksperimentirati s različitim brzinama skeniranja i pronaći granice propusnosti „Bandwith limit“ koje mreža može podržati.
Eksperimentom će ZMap dati popis IP adresa koje su uspješno odgovorile (npr. sa SYN ACK paketom), a prikaže ih na sljedeći način:
115.237.116.119 23.9.117.80 207.118.204.141 217.120.143.111 50.195.22.82
Format izlaza može biti prikazan na nekoliko načina, kao na primjer JSON i Redis, ali o tome više u nastavku gdje će biti objašnjeni svaki od formata izlaznog rezultata i na koji način oni mogu biti pohranjeni te kako te rezultate filtrirati.
Tim koji je razvio ZMap preporuča svojim korisnicima da koriste datoteke koje se nalaze na crnoj listi („blacklist file“), da se isključe sva pridržana/nedodijeljeni IP prostor (npr. RFC1918) kao i mreže koje same po sebi zahtijevaju da budu isključene iz skeniranja. ZMap će iskoristiti jednostavne datoteke sa crne liste koje sadrže rezervirane i ne alocirane adresne lokacija dostupne na /etc/zmap/blacklist.conf. Ako neki od korisnika pronađe određene specifične postavke poput maksimalne propusnosti ili vlastitu crnu listu datoteka, tada je taj korisnik u mogućnosti koristiti te postavke svaku puta kada pokrene ZMap na način da se one specificiraju u /etc/zmap/zmap.conf ili da se koriste konfiguracijske datoteke koje su već prilagođene.
Ako tijekom skeniranja dođe do poteškoća koje je potrebno ukloniti, postoji nekoliko mogućnosti da njihovo uklanjanja („debug“). Prva mogućnost je pokrenuti tzv. skeniranje na suho („dry run scan“) kako bi uopće vidjeli koji paketi su poslani preko mreže, a koji nisu, na način da se doda --dryrun zastava prilikom upisivanja naredbe u terminalu.
Isto tako, moguće je i promijeniti opseg zapisivanja („logging verbosity“) na način da se postavi --verbosity=n zastavica prilikom upisivanja naredbe.
--Valentina 15:26, 12. siječnja 2015. (CET)
Najbolja praksa kod skeniranja
Kako bi se minimizirale smetnje na mreži prilikom izvođenje skeniranja poželjno je pratiti sljedeća pravila:
- Blisko surađivati sa administratorom za mrežu kako bi se smanjili rizici, ili riješili upiti
- Provjeriti i potvrditi da skeniranje neće zagušiti lokalnu mrežu ili providera
- Signaliziran bezopasnu namjeru skeniranja na web stranicama i DNS unosima na izvorišnim adresama
- Jasno objasniti svrhu i opseg skeniranja kroz sve oblike komunikacije
- Omogućiti jednostavan način prekida i poštivanja upućenih zahtjeve
- Ne raditi skeniranja bez stvarne potrebe za ciljeve istraživanja
- Raspršiti promet za skeniranje kroz vrijeme ili izvorišne IP adrese
--GGlogoski 23:23, 12. siječnja 2015. (CET)
Naredbe za zmap mrežno skeniranje
U nastavku slijede opcije i njihov opis koje se najčešće koriste prilikom mrežnog skeniranja.
Opće postavke
Opcije | Opis |
-p, --target-port=port | Skenira određeni port. Primjer: –p 443 ili –target-port=443 (TCP port 443) |
-o, --output-file=name | Zapisuje rezultate skeniranja u datoteku. Primjer: –o rezultati.csv ili –output-file=rezultati.csv |
-b, --blacklist-file=path | Ne skenira određene IP adrese navedene u blacklist datoteci. Raspon adresa koje ne želite skenirati navode se u datoteci i to u CIDR notaciji. Primjer: ako ne želite skenirati sljedeći raspon adresa 192.168.10.0 – 192.168.10.255 , u blacklist datoteku navedete 192.168.10.0/24 |
Postavke skeniranja
Opcije | Opis |
-n, --max-targets=n | Određuje maksimalni broj IP adresa koji želite skenirati. Primjer: želite skenirati 100 adresa: -n 100 ili –max-targets=100 |
-N, --max-results=n | Određuje maksimalni broj rezultata koji želite zaprimiti. Prekida skeniranje nakon dobivenog broja rezultata. Primjer: želite zaprimiti maksimalno 1000 rezultata: –N 1000 ili –max-results=1000 , skeniranje se prekida nakon 1000 zaprimljenih rezultata. |
-t, --max-runtime=secs | Određuje maksimalno vrijeme trajanja slanja paketa u sekundama. |
-r, --rate=pps | Određuje maksimalni broj poslanih paketa u sekundi. |
-B, --bandwidth=bps | Određuje maksimalni broj poslanih bitova u sekundi. Primjer: –B 10 za 10mbps. |
-c, --cooldown-time=secs | Određuje vrijeme trajanja zaprimanja rezultata nakon što je poslan zahtjev (defaultna vrijednost je 8 sekundi). |
-s --seed=n | Određuje broj koliko puta želimo skenirati isti raspon IP adresa. Primjer: želimo skenirati 3 puta iste IP adrese: -s=3 ili –seed=3 |
--shards=n | Dijeli skeniranje u N particiija (defaultna vrijednost je 1). Za korištenje ove opcije mora biti navedena opcija –seed Primjer: želimo podijeliti skeniranje u 2 particije: --shards=2 |
--shard=n | Određuje koju particiju želimo skenirati (od 0 do n). Za korištenje ove opcije mora biti navedena opcija –seed |
-T, --sender-threads=n | Određuje broj dretvi koje će slati pakete (defaultna vrijednost je 1 dretva). |
-P, --probes=n | Određuje broj segmenta paketa koji će se poslati IP adresi (defaultna vrijednost je 1). |
-d, --dryrun | Umjesto slanja, ispisuje paket što je korisni za debugging. |
Postavke mreže
Opcije | Opis |
-s, --source-port=port|range | Određuje broj porta s kojeg se šalju paketi. |
-S, --source-ip=ip|range | Određuje IP adresu ili raspon IP adresa s kojih se šalju paketi. |
-G, --gateway-mac=addr | Određuje gateway MAC adresu za slanje paketa. |
-i, --interface=name | Određuje mrežno sučelje koje će biti upotrijebljeno. |
Postavke sondi
Zmap omogućuje korisnicima da odaberu koji modul sondi žele koristiti (tcp_synscan ili icmp_echoscan) ili da napišu vlastiti modul. Moduli se koriste za generiranje paketa sondi i za obradu zaprimljenih rezultata.
Opcije | Opis |
--list-probe-modules | Ispisuje listu dostupnih sondnih modula. |
-M, --probe-module=name | Određuje odabrani modul (defaultno je tcp_synscan). |
--probe-args=args | Prosljeđuje argumente sondnom modulu. |
--list-output-fields | Ispisuje koje dijelove odabranog sondnog modula se mogu poslati izlaznom modulu. |
Izlazne postavke
Zmap omogućuje korisnicima da odaberu koji izlazni modul žele koristiti (npr. csv format) ili da napišu vlastiti izlazni modul. Izlazni moduli služe da zaprime i obrade podatke zaprimljene od sondnog modula i da ih prikažu korisniku. Korisnik može koristiti i filtere tako da ograniči koje dijelove rezultata skeniranja želi vidjeti.
Opcije | Opis |
--list-output-modules | Ispisuje listu dostupnih izlaznih modula. |
-O, --output-module=name | Određuje odabrani izalzni modul (defaultno je .csv). |
--output-args=args | Prosljeđuje argumente izlaznom modulu. |
-f, --output-fields=fields | Određuje dijelove rezultata želimo dobiti u izlaznom modulu. |
--output-filter | Određuje izlazni filter koji se odnosi na dijelove sondnog modula. |
Dodatne postavke
Opcije | Opis |
-C, --config=filename | Odabire konguracijsku datoteku u kojoj su navedene opcije skeniranja.Korisno ako ne želimo stalno za svako skeniranje pisati razne postavke, jednostavno odabremo datoteku. |
-q, --quiet | Onemogućava ispisivanje trenutnog stanja skeniranja. |
-g, --summary | Završetkom skeniranja ispisuje se konfiguracija skeniranja i sažetak rezultata skeniranja. |
-v, --verbosity=n | Razina log detaljnosti (0-5, default 3). |
-h, --help | Ispisuje pomoć za rad s zmapom. |
-V, --version | Ispisuje verziju zmapa. |
Mkovacek 18:16, 8. siječnja 2015. (CET)
Dodatne informacije
U nastavku slijedi dodatno objašnjene određenih pojmova koji su se koristili u ranijem dijelu wiki-a.
TCP SYN Skenovi
Prilikom TCP SYN skena, ZMap zahtijeva jedan ciljani port i podržava određivanje raspon izvornih portova od kojih će skeniranje potjeći.
-p, --target-port=port TCP port broj za skeniranje (npr. 443)
-s, --source-port=port|range Izvorni portovi za skeniranje paketa (npr. 40000 - 50000)
ZMap se oslanja na linux kernel da odgovori SYN/ACK paketima s RST paketima kako bi zatvorio veze koje je otvorio skener. To se događa jer ZMap šalje pakete na Ethernet sloju kako bi se smanjio pretek koji inače nastaje u kernelu od praćenja otvorenih TCP veza i obavljanja dohvaćivanja ruta. Kao takav, ako imate firewall pravilo koje prati uspostavljene veze poput netfilter pravila koje je slično -A INPUT -m state --state RELATED, ESTABLISHED -j ACCEPT, to će blokirati SYN/ACK pakete od dostizanja kernela. To neće spriječiti ZMap od snimanja odgovora, ali će spriječiti RST pakete pri slanju natrag, u konačnici ispunit će vezu na skeniranom računalu do prekida veze. Preporučujemo da odaberete skup neiskorištenih portova na skeniranom računalu kojem može biti dopušten pristup u vaš firewall i specificirajte taj raspon portova kada koristite ZMap sa -s zastavom (npr. 40000-50000).
ICMP Echo Request Skenovi
Dok ZMap obavlja TCP SYN skenove prema zadanim postavkama, on također podržava ICMP Echo Request skenove u kojima se ICMP Echo Request paket šalje svakom skeniranom računalu i vrsta ICMP dobivenog odgovora se označuje. ICMP skeniranje se može izvesti odabirom icmp_echoscan modula za skeniranje pomoću:
$ zmap --probe-module=icmp_echoscan
UDP Datagram Skeniranje
ZMap dodatno podržava UDP sonde, gdje će se poslati proizvoljan UDP datagram svakom skeniranom računalu i zaprimiti ili UDP ili ICMP nedostižan odgovor. ZMap podržava četiri različite metode postavljanja UDP payload-a kroz --probe-args opcije naredbenog retka. To su "text" za ASCII-printable payload-e, "hex" za hexadecimalne payload-e postavljene na naredbenom retku, "file" za payload sadržan u vanjskoj datoteci i "template" za payload koji zahtijeva dinamičnu generaciju polja. Da bi se dobio UDP odgovor, "data" se mora navesti kao jedno od polja -f opcije.
Primjer u nastavku će poslati dva bajta "ST" i PCAnywhere "status" zahtjev na UDP port 5632:
$ zmap -M udp -p 5632 --probe-args=text:ST -N 100 -f saddr,data -o -
Sljedeći primjer će poslati bajt "0x02" i SQL Server "client broadcast" zahtjev na UDP port 1434:
$ zmap -M udp -p 1434 --probe-args=hex:02 -N 100 -f saddr,data -o -
Posljednji primjer šalje SIP "OPTIONS" zahtjev na UDP port 5060, koristi predložak koji je uključen ZMap distribucijom:
$ zmap -M udp -p 1434 --probe-args=file:sip_options.tpl -N 100 -f saddr,data -o -
Sljedeća polja predložaka su trenutno implementirana:
SADDR: Izvorna IP adresa u dotted-quad formatu
SADDR_N: Izvorna IP adresa u network byte poretku
DADDR: Odredišna IP adresa u dotted-quad formatu
DADDR_N: Odredišna IP adresa u network byte poretku
SPORT: Izvorni port u ascii formatu
SPORT_N: Izvorni port u network byte poretku
DPORT: Odredišni port u ascii formatu
DPORT_N: Odredišni port u network byte poretku
RAND_BYTE: Slučajni bitovi (0-255), duljina specificirana sa =(length) parameterom
RAND_DIGIT: Slučajne brojke od 0-9, duljina specificirana sa =(length) parameterom
RAND_ALPHA: Slučajna slova (mixed-case) od A-Z, duljina specificirana sa =(length) parameterom
RAND_ALPHANUM: Slučajna slova (mixed-case) od A-Z i brojke od 0-9, duljina specificirana sa =(length) parameterom
Konfiguracijske datoteke
ZMap podržava konfiguracijske datoteke umjesto zahtijevanja da se sve opcije specificiraju u naredbenom retku. Konfiguracija se može kreirati specificirajući jednu opciju dugog imena i vrijednost po liniji, kao što se vidi u nastavku:
interface "eth1"
source-ip 1.1.1.4-1.1.1.8
gateway-mac b4:23:f9:28:fa:2d # upstream gateway
cooldown-time 300 # seconds
blacklist-file /etc/zmap/blacklist.conf
output-file ~/zmap-output
quiet
summary
ZMap se onda može izvoditi pomoću konfiguracijske datoteke i specificiranjem bilo kakvih dodatno potrebnih parametara:
$ zmap --config=~/.zmap.conf --target-port=443
Opseg podataka
Postoji nekoliko tipova izlaza koje ZMap proizvodi na zaslonu. Prema zadanim postavkama, ZMap će ispisati osnovne podatke napretka svake sekunde. To može biti onemogućeno postavljanjem --quiet zastavice.
0:01 12%; send: 10000 done (15.1 Kp/s avg); recv: 144 143 p/s (141 p/s avg); hits: 1.44%
ZMap također ispisuje informativne poruke tijekom konfiguracije skenera, kao što su sljedeće, koje se mogu kontrolirati --verbosity argumentom.
Aug 11 16:16:12.813 [INFO] zmap: started
Aug 11 16:16:12.817 [DEBUG] zmap: no interface provided. will use eth0
Aug 11 16:17:03.971 [DEBUG] cyclic: primitive root: 3489180582
Aug 11 16:17:03.971 [DEBUG] cyclic: starting point: 46588
Aug 11 16:17:03.975 [DEBUG] blacklist: 3717595507 addresses allowed to be scanned
Aug 11 16:17:03.975 [DEBUG] send: will send from 1 address on 28233 source ports
Aug 11 16:17:03.975 [DEBUG] send: using bandwidth 10000000 bits/s, rate set to 14880 pkt/s
Aug 11 16:17:03.985 [DEBUG] recv: thread started
ZMap podržava ispis grep-able sažetka na kraju skeniranja koji se može pozivati --summary zastavicom.
Izlazni rezultati
ZMap može proizvesti rezultate u više formata korištenjem izlaznih modula. Po zadanim postavkama, ZMap podržava samo csv izlaz, međutim podrška za redis i JSON se može uključiti. Rezultati poslani na izlazne module se mogu filtrirati preko izlaznog filtra. Polja koja zapisuje izlazni modul su specificirana od strane korisnika. Po zadanim postavkama, ZMap će vratiti rezultate u csv formatu i ukoliko ni jedna izlazna datoteka nije navedena, ZMap neće proizvesti specifične rezultate. Postoji mogućnost pisanja vlastitog modula.
-o, --output-file=p File to write output to -O, --output-module=p Invoke a custom output module -f, --output-fields=p Comma-separated list of fields to output --output-filter=filter Specify an output filter over fields for a given probe --list-output-modules Lists available output modules --list-output-fields List available output fields for a given probe
Izlazna polja
ZMap sadrži polja koja mogu služiti kao izlazna izvan dosega IP adresa. Ta polja mogu biti pregledana za danu sondu koristeći --list-output-fields zastavicu.
<code>$ zmap --probe-module="tcp_synscan" --list-output-fields saddr string: source IP address of response saddr-raw int: network order integer form of source IP address daddr string: destination IP address of response daddr-raw int: network order integer form of destination IP address ipid int: IP identification number of response ttl int: time-to-live of response packet sport int: TCP source port dport int: TCP destination port seqnum int: TCP sequence number acknum int: TCP acknowledgement number window int: TCP window classification string: packet classification success int: is response considered success repeat int: is response a repeat response from host cooldown int: Was response received during the cooldown period timestamp-str string: timestamp of when response arrived in ISO8601 format. timestamp-ts int: timestamp of when response arrived in seconds since Epoch timestamp-us int: microsecond part of timestamp (e.g. microseconds since 'timestamp-ts')</code>
Kako bi se odabrala polja koja će služiti kao izlaz, bilo koja kombinacija izlaznih polja može biti navedena kao lista odvojena zarezom pomoću --output-fields=fields ili -f zastavicama. Primjer:
$ zmap -p 80 -f "response,saddr,daddr,sport,seq,ack,in_cooldown,is_repeat,timestamp" -o output.csv
Filtriranje izlaza
Rezultati dobiveni pomoću modula sonde se mogu filtrirati prije nego se proslijede izlaznom modulu. Filtri su definirani preko izlaznih polja modula sonde. Pisani su u jednostavnom jeziku filtriranja, sličan SQL-u, i prosljeđeni su ZMapu preko --output-filter opcije. Izlazni filtri se najčešće koriste za filtriranje duplih rezultata ili za prosljeđivanje samo uspješnih odgovora na izlazni modul.
Izrazi korišteni za filtriranje su oblika <fieldname> <operation> <value>. Vrsta <value> mora biti string ili pozitivni integer i mora odgovarati tipu <fieldname>. Valjane operacije za usporedbu brojeva su = !=, <, >, <=, >=. Dok se za usporedbu stringova koriste =, !=. --list-output-fields zastavica prikazuje koja polja i tipovi su dostupni za odabrani modul sonde.
Spoj izraza za filtiranje se može izvesti pomoću && (logical AND) i || (logical OR) operatora.
Primjer filtra za samo uspješne i ne duplicirane odgovore:
--output-filter="success = 1 && repeat = 0"
CSV
CSV modul će proizvesti zarezom odvojene vrijednosne datoteke traženih izlaznih polja. Na primjer, sljedeća naredba daje CSV u datoteci pod nazivom output.csv:
$ zmap -p 80 -f "response,saddr,daddr,sport,seq,ack,in_cooldown,is_repeat,timestamp" -o output.csv
response, saddr, daddr, sport, dport, seq, ack, in_cooldown, is_repeat, timestamp synack, 159.174.153.144, 10.0.0.9, 80, 40555, 3050964427, 3515084203, 0, 0,2013-08-15 18:55:47.681 rst, 141.209.175.1, 10.0.0.9, 80, 40136, 0, 3272553764, 0, 0,2013-08-15 18:55:47.683 rst, 72.36.213.231, 10.0.0.9, 80, 56642, 0, 2037447916, 0, 0,2013-08-15 18:55:47.691 rst, 148.8.49.150, 10.0.0.9, 80, 41672, 0, 1135824975, 0, 0,2013-08-15 18:55:47.692 rst, 50.165.166.206, 10.0.0.9, 80, 38858, 0, 535206863, 0, 0,2013-08-15 18:55:47.694 rst, 65.55.203.135, 10.0.0.9, 80, 50008, 0, 4071709905, 0, 0,2013-08-15 18:55:47.700 synack, 50.57.166.186, 10.0.0.9, 80, 60650, 2813653162, 993314545, 0, 0,2013-08-15 18:55:47.704 synack, 152.75.208.114, 10.0.0.9, 80, 52498, 460383682, 4040786862, 0, 0,2013-08-15 18:55:47.707 synack, 23.72.138.74, 10.0.0.9, 80, 33480, 810393698, 486476355, 0, 0,2013-08-15 18:55:47.710
Toni Steyskal 22:20, 8. siječnja 2015. (CET)
Blacklisting i whitelisting
Zmap podržava još i dva parametra za tzv. blackilstanje odnosno whitelistanje. Korisni su ako se želimo osigurati od toga da skenira nedozvoljeni dio mreže. Bez navedenih parametara bit će skenirane sve navedene IP adrese, no ako se koriste ovi parametri moguće je ograničiti Zmap skeniranje samo na one dijelove mreže kojima imamo dozvolu. U slučaju blacklistanja navedene IP adrese će biti izuzete iz skeniranja, a sve ostale će biti uključene, dok u slučaju whitelistanja će samo navedene IP adrese biti skenirane. Također moguće je ova dva principa istovremeno koristiti sa napomenom da blackilsting ima prednost nad whitelistingom. IP adrese koje će se blokirati ili skeniati mogu biti uređene na dva načina. Prvi je samo nakon prefiksa naredbe staviti IP adresu (sa subnetom)koja će biti dozvoljena ili blokirana, a drugi način je kreirati datoteke u kojima će se nalaziti lista IP adresa koje su dozvoljene/ blokirane. Parametri za omogućavanje blackistinga i whitelistinga:
Opcije | Opis |
-b, --blacklist-file=path | Putanja do datoteke sa IP adresama koje nece biti skenirane ili IP adrese (subneti) u CIDR notaciji |
-w, --whitelist-file=path | Putanja do datoteke sa IP adresama koj su dozvoljene ili IP adrese (subneti) u CIDR notaciji |
--GGlogoski 23:19, 11. siječnja 2015. (CET)
Ograničavanje brzine i uzorkovanje
Prema zadanim postavkama ZMap će skenirati po najbržoj brzini koju podržava mrežni adapter, to predstavlja oko 95-98% teoretske brzine gigabit Ethernet-a, što može biti brže nego što vaš pružatelj usluga može podnijeti. ZMap neće automatski uskladiti brzinu, već se ona mora ručno prilagoditi kako bi se smanjio broj izgubljenih paketa i neispravnih rezultata.
-r, --rate=pps Postavi maximalnu brzinu slanja u packetima/seckundi
-B, --bandwidth=bps Postavi brzinu slanja u bitovima/sekundi (podržava sufikse G, M i K), nadjačava --rate zastavu.
ZMap također omogućuje slučajno uzorkovanje IPv4 adresnog prostora određivanjem maximalnog broja računala za skeniranje i/ili maximalnim vremenom izvođenja. Budući da su računala skenirana prema slučajnoj permutaciji generiranoj po instanci skeniranja, ograničavajući skeniranje na n računala dobiva se slučajni uzorak od n skeniranih računala. Opcije naredbenog retka:
-n, --max-targets=n Ograniči broj računala
-N, --max-results=n Ograniči broj rezultata (izlazi se nakon ovolikog broja pozitivnih rezultata)
-t, --max-runtime=s Ograniči vrijeme za slanje paketa (u sekundama)
-s, --seed=n Sjeme koje se koristi za odabir permutacija adresa.
Slanje višestrukih paketa
ZMap podržava slanje više sondi svakom skeniranom računalu. Povećavanjem tog broja povećava se vrijeme skeniranja i broj dosegnutih skeniranih računala. Međutim, povećanje vremena skeniranja (~ 100% po dodatnoj sondi) uvelike nadmašuje povećanja u broju dosegnutih računala (~ 1% po dodatnoj sondi).
-P, --probes=n Broj jedinstvenih sondi koje će se slati svakom IP-u (default = 1)
Tsteyska 15:55, 12. siječnja 2015. (CET)
Zmap proširenja
Zmap je moguće proširiti sa raznim modulima (sondirajući ili izlazni moduli). Moguće ih je i samostalno napraviti (koristeći prog. jezik C). Pošto je osnovna funkcionalnost Zmapa uspotavljanje kontakta sa velikim brojem zadanih adresa i provjera koje od njih daju odgovor, nekim korisnicima to neće biti dovoljno. Neki će željeti raditi dodatne procese na aplikacijskoj razini npr. skenirajući HTTP port bilo bi dobro napraviti GET zahtjev ili TLS handshake nakon skeniranja HTTPS porta. Dva modula dolaze ugrađena u Zmap a to su banner-grab i forge-socket
Banner grab
Prva aplikacija koja je ugrađena u Zmap je banner-grab i služi za slanje i hvatanje poruka koje server vraća na razne upite. Aplikacija sluša TCP protokol i kada detektira odgovor sprema ga u odabranu datoteku. Ova tehnika (zvana još i banner grabbing) može se koristiti i u maliciozne svrhe jer potencijalnom napadaču može dati iformacije o sustavu na kojem server radi (a time i njegovim slabostima), pronaći hostove i ostale odgovore na razne komande.
Forge socket
Ova aplikacija je zamišljena kao dodatak na banner-grab, jer server nakon što pošalje odgovor (SYN-ACK paket), koji banner-grab uhvati, zatvara TCP komunikaciju (pomoću RST paketa). I tako banner-grab mora za svaki poziv otvarati novu TCP konekciju. Forge-socket stvara dodatnu TCP vezu koja blokira RST paket i socket koji višestruko koristi SYN-ACK parametre za parmanentnije slanje podataka.
--GGlogoski 00:43, 13. siječnja 2015. (CET)
Primjeri skeniranja
Skeniranje je obavljeno na točno određenim adresama kako bi se vidjelo koji su otvoreni portovi na određenoj adresi.
Uspješno:
SSH
zmap -p 22 -f"saddr,daddr,sport,dport" -o rezultati1.csv --summary 161.53.120.61 Jan 10 12:08:17.618 [WARN] blacklist: ZMap is currently using the default blacklist located at /etc/zmap/blacklist.conf. By default, this blacklist excludes locally scoped networks (e.g. 10.0.0.0/8, 127.0.0.1/8, and 192.168.0.0/16). If you are trying to scan local networks, you can change the default blacklist by editing the default ZMap configuration at /etc/zmap/zmap.conf. Jan 10 12:08:18.274 [INFO] zmap: output module: csv 0:00 4%; send: 1 done (2 p/s avg); recv: 0 0 p/s (0 p/s avg); drops: 0 p/s (0 p/s avg); hitrate: 0.00% 0:00 4%; send: 1 done (2 p/s avg); recv: 0 0 p/s (0 p/s avg); drops: 0 p/s (0 p/s avg); hitrate: 0.00% 0:01 16%; send: 1 done (2 p/s avg); recv: 1 0 p/s (0 p/s avg); drops: 0 p/s (0 p/s avg); hitrate: 100.00% 0:02 28%; send: 1 done (2 p/s avg); recv: 1 0 p/s (0 p/s avg); drops: 0 p/s (0 p/s avg); hitrate: 100.00% 0:03 41%; send: 1 done (2 p/s avg); recv: 1 0 p/s (0 p/s avg); drops: 0 p/s (0 p/s avg); hitrate: 100.00% 0:04 53%; send: 1 done (2 p/s avg); recv: 1 0 p/s (0 p/s avg); drops: 0 p/s (0 p/s avg); hitrate: 100.00% 0:05 65% (3s left); send: 1 done (2 p/s avg); recv: 1 0 p/s (0 p/s avg); drops: 0 p/s (0 p/s avg); hitrate: 100.00% 0:06 77% (2s left); send: 1 done (2 p/s avg); recv: 1 0 p/s (0 p/s avg); drops: 0 p/s (0 p/s avg); hitrate: 100.00% 0:07 89% (1s left); send: 1 done (2 p/s avg); recv: 1 0 p/s (0 p/s avg); drops: 0 p/s (0 p/s avg); hitrate: 100.00% 0:08 104% (0s left); send: 1 done (2 p/s avg); recv: 1 0 p/s (0 p/s avg); drops: 0 p/s (0 p/s avg); hitrate: 100.00% cnf target-port 22 cnf source-port-range-begin 32768 cnf source-port-range-end 61000 cnf source-addr-range-begin 192.168.199.130 cnf source-addr-range-end 192.168.199.130 cnf maximum-targets 4294967295 cnf maximum-runtime 0 cnf maximum-results 4294967295 cnf permutation-seed 0 cnf cooldown-period 8 cnf send-interface eth0 cnf rate 0 cnf bandwidth 0 cnf shard-num 0 cnf num-shards 1 cnf senders 1 env nprocessors 2 exc send-start-time Sat Jan 10 12:08:18 2015 exc send-end-time Sat Jan 10 12:08:18 2015 exc recv-start-time Sat Jan 10 12:08:18 2015 exc recv-end-time Sat Jan 10 12:08:26 2015 exc sent 1 exc blacklisted 254 exc whitelisted 1 exc first-scanned 0 exc hit-rate 100.000000 exc success-total 1 exc success-unique 1 exc success-cooldown-total 1 exc success-cooldown-unique 1 exc failure-total 0 exc sendto-failures 0 adv permutation-gen 247 exc scan-type tcp_synscan Jan 10 12:08:27.934 [INFO] zmap: completed
Izlazna datoteka:
saddr, daddr, sport, dport 161.53.120.61,192.168.199.130,22,56122
HTTPS
zmap -p 443 -f"saddr,daddr,sport,dport" --verbosity=5 -o rezultati2.csv --summary 161.53.120.210 Jan 10 12:13:06.629 [TRACE] zmap: zmap main thread started Jan 10 12:13:06.629 [DEBUG] zmap: Loaded configuration file /etc/zmap/zmap.conf Jan 10 12:13:06.630 [DEBUG] zmap: syslog support enabled Jan 10 12:13:06.630 [TRACE] zmap: requested ouput-module: default Jan 10 12:13:06.630 [DEBUG] zmap: no output module provided. will use csv. Jan 10 12:13:06.630 [TRACE] fieldset: probe module does not supply application success field. Jan 10 12:13:06.631 [DEBUG] zmap: requested output field (0): saddr Jan 10 12:13:06.631 [DEBUG] zmap: requested output field (1): daddr Jan 10 12:13:06.631 [DEBUG] zmap: requested output field (2): sport Jan 10 12:13:06.631 [DEBUG] zmap: requested output field (3): dport Jan 10 12:13:06.632 [WARN] blacklist: ZMap is currently using the default blacklist located at /etc/zmap/blacklist.conf. By default, this blacklist excludes locally scoped networks (e.g. 10.0.0.0/8, 127.0.0.1/8, and 192.168.0.0/16). If you are trying to scan local networks, you can change the default blacklist by editing the default ZMap configuration at /etc/zmap/zmap.conf. Jan 10 12:13:06.632 [DEBUG] constraint: blacklisting 0.0.0.0/0 Jan 10 12:13:06.633 [TRACE] constraint: Painting value 1 Jan 10 12:13:06.640 [DEBUG] constraint: 0 IPs in radix array, 1 IPs in tree Jan 10 12:13:06.641 [DEBUG] constraint: 1 addresses (0% of address space) can be scanned Jan 10 12:13:07.275 [DEBUG] zmap: no interface provided. will use default interface (eth0). Jan 10 12:13:07.275 [DEBUG] zmap: no source IP address given. will use default address: 192.168.199.130. Jan 10 12:13:07.275 [DEBUG] zmap: found gateway IP 192.168.199.2 on eth0 Jan 10 12:13:07.276 [DEBUG] send: gateway MAC address 00:50:56:fd:4a:09 Jan 10 12:13:07.276 [INFO] zmap: output module: csv Jan 10 12:13:07.276 [DEBUG] csv: more than one field, will add headers Jan 10 12:13:07.277 [TRACE] zmap: Isomorphism: 94 Jan 10 12:13:07.277 [DEBUG] send: srcip_first: 2194122944 Jan 10 12:13:07.277 [DEBUG] send: srcip_last: 2194122944 Jan 10 12:13:07.277 [DEBUG] send: will send from 1 address on 28233 source ports Jan 10 12:13:07.277 [DEBUG] send: no source MAC provided. automatically detected 00:0c:29:07:b2:0a as hw interface for eth0 Jan 10 12:13:07.277 [DEBUG] send: source MAC address 00:0c:29:07:b2:0a Jan 10 12:13:07.279 [TRACE] zmap: Pinning receive thread to core 0 Jan 10 12:13:07.279 [TRACE] recv: recv thread started Jan 10 12:13:07.280 [DEBUG] recv: capturing responses on eth0 Jan 10 12:13:07.665 [DEBUG] recv: duplicate responses will be excluded from output Jan 10 12:13:07.666 [DEBUG] recv: unsuccessful responses will be excluded from output Jan 10 12:13:07.666 [DEBUG] zmap: 1 sender threads spawned Jan 10 12:13:07.666 [TRACE] zmap: Pinning a send thread to core 1 Jan 10 12:13:07.667 [TRACE] zmap: Pinning monitor thread to core 0 Jan 10 12:13:07.667 [TRACE] send: send thread started Jan 10 12:13:07.667 [DEBUG] send: source MAC address 00:0c:29:07:b2:0a 0:00 5%; send: 1 0 p/s (2 p/s avg); recv: 0 0 p/s (0 p/s avg); drops: 0 p/s (0 p/s avg); hitrate: 0.00% Jan 10 12:13:07.668 [DEBUG] send: thread 0 finished Jan 10 12:13:07.668 [DEBUG] zmap: senders finished 0:01 17%; send: 1 done (2 p/s avg); recv: 1 0 p/s (0 p/s avg); drops: 0 p/s (0 p/s avg); hitrate: 100.00% 0:02 29%; send: 1 done (2 p/s avg); recv: 1 0 p/s (0 p/s avg); drops: 0 p/s (0 p/s avg); hitrate: 100.00% 0:03 41%; send: 1 done (2 p/s avg); recv: 1 0 p/s (0 p/s avg); drops: 0 p/s (0 p/s avg); hitrate: 100.00% 0:04 53%; send: 1 done (2 p/s avg); recv: 1 0 p/s (0 p/s avg); drops: 0 p/s (0 p/s avg); hitrate: 100.00% 0:05 65% (3s left); send: 1 done (2 p/s avg); recv: 1 0 p/s (0 p/s avg); drops: 0 p/s (0 p/s avg); hitrate: 100.00% 0:06 77% (2s left); send: 1 done (2 p/s avg); recv: 1 0 p/s (0 p/s avg); drops: 0 p/s (0 p/s avg); hitrate: 100.00% 0:07 89% (1s left); send: 1 done (2 p/s avg); recv: 1 0 p/s (0 p/s avg); drops: 0 p/s (0 p/s avg); hitrate: 100.00% Jan 10 12:13:15.973 [DEBUG] recv: thread finished 0:08 104% (0s left); send: 1 done (2 p/s avg); recv: 1 0 p/s (0 p/s avg); drops: 0 p/s (0 p/s avg); hitrate: 100.00% cnf target-port 443 cnf source-port-range-begin 32768 cnf source-port-range-end 61000 cnf source-addr-range-begin 192.168.199.130 cnf source-addr-range-end 192.168.199.130 cnf maximum-targets 4294967295 cnf maximum-runtime 0 cnf maximum-results 4294967295 cnf permutation-seed 0 cnf cooldown-period 8 cnf send-interface eth0 cnf rate 0 cnf bandwidth 0 cnf shard-num 0 cnf num-shards 1 cnf senders 1 env nprocessors 2 exc send-start-time Sat Jan 10 12:13:07 2015 exc send-end-time Sat Jan 10 12:13:07 2015 exc recv-start-time Sat Jan 10 12:13:07 2015 exc recv-end-time Sat Jan 10 12:13:15 2015 exc sent 1 exc blacklisted 254 exc whitelisted 1 exc first-scanned 0 exc hit-rate 100.000000 exc success-total 1 exc success-unique 1 exc success-cooldown-total 1 exc success-cooldown-unique 1 exc failure-total 0 exc sendto-failures 0 adv permutation-gen 94 exc scan-type tcp_synscan Jan 10 12:13:16.975 [INFO] zmap: completed
Izlazna datoteka:
saddr, daddr, sport, dport 161.53.120.210,192.168.199.130,443,51947
Neuspješno:
pr. MySql
zmap -p 3306 -f"saddr,daddr,sport,dport" --verbosity=5 -o rezultati3.csv --summary 161.53.120.230 Jan 10 12:20:04.689 [TRACE] zmap: zmap main thread started Jan 10 12:20:04.689 [DEBUG] zmap: Loaded configuration file /etc/zmap/zmap.conf Jan 10 12:20:04.689 [DEBUG] zmap: syslog support enabled Jan 10 12:20:04.691 [TRACE] zmap: requested ouput-module: default Jan 10 12:20:04.691 [DEBUG] zmap: no output module provided. will use csv. Jan 10 12:20:04.692 [TRACE] fieldset: probe module does not supply application success field. Jan 10 12:20:04.692 [DEBUG] zmap: requested output field (0): saddr Jan 10 12:20:04.692 [DEBUG] zmap: requested output field (1): daddr Jan 10 12:20:04.693 [DEBUG] zmap: requested output field (2): sport Jan 10 12:20:04.693 [DEBUG] zmap: requested output field (3): dport Jan 10 12:20:04.693 [WARN] blacklist: ZMap is currently using the default blacklist located at /etc/zmap/blacklist.conf. By default, this blacklist excludes locally scoped networks (e.g. 10.0.0.0/8, 127.0.0.1/8, and 192.168.0.0/16). If you are trying to scan local networks, you can change the default blacklist by editing the default ZMap configuration at /etc/zmap/zmap.conf. Jan 10 12:20:04.694 [DEBUG] constraint: blacklisting 0.0.0.0/0 Jan 10 12:20:04.695 [TRACE] constraint: Painting value 1 Jan 10 12:20:04.703 [DEBUG] constraint: 0 IPs in radix array, 1 IPs in tree Jan 10 12:20:04.703 [DEBUG] constraint: 1 addresses (0% of address space) can be scanned Jan 10 12:20:05.159 [DEBUG] zmap: no interface provided. will use default interface (eth0). Jan 10 12:20:05.160 [DEBUG] zmap: no source IP address given. will use default address: 192.168.199.130. Jan 10 12:20:05.160 [DEBUG] zmap: found gateway IP 192.168.199.2 on eth0 Jan 10 12:20:05.161 [DEBUG] send: gateway MAC address 00:50:56:fd:4a:09 Jan 10 12:20:05.161 [INFO] zmap: output module: csv Jan 10 12:20:05.161 [DEBUG] csv: more than one field, will add headers Jan 10 12:20:05.162 [TRACE] zmap: Isomorphism: 171 Jan 10 12:20:05.162 [DEBUG] send: srcip_first: 2194122944 Jan 10 12:20:05.162 [DEBUG] send: srcip_last: 2194122944 Jan 10 12:20:05.163 [DEBUG] send: will send from 1 address on 28233 source ports Jan 10 12:20:05.163 [DEBUG] send: no source MAC provided. automatically detected 00:0c:29:07:b2:0a as hw interface for eth0 Jan 10 12:20:05.163 [DEBUG] send: source MAC address 00:0c:29:07:b2:0a Jan 10 12:20:05.166 [TRACE] zmap: Pinning receive thread to core 0 Jan 10 12:20:05.166 [TRACE] recv: recv thread started Jan 10 12:20:05.167 [DEBUG] recv: capturing responses on eth0 Jan 10 12:20:05.437 [DEBUG] recv: duplicate responses will be excluded from output Jan 10 12:20:05.437 [DEBUG] recv: unsuccessful responses will be excluded from output Jan 10 12:20:05.437 [DEBUG] zmap: 1 sender threads spawned Jan 10 12:20:05.437 [TRACE] zmap: Pinning a send thread to core 1 Jan 10 12:20:05.437 [TRACE] zmap: Pinning monitor thread to core 0 Jan 10 12:20:05.438 [TRACE] send: send thread started Jan 10 12:20:05.438 [DEBUG] send: source MAC address 00:0c:29:07:b2:0a 0:00 3%; send: 1 0 p/s (3 p/s avg); recv: 0 0 p/s (0 p/s avg); drops: 0 p/s (0 p/s avg); hitrate: 0.00% Jan 10 12:20:05.438 [DEBUG] send: thread 0 finished Jan 10 12:20:05.438 [DEBUG] zmap: senders finished 0:01 15%; send: 1 done (3 p/s avg); recv: 0 0 p/s (0 p/s avg); drops: 0 p/s (0 p/s avg); hitrate: 0.00% 0:02 28%; send: 1 done (3 p/s avg); recv: 0 0 p/s (0 p/s avg); drops: 0 p/s (0 p/s avg); hitrate: 0.00% 0:03 40%; send: 1 done (3 p/s avg); recv: 0 0 p/s (0 p/s avg); drops: 0 p/s (0 p/s avg); hitrate: 0.00% 0:04 52%; send: 1 done (3 p/s avg); recv: 0 0 p/s (0 p/s avg); drops: 0 p/s (0 p/s avg); hitrate: 0.00% 0:05 64% (3s left); send: 1 done (3 p/s avg); recv: 0 0 p/s (0 p/s avg); drops: 0 p/s (0 p/s avg); hitrate: 0.00% 0:06 76% (2s left); send: 1 done (3 p/s avg); recv: 0 0 p/s (0 p/s avg); drops: 0 p/s (0 p/s avg); hitrate: 0.00% 0:07 88% (1s left); send: 1 done (3 p/s avg); recv: 0 0 p/s (0 p/s avg); drops: 0 p/s (0 p/s avg); hitrate: 0.00% Jan 10 12:20:13.789 [DEBUG] recv: thread finished 0:08 104% (0s left); send: 1 done (3 p/s avg); recv: 0 0 p/s (0 p/s avg); drops: 0 p/s (0 p/s avg); hitrate: 0.00% cnf target-port 3306 cnf source-port-range-begin 32768 cnf source-port-range-end 61000 cnf source-addr-range-begin 192.168.199.130 cnf source-addr-range-end 192.168.199.130 cnf maximum-targets 4294967295 cnf maximum-runtime 0 cnf maximum-results 4294967295 cnf permutation-seed 0 cnf cooldown-period 8 cnf send-interface eth0 cnf rate 0 cnf bandwidth 0 cnf shard-num 0 cnf num-shards 1 cnf senders 1 env nprocessors 2 exc send-start-time Sat Jan 10 12:20:05 2015 exc send-end-time Sat Jan 10 12:20:05 2015 exc recv-start-time Sat Jan 10 12:20:05 2015 exc recv-end-time Sat Jan 10 12:20:13 2015 exc sent 1 exc blacklisted 254 exc whitelisted 1 exc first-scanned 0 exc hit-rate 0.000000 exc success-total 0 exc success-unique 0 exc success-cooldown-total 0 exc success-cooldown-unique 0 exc failure-total 0 exc sendto-failures 0 adv permutation-gen 171 exc scan-type tcp_synscan Jan 10 12:20:14.794 [INFO] zmap: completed
--Valentina 15:26, 12. siječnja 2015. (CET)
--Mkovacek 15:26, 12. siječnja 2015. (CET)
--GGlogoski 00:45, 13. siječnja 2015. (CET)
Tsteyska 21:55, 14. siječnja 2015. (CET)
Automatizacija ZMap skeniranja
Testirajući prethodne IP adrese, zapitali smo se da li bi se mogla napraviti određena automatizacija prilikom ZMap skeniranja?
Došli smo do zaključka da se može automatizirati ako se napravi skripta koje se može pokrenuti i izvršavanjem određenog
koda i odabirom parmetara dolazi se do odličnih rezultata.
Skripta koju smo implemenatirali nudi tri opcije skeniranja:
- da se unese neki specifični port kojega želimo skenirati kao npr. port 80
- da se unese neki raspon portova koje želimo skenirati kao npr. od 25-50
- da se skeniraju neki od najpoznatijih portova na kojima se odvija komunikacija kao npr. 7,20,21,22,...
Opcije su koncipirane tako da se prvo odaberu portovi (kod prve dvije opcije) te se onda upisuju IP adrese, a u trećoj opciji se samo upisuje IP adresa.
Ako želimo skenirati neki specifični port, onda se unese port i nakon toga IP adresa/e i nakon toga se unutar skripte pozove funkcija koja napravi takvu vrstu testiranja. Ako želimo skenirati određeni raspon portova, tada se unese raspon i IP adresa/e i nakon toga se pozove funkcija unutar skripte koja napravi takvo testiranje i kreće se od početnog porta prema onom završnome.Ako se pak želi provesti skeniranje samo kroz najpoznatije portove, tada se unese samo IP adresa i program prolazi kroz neke od najpoznatijih portova koje smo stavili u skriptu.
Skripta započinje tako da se odabere jedna od opcija skeniranja. Na kraju skeniranja se poziva funkcija za filtriranje, koja pronalazi na kojim portovima je dobiven odgovor. Nakon toga se kreira folder Hit, ako već ne postoji, u kojega se spremaju rezultati portova od kojih je dobiven odgovor.
Skripta koju smo implementirali izgleda ovako:
#!/bin/bash function filterResults(){ if [ ! -d "Hit" ] then mkdir Hit fi for ((i=1; i<=3500; i++)) do if [ -f "port_$i.csv" ] then br=$(wc -c < port_$i.csv) if [[ "$br" -gt "54" ]] then cp port_$i.csv Hit fi fi done } function folder(){ if [[ "$IP" =~ "/" ]] then folder=$(echo $IP | tr "/" "-") mkdir $folder elif [ "$IP" != "${IP/ /}" ] then folder="ZMap_results" mkdir $folder else folder=$IP mkdir $folder fi } function ZMap(){ zmap -p $i -f "saddr,daddr,sport,dport,classification,ttl,ipid" -o $folder/port_$i.csv $IP } function zmapPorts(){ echo "Enter ports (etc. 80 110): " read ports; echo "Enter IP" read IP; folder for i in $ports do ZMap done cd $folder filterResults } function zmapPortRange(){ echo "From port (etc. 25): " read fromPort; echo "To port (etc. 50): " read toPort; echo "Enter IP: " read IP; folder for ((i=$fromPort; i<=$toPort; i++)) do ZMap done cd $folder filterResults } function zmapKnownPorts(){ echo "Enter IP" read IP; folder for i in 1 5 7 18 20 21 22 23 25 29 37 42 43 49 53 69 70 79 80 103 108 109 110 115 118 119 137 139 143 150 156 161 179 190 194 197 389 396 443 444 445 458 546 547 563 569 1080 do ZMap done cd $folder filterResults } echo "1 Specific port(s) etc. 80 110 " echo "2 Port range etc. 25..50" echo "3 Well known ports" read case; case $case in 1) zmapPorts;; 2) zmapPortRange;; 3) zmapKnownPorts;; esac
--Valentina 18:52, 19. siječnja 2015. (CET)
--GGlogoski 19:31, 19. siječnja 2015. (CET)
-- Mkovacek 19:37, 19. siječnja 2015. (CET)
-- Tsteyska 20:49, 19. siječnja 2015. (CET)
Rezultati skeniranja pomoću skripte
Pomoću prethodno navedene skripte izvršili smo skeniranje sljedećih IP adresa:
161.53.120.230 161.53.120.210 161.53.120.209 161.53.120.61
Rezultati skeniranja pronađeni su na sljedećim portovima:
Port 22
saddr, daddr, sport, dport, classification, ttl, ipid 161.53.120.61,192.168.139.137,22,48647,synack,128,2962
Port 25
saddr, daddr, sport, dport, classification, ttl, ipid 161.53.120.230,192.168.139.137,25,56222,synack,128,2970 161.53.120.61,192.168.139.137,25,58385,synack,128,2971 161.53.120.209,192.168.139.137,25,39784,synack,128,2972 161.53.120.210,192.168.139.137,25,53195,synack,128,2973
Port 110
saddr, daddr, sport, dport, classification, ttl, ipid 161.53.120.230,192.168.139.137,110,55444,synack,128,3026 161.53.120.61,192.168.139.137,110,50758,synack,128,3027 161.53.120.210,192.168.139.137,110,56199,synack,128,3028 161.53.120.209,192.168.139.137,110,39659,synack,128,3029
Port 119
saddr, daddr, sport, dport, classification, ttl, ipid 161.53.120.210,192.168.139.137,119,46875,synack,128,3067 161.53.120.61,192.168.139.137,119,33271,synack,128,3068 161.53.120.230,192.168.139.137,119,42167,synack,128,3069 161.53.120.209,192.168.139.137,119,41177,synack,128,3070
Port 143
saddr, daddr, sport, dport, classification, ttl, ipid 161.53.120.210,192.168.139.137,143,36388,synack,128,3078 161.53.120.230,192.168.139.137,143,52675,synack,128,3079 161.53.120.61,192.168.139.137,143,34591,synack,128,3080 161.53.120.209,192.168.139.137,143,36276,synack,128,3081
Port 443
saddr, daddr, sport, dport, classification, ttl, ipid 161.53.120.210,192.168.139.137,443,33469,synack,128,3119
Port 563
saddr, daddr, sport, dport, classification, ttl, ipid 161.53.120.61,192.168.139.137,563,53504,synack,128,3143 161.53.120.230,192.168.139.137,563,58544,synack,128,3144 161.53.120.210,192.168.139.137,563,35419,synack,128,3145 161.53.120.209,192.168.139.137,563,46376,synack,128,3146
--Valentina 19:30, 19. siječnja 2015. (CET)
--GGlogoski 19:33, 19. siječnja 2015. (CET)
-- Mkovacek 19:37, 19. siječnja 2015. (CET)
-- Tsteyska 20:49, 19. siječnja 2015. (CET)
Literatura
https://zmap.io/documentation.html
https://zmap.io/documentation.html#gettingstarted
https://zmap.io/documentation.html#bestpractices
http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html