Sei sulla pagina 1di 2

Tanto per cominciare, tutto ci che segue non vuole essere una vera e propria guid a a tutti i metodi

possibili per effettuare un port scanning, bens una semplice introduzione per schiarire le idee a chiunque le abbia confuse a riguardo. Tratteremo qui di seguito uno dei metodi pi semplici per quanto riguarda questa t ecnica: il TCP scanning, ovvero la scansione delle porte TCP. Molto semplicemente, tale tipo di portscanning avviene inviando all'host con il quale aperta una connessione, dei pacchetti TCP per l'appunto, il risultato dell'operazione poi lo si evincer dalla risposta che si otterr dall'h ost stesso. Per renderla pi semplice immaginiamo che il nostro host sia un hotel e, che ogni pacchetto sia rappresentato da un cameriere. Il nostro cameriere viene incaricato di dirigersi alla porta n. TOT dell'host, e da bravo cameriere svolge il suo incarico. Una volta arrivato di fronte alla camera il cameriere pu trovarsi in 3 diverse si tuazioni. 1)Bussa e la porta gli viene aperta; 2)Porta chiusa, cartello non disturbare; 3)Bussa e nessuno risponde; Ora, per quanto riguarda il primo caso c' da precisare che quando una porta in "l istening" ovvero aperta, significa che utilizzata da un servizio che la tiene ap erta . Per quanto riguarda il secondo e terzo caso, entrambi ci dicono che la porta ina ccessibile al nostro cameriere: Nel secondo caso l'host ci comunica espressamente che la porta irraggiungibile e le connessioni in entrata su quella porta non saranno accettate; nel terzo invece la situazione cambia, la porta filtrata, controllata probabilme nte da un firewall(uomo cattivo), il quale rapisce il nostro cameriere non facen do pervenire dalla porta nessuna risposta. Di seguito allegato un sorgente scritto in perl e opportunamente commentato, per far capire ancora meglio la dinamica dello scanning tcp. #!/usr/bin/perl #usage: portscan.pl <host> <minrange> <maxrange> use IO::Socket; $ip=@ARGV[0]; t $min=@ARGV[1]; $max=@ARGV[2]; #Indirizzo dell'hos #porta minima #porta massima

print "ip: $ip\nminimum range: $min\nmaximum range: $max\n\n"; while($min<=$max){ #Fino a che il numero minimo di porta non supera quello mass imo $err = 0; my $sock=IO::Socket::INET->new(PeerAddr=>$ip, #Viene effettuata u na connessione all'host PeerPort=>$min, # sulla porta indic ata da $min Proto=>'tcp') $err++; #Ogni volta che la connessione non possibile stando agli ultiimi due casi spiegati, si incrementa l a variabile di errore shutdown($sock,2); #e successivamente viene chiusa la connessione con l'host per poi aprirne nuovamente un'altra

if ($sock){ ssione viene accettata dall'host, e il socket esiste push(@ports,$min); ge la porta alla nostra lista @ports } $min++; ta minima viene incrementato per poi riprendere il ciclo } print "\nopen ports: @ports\n"; rocesso terminato, la lista con le porte aperte

#se invece la conne #il sorgente aggiun #e il numero di por

#e stampare poi a p

Per quanto riguarda invece la variabile di errore, siete liberi di utilizzarla c ome meglio credete, per poter stilare una lista delle porte chiuse, o del numero di porte chiuse. Credo che come prima lezione basti a darvi una prima idea di come avviene lo sca nning delle porte aperte sull'host remoto, alla prossima .

skerno a.k.a riot

Potrebbero piacerti anche