Qui m'attaque ?
On catégorise parfois les attaquants entre l'étudiant boutonneux dans son garage s'amusant à pirater des systèmes pendant ses vacances de Noël, jusqu'à l’État disposant d'une cohorte de soldats numériques, de moyens importants et de temps, tout cela pour viser un objectif motivé.
Plutôt que de rentrer dans une compréhension complexe de l'attaquant, je vous propose de regarder ensemble quoi protéger, de réfléchir aux impacts d'une attaque en fonction de vos composants ou des applications métier visées pour ensuite définir des mesures qui bloqueront les vecteurs d'attaques identifiés.
Quel impact ?
La plupart du temps, les bonnes pratiques d'architecture et de durcissement de système permettront de vous prémunir de la majorité des attaques. Ces mesures sont souvent simples et peu coûteuses… pour peu que vous les prévoyez dès le départ !
Dans certains cas, l'état de l'art ne suffit pas et il faudra proportionner les mesures permettant d'atteindre un objectif de sécurité :
Mettre les efforts au bon endroit pour limiter les impacts les plus importants,
Se contenter des mesures génériques pour les systèmes pour lesquels les impacts sont faibles et acceptables.
L'impact pourra prendre différentes formes en fonction des systèmes, des types de données manipulées et des finalités métier. Pour donner quelques exemples :
Une PME réalisant de la vente en ligne sera préoccupée par la confidentialité de sa base client, des données personnelles et de paiement par carte bancaire. Par ailleurs, la disponibilité de son site de vente en ligne sera critique, car en cas d'incident, elle perd des ventes qui ne sont pas reportées plus tard, ce qui a un impact direct sur son chiffre d'affaire et sa marge.
Un notaire devra assurer l'intégrité de ses documents. La disponibilité de son poste de travail lui rendra service, mais il saura travailler avec des documents papier s'il a une panne de quelques heures.
Un industriel de défense devra assurer la confidentialité de données classifiées, ainsi que la traçabilité des accès.
Ces quelques exemples schématiques montrent que chaque métier aura sa propre préoccupation, pouvant porter sur la Disponibilité, l'Intégrité, la Confidentialité ou la Traçabilité. En fonction des attaques, l'un ou l'ensemble peuvent être mis à mal. Un déni de service n'aura un impact que sur la disponibilité. La perte d'une clé USB non chiffrée n'aura un impact que sur la confidentialité. Mais souvent, la compromission d'un système a à la fois un impact sur sa disponibilité, l'intégrité et la confidentialité de ses données, ainsi que la traçabilité des accès ou de la modification des données !
Quels types d'attaques ?
Regardons ensemble les trois attaques les plus répandues.
Le déni de service
Un déni de service vise à rendre un système ou un service réseau indisponible. Il se déroule en deux étapes : épuiser les ressources, puis rendre le système visé indisponible.
Épuiser les ressources
Les premières attaques se contentent d'inonder le système visé de requêtes pour épuiser ses ressources. Il est possible de faire cela en envoyant en masse des paquets TCP SYN, UDP, des paquets TCP fragmentés sans jamais terminer l'échange, etc. Ceci est permis par l'exploitation des défauts d'implémentation de certains protocoles : en envoyant des paquets mal formés, l'attaquant fait tout simplement planter le service réseau ou la pile de communication qui est en face.
Rendre le système visé indisponible
Au fur et à mesure que les défauts d'implémentation les plus courant sont corrigés, les attaquants s'adaptent pour rendre le système visé indisponible avec uniquement des connexions similaires en tout point avec celles de clients légitimes. Or, cela oblige l'attaquant à avoir une capacité d'envoi de messages, en particulier une bande passante, supérieure à celle du serveur visé. Cela devient plus difficile sur des hébergements professionnels.
Déni de service distribué : émettre grâce à de nombreux systèmes compromis
Pour augmenter leur capacité d'envoi, les attaquants lancent des attaques depuis des milliers de systèmes compromis (souvent appelés « zombies »), ce qui donne un « déni de service distribué ». Dans ce cas, les systèmes compromis servant à émettre les requêtes peuvent être des postes de travail, mais aussi des équipements connectés (IoT). Il arrive par exemple que des attaquent soient effectuées à partir de caméras connectées sur Internet dont l'interface d'administration était restée avec un mot de passe par défaut.
![Le schéma illustre le fonctionnement du déni de service distribué et le rôle des 3 acteurs dans le cadre de cette pratique. L'attaquant compromet différents types de systèmes qui, sous son contrôle, envoient massivement des requêtes vers le serveu](https://user.oc-static.com/upload/2018/09/14/15369368971051_P1Ch1s1-DDoS.png)
Ceci arrive par exemple sur des serveurs de jeux en ligne où le protocole sous-jacent est UDP. Ça facilite la falsification de la provenance de l'attaquant, avec des requêtes très petites, mais des réponses du serveur beaucoup plus volumineuses, ce qui consomme la bande passante d'autant plus rapidement !
Ce type d'attaque peut aussi se produire tout simplement sur des serveurs Web pour lesquels l'appel à certaines pages ou certaines fonctions vont générer des traitements importants, par exemple des requêtes lourdes sur une base de données.
Le défacement
Un attaquant qui réalise un « défacement » modifie le contenu d’un site Web, la plupart du temps pour afficher un message politique, religieux ou contestataire vis-à-vis des produits de l’entreprise. Pour faire cela, l’attaquant peut mener différentes attaques :
Rechercher le compte et mot de passe d’accès à une interface d’administration ou à un service d’échange de fichiers (par exemple FTP ou WebDav) qui permet de déposer les données du site Web sur le serveur,
Exploiter une vulnérabilité dans le serveur Web, le serveur d’application, le CMS utilisé ou l’application elle-même,
Compromettre un hébergeur pour défacer les sites de l’ensemble de ses clients.
La compromission d'un site Web
La compromission d’un site Web utilise les même vecteurs d’attaque que le défacement mentionné précédemment, mais l’attaquant aura d’autres buts. L'impact ne sera donc pas seulement un défaut d’intégrité du site Web. Parmi les actions possibles de l’attaquant, on peut mentionner :
Le vol des données stockées sur le serveur et sur sa base de données, par exemple les données personnelles des utilisateurs (dont leurs comptes, mots de passe, adresses mail ou physique, etc.). Il pourra revendre ces données personnelles (un marché le rémunère au volume, type de données et leur fraîcheur). Avec des bases de comptes et mots de passe, il pourra essayer d’accéder à d’autres sites en ligne dont les mêmes utilisateurs pourraient être clients. De manière générale, l’attaquant pourra aussi voler sur les serveur des données de paiement par carte bancaire.
Le piégeage des pages hébergées sur le site pour y ajouter un code qui tentera d’exploiter une ou plusieurs vulnérabilités des navigateurs Web (ou de leurs greffons) qui se connectent sur le site. Cela permettra à l’attaquant du site Web de compromettre un grand nombre de postes de travail. Ainsi, il pourra ensuite voler leurs données ou réaliser des dénis de service distribués, comme nous avons pu le voir juste avant.
La mise en indisponibilité du site Web, en supprimant du contenu, ajoutant des bugs dans le site, ou encore en redirigeant vers le site d’un concurrent.
Dans le chapitre suivant, je vous détaillerai comment les attaquants mènent des attaques plus évoluées.
En résumé
La typologie de l'attaquant importe peu, il faut d'abord définir quoi protéger, maintenir un impact acceptable et parer de manière générale aux vecteurs d'attaque identifiés.
L'impact s'exprime en matière de Disponibilité, Intégrité, Confidentialité et Traçabilité.
Différents types d'attaque auront des impacts différents :
un déni de service sur la disponibilité,
un défacement sur l'intégrité,
une compromission de site Web à la fois sur la disponibilité, l'intégrité, la confidentialité et la traçabilité.