Sommario | Attacco | Crittologia | GnuPG/PGP | Programmazione | Sicurezza | Modifiche

 
   

Sommario /


Aspetti legali

La gestione degli incidenti

Strumenti

 


Attacco

Le svariate tipologie di attacco possono essere raggruppate in queste quattro categorie:

  • Acquisizione di informazioni: non è una tipologia di attacco vera e propria ma un insieme di azioni che anticipano un attacco. Esempi potrebbero essere: scanning e sniffing.
  • Accesso non autorizzato: un intruso ottiene l'accesso ad una rete o ad un computer non avendone l'autorizzazione dopo di ciò potrebbe ottenere l'accesso ad ulteriori informazioni o bloccare determinati servizi.
  • Accesso alle informazioni (ed eventuale modifica): l'operazione di accesso alle informazioni e l'eventuale modifica potrebbe derivare da un accesso non autorizzato al sistema mediante interrogazione a servizi esistenti o mediante spoofed mail.
  • Denial of Service (interruzione del servizio): l'intruso rende un sistema, un servizio o una rete non disponibile esaurendone le risorse, siano queste risorse di rete (banda), connessioni TCP (Syn Floods) o spazio disco (effettuando un upload di dati o causando delle registrazioni nei logs). Potrebbe avvenire anche mediante impersonazione del sistema avversario. Non richiede nessun accesso al sistema.

Metodi di attacco

I metodi da utilizzare sono vari ed a volte possono essere combinati insieme. A fattor comune vi è sempre una logica di attuazione:


Clic per ingrandire

Da segnalare a questo proposito:

  • Il lavoro, sempre in evoluzione, sviluppato da Pete Herzog, fondatore di ideahamster.org che attraverso il progetto "Open Source Security Testing Methodology Manual", ora disponibile sul sito isecom.org, ha reso disponibile un vero e proprio manuale open source incentrato sulle metodologie e gli strumenti da utilizzare per effettuare le varie verifiche;
  • Le raccomandazioni del NIST contenute nel documento "Guideline on Network Security Testing" - Pubblicazione 800-42;
  • Lo studio commissionato dal BSI (Bundesamt für Sicherheit in der Informationstechnik) dal titolo "Durchführungskonzept für Penetrationstests";
  • Il capitolo relativo al Penetration Testing presente nella pubblicazione Navy Handbook for the Computer Security Certification of Trusted Systems, edita dal Naval Research Laboratory della Marina degli Stati Uniti.

Vediamo adesso i diversi metodi a nostra disposizione, partendo dal social engineering.

Social Engineering

Il meno tecnico dei metodi di attacco. Consiste nell'acquisizione di informazioni parlando dei metodi di sicurezza con la gente sfruttando il fatto che di solito si è portati ad aver fiducia e ad aiutare gli altri. L'attaccante finge di essere una persona degna di fiducia. La migliore difesa consiste nell'autenticazione (chiamata di conferma e richiesta di autenticazione).

Acquisizione di informazioni

Ci sono diverse tecniche per acquisire informazioni utili all'attaccante:

  • Dumpster diving: analisi dei rifiuti alla ricerca di organigrammi (per trovare nomi di persone da impersonare in un attacco di social engineering), archivi cartacei, appunti o altre informazioni.
  • Shoulder surfing: consiste nello spiare stando alle spalle le operazioni di inserimento di informazioni sensibili (password, codici di accesso, numeri telefonici).
  • Scanning: il tentativo di connettersi ad un intervallo di numeri di porta o indirizzi IP per vedere quali servizi o sistemi sono presenti ed attivi.
  • Servizi di base (Basic services): i servizi di base (finger, netstat, primitive SMTP VRFY e EXPN) possono essere utilizzati da un attaccante per ottenere informazioni sugli utenti o per verificare l'esistenza di un utente.
  • Sniffing: Il processo di acquisire il traffico di rete utilizzando un analizzatore di protocollo. E' necessario un accesso alla rete.
  • Version information: è utilizzata per fornire informazioni all'attaccante circa le problematiche di sicurezza note (known security holes) all'interno della rete.

Sfruttamento di relazioni di fiducia mal gestite

Le relazioni di fiducia sono degli strumenti potenti e potenzialmente pericolosi che possono sia aumentare la produttività degli utenti che, se mal gestite o peggio, lasciate nella loro configurazione "di vendita", creare delle vaste brecce nella sicurezza.

  • User Accounts e Passwords: la più semplice delle relazioni di fiducia soffre di queste problematiche:
    • Gli utenti tendono a scegliere delle passwords semplici da ricordare.
    • Se gli utenti sono portati a scegliere passwords difficili da ricordare tendono a scriverle da qualche parte. La soluzione prevede l'uso di software in grado di generare passwords difficili ma allo stesso tempo semplici da ricordare.
    • Le passwords sono suscettibili ad un attacco di sniffing.
    • I files che contengono le passwords sono a volte accessibili e quindi decrittabili utilizzando strumenti sviluppati ad hoc (NTCrack, LC).
    • La soluzione potrebbe essere quella di utilizzare uno schema di password resistente, a singolo uso, memorizzato su token card.
  • Windows Disk Sharing: L'accesso alle risorse avviene o attraverso quelli che sono i diritti dell'utente una volta autenticato all'interno della rete (Dominio NT) o sulla base della singola condivisione, o senza autenticazione (MS Windows 95/3.11). L'accesso da parte di un attaccante potrebbe essere causato da un'erronea assegnazione dei permessi. Quindi, per un utilizzo di questa risorsa bisognerebbe prevedere un'amministrazione tesa a ridurre i privilegi ed a filtrare o bloccarne l'uso dall'esterno della rete. Venendo a mancare tutto questo, questa funzionalità non dovrebbe essere utilizzata.

Sfruttamento di servizi non autenticati

Un certo numero di servizi di rete non utilizzano l'autenticazione, e per questo possono facilmente subire un attacco di spoofing o l'accesso e la successiva modifica delle informazioni:

  • TFTP: si basa solo sui permessi del filesystem e potrebbe essere utilizzato per acquisire files sensibili del sistema.
  • SMTP: la maggior parte dei sistemi non effettuano dei controlli sulla vera identità degli utenti e quindi possono essere utilizzati per un attacco di spoofing.
  • DNS: il sistema potrebbe essere sensibile ad un attacco di spoofing, portando l'utente a connetersi al sistema sbagliato.
  • RIP: visto che il protocollo non utilizza l'autenticazione, qualsiasi sitema o router in ascolto di pacchetti di RIP potrebbero essere indirizzati verso la rete errata dove l'attaccante potrebbe (per esempio) intercettare o almeno monitorare il traffico.
  • Redirezione ICMP: soffre degli stessi problemi del protocollo RIP.

La migliore soluzione consiste nel disabilitare i servizi che non vengono utilizzati o limitarne l'uso/accesso agli elementi della rete degni di fiducia. La migliore soluzione in assoluto per l'SMTP è la crittografia o l'autenticazione.

Sfruttamento dei servizi centralizzati

I servizi centralizzati vengono utilizzati per la gestione dei sistemi connessi alla rete:

  • SNMP: SNMP utilizza un community name come password che viene trasmesso in chiaro e che di solito è uguale a 'public'.

L'utilizzo di questi servizi dovrebbe essere ridotto alle reti sicure.

Malicious Data

Le nuove caratteristiche dei software permettono azioni non pianificate durante la fase di sviluppo degli stessi:

  • Vulnerabilità intenzionali, per esempio:
    • Macros (per esempio in MS Office);
    • Primitive di I/O nei files PostScript;
    • Java & ActiveX;
    • Funzionalità di Autoplay attiva (MS Windows).

La soluzione ovvia sarebbe quella di disabilitare queste funzionalità, in attesa dello sviluppo delle stesse con caratteristiche più sicure; ma questo potrebbe limitare l'utilità dei programmi verso gli utenti.

  • Vulnerabilità non intenzionali:
    • Dati inseriti in un programma non validi;
    • Buffer overflow: viene utilizzato per interrompere il funzionamento di un sistema o per ottenerne l'accesso. E' richiesta una rilevante conoscenza tecnica nell'analisi delle variabili di una applicazione alla ricerca di valori non testati o al di fuori dei limiti consentiti. In pratica, il codice dell'attaccante invia una stringa in ingresso che è superiore al buffer allocato dal programma e sovrascrive il byte successivo in memoria che potrebbe contenere i valori puntati dallo stack. Visto che  questi valori indicano al programma dove andare per eseguire le prossime istruzioni, inserendo all'interno dei dati ben calcolati, l'attaccante potrebbe reindirizzare il tutto per far si che vengano eseguite delle operazioni presenti nella stringa di input. L'operazione è mirata ad una specifica variabile di uno specifico programma su uno specifico hardware o piattaforma software.

L'unica soluzione è quella di analizzare in fase di sviluppo la lunghezza delle variabili in input.

Spoofing

E' la capacità di sostituirsi a qualcuno/qualcosa.

  • User account spoofing: usare nome utente e password di un altro utente senza averne il diritto. Può avvenire utilizzando strumenti come sniffing e password crackers.
  • DNS spoofing: invio di una risposta DNS ad un Name Server nella rete della vittima. E' difficile da contrastare ma è anche difficile da attuare.
  • IP Address spoofing: è l'attacco più diffuso. Si basa sul fatto che la maggior parte dei routers all'interno di una rete controllino solo l'indirizzo IP di destinazione e non quello sorgente. Questo fa si che un attaccante possa inviare dei pacchetti ad un sistema bersaglio e le risposte di quest'ultimo saranno invece inviate al falso IP utilizzato dall'attaccante. L'IP spoofing potrebbe essere limitato inserendo dei filtri sull'indirizzo IP sorgente a livello routers.
  • IP Address spoofing e TCP Sequence Number Prediction: utilizzato da Kevin Mitnick contro Tsutomu Shimamura. E' suddiviso in diversi passaggi

1. L'attaccante (X) apre diverse connessioni TCP successive per determinare il modo con cui viene generato il numero di sequenza TCP sull'host della vittima. Quindi effettua un TCP Syn Flood di A, l'host a cui si deve sostituire.

2. L'attaccante invia un pacchetto a B pretendendo di essere A ed imposta il flag SYN nel pacchetto.

3. B invia un pacchetto ACK, SYN ad A che non può riceverlo perchè è sottoposto al flooding. L'attaccante deve indovinare quale sarà il valore utilizzato nella parte di SYN del pacchetto basandosi sulle analisi fatte nel punto 1.

4. L'attaccante invia l'ultimo pacchetto dell'handshake a 3 passaggi del TCP a B (ACK al posto di A più il numero di sequenza indovinato) ed invia dei comandi a B impersonando una eventuale relazione di fiducia esistente con A.

Questo tipo di attacco può essere evitato filtrando l'indirizzo IP sorgente ed utilizzando software che non utilizzino degli algoritmi che consentano di indovinare i numeri di sequenza TCP.

Sfruttamento di bugs nel software

Molti problemi di sicurezza nascono come bugs nel software e possono essere raggruppati in:

  • Software complesso: più il software è complesso maggiore è la probabilità di sbagliare;
  • Opzioni per il debug o trapdoors inserite dal programmatore: inserendo una certa parola il programma esegue una determinata operazione a volte non documentata;
  • Scarsa pratica di programmazione: il programmatore per mancanza di esperienza non sviluppa il programma valutando tutti gli accorgimenti necessari dal punto di vista della sicurezza:
    • non verifica la lunghezza delle variabili di input;
    • non verifica la corretta implementazione dei protocolli (ping of death);
    • condizioni transitorie non valutate: il programma effettua delle operazioni passando da un livello ad uno con diritti superiori. Riuscendo a bloccare il programma si potrebbe ottenere una shell con i diritti associati al programma in quel momento.
    • Scarsa protezione dei segreti: molte applicazioni inviano o memorizzano informazioni sensibili in chiaro oppure  utilizzano algoritmi crittografici facilmente decrittabili. Lo stesso dicasi per i protocolli (FTP/Telnet/SMTP/POP3).
  • Anomalie nel protocollo: difficili da prevenire, sfruttano caratteristiche del protocollo non analizzate:
    • Frammentazione IP: l'attaccante invia un secondo frame IP con una parte che si sovrappone al primo già ricevuto.
    • TCP SYN Flood (o clogging):

      E' un attacco di tipo Denial of Service (DOS) che può interrompere un servizio su un host inviando solo da 4 a 6 pacchetti ogni due minuti. Funziona utilizzando l'handshake a 3 passaggi del TCP.

      Nell'attacco X invia il primo SYN fingendo di essere un indirizzo IP che non esiste (NOBODY). B invia un SYN, ACK al sistema che non esiste ed attende da questo l'invio dell'ACK. Questa attesa a volte può durare fino a 76 secondi.

      Nel frattempo comunque il sistema occupa risorse per attendere l'eventuale risposta all'interno del Backlog Queue, un'apposita area, riservata a questo, ma limitata comunque in quantità (dipende dall'implementazione del fornitore e può variare da 6 a 10 slots o più). Se l'attaccante invia un numero di pacchetti tale da riempire il Backlog Queue, il sistema attaccato non sarà più in grado di accettare connessioni e l'amministratore potrebbe anche non accorgersi di nulla. Le soluzioni sono diverse:
       

      • adottare dei software in grado di rilevare l'anomalia e di inviare dei pacchetti RST al sistema attaccato per ripulire il Backlog Queue;
      • impiegare un SYN Cookies Firewall (Linux/SunOS).

Denial of Service

Causano la perdita dell'utilizzo di una risorsa sovraccaricandola, ma non ne permettono l'accesso all'attacante. I principali attacchi sono:

  • Ping floods: invio di ICMP echo request in numero maggiore a quelli gestibili dalla rete o dal sistema attaccato (FPING);
  • Out of Band Data Crash: l'attaccante invia un pacchetto con l'Urgent Pointer impostato e visto che la macchina bersaglio non lo gestisce ne causa il crash oppure il riavvio.
  • TCP SYN Floods, Ping of Death, UDP Bombs ...

Le soluzioni al problema non sono semplici. Nel caso dell'ICMP si può risolvere inserendo dei filtri. Alcuni servizi possono essere interrotti, ma non lo si può fare con tutti visto che questo non farebbe altro che far raggiungere lo scopo prefissato dall'attaccante.
 

     

 
 

Copyright © 1998 - 2009 Antonio Magrì - Tutti i diritti riservati. Contatto.