• Regolamento Macrocategoria DEV
    Prima di aprire un topic nella Macrocategoria DEV, è bene leggerne il suo regolamento. Sei un'azienda o un hosting/provider? Qui sono anche contenute informazioni per collaborare con Sciax2 ed ottenere l'accredito nella nostra community!

Come proteggersi dagli attacchi esterni VI Parte

Carloxs

Utente Strepitoso
Autore del topic
User Legend
12 Maggio 2007
4.129
0
Miglior risposta
0
A cura di:
Perfavore, Entra oppure Registrati per vedere i Link!


Nota: E' permessa la pubblicazione di questa guida su altri siti lasciando intatto il contenuto, questa nota e il link al nostro sito.

VI PARTE


--------------------------------------------------------------------------------

Bentornati, siamo ormai giunti alla sesta lezione ed abbiamo ancora alcuni concetti da chiarire, a beneficio dei neofiti.

La scorsa settimana abbiamo parlato degli Hash, definendoli semplicemente "intestazioni", ma senza spiegare cosa fossero. Questa settimana cominceremo proprio parlando degli hash.
Il concetto di criptografia, spero sia chiaro a priori, ma credo che alcuni di voi si siano posti almeno una volta nella vita, la domanda fatidica: "Se il mio S.O. è in grado di criptografare una login e/o una password, potrei anche de-criptarle?". Bhe la risposta è no! Almeno non con il S.O. da solo.

Abbiamo citato una serie di strumenti, che tramite una combinazione di lettere, numeri e caratteri misti, riescono a risalire alle password, anche quando sono criptografate, ma in realtà non abbiamo parlato del come facciano questi strumenti a risalire ad una password criptata.
Se pensiamo che si possa, semplicemente, risalire alle login o alle password, con queste combinazioni, siamo degli sprovveduti.
Il principio su cui si basa la combinazione di cui parlavamo sopra, è dato dallo scopo primario del programma, che non riguarda ciò che noi vogliamo, ovvero trovare le login e le password, almeno non direttamente, riguarda invece il poter riprodurre, tramite una serie infinita (almeno in teoria) di combinazioni (diciamo tentativi?) di caratteri, l'esatto output riportato nell'hash che abbiamo recuperato.

Quando si parla di checksum, ci si riferisce al valore (badate che voglio dare soltanto l'idea, non sto riportando alcuna definizione!) dato dall'hash.

Vogliamo a questo punto dare un'approssimativa definizione di hash?

Possiamo dire che: hash è quell'output che risulta da un input, ma dal quale non si può risalire ad esso.

In altre parole, cerchiamo di spiegare meglio, a beneficio dei più: se digito una parola (input), il computer, mi restituirà un valore (output) criptato, che possiamo immaginare, ad esempio, come composto da lettere e numeri; da questa combinazione, non vi sarà modo di risalire alla parola che abbiamo digitato.
La relazione tra input ed output non è dunque bi-univoca.
Un'ultima aggiunta, doverosa, su questo argomento, riguarda appunto il valore che viene dato, nel momento in cui richiediamo la creazione di un hash.

Il checksum di un documento, ci darà un risultato, che sarà valido, solo sino a quando, il documento resterà assolutamente invariato. Se infatti, cambiamo la disposizione di sole due parole, in un documento di due pagine, lasciando dunque invariato il contenuto, il valore restituito, cambierà di conseguenza.

Dunque, se è chiaro il concetto appena enunciato, siamo pronti a pensare, allargando i nostri orizzonti, a come poter proteggere meglio qualunque dato.

Sia chiaro a questo punto, che il sapere porta alla consapevolezza, ma non sempre ad un risultato utile.... cosa voglio dire? Che se qualcuno di voi, giocherellando, si rendesse conto di una debolezza del suo sistema, tramite le nozioni date in questa sede, probabilmente non saprà come risolvere il problema, dunque, non perdiamoci d'animo ed andiamo avanti.

Il probema della debolezza di alcuni hash, è stato già risolto tempo addietro dalla Microsoft, con il rilascio del Service Pack 4. Ovvio che, arginare un problema, non significa necessariamente risolverlo. Voglio dire: se qualcuno crea un sistema informatico infallibile, ci sarà sempre qualcuno che cercherà di crackarlo (e prima o poi ci riuscirà...). Dunque, nonostante gli impegni della Microsoft (ma anche di tutti gli altri - distributori, proprietari - di S.O.), gli hackers sono sempre un passo avanti e, appena una risorsa viene bloccata, impedendo un accesso non autorizzato, si ricerca immediatamente, un'altra via di accesso.

Apriamo per un'attimo una parentesi.
Quando parlavamo, nelle prime lezioni, dell'importanza delle informazioni prese da un hacker, intendevamo proprio inculcarvi il senso di questa grande verità.
Vi faccio un esempio banale: un hacker vede un sito che non gli sta a genio e decide per qualche motivo arcano di attaccarlo; prende l'ip del server web e lo riporta nel programmino traceroute, con questa piccola utility, potrà sapere, con una certa approssimazione, dove si trova il computer, chi è il suo maintainer, ecc.... una serie di informazioni, che saranno abbastanza utili, vediamo perchè:

o poniamo che il server sia in Housing - il sistema sarà ben protetto e difficilmente attaccabile, inoltre ci sono buone probabilità di essere rintracciati;
o poniamo che il sever sia collegato ad una adsl (ci sono pazzi che lo fanno....) - il server sarà "casalingo", dunque, con buona probabilità, non molto protetto, quindi si passa a capire, se vi sia un firewall di mezzo, quale sia il sistema operativo e come sia configurato il server web;
o poniamo ancora, che si risalga ad una linea dedicata (cdn), che sarà ubicata in ..... diciamo un paese? beh ci sarebbero ottimi presupposti per cercare altre informazioni, il sistema infatti, ha buone probabilità di non essere stato protetto, perchè non ci si aspettavano attacchi....

insomma, come vedete, ci sono mille motivi per conoscere gli strumenti utili e saperli usare, ma anche altri mille motivi per sapere come nascondere le nostre tracce.

Chiusa parentesi, passiamo a parlare dunque del famoso bug, di cui tante volte abbiamo sentito parlare: IL BUFFER OVERFLOW.

Cos'è questo parolone? Indica in genere, un errore di programmazione (bug), che non è immediatamente verificabile. Attraverso l'immissione massiccia di dati, tramite una serie di richieste o altri mezzi, si può "sfondare" un limite che il S.O. si impone per il corretto svolgimento dei suoi normalissimi compiti, andando conseguentemente, ad "ubriacarlo". Mhhhh Forse sono stato troppo crudo con questa affermazione, pur non discostandomi troppo dalla realtà dei fatti.

Premetto che per fare quello di cui stiamo parlando, non esistono programmi, come non esistono obbiettivi certi, infatti, molti programmi, colpiti da questo tipo di bug, vengono scoperti per puro caso, ogni santo giorno.

Dunque, facciamo le dovute premesse anche questa volta.
Quanto diremo, servirà giusto a dare un'idea di quanto accade normalmente, al verificarsi di attacchi di questo tipo, non vuole assolutamente essere una definizione del fenomeno, tenderà dunque a darvi una nozione di base.

Il S.O. alloca un certo spazio, riservandolo a determinate operazioni. qualora tale spazio dovesse eccedere quanto previsto dal Sistema, si sconfina in quello dedicato ad altre operazioni, facendo impazzire in un certo senso i processi, a questo punto, dunque, il sistema, comincia ad eseguire alcuni processi, senza preventivamente verificarli.

Potremo dunque fare in modo di avviare un processo di autenticazione del nostro nome utente, con privilegi di root.
All'interno della comunità Open Source, una volta scoperto un simile bug, viene immediatamente segnalato, per una veloce correzione dello stesso.

Inutile quindi dire che: (ma via, diciamolo lo stesso) qualora si presenti un bug del tipo "BUFFER OVERFLOW", si deve sapere bene come sfruttarlo; non è infatti facile, capire come possa avvenire, quando e dove; tuttavia, è bene tenere sempre sott'occhio le newsletter, le mailing list, ed alcune testate (quando possibile) relative ai nostri sistemi, in particolar modo, se ci rivolgiamo ad una tecnologia Open Source.

Vediamo dunque come sia possibile, anche per un amministratore Windows (NT -2000), essere sufficientemente al sicuro, tenendo sempre aggiornato il suo sistema ed aggiornandosi continuamente anch'egli.

Ulteriori strumenti per il controllo remoto di una macchina (un server, nel nostro caso), possono includere, le più semplici, vecchie astuzie - NetBus, BackOrifice - che sono state aggiornate, sino ad inficiare la stabilità dei sistemi Windows più recenti (sino al 2000 addirittura), nascondendosi alla meglio, ad ogni amministratore sprovveduto, o le nuove, più aggiornate -VNC - che, oltre che free, è anche OpenSource e, offre il completo controllo della macchina remota, dando la possibilità, oltre che di operare tramite riga di comando, anche di sfruttarne il desktop, come se si stesse lavorando in locale.
Il funzionamento di questi strumenti per il controllo remoto di una macchina, è noto ai più, ma, in ogni caso, si può trovare ovunque della documentazione.
Resta fermo il fatto, che per quanto si possa contare sull'uso di questi strumenti, il metodo più sicuro, perchè siano lanciati e dunque installati sulla macchina che ci interessa, è farlo noi stessi, avendo accesso alla macchina in questione.
Assurdo? Forse non tanto, se pensate che comunque, alcune volte, potreste trovare delle persone al vostro fianco che nutrono dei risentimenti di qualche tipo per voi o la vostra azienda.
In fondo, quale amministratore babbeo, sarebbe disposto a giocarsi il posto, ricevendo posta su un server, o addirittura, lanciando un file eseguibile (qualunque sia il suo nome) senza sapere esattamente quale sia la sua fonte e a cosa possa servire?????

Molti strumenti utili all'hacking, per utenti NT - 2000, possono essere reperiti facilmente, all'interno del Resource Kit di Win Nt. Tuttavia, è bene sapere, che se non doveste utilizzare correttamente gli strumenti proposti all'interno del Kit, questi potrebbero ritorcervisi contro.

Per utenti di S. Unix Like, come Linux, basti sapere che alcuni strumenti possono essere addirittura compresi nella propria distribuzione, mentre altri, sono liberamente reperibili in giro per il web.

Ribadiamo per l'ennesima volta, che qui si parla di difendersi, non di diventare i prossimi crakers arrestati per aver tentato l'impresa del "piffero".
Per i temerari, invito a ricordare che: qualunque cosa deciderete di fare di questo corso, anche tentare di crackare qualche server perchè vi sentite più svegli di altri, lascerete sempre in giro delle tracce, che un amministratore sveglio, potrà trovare, per risalire sino a voi, dunque abbandonate i sogni di grandezza e pensate piuttosto ad imparare prima a difendervi!