Tehnike brzog mrežnog skeniranja (zmap)

Izvor: SIS Wiki
Skoči na: orijentacija, traži

Č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:


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:

  1. Blisko surađivati sa administratorom za mrežu kako bi se smanjili rizici, ili riješili upiti
  2. Provjeriti i potvrditi da skeniranje neće zagušiti lokalnu mrežu ili providera
  3. Signaliziran bezopasnu namjeru skeniranja na web stranicama i DNS unosima na izvorišnim adresama
  4. Jasno objasniti svrhu i opseg skeniranja kroz sve oblike komunikacije
  5. Omogućiti jednostavan način prekida i poštivanja upućenih zahtjeve
  6. Ne raditi skeniranja bez stvarne potrebe za ciljeve istraživanja
  7. 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:

  1. da se unese neki specifični port kojega želimo skenirati kao npr. port 80
  2. da se unese neki raspon portova koje želimo skenirati kao npr. od 25-50
  3. 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

Osobni alati
Imenski prostori
Inačice
Radnje
Orijentacija
Traka s alatima