Utenti Online:  | IP:  28/10/2002: Aggiornata la grafica del sito, by pCwArE ;))
Menù
Tecniche di intrusione
Security FAQ 1.0

Protocollo TCP/IP

Buffer Overflow
DDoS
ICMP
Grande Guida Hacking
Enciclopedia Lord Shinva
Lista Porte
RFC
Linux
Shell
How to become a hacker
Jargon File

 

DISCLAIMER: Si ricorda che il Web Admin del sito ed il provider non si ritengono responsabili in nessun modo del cattivo utilizzo che chiunque dovesse fare di tutto il materiale contenuto nel sito. Lo scopo della Security Check Community è quello di condividere ed approfondire le conoscenze della comunità.

 

Votaci!!

Hacking/Documentazione
ICMP

[4.1]»»»»»»»»»»»»»»»»»»»»»»»»»»»»»*Icmp questo sconosciuto* »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»


OK ragazzi, finite le intro e le varie scaramuzze ;) si passa a lavorare... attivate un po' 
la mente e cercate di concentrarvi su queste parole ( si lo so vi sto kiedendo troppo! ) :)
Beh cerko anke io di diventare serio:

/mode +serius ADvAnCeD` 
**Kvirc - Serius ??? you?!!?!? That's impossible.

E va beh sono fatto così stai molto calmO!=) Allora vi dico subito che in questo articolo
vi parlero` anche di firewalling sotto linux, e sopporro` che viu usiate il piu` diffuso
firewall del pinguino: ipchains. Anche se usate iptables la situazione non dovrebbe cambiare
di molto... Non vi preoccupate :) Iniziamo.

Il protocollo ICMP è un protocollo, come spero sappiate, che fa parte dell'TCP/IP, che comprende
il protocollo IP, udp, icmp, udp e TCP ( se volete più info sul tcp/ip consultate la guida di
MaKEaTme su mojodo.cjb.net ). Nonostante ciò, i pacchetti ICMP sono implementati negli 
stessi pacchetti IP, e non possono stare da soli ( anche la teknologia ha un cuore! ).Per 
farvelo capire meglio vi faccio un ascii qui sotto ke mi piace tanto ( scusa mighty ). Un 
pacchetto icmp è strutturato piu` o meno cosi`:

    +----------------------------------------------------------+          
    |                                                                          |          
    |                   INTESTAZIONE IP                             |          
    +---------------------------+------------------------------+          
    |   ip sorgente             |            ip destinazione       |          
    +---------------------------+------------------------------+          
    |                                                                         |          
    |                                                                         |          
    +----------------------------------------------------------+          
    |                                                                         |          
    |                   INTESTAZIONE ICMP                        |          
    +---------------------------+------------------------------+          
    |       TIPO                |         CODICE               |          
    +---------------------------+------------------------------+          
    |   +--------------------------------------------------+   |          
    |   |                                                  |   |          
    |   |            EVENTUALI DATI ICMP                   |   |          
    |   |                                                  |   |          
    |   +--------------------------------------------------+   |          
    +----------------------------------------------------------+     

Bene questo skemino tenetevelo bene a mente ke vi sara` utile :) . Ora ricapitoliamo.voi a
questo punto vi chiederete " Ma l'icmo che cos'è e soprattutto a ke kosa serve?? " UN attimo
ci sto` arrivando. L'icmp, ovvero INTERNET CONTROL MESSAGE PROTOCOL, è un protocollo destinato
a svolgere funzioni di "controllo" e funzioni di "test", e vedremo piu` avanti le svariate 
funzioni. Come potete osservare dallo schema sopra, nellaparte dell icmp, sono presenti due 
"sezioni" del pacchetto che ora vi spiegherò meglio: 

il "tipo" : esistono 9 tipi di pacchetti icmp, con funzioni diverse una dall'altra; In questo 
testo non ve li elencherò tutti, perche` molti sono "inutili", e mi limiterò a 
spiegare i principali tipi di pacchetti icmp.

il "codice": il codice di un pacchetto è come dire il sottotipo, la sottospecie; per ogni tipo di
pacchetto icmp, ci sono svariati codici.

C'è un aggiunta da fare: il tipo 0 e 8 di icmp, non hanno un codice, e sono i rispettivamente
i pacchetti icmp echo request e icmp echo reply
¯¯¯¯¯¯¯¯¯¯¯¯ ¯¯¯¯¯¯¯¯¯¯
Ora vi faccio un esempio pratico di come puo` venir utilizzato il protocollo icmp. Per esempio
l'host A manda un pacchetto icmp echo request con una certa quantita` di dati all'host b,
che gli ripsponde inviandogli un pacchetto icmp di tipo echo reply, con la stessa quantita`
di dati presente nell'pacchetto originale. In questo modo l'host A puo` sapere chel'host B
e` funzionante, up, e puo` valutare eventuali problemi a livello network. Beh questa sequenza
e` chaimata dagli amici " ping " , ed ho proprio scritto un bell'articolo a riguardo che spiega 
bene come funziona questo meccanismo e come puo` essere utilizzato ( lo trovate su mojodo.cjb.net).
ABbiamo visto gli ICMP di tipo 0 e 8: ora diamo un occhiata al tipo 3. All'icmp di tipo 3
spetta il compito di avvertirel'host che ha spedito un determinato pacchetto del fatto che non 
e` possibile oconsegnare tale pacchetto all'host destinatario, poiche` per qualche ragione è 
"unreacheable" ovvero irraggiungibile. Il tipo di problema rincontrato dall'host per consegnare
il pacchetto è specificato nel "codice" del pacchetto e in questo tipo ( 3) di pacchetto icmp,
ci sono ben 16 codici. Qui sotto vi riporto un elenco completo :

------------------------------
0) Icmp_Net_Unreach
1) Icmp_Host_Unreach
2) Icmp prot unreach
3) Icmp_port_unreach
4) Icmp FRAG needed
5) Icmp RR failed
6) Icmp_net_unknow
7) Icmp Host down
8) Icmp_host_isolated
9) Icmp Net An
10)Icmp Host An
11)Icmp_net_unr_tos
12)Icmp host unr tos
13)Icmp_PKT_filtred
14)Icmp_prec_violation
15) /
16)NR_TCMP_unreach
------------------------------

CMq vi do un informazione aggiuntiva: linux riconosce i codici di ICMP di tipo 3 nel file:

/usr/include/linux/icmp.h 
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Dateci un occhiata per piu` info. Ora facciamo un accenno al firewalling.... dato che siamo
in tema.... Quando noi usiamo con ipchains l'opzione " -j REJECT " su un pacchetto in entrata,
il nostro firewall avvisa l'host "mittente" che il suo pacchetto non è stato accettato, tramite
appunto un pacchetto icmp di tipo 3. Se usiamo invece l'opzione "-j DENY" il pakketto sara`
scartato senza mandare all'host che ha fatto la rischiesta la motivazione che ha fatto scartare
il pacchetto. Capito quiandi la differenza stra DENY e REJECT??? si vero? ok passiamo oltre.

Il 4 "Tipo" di pacchetto icmp, è quello di smorzamento dela provenienza ( source quench ), e 
serve ad evitare problemi di congestione. Questi pacchetti sono molto importanti, e possono 
avvisare gravi problemi di rete, quindi non dovrebbero essere filtrati assolutamente per
nessun motivo.

Il tipo 11 di cosiddetto " tempo scaduto" ( time exeeded ), e` utilizzato solitamente dai
traceroute, serve a notificare che un pacchetto ha percorso troppi router intermedi, senza
arrivare alla destinazione finale ( e questo e` il caso del [tipo 11 - codice 0] ). Questo
tipo di icmp possono servire anche a rendere noto che non tutti i frammenti di un dato "datagramma"
sono giunti all'host di destinazione entro il tempo limite di riassemblaggio ( ed è il caso
del [tipo 11- codice] ). Per informazioni sul processo di rounting vi consiglio di leggere
l'articolo di XanThic` sui Routers, e lo potete trovare sul sito di mojodo.
¯¯¯¯¯¯¯
Gli icmp di tipo 5, detti "redirect" sono utilizzati per modificare le tabelle di routing di un host
e se non sono utilizzati devono essere filtrati.

QUelli appena elencati, sono i tipi di ICMP più utilizzati: ce ne sono altri, ma non ritengo
indispensabile elencarveli, poichè non so nemmeno io a cosa servano! imparate bene questI!
Se siete curiosissimi leggete " Internetworking with TP/IP " di Douglas E. 
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯


[4.2]»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»* 3 way hansdake* »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
¯¯¯¯¯¯¯¯¯¯¯¯¯¯
================================================================
UH rieccomi. Sono tornato ora da scuola....... ke kazzo di D... non ce la faccio più.
Oggi mi hanno detto ke avrò 5 insufficenze in pagella...E KE KAZZOOOOOOOOOOOOOOOOOOO!
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Skusate ma ogni tanto mi allontano dall'argomento... sono fatto così! RItorno serio.
COme avete letto dal titolo di questo paragrafo, noterete che 3 way hansdake, con
l'icmp non ha un gran ke a ke fare.... Ma non è vero.... Ora lo vedrete... Anche se
guide al 3 way hansdake ce ne sono tante e sicuramente migliori di questa io ritengo
giusto introdurlo, e parlarvi anche di firewalling ... Ora vedrete...

Come (spero) saprete il three-way hansdake, è la fase iniziale di una connessione TCP,
ed e` caratterizzata dallo scambio, tra i due hosts che effettuano la connessione,
dei numeri di sequenza.Il protocollo TCP effettua questo scambio grazie a dei
pacchetti che hanno dei particolari flags attivi. Quando un host A vuole connettersi
as ad un servizio qualunque di un host B, deve spedire un pacchetto TCP con il solo
flag SYN attivo. L'host B di destinazione risponde con un pacchetto TCP con il flag
RST ( reset ) attivo nel caso in cui la porta di destinazione fosse chiusa( ovvero
non c'è nessuna applicazione che ascolta su quella porta) , altrimenti invia un
pacchetto con i flag SYN e ACK attivi, che confermano l'avvenuta ricezione del pacchetto.
Il primo pacchetto (SYN) contiene il sequence number del client, il secondo, il
sequence number del server (SYN/ACK). Quello che succede dopo non è importante. Per
farvi capire meglio vi faccio un bel ascii qui sotto :) Bello Bello si disegna!




+--------+ TCP (SYN) +----------+ 
| | ---->--------->-------->>| | 
| | | | 
| Client | | Server | 
| | TCP (SYN\ACK) | | 
| | <<------<-----------<--- | | 
+--------+ +----------+ 


Abbiamo appena studiato la prima parte di una connession a un host... poi la situazione
si complica ma e` necessario comprendere bene questa parte... Per esempio quando noi
ci connettiamo ad un server irc sulla 6667 quello che succede è quello appena spiegato
sopra ;) dai non è difficile. Ora un concetto FONDAMENTALE del firewalling e` questo:
¯¯¯¯¯¯¯¯¯¯¯¯
UN HOST NON PUO` CONNETTERSI AD UNA PORTA TCP DI UN ALTRO HOST SE NON PUO` SPEDIRGLI
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
UN PACCHETTO CON I SOLO FLAG SYN ATTIVO.
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Questo significa in poche parole che se vogliamo impedire a un lamah di connettersi
alla nostra porta 67374 (sub7), dovremo filtrare i pacchetti TCP con il solo flag
SYN attivo diretti a quella porta. Beh forse ora qualcuno si chiedera`: " MA perche`
'sto imbecille mi fa filtrare i pacchetti tcp con il solo flag SYN attivo?Non faccio
prima a filtrarli tutti ?? " 
Ragazzi calmatevi sono qui apposta. Purtroppo non è sempre possibile filtrare tutti
i pachetti TCP verso una porta che vada dalla 1024 in su. Il motivo di questo limite,
sta nel fatto che le porte 0-1023 sono porte "privilegiate", e non saranno mai utilizzate
per intraprendere una connessione verso un altro host. Infatti se l'host 151.152.0.1
(cha chiamiamo A ) vuole connettersi alla porta 80 dell'host 151.152.0.2 (che chiamiamo B )
scegliera` come porta "sorgente" un porta nel range compreso tra 1024 e 65535. Così la
connessione sarà piu` o meno così:

A:5003 ---->> B:80

Il 5003 è la porta sorgente e la 80 quella a cui è diretta la connessione. 
L'host A si è connesso alla porta 80 dell'host B utilizzando come porta sorgente la 5003
senza alcun problema.Ora ammettiamo che se sull'host A giri un firewall, che filtra tutti
i pacchetti destinati alla porta non privilegata 8080, e che tale host (A) voglia intraprendere
una connessionne verso la porta 53 dell'host B. Poi immaginiamo che casualmente la porta
sorgente scelta sia proprio la porta 8080. La situazione sarebbe la seguente:

1) L'host A spedisce un pacchetto TCP con il flag syn attivo dalla sua porta 8080 alla porta
del host b 53

A:8080 ----SYN--->> B:53


2) L'host B,disposto ad accettare connessioni su quella porta, rispondera` con un pacchetto 
TCP con i flags SYN/ACK attivi

B:53 --SYN/ACK->> A:8080


3)Il firewall dell'host A blocchera` il pacchetto SYN/ACK impedendo che la connessione tra
i due hosts possa avvenire.

Ragazzi lo so` questa ultima parte non e` molto facile, ma dovete per forza capirla.. rileggetela,
perke` e` davvero molto IMPORTANTE, non la saltate!
¯¯¯¯¯¯¯¯¯¯
oRA: se noi avessimo specificato al firewall che "non devono essere accettati i pacchetti
TCP diretti verso la porta 8080 solo e soltanto se possiedono unicamenteb il flag SYN attivo"
il pacchetto SYN/ACK sarebbe potutto giungere a destinazione e la connessione si sarebbe 
inizializzata senza alcun problema. 
Da notare: in una connessione TCP il pacchetto con il solo flasg SYN attivo viente utilizzato 
solo e soltanto nella fase in cui si stabilisce una connessione .



[4.3]»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»* Firewalling * »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
¯¯¯¯¯¯¯¯¯¯¯
Allora in questa parte vi faro` un piccolo riepilogo di quello che ho appena scritto sopra
per farvelo capire meglio ( speriamo ), e qualche esempio di filtraggio di pacchetti icmp.


+------------Rememb3r Alw4ys That--------------+ 
| | 
|** Le porte da 1 a 1023, che sono porte privi-| 
| legiate, possono essere filtrate specifi- | 
| cando che non deve essere accettato nessun | 
|** pacchetto TCP diretto verso tali porte. | 
|______________________________________________| 
| | 
|** Le porte comprese tra la 1024 e la 65535, | 
| che NON sono porte privilegiate, e potreb- | 
| bero essere utilizzate dal nostro host per | 
| instaurare connessioni verso altri hosts, | 
| devono essere filtrate specificando che non| 
| deve essere accettato nessun pacchetto TCP | 
|** con il solo flag SYN attivo verso queste. | 
| ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ | 
+----------------------------------------------+ 

////////////////////////////////////////////////////////////////////////////////////////

Per filtrare solo i pacchetti TCP con il flasg SYN attivo si utilizza l'opzione -y 
di ipchains. Se volete filtrare tutti i pacchetti TCP di tale tipo diretti verso
la porta 23 dell'host 127.0.0.1 dovrete usare questo comando:


ipchains -A in put -p tcp -d 127.0.0.1 23 -y -j DENY

////////////////////////////////////////////////////////////////////////////////////////

Per filtrare tutte le richieste di di echo ( ping ) , ovvero i pacchetti icmp di tipo 0,
dovrete usare la seguente sintassi:

ipchains -A input -p icmp --icmp-type echo-request -j DENY

Come potete notare non è stato specificato ne l'host di destinazione ne quello sorgente,
quindi verranno filtrate tutte le rischieste di icmp echo request da qualunque host...
Chiunque provera` a pingarvi, non ricevera` risposta :)

////////////////////////////////////////////////////////////////////////////////////////

Inoltre potrete bloccare certi pacchetti icmp diretti verso alcuni hosts,e permettere 
l'invio di altri... Vediamo l'esempio in due regole (rules)

ipchains -A output -p icmp --icmp-type echo-request -d mojodo.cjb.net -j ACCEPT


ipchains -A output -p icmp --icmp-type echo-request -j DENY

Dopo aver inserito queste regole sarà possibile utilizzare con successo il comando ping
verso l'host mojodo.cjb.net ( prima regola ). Questa regola permette infatti agli ICMP
di tipo 0 ( echo request ) diretti all'host mojodo.cjb.net di poter essere inotrati a 
destinazione. La seconda invece l'invio di pacchetti ICMP echo request a qualunque host,
tranne mojodo.cjb.net . Se infatti per esempio provate a pingare www.microsoft.com il
pacchetto di echo request verra` scartato da IPCHAINS.

////////////////////////////////////////////////////////////////////////////////////////

Vediamo un' altra regola, e aggiungiamo un piccolo concetto...

ipchains -A input -p icmp --icmp-type ! destination-unreachable -j DENY

Potete notare che abbiamo usato l'operatore " ! " di negazione.. IN poche parole la regola
in italiano sarebbe"Blocca tutti i pacchetti ICMP in entrata tranne quelli di tipo dest.unreach"
Beh grazie a questo operatore che significa " diverso da " potrete sicuramente sbizzarrirvi.


////////////////////////////////////////////////////////////////////////////////////////

ipchains -A input --interface ! lo -s 127.0.0.1/8 -j DENY

Questa e` una regola molto semplice, ma allo stesso tempo utile...Ovvero riconosce il tipo
di interfaccia da cui proviene il pacchetto, e in caso non sia l'interfaccia di loopBAck
( che sarebbe il pc locale ), lo blocca.... Questa e` una soluizione per bloccare i pachetti
spooffati con indirizzo 127.0.0.1, che un hacker puo` inviare per eludere il nostro sistema
e fargli credere di essere il local host... Ma noi siamo piu` furbi e con questa regola li 
inkuleremo tutti a 90° ( si vengo da ocsford ) .

////////////////////////////////////////////////////////////////////////////////////////

ipchains -A input -p tcp -y -d 0/0 1024:65535 -j DENY

In questo esempio troviamo come novita` la porta... anzi un range di porte ...wowowowowo.
Questa regola ci permette di bloccare tutti i pacchetti TCP entranti verso le porte da 
1024 a 65535 che possiedono il flag SYN attivo. Potete facilmente notare che tramite
l'operatore " : " abbiamo potuto specificare un range di porte... Come gia` ho detto prima
-y indica di applicare la regola soltanto ai pacchetti che posseggono il flasg SYN attivo.
Questa regola e` molto utile perche` permette di evitare che un processo che non possiede
i privilegi di r00t si possa mettere in ascolto su una porta TCP .



[5]»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» * 3nD * »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»

Un grosso saluto a tutti!

Ade :***

http://mojodo.cjb.net
http://advanced.too.it
http://www.mojodo.it ( speriamO!! )

ADvAnCeD`

 

Partner

pCwArE
ZeroDay
Il tuo sito qui..
Il tuo sito qui..
Il tuo sito qui..

>Diventa Partner

Newsletter

A breve la Newsletter!!
Community
Forum
Chat

Statistiche

[contatore visite]

Link

www.pcware.tk

www.hacklab.tk

TORNA ALLA HOMEPAGE

Security Check™ Designed By http://www.pcware.tk