# Attaque de point d'eau

Une attaque de point d'eau (aussi appelée attaque de trou d'eau ; en anglais, Watering Hole Attack) est une technique de cyberattaque qui consiste à piéger un site Internet légitime afin d’infecter les machines des visiteurs du domaine considéré comme la cible par l’attaquant.
Cette technique aurait été mise en place pour la première fois par un groupe de cybercriminels appelé le gang Elderwood. En 2012, elle a alors permis au gang d'infecter plus de 500 entreprises en 24 heures. L'attaque a été détectée en juillet 2012 par RSA Security.
Le nom de l'attaque de point d'eau fait référence à un prédateur (par exemple, un lion) qui, au lieu d'aller attaquer sa proie (par exemple, une gazelle) sur son territoire, préfère l'attendre à un endroit où il est sûr qu'elle viendra (en l’occurrence à un point d'eau où elle viendra pour s'abreuver).

## Principe
### La reconnaissance

L'attaque est précédée d'une surveillance par le hacker/prédateur des habitudes de navigation de la victime/proie (qui peut être une personne ou un ensemble de personnes travaillant pour une société cible).
Parfois, les points d'eau sont faciles à localiser. Par exemple, si on souhaite attaquer un éditeur de logiciels, on peut facilement s'assurer que les développeurs de cette société visitent les sites proposant des astuces sur ses outils ou des forums traitant de ses activités.

### La compromission du site

Sur le site point d'eau, le cybercriminel place un code (par exemple, via une vulnérabilité de type XSS) permettant d'exploiter une vulnérabilité de type jour zéro que peut avoir la victime sur sa machine. Un exemple de faille exploitée est le client Java qui permet d'installer sur la machine de la victime le cheval de Troie gh0st RAT (Remote AccessTrojan) permettant ainsi au cybercriminel d'espionner et de prendre le contrôle des machines infectées.
Généralement, ce cheval de Troie infecte l'ensemble des machines et serveurs de la société permettant ainsi aux cybercriminels d'avoir accès à toutes les données informatiques de ces machines (contacts, données bancaires, codes sources, projets en cours, photos personnelles, etc.), mais également de prendre le contrôle de la machine pour effacer toute trace des accès frauduleux.
Il peut s'agir d'un code JavaScript qui s'exécute au chargement de la page compromise.

### L'infiltration

L'un des principes de la sécurité (ACL) au niveau des routeurs ou des pare-feu est de bloquer les connexions initiées depuis l'extérieur et de laisser passer le trafic généré à l'intérieur. L'accès à ce point d'eau est considéré comme un trafic légitime (via les ports 80, 443 ou 53) et passe donc inaperçu puisque la connexion aura été initiée par une machine en interne. Notons que l'utilisation des méthodes de traduction d'adresse réseau (incluant la traduction de port PAT) permet de protéger les machines internes qui n'ont jamais d'adresses routables (RFC7535), mais se partagent une adresse fournie par leur fournisseur d'accès à Internet.

### Les vulnérabilités

Voici une liste des éléments susceptibles d'être exploités :
* les contrôles ActiveX ;
* les documents PDF ;
* les documents Microsoft Office ;
* les injections de shellcode ;
* Java ;
* JavaScript ;
* les exploits des navigateurs web ;
* les modules d'extension des navigateurs web ;
* les scripts.

### Autres variantes

L'infection peut se faire à l'interne de diverses façons, par exemple :
* par un partage de fichiers ;
* par l'envoi d'un courriel ;
* en déposant un CD, un DVD ou une clé USB infectés au bureau d'ordre de la société prétextant qu'il s'agit du compte-rendu de la précédente réunion.

## Solutions

Des mises à jour des navigateurs web et d'Acrobat Reader sont nécessaires et doivent être faites, mais ces actions restent insuffisantes puisqu'elles ne protègent pas contre les vulnérabilités jour zéro.
Le blocage du code JavaScript n'est pas une solution puisqu'elle dégradera la visualisation des pages web.
Les pistes sérieuses de solutions sont :
* les solutions de sécurité offrant de l'inspection des paquets en profondeur (deep packet inspection) ;
* l'utilisation de solutions de type bac à sable (tout code sera exécuté dans une sorte de bulle pour analyser son comportement) ;
* l'utilisation de passerelle (gateway) permettrait d'offrir un minimum de soutien.
* la formation et la sensibilisation des utilisateurs d'équipements informatiques sont importantes ; par exemple, il faut sensibiliser les gens à l'importance d'installer sur ses appareils uniquement des logiciels de sources fiables).
* segmenter le réseau en plusieurs petits réseau pour limiter l'impact d'une attaque