CONDIVIDI L' ARTICOLO SE TI PIACE:
Bookmark and Share
PAGINE VISTE OGGI:

giovedì 11 febbraio 2010

TELNET



Telnet è un'applicazione standard di 'Internet ed è disponibile nella maggior parte delle implementazioni del TCP/IP, indipendentemente dal sistema operativo host. Si tratta di un semplice protocollo di login remoto, implementato secondo un modello di tipo client-server, che permette ad un utente attestato ad una certa macchina di stabilire una connessione TCP con un server di login che si trova su un'altra macchina, la porta che utilizza è la numero 23. Subito dopo Telnet rilancia i caratteri battuti sulla tastiera dell'utente direttamente al calcolatore remoto come se essi fossero battuti su una tastiera direttamente connessa ad esso. Inoltre Telnet rimanda l'output della macchina remota indietro fino allo schermo dell'utente.
Il servizio è definito trasparente perchè dà l'apparenza che la tastiera e lo schermo dell'utente siano attaccati direttamente alla macchina remota. Sebbene Telnet non sia molto sofisticato se paragonato ad altri protocolli di terminale remoto, esso risulta tuttavia largamente diffuso. Di solito, il codice client di Telnet permette all'utente di specificare la macchina remota a cui ci si vuole connettere dando il suo nome di dominio oppure il suo indirizzo IP.
Come aprire telnet
Telnet è un client presente di default in windows e ci si può accedere in tre diversi modi:
1)premendo avvio/start, poi esegui e si digitando "telnet" nella finestra di dialogo.
2)facendo click sul file "telnet.exe" presente nella cartella "windows".
3)digitando "telnet" nel prompt ms-dos.

Generalità e Processi:
Telnet offre tre servizi di base. Per prima cosa, definisce un network virtual terminal (terminale virtuale di rete) che fornisce una interfaccia standard verso i sistemi remoti. Il programma client non può essere istruito sui dettagli di tutti i possibili sistemi remoti, così esso è realizzato per usare l'interfaccia standard. In secondo luogo, Telnet include un meccanismo che permette ai due moduli client e server di negoziare delle opzioni,
e fornisce un insieme di opzioni standard (ad esempio, una delle opzioni controlla se i dati trasmessi attraverso la connessione debbano essere rappresentati mediante il set standard di caratteri ASCII a 7 bit oppure mediante un set di caratteri ad 8 bit). Infine, Telnet tratta simmetricamente entrambi gli estremi della connessione. In particolare, Telnet non obbliga che l'input del client provenga da una tastiera, e nemmeno che l'output di tale client sia costituito per forza da uno schermo. In questa maniera, Telnet permette ad un qualsiasi programma di diventare utente del client.
Inoltre, entrambe le parti possono negoziare le opzioni. Quando un utente invoca Telnet, un determinato programma applicativo sulla macchina dell'utente diviene il client. Esso stabilisce una connessione TCP con il server, tramite la quale comunica con questo. Una volta stabilita la connessione, il client legge i caratteri battuti sulla tastiera dell'utente e li trasmette al server, e nel frattempo legge i caratteri che il server gli ritorna
indietro per visualizzarli sullo schermo dell'utente. Il server deve accettare la richiesta di connessione dal client, dopodiché deve rilanciare i dati ricevuti tramite questa connessione al sistema operativo della macchina su cui si trova. In pratica il server deve gestire connessioni multiple concorrenti. Di solito, un processo padre aspetta su una determinata porta una richiesta di connessione e, quando questa arriva, crea un processo figlio che gestisce tale connessione. Perciò il processo illustrato rappresenta il processo figlio che gestisce una particolare connessione.
Si adopera il termine pseudoterminale per descrivere il punto di ingresso (entry point) del sistema operativo che permette ad un programma quale il server Telnet di immettere caratteri nel sistema operativo della macchina remota facendo credere a quest'ultimo che essi provengano da una tastiera. Sarebbe impossibile realizzare un server Telnet senza che il sistema operativo fornisca una tale possibilità. Se il sistema supporta un dispositivo di pseudoterminale, il server Telnet può essere implementato mediante programmi applicativi. Nel server, ogni processo figlio funge da collegamento tra il flusso di dati provenienti dalla connessione TCP ed un particolare dispositivo di pseudoterminale.
Fare in modo che il server Telnet sia un programma a livello applicativo comporta sia vantaggi che svantaggi. Il vantaggio più ovvio è che risulta più semplice la modifica ed il controllo del server rispetto al caso in cui il codice sia contenuto nel sistema operativo. Lo svantaggio è chiaramente l'inefficienza, poichè ciascun carattere deve viaggiare dalla tastiera d'utente, attraverso il sistema operativo, fino al programma client, dal programma client tornare al sistema operativo e, attraverso la connessione di rete, arrivare alla macchina remota. Qui, i dati devono arrivare, attraverso il sistema operativo, fino al programma applicativo server, e da quest'ultimo di nuovo indietro al sistema operativo in un dispositivo di pseudoterminale.
Alla fine, il sistema operativo remoto invia il carattere al programma applicativo che l'utente sta facendo correre. Si capisce che, nel frattempo, l'output (compresi i caratteri di echo se tale opzione è stata selezionata) viaggia a ritroso dal server al client lungo lo stesso percorso.
Passaggio di comandi per controllare la parte remota:
Sopra ho accennato al fatto che molti sistemi forniscono un meccanismo che permette agli utenti di terminare un programma in esecuzione. Di solito, il sistema operativo accoppia tale meccanismo ad un particolare tasto o sequenza di caratteri. Ad esempio, a meno che l'utente non specifichi diversamente, molti sistemi Unix riservano al carattere generato dalla sequenza Control-C la funzione di interruzione. Digitando Control-C si costringe Unix a terminare il programma in esecuzione; il programma non riceve Control-C come input. Il sistema inoltre può riservare altri caratteri o sequenze di caratteri per altre funzioni di controllo. NVT di Telnet adatta le funzioni di controllo definendo come esse devono essere passate dal client al server.
Dal punto di vista concettuale, si immagina che NVT possa accettare immissioni di caratteri da una tastiera in grado di generare più dei 128 possibili caratteri. Si suppone cioè che la tastiera dell'utente abbia tasti virtuali (immaginari) che corrispondono alle funzioni tipicamente usate per controllare i processi. Ad esempio, NVT definisce un tasto concettuale di "interruzione" ("interrupt") che serve a richiedere la terminazione di un programma. Nella pratica, la maggior parte delle tastiere non fornisce tasti in più per i comandi. Tuttavia, certi sistemi operativi o interpreti di comandi presentano una varietà di modi per generarli. Abbiamo già menzionato la tecnica più comune: accoppiare un determinato carattere ASCII ad una funzione di controllo cosicchè,
quando l'utente preme il tasto, il sistema operativo effettua l'azione appropriata invece di accettare il carattere come input. I progettisti dell'NVT hanno scelto di tenere separati i comandi dal normale set di caratteri ASCII per due ragioni. Per prima cosa, definire separatamente le funzioni di controllo significa conferire a Telnet una maggiore flessibilità. Esso può infatti trasferire tutte le possibili sequenze di caratteri ASCII tra il client ed il server così come tutte le possibili funzioni di controllo. Inoltre, tenendo separati i segnali dai normali dati, NVT permette al client di specificare i segnali senza ambiguità, ovvero senza confusione circa il fatto se il carattere immesso debba essere trattato come dato o come funzione di controllo.
Per mandare le funzioni di controllo attraverso la connessione TCP, Telnet le codifica adoperando una cosiddetta sequenza di escape. Una sequenza di escape usa un ottetto riservato per indicare che è in arrivo un ottetto in cui è codificato un comando. In Telnet, l'ottetto riservato che apre una sequenza di escape è noto come l'ottetto interpret as command (IAC). I segnali generati dai tasti concettuali di una tastiera NVT corrispondono ciascuno ad un comando. Ad esempio, per richiedere che il server interrompa il programma in esecuzione, il client deve inviare la sequenza di due ottetti IAC IP (255 seguito da 244). Comandi addizionali permettono al client ed al server di negoziare il set di opzioni da usare e di sincronizzare la comunicazione.
Faccio notare che la codifica NVT di tutti i caratteri stampabili e di controllo, qualora sia in vigore il comportamento di default, coincide con la codifica standard ASCII a 7 bit, la quale comporta una corrispondenza di tali caratteri con i primi 128 numeri naturali (da 0 a 127), e conseguentemente il valore nullo del bit pesante (o più significativo, cioè quello a sinistra) nell'ottetto che rappresenta il dato. Poichè la codifica NVT delle funzioni di controllo prevede l'impiego di ottetti ai quali, secondo la rappresentazione binaria, corrispondono numeri naturali maggiori di 128, cioè col bit pesante settato ad 1, si evince che non può esservi confusione tra alcun dato e qualsiasi ottetto di comando, in particolare l'ottetto IAC, formato interamente da bit unitari (codifica decimale 255, cioè in binario 11111111).
Tale confusione può però verificarsi qualora sia in vigore l'opzione cosiddetta di trasmissione binaria, la quale prevede l'uso di un set di caratteri ad 8 bit, cioè di ottetti in cui il bit pesante può essere settato ad 1 anche per la codifica di dati. In tal caso, è previsto che se deve essere trasmesso un dato (ovvero un carattere) tale che l'ottetto che lo codifica è uguale all'IAC, allora
tale ottetto deve essere trasmesso due volte.
size"4">Come si forza il server a leggere una funzione di controllo:
size"2">L'invio delle funzioni di controllo assieme ai normali dati non sempre è sufficiente per garantire il risultato desiderato. Per capire il perchè, consideriamo la situazione in cui un utente vuole mandare la funzione di controllo interrupt process al server. Di solito, un tale evento è necessario quando il programma in esecuzione sulla macchina remota sta funzionando male e l'utente vuole che il server termini il programma. Per esempio, il programma potrebbe star eseguendo un loop infinito senza leggere l'input o generare alcun output. Sfortunatamente, se l'applicazione sulla macchina remota smette di leggere l'input, i buffer del sistema operativo si riempiono ed il server non potrà più scrivere dati sullo pseudoterminale. Quando ciò accade,
è previsto che il server smetta di leggere i dati che provengono dalla connessione TCP, i cui buffer di conseguenza si riempiono. In una circostanza del genere, l'entità TCP sulla macchina del server notifica la situazione all'entità paritaria sulla macchina locale informandola circa la dimensione nulla della finestra di flusso, ed in seguito a tale notifica si interrompe il flusso di dati lungo la connessione. Se l'utente genera una funzione di controllo di interruzione nel momento in cui i buffer sono pieni, la funzione di controllo non raggiungerà mai il server. Ovvero, il client può senz'altro generare la sequenza di comando IAC IP e
scriverla sul proprio socket, ma poichè l'entità TCP ha interrotto la trasmissione verso l'entità paritaria remota, il server non potrà leggere la suddetta sequenza di controllo. Per risolvere il problema, Telnet adopera un segnale cosiddetto fuori-banda
(out of band signaling). Il TCP implementa la segnalazione fuori banda col meccanismo di urgent data. Ogniqualvolta deve inserire una funzione di controllo all'interno del flusso di dati, il modulo client di Telnet genera un comando di SYNCH, costituito dalla sequenza "IAC (segnale utente) IAC DMARK" (per esempio, se l'utente ha generato il segnale di interrupt process premendo la combinazione Control-C sulla propria tastiera, il comando di SYNCH sarà formato dalla sequenza "IAC IP IAC DMARK"). Tale sequenza viene passata all'entità TCP sottostante contemporaneamente ad un'apposita segnalazione che forza la stessa entità TCP a trasmettere un segmento (col bit di URGENT DATA settato ad 1) che elude il controllo di flusso e giunge immediatamente all'entità TCP remota.
Questa, ricevendo un così fatto segmento, segnala al modulo server di Telnet che sono arrivati dati con la massima priorità, ed è previsto che il server, in virtù di una tale segnalazione, scarichi dal buffer della connessione TCP tutti i dati che trova, continuando però ad interpretare i comandi. Di conseguenza il server, durante tale operazione, è destinato ad incontrare dapprima la sequenza di comando "IAC (segnale utente)", dalla quale capisce cosa l'utente vuole che faccia, e subito dopo la sequenza di comando "IAC DMARK", che ha il significato "torna al normale modo di processamento".


Opzioni di Telnet:
Finora abbiamo omesso la descrizione di uno degli aspetti più complessi di Telnet: le opzioni. In Telnet, le opzioni sono negoziabili, e rendono possibile a client e server riconfigurare la loro connessione
Ad esempio, abbiamo già detto che di solito il flusso di dati è a 7 bit e gli ottetti col bit pesante settato ad 1 sono usati per passare informazioni di controllo come il comando di interrupt process. Comunque, Telnet fornisce anche un'opzione che permette a client e server di scambiarsi dati ad 8 bit (quando questo succede, l'ottetto riservato IAC deve essere raddoppiato se appare come dato). Client e server hanno bisogno di una fase di negoziazione, ed entrambi devono accettare il passaggio di dati ad 8 bit prima che un tale tipo di comunicazione sia possibile.
L'area delle funzionalità delle opzioni Telnet è vasta: alcune estendono le possibilità in modo maggiore, mentre altre si occupano di dettagli meno importanti. Per esempio, il protocollo originale fu progettato per un ambiente half-duplex in cui era necessario dire all'altra parte di "andare avanti" (go ahead) prima che essa potesse trasmettere altri dati. Una delle opzioni controlla se Telnet opera in modo half-duplex o full-duplex. Un'altra opzione permette al server sulla macchina remota di determinare il tipo di terminale d'utente. Il tipo di terminale è importante per il software che genera le sequenze di posizionamento del cursore (ad esempio un editor a tutto schermo in esecuzione sulla macchina remota).
La maniera in cui Telnet negozia le opzioni risulta interessante. Siccome talvolta ha senso anche per il server iniziare l'esecuzione di una particolare opzione, il protocollo prevede di permettere ad entrambe le parti di effettuare una richiesta. In tal maniera, si dice che il protocollo è simmetrico per quanto riguarda il processamento delle opzioni. Entrambe le parti inoltre rispondono ad una richiesta con un'accettazione o un rifiuto. Nella terminologia Telnet, la richiesta è WILL X, che significa permettimi di usare l'opzione X; e la risposta può essere sia DO X che DON'T X, ovvero rispettivamente ti permetto di usare l'opzione X e non ti permetto di usare l'opzione X.
La simmetria consiste nel fatto che DO X richiede che il ricevente cominci ad usare l'opzione X, mentre WILL X o WON'T X significa voglio cominciare ad usare l'opzione X o non voglio cominciare ad usarla.
Un altro interessante aspetto della negoziazione consiste nel fatto che entrambi i moduli Telnet devono essere in grado di eseguire una implementazione base di NVT (cioè senza alcuna opzione in vigore). Se una delle due parti tenta di negoziare un'opzione che l'altra non capisce, la parte che riceve la richiesta si limita semplicemente a declinare l'invito. In questa maniera, è possibile fare interagire versioni di moduli Telnet più recenti e sofisticate (cioè software che comprende più opzioni) con versioni meno sofisticate. Se sia il client che il server capiscono le nuove opzioni, essi potranno incrementare la qualità dell'interazione, altrimenti faranno riferimento ad uno stile meno efficiente ma comunque funzionante.


Una volta collegati:
Come ho detto, telnet è solo un protocollo di login remoto, quindi tranne che per i comandi del formato NVT per ottimizzare la trasmissione di dati, non esiste un linguaggio universale da utilizzare quando ci si collega con telnet ad un sistema, questo per cercare di avere una compatibilità pressoché assoluta. Quindi se si vuole comunicare con un sistema tramite telnet bisogna conoscere i comandi del sistema operativo utilizzato dal sistema remoto.
Ci sono fondamentalmente tre metodi per hackerare un sistema remoto tramite telnet:
1) Default Login
2) Password List o Password Guessing
3) Backdoors
1) Default Login:
Questo è il primo dei tre metodi di intrusione in un sistema e consiste nell'inserire una lista di account seguiti da password comuni, ovvero di quelle password che i sysop ( system operator: operatori di sistema cioè coloro che controllano tutto il sistema ) più ingenui mettono per controllare i propri accessi. Solitamente il login è di 1-8 lettere mentre la password di 6-8. Prima di incominciare ad inserire le password e gli account, dovete scoprire tutte le informazioni possibili sul bersaglio per esempio tramite comandi come whois, finger, showmount. Usate questi comandi anche sull'account root.
In poche parole tenta di trovare un account che abbia il nome di un servizio ed aggiungergli una password con un altro nome di servizio oppure con qualcosa che abbia a che fare con il sistema ( nome del proprietario quando si fà il whois, nome del sistema, ecc...).
Probabilmente avrete sentito ancora parlare di social engineering e il default login è una possibile applicazione di questa tecnica.
2) Password List o Password Guessing:
Un altro metodo per inserirsi in un sistema è quello di "rubare" la password di un altro utente. Per prendere un valido account a cui dare una password bisogna "fingerare" l'utente e leggere (anche se criptato) il passwd file; è meglio se il finger viene fatto durante il giorno.
Una volta trovato l'account (tramite il finger oppure nel passwd file), bisogna inserire una alla volta le password della lista consigliata per ogni sistema per cercare di individuarne una giusta e per poter così accedere al sistema. La serie di login e password caratteristici e standard di ogni sistema operativo le potrete trovare sul fondo della pagina.
3) Backdoors:
Le backdoors sono quelle password che il programmatore del sistema mette per avere accesso in futuro a quel dato computer e che solamente lui conosce. Per cercare di individuare la password bisogna fare lunghe ricerca sulla persona che ha impostato tutto il sistema: che squadra tifa, quali sono i suoi hobby, i suoi idoli, il nome dei vari componenti della famiglia, le date di nascita, queste ultime al contrario o mischiate tra loro, ecc.
Tanto per capirci se avete visto il film "wargames", il protagonista passa intere giornate a studiare vita morte e miracoli del programmatore del sistema oppure anche nel più recente film "hackers" i due protagonisti cercano addirittura gli appunti gettati via nella spazzatura pur di trovare una password o qualcosa che li possa aiutare. Anche qui tanto e tanto social engineering.
Sicuramente questo è il sistema più difficile ma credo che dopo una lunga ricerca sia anche il più sicuro poichè poche persone (cioe' quelle furbe) inseriscono come password qualcosa che non gli è famigliare.
In genere tutti gli user che si connettono ad internet usano nomi che riescono a ricordarsi facilmente tipo una data di nascita, il nome della ragazza o del giocatore preferito o anche qualcosa di meno evidente ma sempre e comunque legato a loro e che difficilmente potrebbero scordarsi.
Del resto molti pensano che sarebbe molto noioso dovere cambiare la propria password perchè ce la siamo scordata, no?
Altri metodi:
Ci sono altri sistemi per penetrare in un computer ma sono molto più complessi di questo anche se magari più efficaci.
Due tra i tanti sono l'IP SPOOFING e successivamente a questo l'Hijacking.
Penso che ne parlerò più avanti in una guida più approfondita.
Ora, se volete essere veramente paranoici (meglio esserlo che fregarsene) e avete paura ad hackerare dalla vostra linea di casa (comprensibile per chi non l'ha mai fatto), potreste, se avete le opportunità e i mezzi, collegarvi ad una cabina telefonica tramite un computer portatile oppure collegare il vostro computer alla linea telefonica del vicino di casa. Forse metterò più avanti una guida anche sul phreacking per approfondire questi due metodi,
ma per ora mi limito a suggerirvi un metodo che ho provato molte volte e che è anche molto più semplice:
Per prima cosa procuratevi uno spazio web gratuito (tiscali, digiland, xoom,... vanno benissimo), poi spedite su questo spazio web tutti i programmi che vi serviranno nell'operazione. Una volta fatto questo andate in un luogo dove non vi chiedono nessun documento per utilizzare internet (per esempio in biblioteca) e vi collegate al vostro spazio web per fare il download dei programmi che vi servono.
Quando avete finito il download installateli e fate pure come se foste a casa vostra... (alla fine della sessione di lavoro consiglio di eliminare i file scaricati)
Programmi Utili:
Ci sono dei programmi che si rendono indispensabili in questo campo:
Il primo è il ToneLoc oppure l'A-Dial o qualsiasi altro war dialer. Poi oltre agli scompattatori (winzip,...) sono utili anche i seguenti programmi:
Il SATAN ( o SANTA ) è un programma che gira sotto macchine Unix e sue emulazioni e richiede perl5.0, un browser ( netscape và bene ), 32 MB di ram; questo programma consente l'analisi di reti e sottoreti di un sistema per trovare falle e aperture. E' stato progettato per poter trovare ingressi non controllati nei sistemi ed eventualmente chiuderli. E'
stato usato (oltre a questo nobile scopo) da un certo signore chiamato Kevin Mitnick il quale ha fregato programmi segreti del governo, una cosa tipo 20.000 numero di carte di credito e chi più ne ha più ne metta.
Un altro programma simile al SATAN è l'ISS che lo precede come data di uscita su internet. L'Internet Security Scanner funziona in modo simile al SATAN ma non sò dire che requisiti voglia per girare.
Se vi siete accorti che qualcosa nel vostro sistema non và potete usare due programmi per vedere se il SATAN o altri netscanners (esaminatori di reti) vi hanno fatto una "visitina".
Uno è il GABRIEL, l'altro il COURTNEY che sono due strumenti che riescono a capire se si è stati sottoposti all'attacco del SATAN.
Un altro programma indispensabile è il crack jack (o crackerjack) oppure il BruteForce.
Questi due programmi comparano le password di una lista, che voi avrete compilato prima in un file di testo, con quelle del passwd file cercando di trovarne una uguale per poter così usufruirne al momento del login.
Attenzione perchè possono solo decifrare le password criptate col metodo DES, NON quelle shadowed.
Una cosa: chi ha detto in giro che ha decriptato il passwd file racconta solo un mucchio di balle perchè non è possibile decriptarlo al momento attuale. Al massimo si può, utilizzando i programmi sopra citati comparare una lista di password e trovarne una (o più se si è MOLTO fortunati) giusta.
Altri programmi utili possono essere il pgp ( Pretty Good Privacy ) e il pgpcrack.
primo serve per criptare dei messaggi in modo che nessuno ( tranne il ricevente con la giusta chiave ) possa capire. Questo programma ha, diciamo, fatto un pò di confusione su internet poichè riusciva a criptare i messaggi con una sicurezza quasi totale e i militari ( soprattutto americani ) non erano un gran che contenti di questa cosa.
Il secondo programma, pgpcrack, serve per l'opposto: crakkare i messaggi criptati col il pgp ( vedi sotto ). Anche qua bisogna comparare una lista di password con il file pgp a meno che non si conosca un pò di assembler il che ti potrebbe permettere ad esempio di scrivere al posto della lista di password la parola Random e ciò ( dopo aver appositamente modificato il programma ) ti permetterebbe di fare una scansione di tutti i caratteri ascii.



Email Bomb con telnet

Supponiamo di voler, per un motivo qualsiasi, inviare una e-mail a qualcuno facendo sembrare che essa sia stata mandata da qualcun altro.

Il metodo più semplice è utilizzare uno dei siti per hackers che offrono la possibilita` di inviare FakeMail (basta cercare questa parola in un motore di ricerca su Internet, ad esempio www.yahoo.com ha una sezione apposita per FakeMail e posta anonima).
Ma per ora tralasciamo i siti e vediamo in pratica come funziona la tecnica delle FakeMail (che tra l'altro è applicabile, in modo diverso, anche alle news).
Il motivo per cui la studieremo è che provandone il funzionamento, ne approfitteremo per imparare ad utilizzare Telnet e soprattutto SMTP, ovvero il servizio della posta in uscita. Questa è infatti la base per capire come funzionano molte delle tecniche più utilizzate, e vi permetterà, quando sarete padroni della materia, di implementarne di nuove.
Iniziamo dunque imparando ad usare Telnet.
Usandolo per collegarvi a un sito semplicemente inserendo un host name, vi collegherete al servizio Telnet. Ma abbiamo detto che non e` questo il nostro obiettivo. A noi interessa il servizio SMTP. Dunque, come fare per accedervi?

Bisognerà inserire, oltre all'indirizzo del server a cui vogliamo collegarci, anche un numero di "porta". Ma cos'è una porta?
Se riflettete, ogni server ha un unico indirizzo "centrale" (nome.com) ma gestisce molti servizi (web, ftp, posta...). Di conseguenza dovrebbe avere altrettanti server su altrettanti indirizzi diversi. Per evitare un proliferare di indirizzi inutili esistono le porte, in pratica nient'altro numeri a cui sono associati i vari servizi. Vogliamo collegarci a SMTP? Basta utilizzare la porta 25. Ci interessano le news? La porta e` 119. Oppure FTP, porta 21... sono tutti numeri "fissi" (standard) e quindi, tranne in rarissimi casi, collegandosi - per esempio - alla porta 25 ci rispondera` sempre SMTP.

NOTA: se avete Winsock potete leggere il file "services", contenente i numeri delle porte piu` usate. Il file si troverà nella directory di Winsock.

Ora che abbiamo chiarito il discorso delle porte, supponiamo di volerci collegare a SMTP usando Telnet. Scegliamo un server qualsiasi (sono davvero rari i casi in cui un server non gestisca la posta) e, in base al programma usato, dovremmo operare differentemente.
La maggior parte di essi funziona in questo modo: per collegarsi a SMTP del server prova.it bisogna inserire prova.it:25 come nome del server.
Alcuni invece non prevedono l'uso dei due punti per delimitare nome e porta,ma hanno uno spazio in cui inserire, separatamente, il numero o il nome del servizio.
Dunque, una volta connessi a prova.it:25 avremo un messaggio di questo tipo:


220 prova.it Sendmail x.x/x.x 11/11/97 ready at Mon, 30 Oct 97 06:22:19 -0200

e niente altro. Il server sta ora aspettando comandi da parte nostra. La prima cosa da fare e` identificarsi, e cio` va fatto con il comando HELO in questo modo:

HELO nomeprovider.it

sostituendo nomeprovider.it con il nome del nostro provider. 

NOTA: usando Telnet *NON* è possibile cancellare. Quindi digitate senza fretta, e se proprio sbagliate riavviate la connessione e ripetete tutto,oppure - in alcuni casi - puo` essere sufficiente premere invio e riscrivere la riga da zero. Non cancellate, anche se sembra funzionare. I risultati possono essere imprevedibili e potreste rivelare la vostra identita`.

Talvolta e` possibile inserire un nome falso, ma i nuovi server conoscono gia` il vostro IP Address quando vi collegate, quindi tanto vale inserire il vero nome.

La risposta sara`:

250 prova.it Hello NOMEPROVIDER.IT, pleased to meet you

A questo punto dovremo dire al server qual'e` il nostro indirizzo di e-mail. Usiamo allo scopo il comando "MAIL FROM" e digitiamo:

MAIL FROM:

...ovviamente l'indirizzo da inserire e` quello falso =)
Il server rispondera` con un messaggio. Se avremo sbagliato qualcosa, sara`un messaggio d'errore, e dovremo ripetere l'immissione.

A questo punto dobbiamo scegliere la nostra "vittima", che supponiamo essere vittima@lamer.it. Usiamo il comando "RCPT TO" e scriviamo:

RCPT TO:

Il server rispondera` con un altro messaggio. Ed ora che abbiamo definito sorgente e destinazione passiamo all'invio delle intestazioni e del corpo del messaggio. Avvisiamo il server che siamo pronti, scrivendo:

DATA

e il server ci dira` di scrivere il messaggio e di concludere con un punto su una riga vuota.

Fermiamoci un attimo. In ogni e-mail esistono delle intestazioni (headers) che si trovano prima del corpo del messaggio vero e proprio. Il loro scopo è elencare tutti i computer attraverso i quali è passato il messaggio,nonchè il nostro IP Address! Ciò potrebbe rivelare la nostra identità a un hacker o a un SysAdmin esperto. Per evitarlo, digitiamo:

Received: by nomeprovider.it id AA11212 with SMTP; Sun, 12 Oct 97 13:40:58

dove nomeprovider.it è il nome del vostro provider (quello che avete usato con HELO) e l'ultima parte (Sun, 12 Oct...) è la data in formato standard.
ID AA11212 va cambiato. Potete mettere un numero qualsiasi (possibilmente che inizi con AA1 piu` altre 4 cifre, per farlo sembrare piu` reale).
Si tratta solo di un numero di serie del server, niente di importante.

Ora dobbiamo digitare:

Message-ID:

Cio` serve a far credere che il messaggio sia partito effettivamente dal server "microsoft.com" con l'ID AA11345 (puo` essere un numero qualsiasi, purche` NON uguale a quello inserito prima con l'intestazione "Received:").

Inseriamo ora di nuovo il destinatario, la data e il soggetto della e-mail:

To:
Date: Sun, 12 Oct 97 11:30:27
Subject: questa e` una prova...

Lasciamo uno spazio e scriviamo il messaggio che vogliamo inviare (lungo quanto vogliamo). Per concludere il messaggio lasciamo due righe vuote, digitiamo un punto, premiamo invio, scriviamo QUIT e invio. La FakeMail verra` inviata automaticamente dal server, e noi possiamo anche chiudere Telnet.

E` importante inviare a se stessi dei messaggi di prova per vedere se il server scelto ha ricevuto i dati correttamente, se non sono stati commessi errori e, soprattutto, per vedere se il proprio IP Address si trova in mezzo alle intestazioni "Received:", oppure (sbagliato) alla fine.

Ora che sappiamo come fare ad inviare una FakeMail, possiamo passare al passo successivo: usare le FakeMail per far danni... vogliamo seppellire la mailbox di qualcuno? Creiamo una normale FakeMail con il metodo spiegato sopra, ma come mittente dovremo inserire l'indirizzo e-mail della vittima
e come destinatario usiamo un "listserv" (come ad esempio listserv@brownvm.brown.edu).
Un Listserv e` un programma che invia programmi tramite e-mail nel caso non si riesca a prelevarlo via FTP.

Se ad esempio sappiamo che nella directory "mieifiles" del server pluto.it c'e` un file di 20 megabyte il cui nome e` "enorme.gz" possiamo fare in modo che quei 20 MB vengano inviati sotto forma di testo nella e-mail della nostra vittima...
Nell'esempio di cui sopra, dopo aver scritto i primi comandi della FakeMail, arrivati a "Subject:" scriviamo quanto segue:

REPLY vittima@lamer.it
CONNECT pluto.it anonymous indirizzo@falso.com
BINARY
GET mieifiles/enorme.gz
QUIT

e concludiamo quindi con le due righe vuote, il punto, QUIT, ecc.

Ecco la spiegazione passo passo:

REPLY indica l'indirizzo e-mail a cui rispondere
CONNECT specifica il nome del provider a cui collegarsi e l'account da usare
BINARY specifica un file di tipo binario (non va cambiato)
GET specifica il nome del file da prelevare (completo di eventuali directory)
QUIT termina la connessione

Ovviamente, se dopo GET anziche` QUIT usiamo altri GET, il risultato sara` molto piu` dannoso. Nel caso di un file di 20 MB, riscrivendo altre 10 volte il comando "GET ..." verranno mandati un totale di ben 200 megabyte al povero utente destinatario!
E poiche` i server di e-mail spezzano i messaggi in tanti piccoli messaggi, la vittima riceverebbe migliaia e migliaia di messaggi...
E` un buon motivo per non dare in giro il proprio indirizzo di e-mail, no??????





.

Seja o primeiro a comentar

Posta un commento

ARTICOLI CORRELATI

Followers

LO SCATOLONE DEI FERRI GUIDE © 2008 Template by Dicas Blogger.

TOPO