Termes expliqués n°6 : la sécurité (les attaques, et les défenses)

closeCet article a été publié il y a 7 ans 1 mois 6 jours, il est donc possible qu’il ne soit plus à jour. Les informations proposées sont donc peut-être expirées.

Cela faisait très longtemps que je cherchais un domaine dans lequel vous faire un nouvel épisode. Et finalement, c’est dans un moment de grande fatigue et de quasi-sommeil que j’ai eu l’inspiration. Par chance, si je n’ai pas noté l’idée sur le coup je l’avais encore en me levant le lendemain. Allez hop, plongée dans ce monde merveilleux de la/l’in- sécurité.

Disclaimer : ce n’est pas un guide exhaustif, ni une collection de démonstrations. Aussi, j’essaie dans cette série de rester accessible au plus grand nombre. Donc si j’écorche légèrement certains concepts techniquement avancés, pas la peine de hurler au loup, dites vous que c’est nécessaire.

Botnet

Contraction de Robot Network, c’est le nom qu’on donne à un réseau de machines infectées par le même type de malware (terme générique regroupant plusieurs types de virus), qui obéit à un contrôleur unique. Une fois sous le contrôle d’un attaquant, ces machines peuvent servir à toutes sortes d’attaques, comme on va le voir tout de suite.

Parmi les plus célèbres botnets de ces derniers temps, Mirai (qui a contribué à l’attaque record sur OVH – 1Tbps, soit l’équivalent de 350000 connexions ADSL à 3Mbps), Avalanche (démantelé récemment, mais en activité pendant plus de 7 ans, et actif dans 180 pays), Zeus.

(D)DoS

Commençons par le type d’attaque qui est probablement l’une des plus populaires ces temps-ci avec la montée en impuissance de l’internet infernal des objets. Le Déni de Service dans la langue de Nabilla (un déni de cerveau) consiste à rendre un service indisponible, quelque soit le moyen. En DoS « simple », on peut tenter de faire planter l’application qui se trouve derrière le site. Dans sa version distribuée (d’où le double D), on va saturer le service de requêtes (ça peut aussi aboutir au plantage notez bien). Voyez la connexion d’un serveur comme un tuyau, il s’agit de boucher ce tuyau avec de la merde, empêchant le trafic normal de passer.

C’est ce qui est arrivé il y a quelques mois à un fournisseur de services DNS qui s’est retrouvé dans l’incapacité de vous dire vers quelle machine vous tourner pour contacter Twitter, Netflix, et d’autres. Tout ça par un Botnet de caméras connectées pas du tout protégées (ni par le fabricant ni par les utilisateurs). Pas pratique pour ces services particulièrement utilisés de par le monde. NextINpact en a d’ailleurs fait un bon article (comme très souvent).

Ransomware

Autre saloperie très à la mode et amené à exploser en 2017 notamment sur mobiles, ce type de « virus » s’amuse à chiffrer (j’ai bien dit chiffrer, et non pas crypter) vos fichiers et vous réclame une rançon pour vous filer ensuite la clé permettant de récupérer vos fichiers.

Vous trouvez que ça parait pas crédible ? en tout cas, ça rapporte beaucoup, donc on voit mal les criminels lever le pied dessus. D’autant plus que l’on voit arriver des versions en JavaScript qui s’exécutent directement dans le navigateur Web, principal outil d’un appareil connecté de nos jours.

Trojan, le trop célèbre

Vous en avez forcément entendu parler. Le cheval de Troie est une vraie saloperie qui s’invite sur votre appareil pour en donner le contrôle à un criminel. Les possibilités sont dès lors nombreuses là encore, et ça peut aller de la transformation en machine à spam, à la participation à un botnet (de ceux qui pratiquent le DDoS), ou encore l’espionnage pour vous piquer des informations. Et si vous êtes chanceux, c’est tout ça à la fois, d’autant que le cheval de Troie est avant tout une saloperie qui n’aime pas être seule et invite ses camarades à la fête (un peu comme un apéro Facebook qui tourne mal).

C’est un type de saloperie pas aussi vieux que l’informatique, mais pas loin. Et pour ceux qui ne connaissent pas la légende grecque à laquelle ça fait référence, un peu d’histoire s’avère nécessaire.

Amplification DNS

Une attaque par amplification repose sur un principe simple : la réponse à une question est plus grosse que celle-ci. Forcez la machine à qui vous posez la question à envoyer la réponse à quelqu’un d’autre, et voilà. Ajoutez une petite dose de distribué là-dedans (grâce à un Botnet), et vous pouvez faire tomber facilement une cible quelque soit sa taille.

Ici j’évoque le DNS qui est le vecteur le plus courant et le plus visible puisqu’il impacte la disponibilité de services Web. Mais on a eu le tour il y a pas mal de temps sur des jeux vidéos, notamment Call of Duty 4.

SQL Injection

Le SQL est certainement le langage le plus utilisé dans le monde des sites Web, derrière HTML et CSS. C’est le langage utilisé pour dialoguer avec la base de données, qui est chargée d’enregistrer, d’organiser et de fournir le contenu de votre site. Par exemple tout le texte des articles, les paramètres du thème et des extensions de ce site sont stockées dans une base MySQL (MariaDB en pratique, mais c’est pareil).

Une attaque par injection consiste à tenter d’exécuter du SQL sans y être autorisé, typiquement en exploitant un moteur de recherche, mais pas uniquement, n’importe quel champ de formulaire peut être attaqué.

Et c’est simple à comprendre : quand vous cherchez un mot, le site construit ce qu’on appelle une requête SQL à partir de ce mot pour ressortir les articles correspondants de la base. Si vous ne faites pas assez attention dans votre code, alors vous pourrez insérer une autre requête en plus du mot clé, ce qui vous permet, pour prendre l’exemple le plus courant, de récupérer une liste d’utilisateurs et de mots de passe (pas en clair, mais attaquable), et quand on sait que les utilisateurs réutilisent souvent les mêmes identifiants, c’est très intéressant pour un pirate.

Si les détails techniques vous intéressent, Wikipedia est votre ami (contrairement à Google).

XSS, ou Cross-site scripting

Le XSS consiste à injecter du contenu dans un site pour vous pousser à lancer des actions plus ou moins arbitraires. Apparemment la description n’est pas super adaptée (il n’y a pas forcément plusieurs sites impliqués), mais elle se résume ainsi : si on peut ajouter du contenu sur un site, interprété par le navigateur autrement que comme du texte (d’où la notion de scripting), alors il y a potentiellement une faille.

Ce genre de faille a fait les beaux jours des pirates de boites mails au début des années 2000 quand les Webmails permettaient d’exécuter tout et n’importe quoi, puisqu’on pouvait forcer le navigateur à envoyer le cookie de connexion à un attaquant qui pouvait alors prendre le contrôle de la boite mail sans connaître le mot de passe.

Une fois n’est pas coutume, l’article français de Wikipedia est assez didactique sur le sujet.

RCE, ou ACE, même combat

Remote Code Execution ou Arbitrary Code Execution, à l’image du SQL, on force le site à exécuter du code qu’on lui fournit alors qu’il ne devrait pas l’exécuter. Je vois malheureusement trop souvent ce genre de failles sur des sites qui ne sont pas bien entretenus (WordPress et/ou plug-ins pas à jour, mais il n’est pas le seul), ils finissent généralement en machines à spam, voire hébergent carrément des pages promettant des contrefaçons de marques de luxe à pas cher (des pages souvent en chinois bizarrement).

CSRF, le fourbe

Le Cross-Site Request Forgery est un peu plus compliqué à expliquer, mais c’est pas grave. Il s’agit de forcer un visiteur d’un site à lancer, à son insu, une action sur un autre site. Pour cet autre site il y a une faille s’il accepte une telle requête sans plus de vérification, un exemple étant la suppression ou la modification d’un article sur un blog depuis un autre blog, et rien ne vaut mieux qu’un bon exemple que présente très bien le blog du hacker. Et si vous ne comprenez rien à la suite de l’article qui rentre dans les techniques de protection, c’est pas grave, sachez que vous en tant que surfeur vous n’avez que peu de moyens d’actions.

La brute force, comme son nom l’indique

Une attaque par brute-force consiste, notamment dans le cadre d’une authentification par mot de passe, à tester toutes les possibilités une par une jusqu’à trouver la bonne. Il existe tout de même des techniques pour accélérer les choses (notamment quand on voit le top 500 des pires mots de passe, malheureusement les plus utilisés), et évidemment des techniques pour se défendre (limiter le nombre d’essais par seconde/par ip, augmenter le délai entre chaque essai, ce genre de chose).

A l’heure actuelle, la plupart des services web stockent les mots de passe sous formes de condensat, qui n’est pas réversible. Pour comparer un mot de passe à celui de la base, on calcule un condensat avec la même méthode et on compare les deux. Le brute-force est alors un peu plus long, mais plus tellement quand on sait qu’une carte graphique récente peut calculer jusqu’à 25 millions de condensats par seconde en fonction de l’algorithme utilisé. Autant dire qu’il ne faut pas prendre à la légère les demandes de changement de mot de passe lorsqu’un service annonce avoir été victime d’une fuite de données.


Arrêtons un peu de parler de ce qui fait peur, vous vous doutez bien que l’on a développé des techniques pour se protéger, parce que de bonnes pratiques de développement ou d’utilisation ne suffisent pas toujours.

ASLR

C’est un poil technique mais facile à comprendre : pendant très longtemps, les programmes organisaient leur mémoire de la même façon d’un ordinateur à l’autre. Exemple bidon, Firefox stockant toujours un cookie temporaire permettant l’accès à une boîte mail à la même adresse mémoire. Un virus pouvait alors regarder à cette même adresse et récupérer le cookie, et ce quelque soit la machine, et aussi sur une même machine quelque soit le moment de l’attaque.

L’ASLR, pour Address Space Layout Randomization, soit Répartition au hasard de l’espace d’adressage, permet de définir une telle adresse de manière aléatoire, rendant beaucoup plus compliqué voire impossible d’identifier l’adresse en question (en dehors du programme lui-même évidemment, sinon il sait plus bosser), et donc de tenter d’y injecter ou d’en extraire du code/des informations. C’est une technique répandue de nos jours jusqu’au matériel, qui a globalement fait ses preuves, même si malheureusement la plaie du Web, à savoir le JavaScript, permettrait de malmener cette protection.

Firewall

Un pare-feu est chargé de faire le gendarme dans les possibilités de se connecter à une machine. Par exemple sur un serveur on ne va laisser que la possibilité d’utiliser le Web, mais pas le FTP (transfert de fichiers), et n’autoriser que quelques adresses IP à administrer ledit serveur (via SSH sous Linux ou RDP sous Windows). Tout le reste sera bloqué en entrant, et il est possible de faire de même en sortant. Il est aussi possible de moduler par visiteur son nombre de requêtes simultanées. Enfin bref, de contrôler à un niveau plus ou moins élevé ce qui passe dans les tuyaux.

Sur un poste de travail on trouve souvent un autre type de pare-feu, dit pare-feu applicatif. On ne contrôle pas uniquement d’un point de vue du réseau, mais d’un point de vue de l’identité du programme qui veut accéder à l’extérieur. Si vous utilisez une suite de sécurité sous Windows, elles embarquent maintenant des règles prédéfinies pour des logiciels connus (ainsi que des jeux), ce qui fait que vous n’êtes pas forcément au courant qu’il y a un pare-feu applicatif à l’œuvre.

Sandbox

Le bac à sable est un terme regroupant plusieurs techniques ayant un but commun : isoler au maximum un processus d’un programme pour empêcher celui-ci, s’il est détourné, d’attaquer d’autres parties du système. On retrouve cette technique dans certains navigateurs Web pour tenter de contenir certains scripts malicieux (comme les ransomware), certains langages de programmation pour renforcer la sécurité à l’exécution du code. Voyez-le comme un parc pour bébés processus, ils peuvent jouer dedans mais pas en sortir (en tout cas c’est l’objectif).

Les antivirus modernes vous proposent parfois d’exécuter un programme au sein d’une sandbox, si vous n’êtes pas certains de sa provenance ou de sa propreté. Avast en a fait une présentation assez claire, bien qu’orientée vers leur produit, ce qui n’est pas une surprise; en français, ne boudons pas notre plaisir.

Honeypot

Le port-de-miel est un dispositif destiné à attirer un attaquant vers un environnement d’apparence identique à la cible mais conçu pour identifier un attaquant et prendre les mesures qui s’imposent : blocage, analyse…

Le pot-de-miel a ça de pratique qu’il permet, en analysant les méthodes de l’attaquant, de mieux se protéger par la suite. On le rend d’ailleurs parfois « sexy » d’un point de vue sécurité, c’est à dire montrer de manière presque explicite qu’il est vulnérable pour pousser les pirates à s’y attaquer.

Authentification à facteurs multiples

C’est pompeux comme nom de technique, mais c’est assez simple : plutôt que de saisir un bête couple utilisateur/mot de passe, on va vous demander en plus d’utiliser une autre méthode. Si l’une des deux n’est pas bonne, vous ne rentrez pas. Pour que ça fonctionne au mieux, il faut que les deux étapes reposent sur deux appareils différents. La plupart des services Web, réseaux sociaux en tête, vous proposent d’envoyer un code par SMS (il faut leur donner votre numéro de téléphone), code qui est unique et qui n’est valable que pour un temps limité. Steam vous envoie un mail quand vous vous connectez depuis un nouveau PC (ou que vous avez formaté), idem pour Mozilla quand vous configure Firefox Sync. On commence à voir aussi certains services utiliser une application mobile pour proposer cette sécurité supplémentaire.

Mais ça peut reposer aussi sur d’autres méthodes : empreinte digitale (avec le lecteur intégré sur mobile), scan rétinien, ou aussi une clé OTP, pour One-Time-Password, qui génère un code temporaire, synchronisé avec un serveur distant qui sera interrogé pour savoir si le code que votre clé fournit à un instant T est le bon.


Voilà, je m’arrête là, si vous en voyez d’autres, ou mieux, si vous avez rencontré d’autres termes liés à la sécurité que vous ne comprenez pas, n’hésitez pas à poser la question en commentaire, que ce soit moi ou un autre volontaire, vous aurez sûrement la réponse rapidement, et vous aurez alors appris quelque chose de plus. Ce qui ne fait jamais de mal 🙂

2 Commentaires
Le plus ancien
Le plus récent
Commentaires en ligne
Afficher tous les commentaires
Yannick Vollenberg
13/03/2017 19:49

Salut
Intéressant … je pense qu’il manque coté défense des outils comme IDS ( Intrusion Detection System) IPS (intrusion prevention system ), WTPS( wireless intrusion prevention system ) , DMZ (Demilitarized zone)

BibiSky51
BibiSky51
14/03/2017 00:10

Reflets publiait dimanche un article sur Cloubleed, avec un rappel sur le DoS