Dans une étude de 2019, F5 Labs constatait qu’une majorité des compromissions réussies dans l’année (51,8 %) était causée par des attaques contre les systèmes d’authentification de sites ou d’applications web menées par des robots. Dans la plupart des cas, l’attaque réussissait grâce à l’usage d’identifiants dérobé auparavant par hameçonnage ou force brute. Autant dire, sans rien de très sophistiqué !
Une fois volés, ces identifiants étaient jusqu’à présent surtout utilisés directement pour se connecter à la place des utilisateurs légitimes sur le service en question. Mais aujourd’hui, les pirates sont passés à la vitesse supérieure : dans le cadre d’attaques dites de « bourrage de comptes » (credential stuffing), ils essayent en masse leurs identifiants volés sur de nombreux autres services, en espérant que les internautes imprudents les réutilisent sur d’autres sites (et en particulier sur des webmails d’entreprise, qui permettent ensuite de monter d’autres escroqueries).
Ce problème est désormais accentué par le fait que tout ce « travail » de bourrage de comptes est réalisé massivement par des robots indésirables, qui bien souvent parviennent à contourner les contrôles anti-bots.
Voici donc tout ce qu’il faut savoir sur ce type d’attaque est comment s’en protéger :
Pour être vraiment efficaces, les attaquants doivent pouvoir essayer un maximum d’identifiants en un minimum de temps. Cela exige, évidemment, une automatisation poussée. Ils utilisent pour cela des robots capables d’orchestrer des campagnes de bourrage de compte de manière automatique.
Parmi les outils populaires dans le domaine, on peut citer Sentry MBA1, OpenBullet2, BlackBullet, Snipr, STORM et Private Keeper. Mais les attaquants s’appuient également sur des outils d’administration open source légitimes tels que Wget, Selenium, PhantomJS et cURL afin de simuler un navigateur normal.
Pour effectuer une telle attaque, l’outil a évidemment besoin d’une liste de comptes à soumettre aux sites visés. Ces listes sont tout simplement un fichier de noms d’utilisateurs (généralement des adresses électroniques) et de mots de passe.
La plupart proviennent de sites web qui ont été piratés au préalable, et qui ne protégeaient pas suffisamment bien les mots de passe de leurs utilisateurs : après un (plus ou moins) long travail de cassage, les pirates disposent alors des logins et des mots de passe en clair pour tous les utilisateurs des sites compromis. Et il y a comme cela des milliers de sites compromis…
Ainsi, l’attaquant qui ne serait pas parvenu à obtenir par lui-même ses listes d’identifiants volés (par hameçonnage notamment) peut facilement se tourner vers les places de marché du Dark Web pour y acheter des listes prêtes à être importées dans ses outils d’attaque.
De nombreux sites n’ont souvent pour se protéger qu’un pare-feu applicatif web (WAF) de base, voire rien du tout. Et certains WAF ne détectent pas ou ne se défendent pas contre les attaques bourrage d’identifiants. Ils sont en effet avant tout conçus pour bloquer les requêtes malformées et les exploits web, et non ce qui ressemble en tout point à une connexion légitime de la part d’un utilisateur tout aussi légitime. Certes, il y en aura beaucoup à la fois, et beaucoup seront en échec, de sorte que cela pourrait paraître suspect. Mais encore faut-il que le site web surveille activement les tentatives de connexion infructueuses et réagisse en temps réel à toute augmentation soudaine.
Dans les faits, de telles attaques par bourrage d’identifiants sont, au mieux, confondues avec une attaque par déni de service. Ce qui, en termes de risque, n’a rien à voir si l’attaque réussit !
Et si le site ne s’écroule tout simplement pas sous l’afflux des demandes d’authentification répétées (l’on a même vu des cas où l’infrastructure dorsale a cédé), la politique de sécurité peut être de bloquer la page d’authentification ! Ainsi, soit le site est inaccessible parce qu’il n’a pas résisté, soit les clients ne peuvent pas s’y connecter ! Dans tous les cas, c’est une perte !
Pour protéger ses actifs web contre ce type d’attaque, les propriétaires de sites et d’applications web peuvent déjà prendre quelques mesures de défense de base. Celles-ci comprennent notamment l’inspection et le blocage des sessions web, ce que certains WAF savent faire par défaut. Si l’outil d’attaque ou le bot est relativement simple, alors l’agent utilisateur (le nom utilisé par un navigateur web pour s’identifier auprès d’un serveur web) peut être repéré et bloqué.
Une autre défense de base consiste à utiliser des listes d’adresses IP de mauvaise réputation afin de les bloquer. De telles listes sont souvent basées sur l’origine géographique de la connexion (pas toujours très fiable), l’identification d’adresses IP provenant d’attaques antérieures, ou encore des listes de réputation fournies par des tiers. Ces méthodes restent simples à mettre en œuvre, mais permettent déjà d’éliminer un bon nombre de mauvais acteurs.
Un autre outil utile pourrait être la limitation du nombre de tentatives de connexion. Mais il s’agit dans les faits d’une mesure à double tranchant, car comme cela s’applique à la fois aux attaquants et aux clients, il peut être délicat de trouver le bon équilibre entre protection et frustration.
Enfin, l’étape ultime parmi les mesures élémentaires consiste à ajouter un test CAPTCHA au processus de connexion. L’inconvénient est que les CAPTCHA peuvent non seulement gêner les clients (qui n’a jamais pesté devant ces obligations d’identifier un feu tricolore ou un passage piéton introuvable, ou de déchiffrer une suite de lettres absolument incompréhensible ?), mais ils peuvent aussi constituer un obstacle difficilement surmontable pour les personnes handicapées. D’ailleurs, certains grands e-commerçants l’ont bien compris et limitent leur utilisation des CAPTCHA car ils constatent une baisse du chiffre d’affaires sur les pages d’achats ainsi protégées.
Naturellement, les agresseurs ont tenté de s’adapter à ces mesures, et ils ont développé toute une série d’outils et de techniques efficaces pour cela. Leur point commun : ils tentent de faire passer leur bot pour un humain.
Première cible des pirates : les fameux CAPTCHA ! De nombreux outils d’attaque disposent tout simplement de plug-ins optionnels permettant de fournir des réponses à des milliers d’énigmes CAPTCHA connues. Et quand elles manquent à la liste, les criminels n’hésitent pas à embaucher de vrais humains pour enrichir ces résultats continuellement à la chaîne.
Les chercheurs de F5 Labs ont d’ailleurs publié récemment une analyse détaillée du marché de ces résolveurs pirates, et observent qu’à cause de ces derniers, les CAPTCHA présentent plus souvent un casse-tête pour les humains que pour les bots.
Et les pirates ne s’arrêtent pas là. De nombreux outils de credential stuffing sont aussi capables d’imiter un vrai navigateur. Pour cela, la manière la plus simple (simpliste, même !) d’y parvenir consiste tout simplement à imiter un agent utilisateur connu : le bot s’annonce comme étant un Chrome ou un Firefox traditionnel, et tout le monde le croit (c’est pourquoi ce « user agent » n’est pas une information très fiable pour la sécurité web)
Un peu plus subtil, les robots peuvent également usurper l’en-tête « referer », qui indique l’adresse de la page par laquelle le navigateur arrive. Cet en-tête peut permettre aux sites web de vérifier (sans grande assurance non plus) la légitimité du chemin emprunté par un internaute (son clickstream, en marketing numérique).
Bien qu’elles soient simplistes, nombre de ces techniques de base peuvent suffire à échapper aux blocages les plus basiques d’un WAF.
Mais il y a encore mieux : alors que certains outils sécurité tentent d’identifier les « vrais » humains aux mouvements de leur souris ou au rythme de leurs frappes au clavier, les pirates se sont donc mis en tête… d’imiter ces caractéristiques aussi ! Par exemple, l’outil pirate BezMouse simule les mouvements de souris d’un humain avec des courbes de Bézier pour contourner les défenses antibot !
En outre, les attaquants utilisent rarement un ensemble de robots parfaitement identifiés. Une fois les premiers bots trop connus (et donc inutilisables), ils disposent de nombreux autres ordinateurs personnels compromis à travers le monde, ou encore d’équipements connectés (on repense notamment aux fameuses caméras de vidéosurveillance détournées par le botnet Miraï) pour lancer de nouvelles vagues d’attaques.
Ces bots fonctionnent en outre souvent sur des connexions Internet grand public, et bénéficient donc d’un adressage IP dynamique qui change continuellement. Ce qui rend le blocage basé sur l’origine géographique inefficace, car les attaquants utilisent des bots répartis à travers la planète entière. En outre, la plupart des outils d’attaque par bourrage d’identifiants disposent d’options de configuration permettant de charger et d’utiliser de nouvelles listes de relais de connexion, permettant de brouiller encore un peu plus les pistes.
Et comme si cela ne suffisait pas, les attaquants peuvent aussi configurer leurs bots pour échelonner les attaques et se répartir efficacement entre les plages d’adresses IP. Cela signifie que les bots peuvent arriver par vagues successives à différents moments et depuis une multitude d’endroits, ce qui réduit largement l’efficacité des défenses basées sur la limitation du débit et le blocage d’adresses IP.
Combinées aux autres techniques, celles-ci permettent d’assurer aux bots des chances de succès non négligeables pour franchir les défenses des sites ou des applications web ciblées et soumettre massivement leurs identifiants volés.
En fin de compte, il n’y a guère de secret : les meilleures défenses contre ce type d’attaques doivent être au même niveau de sophistication.
Cela commence par la collecte d’une série d’informations fiables sur l’internaute et son navigateur. Ces facteurs sont ensuite pondérés à l’aide d’un apprentissage automatique qui permettra d’éliminer une grande partie des robots. Les systèmes anti-bots intelligents pourront ensuite repérer la prévisibilité des actions pseudo-aléatoires de la souris et du clavier. En outre, ils pourront adopter une approche plus active et interroger le navigateur de l’utilisateur pendant la session web. Cette interrogation aura notamment pour objectif d’identifier les caractéristiques d’un navigateur réel sur un ordinateur réel (comme la capacité à exécuter JavaScript).
Enfin, même les combinaisons de login et de mot de passe peuvent être examinées en temps réel pour vérifier si elles font partie de bases de données d’identifiants connus pour avoir fait l’objet d’une fuite.
En définitive, la stratégie idéale pour se protéger contre ces attaques plus complexes qu’il n’y parait au premier abord est de rendre la tâche difficile aux pirates, en augmentant le coût et la complexité d’une attaque afin de rendre celle-ci aussi indésirable que possible.