==============================================================================
-----------[ 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 ]---------------------------------
==============================================================================