venerdì 26 giugno 2009

Piccole Precisazioni

Ciao a tutti. In questi utimi mesi non ho potuto collegarmi e me ne dispiace, poiché avevo molte cose da esporvi e spiegarvi. Ho notato un grande incremento nelle visite e ne sono felice, quindi cercherò di riuscire a mantenere tutte le vostre visite scrivendo sempre nuovi post. Detto ciò, per ripartire, ho deciso di inserire un testo che ho trovato girovagando tra i vari siti. Questo testo forse mi potrebbe contraddire, ma con la sua schietezza spiega come stanno le cose in realtà.

"E’ una mini guida dedicata a chi fa troppe domande su: <>. In tutti i forum, si leggono le solite domande – sono troppe – e nessuno risponderà come vorreste – tutti vogliono diventare Hacker – pochi sanno il vero significato – molti non sanno rovistare nel loro computer, e vorrebbero rovistare in quello degli altri. C’è chi scarica programmi per rubare password – gli installa – non si accorge che si tratta di un trojan , e poi scrive nel forum: <<>>? Certo risponderei; il programma ha funzionato perfettamente – ti ha appena sniffato tutte le password!

Io preciso: non sono Hacker – non sono “Crackers” – “Phreaker”. – non sono “Lamer” – “Newbie”. Ossia: non sono Super – non sono Vandalo – non sono uno specialista nell’infrangere sistemi telefonici - non sono un incapace in cerca di vandalismo- non sono un nuovo arrivato in informatica. Non mi ritengo nessuno di tal genere. Io sono io, e Voi siete Voi. Il mio obbiettivo è la “Riabilitazione”. Infangati, (così si dice) sono gli Hackers: perché? Rispondo facilmente: i telegiornali non fanno altro che dire: attenzione! Hacker colpisce ; è “truffa alla Nigeriana”- Hacker “Phishing” – Hacker vuole “Facebook”. Questo è un sommario – ma vediamo di andare al sodo. Ho fatto il giro di parecchi “Forum” – devo dire che il termine “Hacking”, è uno dei più sollecitati. Ho letto messaggi di ogni tipo come: <>, oppure; <>, o altro ancora; <>; <>. A tutte queste domande, io rispondo: cercatevele da soli!!! Mai nessuno che chiede: <>; <>; vorrei sapere come operare sulla crittografia dati ( CSS ); vorrei conoscere Content management system (CMS); vorrei agire sul DOS/BOOT/DISCO etc… Ecco! Questa è una sintesi basilare – ma per la struttura - <>, strutturatevela da soli! Questo è un articolo per “Lameristi”; coloro che – con tanti “vorrei” – cercano di accaparrarsi informazioni “delicate”. A parer mio – è una perdita di tempo – un viaggio con meta a vicolo cieco – un fulmine a ciel sereno. Qualcuno che io definirei “sbruffone”, ha persino architettato la leggenda: <<>>. La cosa più buffa, è che, il forum del suo sito, è pieno zeppo di creduloni – ammirati da questa frottola di “legenda metropolitana” – rispondono pure con: <>! Ma ancora più buffo è che, il suo forum, richiede registrazione obbligatoria – forse non sa che tutti (come ho fatto pure io) abbiamo bypassato password e nome utente con BugMeNot. Ma lasciamo stare; passiamo all’hacking. Io ora faccio un breve esempio: se fossi un hacker; lo direi a te? Se io sapessi come rubare password, lo direi a te? Se io sapessi come deviare le connessioni, lo direi a te? Se io sapessi come decifrare la crittografia, lo direi a te? Se io sapessi - e tu non sapessi – lo direi a te? La risposta è no! No secco! Volete proprio diventare Hacker? Lasciate stare la maggior parte siti che promettono programmi di intrusione – lì, troverete al 90% Trojan (da Lamer) . I programmi gratuiti che rompono le password, sono fasulli, funzionavano, ma non ora. Programmi come “Brute Force”, sono passati di moda, li trovate liberamente, ma nel 98% dei casi fanno cilecca. Diffidate di tutti coloro che dichiarano di sapere (non sapendo) ; lasciate i libri da Hacker – quando inizia la pubblicazione, sono già troppo vecchi. Non puntate su corsi di informatica con l’intento di imparare l’hacking – non funziona così. Ispezionate il vostro pc, incuriositevi nel suo sistema – server – modem – codici modem – proxy – protocolli ( DHCP, HTTP, SMTP, POP3, TELNET, VOIP ecc…) – antivirus – studiate i pro e i contro degli antivirus – microsoft – reti wirelless (PAN, WLAN, BWA, WAN) e tante altre cose. Insomma, come dice il detto: “chi fa da se, fa per tre”. Spero che questa mini guida, serva a qualche cosa – il mio intento non è di scoraggiare – anzi – si tratta di incoraggiamento – incoraggiare ad agire da soli – è difficile – ci vuole parecchio tempo – non si smette mai di imparare – ma chi semina raccoglie. Ultima cosa: un vero hacker non è un pirata informatico."




Come ho detto prima magari questa guida potrebbe contraddirmi, ed in effetti è così. Se conoscessi modi per rubare password (cosa che so come si fa ma la reputo da lamer, quindi sono contro), non la direi. Ma dovete capirmi, non posso mettervi in mano delle armi già pronte. Io conosco poco dell'inifinito mondo dell'informatica, ogni giorno c'è sempre qualcosa di nuovo, ma cerco sempre di informarmi ed imparare. Studio i linguaggi di programmazione, studio tutto ciò che mi interessa, ma l'importante è studiare. E' qui che si differenzia un lamer da un hacker, un vero hacker: come nel testo che ho inserito, l'hacker legge, studia e si informa in modo generale per poi arrivare a una conclusione su ciò che vuole fare in base alle vaste onoscenze che possiede. Il lamer invece non conosce niente, e magari sa solo quel determinato procedimento che gli permette di rubare una password ad esempio, però la maggiro parte delle volte non sa nemmeno cosa sta facendo.

Concludo dicendovi che io posterò tutto quello che non reputerò pericoloso, oppure che non sia la solita "pappa pronta". Però qualsiasi cosa che vorrete sapere, qualsiasi problema che mi troverò di fronte e la sua soluzione, lo posterò. Posterò tutto quello che potrò postare, pur rimanendo nei limiti però.. =)




P.S.
Purtroppo non mi ricordo il sito da cui ho preso il testo, quindi chiunque sa la fonte me la comunichi, cosicché la possa inserire nel post.

giovedì 1 gennaio 2009

Dizionario Hacker

ATTACCHI DOS: letteralmente: attacchi basati sulla tecnica di denial of service (negazione di servizio). In questo tipo di attacco si cerca neutralizzare un sistema informatico, ad esempio un sito web, un server FTP o di posta elettronica, saturandone le risorse attraverso l’invio massivo di pacchetti di richieste di servizio, e quindi pregiudicandone la capacità di erogare il servizio.

ATTACCO DEAUTENTICAZIONE: Inviando particolari frame wireless (ex: de autenticazione) la stazione o le stazioni wireless tornano allo stato NON autenticato NON associato.Quest’attacco è possibile targhettizzarlo verso un client o tutte le stazioni associate all’Access Point.

BANNER GRABBING: La tecnica consiste nel catturare il banner iniziale che alcune applicazioni propongono, dove viene esplicitamente dichiarata l'applicazione, la versione e l'eventuale livello di patching. Tutte informazioni preziosissime per chi attacca.

BYPASSING MAC FILTERING: nel wireless è possibile settare sull’access point i mac address delle stazioni abilitati alla comunicazione. Poiché questi viaggiano, è possibile identificare quali stazioni comunicano e successivamente utilizzare il mac address quando esse smettono di comunicare.

BOT: diminutivo del termine RO-BOT, sono software utilizzati per monitorare i canali chat. A seconda della natura specifica delle routine incluse in questi programmi, gli applicativi possono venire impiegati anche per operare attacchi verso altri server.

BOTNET: network di computer collegati alla Rete che vengono infettati da virus inviati da attacker esperti, i quali riescono così ad ottenere il controllo da remoto del sistema ed utilizzarlo per scagliare attacchi contro altri sistemi, ad esempio attacchi DoS, oppure per portare avanti azioni di Cyber crime sfruttando l’identità degli ignari utenti.

BRUTEFORCING: “Forza Bruta”, è un attacco che utilizza dei programmi particolari studiati per violare l' accesso ai sistemi tramite l'uso di routines in grado di utilizzare le voci contenute in dizionari presenti sul web, in cui sono raccolte tutte le password e i nomi user ID “standard” utilizzate dai produttori di hardware per la configurazione dei dispositivi.
I programmi di brute forcing possono connettersi da soli ai server agendo su delle porte stabilite, tentando di stabilire un accesso in modo ricorsivo.

BUFFER OVERFLOW: una vulnerabilità degli applicativi presenti su di un client/server, che sfrutta una validazione non corretta sulla dimensione di alcuni imput nel momento in cui vengono copiati su di un’area di memoria (buffer).

CYBOTAGGIO: atti di distruzione o interruzione delle infrastrutture della comunicazione. Sabotaggio informatico.

CLOAKING (USER AGENT): Sistema utilizzato per nascondere del testo, usato soprattutto nel caso di attività di SPAM per ingannare i filtri impostati dai motori di ricerca. La tecnica si basa sull’analisi dell’USER AGENT del visitatore. Se questi è lo spider di un motore di ricerca, viene mostrato un determinato codice mentre se si tratta di un utente ne viene mostrato un altro.

COMPUTER ZOMBIE: singola parte che compone una BOTNET. Si tratta di un computer compromesso tramite un virus o un Trojan, che viene controllato da remoto per portare a termine azioni illecite (spam, intrusioni in sistemi informatici, ecc..).

CSS CLOAKING: La tecnica di cloacking non viene utilizzata direttamente sulla pagina web, ma nel CSS della pagina. In questo modo è possibile nascondere del testo all’utente utilizzando l’attributo “display:none” senza che lo spider lo capisca.

DDOS: sono degli attacchi distribuiti su più PC, con l’obiettivo di bloccare altri sistemi o reti

FILE INCLUSION: Un attacco di tipo File Inclusion si manifesta quando i parametri passati ad uno script web vulnerabile non vengono opportunamente verificati prima di essere utilizzati per includere dei file in determinati punti di un portale web.
Le problematiche di File Inclusion si distinguono solitamente in due categorie:
* Local File Inclusion: si manifesta quando l’aggressore può utilizzare solamente i file residenti nel sistema, come parametri da inserire in uno script vulnerabile. Il loro contenuto viene così visualizzato a video nell'esatto punto del portale in cui si verifica l'inclusione. Con questo sistema è possibile ottenere gli hash delle password di sistema, o accedere alle informazioni riservate collocate all'esterno della DocumenRoot del Web Server.
* Remote File Inclusion: E' il più pericoloso perché consente di utilizzare come parametri da inserire in uno script vulnerabile dei file che risiedono in altri web server. L'aggressore può collocare all'interno di questo file del codice di scripting (ad esempio codice PHP malevolo) che viene utilizzato per eseguire comandi remoti sul sistema in cui l'applicazione web vulnerabile è ospitata

HACKTIVISMO: uso dell’hacking per portare avanti attività a supporto di campagne politiche o sociali.

Hide SSID: Sull’access point è possibile nascondere lo SSID (identificato della rete wireless) impostando sull’access il NO broadcast SSID. Questo DEVE per forza essere mandato in altri tipi di frame ex: riassociazione. Un attaccante utilizzando uno sniffer e un programma per la creazione di frame wireless può forzare la disassociazione del cliente; una volta che quest’ultimo si riassocia sarà in grado di vedere lo SSID.

LETTER-SPACING: Come la CSS cloacking, ma si utilizza l’attributo “letter-spacing” per nascondere del testo all’utente. Utilizzando l’attributo di cui sopra è possibile creare una “classe” in cui venga impostato uno spazio negativo infinitesimale tra i singoli caratteri. Di conseguenza all’utente non sarà visibile il testo intero ma soltanto il primo carattere.

Man in the Middle (MITM Attack): attacco che permette di intercettare, ed eventualmente deviare e/o modificare, il dialogo tra due utenti senza che questi se ne rendano conto. Il MITM è possibile solo se l’attacker riesce ad entrare in possesso della chiave di crittografia di uno degli utenti, inviando all’altro la propria chiave di crittografia in modo da imporsi come tramite nella comunicazione tra i due.

PATCH
: File eseguibile, creato e distribuito come rimedio ad un errore di programmazione di un software. La patch serve ad evitare che la vulnerabilità generata dall’errore del programmatore possa venire utilizzata da cyber-criminali per creare danni ai PC in cui il software è stato installato.

PRIVILEGE ESCALATION: L'hacker, per riuscire a compiere attività illecite all’interno di un sistema violato, deve possedere dei privilegi sul sistema particolari, diversi da quelli di un utente normale. Per riuscire ad acquisire i privilegi di amministratore (o superuser) l'attacker generalmente, tenta di sfruttare vulnerabilità delle applicazioni che risiedono sulla macchina vittima, utilizzando la tecnica buffer overflow. Generalmente l’attacco causa lo stop dell'applicazione consentendo all'attacker di entrare automaticamente nel sistema con i privilegi massimi.

REDIRECT JAVASCRIPT
: Mostrare un contenuto al motore ed un altro all’utente. Questo è possibile perché se si inserisce del particolare codice javascript all’interno della pagina, lo spider scaricherà il codice e terminerà la funzione mentre l’utente verrà reindirizzato verso un'altra pagina.

REFERER-BASED CLOAKING: Tecnica simile al Cloacking (USER AGENT) solo che in questo caso viene utilizzato il REFERER come parametro di riferimento. Il referer è sostanzialmente la fonte da cui un utente viene indirizzato a una pagina web, ed è parte integrante di una richiesta http. Se il referer risulta vuoto, significa che la richiesta è diretta ed è quindi molto probabile che sia stata effettuata dallo spider di un motore di ricerca. Nel caso in cui si volesse ingannare i motori di ricerca per portare a termine delle attività di spam, si farà in modo da impedire l’identificazione del messaggio di spam visualizzando codici diversi a seconda che il referer sia vuoto o meno.

SNIFFING: tecnica per intercettare i dati passanti su di un segmento di rete, se vengono usati protocolli in chiaro l’attaccante può recuperare gli UserName e le Password per eventuali autenticazioni illecite sul sistema.

SPOOFING IP: strategia impiegata dall’attacker per nascondere la propria provenienza, ad esempio: i sistemi SOCKS, PROXY, TOR.

SQL INJECTION: tecnica di intrusione, che sfrutta i normali processi di convalida degli utenti nell’accesso ai database collegati alle applicazioni internet, in modo da ottenere accessi illeciti all’interno dei database stessi. L’SQL injection, prevede l’impiego di banali query SQL, formulate utilizzando i valori ‘ or ‘a’=’a , ovvero stringhe di accesso sempre valide, perché legate ad una variabile falsa ma legittima.

WARDRIVING: Tecnica per rilevare le reti wireless LAN presenti sul territorio. Per effettuare questo tipo di ricerca bisogna essere dotati: di un palmare o un portatile, una scheda WiFi, un’antenna preferibilmente direzionale ed un ricevitore GPS.

WEP CRACKING: Raccogliendo numerosi frame wireless, più precisamente quello che interessa sono gli IV (vettori di inizializzazione), è possibile decodificare la chiave wep utilizzata, in solamente 60 secondi, utilizzando il recente attacco klein.

WPA-PSK CRACKING: una volta ottenuto il pacchetto di Handshaking, si può forzare la sua cattura utilizzando un attacco di deautenticazione, è possibile effettuare un attacco brute forcing basato su dizionario.

ZOMBIE: sono i computer utilizzati per effettuare degli attacchi verso gli altri sistemi, normalmente sono i PC di persone inconsapevoli infettatti con un malware in grado di attivarsi rispondendo ad un impulso dell’attacker, una volta avviati i PC eseguono automaticamente le operazioni stabilite dal cracker.

XOR: operatore logico

XSS: La Cross Site Scripting (XSS) permette di inserire in un browser del codice, ad esempio codice javascript, che permette di modificare il codice sorgente di una determinata pagina web . In questo modo l’attacker potrebbe recuperare i dati, sotto forma di cookies, contenuti nei PC degli utenti che visiteranno la pagina compromessa.

domenica 16 novembre 2008

Shell

In un sistema operativo, la shell è il programma che permette agli utenti di comunicare con il sistema e di avviare i programmi. È una delle componenti principali di un sistema operativo, insieme al kernel. La shell è l'"ambiente di lavoro" attraverso il quale è possibile impartire al computer comandi, richiedendo l'esecuzione di programmi. Esistono molti tipi di shell, che si dividono principalmente in testuali e grafiche. Quando si parla semplicemente di "shell", si intende di solito una shell testuale.

I cracker utlizzano queste shell, come la c99, per defacciare un sito o prenderne il controllo, tramite un RFI (Remote File Inclusion) o altri metodi. Io, a differenza di altri forum, non metto la procedura per utilizzare questa shell e non metto nemmeno la fonte per poterla scaricare; evitando così qualche lamer, che viene, legge quelle poche righe, e poi un poveraccio si vede il sito distrutto, dopo averci faticato.

Consiglio comunque che chi vuole utilizzare queste shell, la utilizzi sul proprio sito per vedere se è vulnerabile a questa cosa. E se vi interessa conoscerl in modo migliore, consiglio di crearsi da soli le shell, magari con comandi banali, però dopo la soddisfazione di aver creato e capito qualcosa rimane. Dico solo di non fare casini.
L'unico aiuto che vi posso dare è di non metterla in un estensione di programmazione, ad esempio php, ma metterla in formato txt (per le shell testuali) o in formato jpg (per le shell grafiche); solo così potrà essere utlizzata.


Mi raccomando... bye

Installazione Ubuntu su Hard Disk esterno

Questa miniguida descrive come installare openSuse 10.3 su un hard disk esterno USB, utilizzando un PC il cui BIOS supporta l'avvio da disco USB. L'obiettivo è quello di avere l'hard disk esterno completamente avviabile ed evitare di modificare l'MBR del disco principale del PC.

Nota: la guida e' stata scritta in base all'esperienza affettuata su openSuSE 10.3; tuttavia la procedura non dovrebbe essere diversa per le altre distribuzioni.

Nel caso in esame i dischi sono visti da linux come /dev/sda per l'hard disk interno /dev/sdb per l'hard disk USB Pertanto le partizioni saranno individuate da /dev/sdaN quelle ricavate nel disco interno e da /dev/sdbN per quelle eventualmente presenti nel disco USB.

Per l'installazione di Linux, si collega l'hard disk usb e si avvia il sistema da DVD eseguendo una normale installazione, facendo attenzione alla scelta del disco da utilizzare per l'installazione del sistema operativo.

Procedete ora con un normale partizionamento, trovate qui un'ottima guida che vi insegna come partizionare correttamente un disco in presenza di Linux. Nella parte di configurazione del boot loader GRUB ho fatto ricorso alle "Opzioni del boot loader", ho attivato i flag in corrispondenza alle voci "Imposta il flag attivo nella tabella delle partizioni per la partizione di avvio" e "Scrivi il codice generico di boot nell'MBR". Tale configurazione evita di riscrivere l'MBR del disco principale.

Procedendo con l'installazione si arriva al punto del riavvio del sistema. Il sistema così configurato non si riavvia dal disco e quindi dovrete procedere con l'opzione "Avvia un sistema installato" disponibile nella procedura di recupero di openSuSE. Effuettuato il riavvio, YaST completerà l'installazione del sistema e vi verrà presentata la schermata di login. Il sistema installato non si avvia dal disco esterno in quanto essendo il secondo disco, il riferimento di GRUB ad esso è hd1 e quindi il riferimento alla partizione di boot è (nel mio caso) (hd1,1); in realtà per il corretto funzionamento GRUB vede come hd0 il disco in cui si è installato. Pertanto occorre modificare nel file /boot/grub/menu.lst tutti i riferimenti ad (hd1,1) in (hd0,1) e in generale tutti i riferimenti ad hd1 in hd0. Tale modifica va ovviamente eseguita con i privilegi di root e usando il vostro editor preferito.

A questo punto il sistema dovrebbe avviarsi correttamente dal disco USB esterno.

giovedì 13 novembre 2008

Esempio di un attacco ad un sistema informatico

Senza scendere nel dettaglio dei singoli programmi descrivo una tipica sessione di lavoro di un hacker su una rete. Il successo dipende da molti fattori: l'abilità dell'hacker nel conoscere i vari ambienti operativi, nel riconoscere le possibili difese dispiegate, ecc., la qualità del codice del software di intrusione, il livello di protezione del sistema da attaccare (proxy, firewalls, ecc.). E un po' di fortuna.

S'inizia col "phreaking": si lancia un "line-screener", un programma che scruta nella sequenza di numeri telefonici da 0 a N e individua le "porte" di computer (telefonici o di sistema): l'operazione è automatica ma è lunghissima ed è tipica di gruppi di phreakers professionisti che si passano questi elenchi. Così si fa anche spionaggio. A questo punto si lancia un "protocol-mapper" che aggancia per un attimo il numero telefonico del sistema da attaccare e individua il protocollo di comunicazione del sistema.

Normalmente un hacker conosce già il numero e il protocollo del sistema da attaccare. Su Internet è tutto più facile perchè gli indirizzi dei vari nodi sono identificati da un numero inconfondibile, detto IP, e il protocollo standard è il TCP/IP che governa Internet. Le porte di accesso non sono poi molto fantasiose e ci sono dei programmi che le rilevano.

Decodificato il protocollo si procede all'intrusione: con una serie di programmi (wrapper) ci si mette in linea (nascosti a valle dello sbarramento delle parole chiave) e si intercettano l'insieme dei comandi di un visitatore qualsiasi, tra cui la sua password. Con questa, poi, si entra e si lanciano vari programmi: un watchdog (cane da guardia) che ci sgancia automaticamente se le difese del sistema si sono accorte di qualcosa e sono scattate, uno sniffer (annusatore) che ci segnala e decodifica i messag gi che transitano e che ci segnala se qualcuno è sulle nostre piste. Uno degli sport preferiti dagli hackers è far scattare gli sniffer di sistema, lanciarli alla propria ricerca e seminarli senza farsi prendere.

Quindi, si fa un crack delle password di alto livello (tipicamente del supervisor, che mettono in grado di gestire l'intero sistema) e si passa ad esplorare ovunque. Si può rubare, falsificare, fare "esplodere" il sistema, ecc. MA CHI LO FA NON E' UN VERO HACKER.

Gli Hacker

Cos'è un hacker?

Un hacker è un esperto di informatica che sfrutta le proprie conoscenze per fare del bene. Risolvono problemi e costruiscono cose, e credono nella libertà e nell'aiuto reciproco; infatti agli hacker piacciono i software open source, proprio perchè credono nella libertà. Per essere accettato come hacker, devi comportarti come se anche tu avessi questo tipo di atteggiamento. E per comportarti come se avessi questo atteggiamento, devi crederci con convinzione. Un vero hacker non si definisce mai come tale, finché non sono gli altri hacker a chiamarlo in questo modo; a quel punto si è davvero degli hacker. Molte volte chi si definisce hacker non lo è veramente, ma un lamer (se ne parla tra poco). L'hacker è una persona onesta e, navigando in rete, trovasse qualche bug, lo segnalerebbe subito al webmaster; chi invece cerca di sfruttare i bug trovati, viene definito cracker (se ne parla tra poco).

Il lamer è quella persona che, priva di conoscenze informatiche, si autodefinisce hacker. Fa il grande con i conoscenti, dicendo magari di aver creato un virus o di aver defacciato un sito con una shell. In realtà, invece, il lamer non conosce nemmeno il semplice linguaggio html, però magari riesce a defacciare un sito copiando le informazioni specifiche che danno gli altri (hacker, cracker o lamer). E' da specificare che anche l'hacker sa defacciare un sito, ecc. e alcune volte scrive anche come fare, ma in modo superficiale, solo per far capire come avviene questo tipo di attacco. I lamer vengono visti in malomodo dagli hacker; infatti "lamer" è il nome che utlizzano gli hacker come dispregiativo nei confronti della gente che non ha conoscenze informatiche e crede di fare chi sa cosa.

Il cracker è una persona con conoscenze informatiche come quelle dell'hacker, solo che utlizza le sue conoscenze per fare del male; deacciare siti, prendere il controllo di forum come admin, ecc. I cracker creano virus per i loro scopi e sono anche i creatori dei siti di phising (a chi di voi non è mai arrivata una email di paypal, poste italiane o altro con un link?? beh, alcune volte reindirizzano a dei siti simili a quelli originali, solo per rubare le password di accesso).



Cosa devo sapere per diventare un hacker?

L'attitudine hacker è vitale, ma le capacità lo sono ancora di più. L'attitudine non è un sostituto della competenza, e c'è un insieme di capacità di base che devi avere prima che qualsiasi hacker si sogni di chiamarti tale.Questo bagaglio di conoscenze cambia lentamente nel tempo, man mano che la tecnologia crea nuove abilità e ne rende obsolete altre. Per esempio, esso in genere include la programmazione in linguaggio macchina e solo di recente richiede l'HTML. Al momento attuale il bagaglio di conoscenze di base prevede quanto segue:

1. Impara a programmare.
Questa, ovviamente, è la capacità fondamentale dell'hacker. Se non conosci alcun linguaggio di programmazione, ti suggerisco di iniziare con Python. È progettato in maniera chiara, ben documentato e abbastanza adatto ai principianti. Malgrado sia un buon linguaggio con il quale cominciare, non è proprio un giocattolo; è molto potente e flessibile e adatto anche a grandi progetti. Ho scritto una più dettagliata recensione su Python. Dei buoni manuali sono disponibili sul sito web di Python. Anche Java è un buon linguaggio per imparare a programmare. È più difficile di Python, ma produce un codice più veloce rispetto a Python. Lo ritengo un eccellente secondo linguaggio. Ma devi essere conscio che non raggiungerai i livelli di abilità di un hacker o più semplicemente di un programmatore se conosci solamente uno o due linguaggi - hai bisogno di imparare a pensare ai problemi legati alla programmazione in maniera più generale, indipendentemente dal linguaggio specifico. Per essere un vero hacker, hai bisogno di arrivare al punto di poter apprendere un nuovo linguaggio in pochi giorni semplicemente confrontando il manuale con quanto già sai. Questo significa che dovrai imparare parecchi linguaggi differenti tra loro. Se vuoi dedicarti seriamente alla programmazione, dovrai imparare il C, il linguaggio cardine di Unix. Il C++ è molto vicino al C; se già ne conosci uno, non ti sarà difficile imparare l'altro. Nessuno di questi due linguaggi, comunque, è adatto per iniziare ad imparare. E, al momento, quanto più riesci a evitare di programmare in C tanto più sarai produttivo. Il C è veramente efficiente, e utilizza al meglio le risorse della macchina. Sfortunatamente, C fornisce questa efficienza in cambio di una notevole mole di lavoro manuale per la gestione delle risorse (quali la memoria) ad un basso livello. Tutta la programmazione di basso livello è complessa e soggetta a bug, e ti richiederà un'enorme quantità di tempo per il debugging. Con le odierne macchine, così potenti, questo in genere rappresenta un cattivo compromesso - è più conveniente utilizzare un linguaggio che impiega in maniera meno efficiente il tempo della macchina ma che impiega più efficacemente il tuo tempo. Ad esempio, Python. Altri linguaggi di particolare importanza per gli hacker sono Perl e LISP. Perl è degno di essere appreso per ragioni pratiche; è largamente utilizzato per costruire pagine web dinamiche e per l'amministrazione di sistema; così, anche se non dovrai mai scrivere in Perl, dovresti imparare almeno a leggerlo. Molte persone usano Perl nella maniera in cui io suggerisco di usare Python, per evitare di programmare in C quei lavori che non richiedono l'efficienza della macchina che C fornisce. Avrai bisogno di essere in grado di capire il loro codice. LISP è da imparare per un altro motivo: la profonda e illuminante esperienza che proverai quando finalmente riuscirai a farlo tuo. Questa esperienza ti renderà un programmatore migliore per il resto dei tuoi giorni, anche se non lo utilizzerai poi molto. È meglio, addirittura, imparare tutti questi cinque linguaggi (Python, Java, C/C++, Perl e LISP). Oltre che essere i linguaggi più importanti per l'hacking, essi rappresentano approcci molto differenti alla programmazione, e ognuno ti educherà in maniera preziosa. Non posso fornire qui delle istruzioni complete su come imparare a programmare - è un compito complesso. Ma posso dirti che libri e corsi vari non te lo insegnano (molti, forse la maggior parte dei migliori hacker è autodidatta). Puoi imparare le caratteristiche dei linguaggi - frammenti di conoscenza - dai libri, ma l'approccio mentale che trasforma quella conoscenza in reali capacità può essere appreso solo mediante la pratica e l'apprendistato. Ciò che devi fare è (a) leggere codice e (b) scrivere codice. Imparare a programmare è come imparare a scrivere bene nel linguaggio nativo. Il miglior modo per farlo è leggere del materiale scritto dai maestri della forma, scrivere qualcosa per conto proprio, leggere molto di più, scrivere qualcosa in più, leggere molto di più, scrivere qualcosa in più... e ripetere il tutto finché la tua scrittura inizia a sviluppare la forza e l'economia che vedi nei tuoi modelli. Una volta, trovare del buon codice da leggere era un'impresa ardua, poiché esistevano ben pochi programmi disponibili anche sotto forma di codice sorgente, a disposizione degli hacker per la lettura e la manipolazione. Tutto ciò è cambiato radicalmente; software open-source, strumenti per la programmazione e sistemi operativi (tutti costruiti da hacker) sono oggi largamente disponibili. Questo mi porta al prossimo argomento...

2. Procurati un sistema Unix open-source e impara ad utilizzarlo.
Sto assumendo che tu abbia un personal computer o che possa averne accesso (questi giovani d'oggi lo ottengono facilmente :-)). L'unico passo importante che un principiante possa compiere per acquisire delle capacità da hacker è procurarsi una copia di Linux o di uno degli Unix BSD, installarlo sulla propria macchina ed utilizzarlo. Certo, ci sono altri sistemi operativi al mondo oltre a Unix. Ma sono distribuiti solo in forma di file binari - non puoi leggerne il codice sorgente e non puoi neppure modificarlo. Imparare l'hacking su macchine DOS o Windows o MacOS è come cercare di imparare a ballare mentre si è ingessati. Unix, inoltre, è il sistema operativo di Internet. Sebbene tu possa imparare ad utilizzare Internet senza conoscere Unix, non puoi essere un hacker di Internet senza capire Unix. Per questa ragione, la cultura hacker oggi è fortemente centrata su Unix. (Questo non è sempre stato vero, e alcuni hacker dei tempi andati non ne sono molto contenti, ma la simbiosi tra Unix e Internet è diventata forte abbastanza che neppure i muscoli della Microsoft sembrano in grado di rappresentare una seria minaccia.) Pertanto, procurati un sistema Unix - io amo Linux, ma ci sono altre scelte (è vero, puoi anche far girare DOS/Windows e Linux sulla stessa macchina). Impara ad usarlo. Fallo girare. Armeggiaci sopra. Usalo per connetterti a Internet. Leggine il codice sorgente e modificalo. Avrai a disposizione i migliori strumenti di programmazione (incluso C, LISP, Python e Perl) che qualsiasi sistema operativo della Microsoft possa mai sognarsi, ti divertirai, acquisirai più conoscenza di quanto saprai rendertene conto, finché non lo guarderai con gli occhi di un maestro hacker. (Nota: se sei un principiante non ti consiglio di installare Linux o BSD da solo. Per Linux, trova un Linux User Group nella tua zona e chiedi aiuto a loro oppure contatta l'Open Projects Network. LISC mantiene dei canali IRC dove puoi ottenere aiuto.)

3. Impara come usare il World Wide Web e scrivere in HTML.

La maggior parte delle cose che la cultura hacker ha costruito operano in posti assolutamente non in vista, contribuendo a far funzionare aziende, uffici e università senza alcun evidente impatto sulla vita dei non- hacker. Il Web è l'unica, grande eccezione, il gigantesco e splendido giocattolo degli hacker che, come anche i politici ammettono, sta cambiando il mondo. Basterebbe questa ragione (e ce ne sarebbero molte altre, altrettanto buone), per capire che hai bisogno di imparare come funziona il Web. Questo non significa solamente imparare ad utilizzare un browser (chiunque può farlo), ma imparare a scrivere in HTML, il linguaggio di marcatori del Web. Se ancora non sai programmare, scrivere in HTML ti fornirà delle abitudini mentali che ti aiuteranno ad imparare. Costruisci quindi una home page. (Esistono alcuni buoni tutorial per principianti sul Web; eccone uno.) Ma avere solamente una home page non è sufficiente a fare di te un hacker. Il Web è pieno di home page. Molte sono inutili, poltiglia senza contenuti, bella da vedere, certo, ma sempre poltiglia (per maggiori dettagli vedi The HTML Hell Page). Per essere meritevole, la tua home page deve avere contenuti: dovrebbe essere interessante e/o utile agli altri hacker. E questo ci porta al prossimo argomento...

4. Se non comprendi l'Inglese, imparalo.
L'inglese è la lingua base per la cultura hacker e per internet, e che avrai bisogno di conoscerlo per essere funzionale nella comunità hacker. Questo è profondamente vero. Ho saputo che molti hacker che conoscevano l'Inglese come seconda lingua utilizzavano questo nelle discussioni tecniche, anche quando condividevano informazioni con un loro connazionale; all'epoca mi fu detto che l'Inglese disponeva di un vocabolario tecnico più ricco di qualsiasi altra lingua e comunque è uno strumento migliore per il lavoro. Per ragioni analoghe, le traduzioni di libri tecnici scritti in Inglese sono spesso insoddisfacenti (quando sono fatte). Linus Torvalds, un Finlandese, commenta il proprio codice in Inglese (e apparentemente non ha mai avuto bisogno di fare altrimenti). La sua dimestichezza con l'Inglese è stata un importante fattore nella sua capacità di aggregare una comunità mondiale di sviluppatori attorno a Linux. Questo rappresenta un esempio da seguire.





Fonte per conoscenze base dell'hacking: www.ba.infn.it

domenica 9 novembre 2008

I 10 virus più pericolosi della storia

C'era una volta Cih. Tutto inizia nel 1998. Siamo agli albori di internet quando Cih viene diffuso da Taiwan: è conosciuto come uno dei peggiori della storia perché in grado di sovrascrivere file e cancellare il Bios del computer infettato, rendendone impossibile l'avvio. Sulle sue vittime erano installati Windows 95, 98 e Millenium Edition, ma è stato reso innocuo dall'evoluzione della sicurezza di Windows 2000. Secondo le stime avrebbe "bruciato" fino a 80 milioni di dollari.

Donne e amore. Nel 1999 fu Melissa a colpire il cuore dei nostri computer: "Questo è il documento che mi hai chiesto... non farlo vedere a nessuno ;-)". Tanto è bastato per provocare i nostri clic: furono infettati il 20% dei pc, con danni fino a 600 milioni di dollari.
Bruscolini rispetto al famoso "Iloveyou", che come Melissa si auto-inviava a tutta la rubrica. Inoltre copiava le username e le password registate sul computer e le mandava all'autore. Danni? Appena 10 miliardi di dollari.

I virus del nuovo millennio. "Code red" e "Sql Slammer" si attaccavano ai server web della Microsoft. Tra il 2001 e il 2003 hanno infettato oltre due milioni di computer con una velocità di diffusione ragguardevole: in mezza giornata, Slammer ha toccato 500mila computer. Danni peggiori (fino a 20 miliardi di dollari!) sono arrivati nell'agosto del 2003 da "Blaster" e da "Sobig.F". Entrambi si auto-diffondevano velocemente e si impadronivano dei computer ospitanti. Sobig.F si è disattivato automaticamente circa 20 giorni dopo, limitando i danni che poteva causare: la Microsoft ha messo una taglia di 250mila dollari sull'autore di Sobig.F. Ancora nessuno li ha incassati.

Bagle, MyDoom e Sasser. Il worm Bagle, con le sue decine di varianti, ha messo a rischio i dati personali, economici e finanziari protetti sui computer: ricevuto come allegato e attivato, creava una porta di accesso al computer tramite la quale utenti esterni potevano accedere e fare incetta di dati. Alcune sue varianti sono ancora attive.
E' stato poi il turno di MyDoom (in inglese: "il mio inferno"), il "velocista" della diffusione: già nelle prime ore, il 10% delle e-mail inviate conteneva il virus, che rallentava le performance di connessione a internet fino a un decimo. Fortunatamente, era programmato per disattivarsi in poco più di due settimane.
Ma il re dei virus è Sasser. E' riuscito, nell'aprile 2004, a chiudere le comunicazioni satellitari di alcune agenzie di stampa francesi, cancellare dei voli della Delta airlines e bloccare i sistemi di numerose compagnie in tutto il mondo. Si diffondeva sfruttando una falla di Windows 2000 e non col classico sistema via e-mail. I danni economici furono stranamente contenuti: decine di milioni di dollari. Il suo autore, un diciasettenne tedesco, non è stato incriminato perchè minorenne.

Come salvarsi da questi virus? "Con un Mac". Il consiglio arriva dalla Sophos, una delle maggiori aziende per la sicurezza dei computer. Sempre più spesso, spiegano alla Sophos, i virus vengono progettati per assalire i sistemi operativi della Microsoft. Quasi ovvio, in un mondo quasi monopolizzato da Windows: l'85% dei pc al mondo ne utilizza una qualche versione. "Sembra probabile - spiega quindi Graham Cluley, della Sophos - che i Mac continueranno ad essere più sicuri per gli utenti ancora per qualche tempo. Questo dovrebbe essere seriamente preso in considerazione da chi pensa di comprarsi un computer".