![]() Chiunque voglia far parte dell'Open C6 Project è il benvenu- to. Il progetto si occupa di creare clients e servers C6 open source e della massima portabilità (creati in c/c++ o java). Per maggiori informazioni, troverete tutto nella sezione pro- getti di www.redangel.it (al momento il link non è ancora at- tivo). ==--> C6, Come sei? <--== Questo testo è stato scritto per soli scopi educativi, non mi assumo nessuna responsabilità per usi illeciti di questo te- sto. Inoltre il reversing del c6 non è reato in quanto non essendoci alcun genere di condizioni da accettare (e neppure nella guida è scritto nulla a riguardo), è possibile disasse- mblare, crackare e fare il reversing di ogni parte del c6. Tuttavia, il software è protetto da copyright, quindi la co- pia è vietata. Inoltre, ho fatto questo lavoro solo per utilizzare C6 in LAN (usando un server locale) e sotto Linux (codandolo in C). Al- tri utilizzi potrebbero essere illegali! Altr scopo di questo testo è mostrare quante informazioni vengono passate dal client al server che potrebbe benissimo loggare o 'attivarsi' alla lettura di determinate parole, proprio come fa Echelon. Con questo non voglio assolutamente insinuare che la tin ci spia e viola la nostra provacy, anzi già dal fatto che non chieda molte informazioni alla nostra iscrizione si può intuire che io mi sbagli, ma voglio solo mostrarvi le informazioni passate (nostre informazioni) al server. Finalmente il sogno di tanti presunti hackers, crackers, re- versers, coders e chi più ne ha più ne metta, si avvera. Il protocollo di C6 è stato reversato nelle sue funzioni più importanti. Le funzioni ancora da reversare sono: - Codifica iniziale - Codifica della password - Varie funzioni come ricerca di NetFriends e Canali. Potrà sembrarvi molto il lavoro ancora da fare, ma invece è abbastanza poco. La codica del C6 è del tipo cifrario di Ce- sare, quindi estremamente semplice da crackare. Per la codi- fica della password per il momento non ho approfondito più di tanto, poichè stavo pensando di aggirare il problema. Essendo il protocollo ancora in fase di reversing, non sono ancora riuscito a reversarlo del tutto. Volevo, prima di parlare del protocollo,
esprimere alcune mie idee: quanti di noi si definiscono hacker (dico noi nel
senso di 'noi che siamo nell'underground', dato che io non lo fac- cio) e alla
fine non sanno fare nulla? Questo stesso proto- collo l'ho reversato in soli
DUE giorni: una serata per eli- minare la codifica ed un giorno per comprendere
a fondo i co- mandi qui analizzati. Ne ho sentite tante, ma davvero tante sul
C6 e voglio farvi vedere qualche esempio. Innanzitutto per coloro che sono soliti
frequentare l'ormai famoso news- group free.it.hackers volevo segnalare ad esempio
un messaggio (scusate ma quando i nomi ci vogliono, ci vogliono: che significato
avrebbe altrimenti la sezione 'saluti' pre- sente in quasi tutti i tutorials?)
di uno che pensavo fosse esperto: ******.. Questo stesso ****** ha affermato
che il c6 usa il protocollo SSL per codificare i dati trasmessi. Tutto questo
è falso e vi sarà mostrato di seguito (seguire per credere :).
Oltretutto basterebbe usare lo snif- fer per notare che molti dei bytes di quando
si invia un mes- saggio restano perfettamente uguali, cambia veramente poco.
se si trattasse di SSL, cambierebbe completamente tutto senza avere elementi
logici di connessione (da un log ad un altro). Continuando, tale 20 12 [CONTAT] [LUNGH FINE] 00 02 [LUNGH FINE] [CHIAVE] Dove CONTAT è il contatore LUNGH FINE la lunghezza fino al- la fine del pacchetto e la chiave la chiave di codifica. Il pacchetto mandato dal client è: 10 0F [CONTAT] [LEN FINE] 10 01 00 01 [LEN FINE] [LEN USER] -> [USER] [LEN PASS] [PASS] [LEN VERIF] [VERIF] Dove LEN FINE è la lunghezza alla fine, LEN USER è la lun- ghezza dello username, PASS è la password in codifica e VERIF è la verifica. Il server replica con: 20 02 [CONTAT] [LEN FINE] [IP] 00 00 [PORTA] Dove IP è scritto in valori del tipo ABCD e significano A.B.C.D e PORTA è scritto in short. Una volta fatto ciò, il client si scollega dal server e si ricollega all'indirizzo indicatogli dal server. Qui troverà un altro server c6 che funzionerà come il primo per quanto riguarda i primi due pacchetti. Poi se il login è errato in- vierà questo pacchetto: 20 03 00 02 00 00 Facilmente è possibile intuire che 20 è l'ID del server che contrassegna ogni suo messaggio, 03 è il comando di errore, i seguenti due bytes sono in contatore e 00 00 sono bytes di riempimento (almeno credo :P ) Nel caso in cui è corretto il server manda del codice, ancora in fase di analisi, in cui scrive il messaggio di benvenuto che compare in alto a destra sulla finestra di c6 e invia i banners che il client mostrerà. A questo punto il client richiede alcune informazioni sui pulsanti, come ad esempio 'scarica l'agenda!'. Il codice per la richiesta è 10 0F 00 02 00 08 10 0D 00 02 00 02 01 2A Ancora possiamo notare i primi due bytes, sempre uguali, il contatore, la lunghezza alla fine in short, 10 0D che è il cosiddetto ID del comando e vari altri bytes che non mi sono soffermato ad interpretare (tanto la stringa di richiesta è sempre uguale!). Il server risponde quindi con la srtinga (in schema): 20 15 [CONTAT] [LEN FINE] [NUM PULS] [LUNGH TESTO] [TESTO] -> [LUNGH LINK] [LINK] [...] Oltre ai soliti bytes, troviamo num puls, un valore short che indica al client il numero di pulsanti da inserire; abbiamo poi TESTO che è il testo del pulsante e poi LINK che è il link a cui punta quel pulsante. Nel caso in cui sia più di un pulsante, la sequenza si ripete, partendo da lungh testo fino a link, fino all'esaurimento dei pulsanti (e di noi ihhiih :) Il client poi invia la sua userlist al server che man mano gli dirà gli utenti che si collegano e si scollegano. Inoltre dopo aver mandato questa list, il server ci dirà i nick col- legati. La stringa di richiesta è questa (sempre schema): 10 0F [CONT] [LEN FINE LISTA] 10 03 00 03 [LEN FINE LISTA] -> [NUM NICK] [LEN NICK] [NICK] [...] 10 0F 00 04 00 07 10 -> 0A 00 04 00 01 64 Dove LEN FINE LISTA è la lunghezza fino alla fine della lis- ta (non del pacchetto), NUM NICK è il numero di nick, NICK è un nick. Il numero di nick è in short. Vengono inviati tante volte LEN NICK e NICK quanti sono i nick. Alla fine il pacchetto termina con quei bytes sopra scritti. Una volta richiesta la lista dei nick collegati, il server ci risponderà con quelli attualmente collegati; il pacchetto è questo: 20 06 [CONTAT] [LEN FINE] [NUM NICK] [LEN NICK] [NICK] NUM NICK è ancora una volta il numero di nick scritti, in short. LEN NICK e NICK vengono scritti tante volte quanti so- no i nick da inviare. Può capitare che a volte all'avvio di c6 (qui si conclude il login!) venga inviato anche il pacchetto che ci definisce di- sponibili, solo per i NetFriends o Occupati. I pacchetti in questione sono: 10 0F [CONT] [LEN FINE] 10 0A 00 04 00 01 [STATO] Mettendo da parte i bytes già conosciuti, abbiamo STATO che può assumere i seguenti valori: 64 -> Disponibile 68 -> Solo NetFriends 70 -> Occupato Analizziamo l'ultimo comando che ho reversato per ora: i mes- saggi. Nell'invio di messaggi ci sono due comandi, uno per quello online ed uno per i messaggi verso utenti offline, (email). La differenza tra i due è minima: l'incremento di un valore. Il pacchetto è così configurato: 10 0F [CONT] [LEN FINE] 10 [VAL] 00 05 [LEN FINE] [LEN SEND] -> [SEND] 00 01 [LEN TO] [TO] [LEN FINE] [MESS] VAL è un valore che cambia, è appunto quello che dicevo prima che incrementa: 08 -> Messaggio online 09 -> Messaggio offline (email) SEND è colui che invia il messaggio (spoof? ^^), TO è il ri- cevente e MESS è il messaggio (ma và? :) Il valore 00 01 contenuto tra SEND e LEN TO potrebbe essere il numero di persone a cui mandare il messaggio...bisognereb- be provare a vedere mettendo 02 e due nick cosa succede :) Beh...se mandiamo il messaggio, dobbiamo certamente anche po- terlo ricevere! :) Per quanto riguarda la ricezione, questo è lo schema di un pacchetto inviatoci dal server: 20 0F [CONT] [LEN FINE] [LEN FROM] [FROM] [LEN TO] [TO] 02 00 -> [MESS] Qui non c'è nulla da aggiungere...tutto chiaro no? ----==[ Saluti ]==---- Un saluto a tutte le crew in cui sono che non nomino per mo- tivi di spazio. Un altro saluto a tutti coloro che hanno pro- vato a crackare C6 e non ci sono riusciti, ma comunque una mano potevano pure darmela (non ho trovato nessuno che mi aiutasse...ma ci sono riuscito anche da solo). Entro breve realizzerò un server dimostrativo in Visual Basic, utilizza- bile solo in LAN: altri usi potrebbero essere illegali. <--== © GnomixLand http://www.gnomixland.com/ |