SSPING
SSping è un tipo di attacco con pacchetti icmp in grado di
congelare un computer sotto diversi sistemi operativi.
In pratica e' possibile mandare in crash, forzare il reboot, e in
definitiva mandare in blocco un gran numero di sistemi
operativimediante l'invio di un ping di certa grandezza da una
macchina remota.
La sua semplicità lo rende un'attacco molto diffuso, dato che in
in fin dei conti si tratta di un sempice ping, per lanciare
il quale basta conoscere l'indirizzo IP della amcchina da
assalire.
L'ssping conosciuto anche come "jolt", "ICMP
Bug", "Ice Newk", "Ping Of Death" è
basato su un codice datato che congela le vecchie implementazioni
SysV e Posix e opera principalmente mediante l'invio di una serie
di pacchetti ping icmp frammentati (e a volta spoofati cioè con
intestazione recante un ip differente da quello della macchian
che li ha generati) all'obiettivo, che tenta di rspondere
ricostruendo una risposta al ping framentato da 64 k, mandando in
crash il sistema operativo.
Il funzionamento di questo attacco è nel contempo semplice e
letale, dato che e' in grado di mettere a terra non solo macchine
Unix, ma anche Mac, Windows, Netware, router, stamapnti di rete e
molto altro ancora.
In pratica, un datagramma IP di 65536 bytes è illegale, nel
senso che i computer non permettono il loro invio, ma è posibile
ovviare a questo limite creandone uno in modo che il
pacchetto sia fragmentato, ovvero diviso in pezzi per la
trasmissione.
Quando i frammenti vengono riassemblati viene creato un pacchetto
i dimensioni non consentite, inondando il buffer di qualsiasi
sistema, causando, a seconda di chi lo riceve, effetti
differenti.
Per ovviare a questo tipo di problema, le software house hanno
rilasciato le apposite patch(ovvero "pezzi" di codice
che vanno a rimpiazzare bachi presenti nei programmi) in
tempi ridottissimi: quella per Linux è stata rilasciata dopo tre
ore( 2 ore e 35 minuti 10 secondi, per la precisione), e Bill
Webb della Telebit assicura che la patch per Netblazer è stata
rilasciata in due ore!
Per capire meglio come la meccanica dell'icmp flood bisogna
approfondire alcune informazioni di fondo sull'ICMP ECHO (ping):
i pacchetti ip, secondo la RFC-791(Request for comments,
documentazione redatta dalla Internet Engeneering Task Force),
possono essere superiori alla lunghezza di 65,535 (2^16-1)
otteti, la quale include anche la lunghezza dell'intestazione
(tipicamente 20 otteti se nessuna opzione IP e' specificata). I
pacchetti piu' grandi della grandezza massima possono essere
maneggiati dallo strato di underlying (MTU) e frammentati in
pacchetti piu' piccoli, che vengono riassemblati dal ricevitore
(per apparecchiature modello ethernet, l' MTU e' tipicamente
1500).
Una richiesta di icmp echo "vive" nel pachetto IP, che
è composto da otto otteti di informazioni di intestazione ICMP
(RFC-792), seguito dal numero di dati degli otteti nella
richiesta "ping". Da adesso la grandezza massima di
informazioni ammessa all'area dei dati è: 65535-20-8=65507
otteti.
Ma cos'e' ce causa il crash della macchina ricevente?
Bisogna notare che e' possibile inviare un pacchetto illegale con
piu' di 65507 oteti di dati grazie al mecanismo di ricostruzione
dei pacchetti, che fa affidamento su un valore di offset in
ciscun frammento per determinare il punto in cui il frammento
individualevga riassemblato. In questo modo, sull'ultimo
frammento, è possibile combinare un offset valido con un
frammento di grandezza superiore a 65535 (offset+grandezza).
Da quando le macchine tipiche non processano i frammenti fino a
quando non li hanno ricevuti tutti e hanno provato a
riassemblarli, c'e' la possibilità di un overflow dei 16 bit
variabili interni, che conducono il sistema la crash, reboot,
alla caduta del kernel, al kernel panic ecc..
Il problema apparenteemnete sembra essere limitato al ping, che
in definitiva puo' essere facilmente fermato con un buon
firewall; in verita' questo attacco puo' essere sfruttato da
qualsiasi cosa in grado di spedire un datagramma ip: non solo
icmp echo ma anche tcp, udp, e probabilmente anche il nuovo
modello ipx puo' essere sfruttato per colpire i computer nei loro
punti deboli.
Molto probabilmente un FIREWALL può essere la soluzione migliore
per difendersi il culo, ma qualsiasi cosa, dall'nfs, all'http,
fino al comune telnet potrebbero diventare un valido strumento di
aggressione
Ecco qua sotto una tabella riassuntiva sulle porte piu' generiche
e il loro utilizzo:
Numero di porta | Funzione |
9 | DISCARD |
15 | NETSTAT |
19 | CHARGEN |
21 | FTP |
23 | TELNETD |
25 | SMTP |
39 | RLP |
67 | BOOTP |
71 | FINGERK |
80/8080 | HTTP |
80/8080/5580 | MILITARY HTTP |
87 | LINK |
110 | POP3 |
113 | IDENTD |
119 | NNTP |
144 | NEWSK |
512 | EXECK |
513 | LOGIN |
515 | PKILL |
517 | KTALK |
518 | NTALK |
533 | NETWALL |
560 | RMONTIOR |
561 | MONTIOR |
750 | KERBEROS |
Come difendersi;
Se non è disponibile una patch(anche se ormai è disponibile per
la maggior parte dei sistemi operativi), la miglior soluzione è
bloccare i ping con un firewall; questa non e' una
soluzione a lungo termine, dato che siete costretti a
tenere aperta una porta per utilizzare un servizio pubblico,
avete un potenziale punto vulnerabile nel vostro sistema.
L'unica vera difesa consiste in una patch al sistema operativo
che consenta di bloccare definitavamente qualsiasi ping
frammentato superiore a 64K: in questo modo il ping comune da
64byte potrebe passare, mentre verrebbero bloccati i pacchetti
con dimensioni superiori all'MTU, questo puo' variare , ma circa
1k e' una buona scelta.