Biko Georges – Comment Sécuriser les Compétitions en Ligne

J’ai été sollicité récemment par une entreprise de renommée internationale pour effectuer des tâches en vue de l’élaboration des sites Web pour des compétitions en ligne. L”objectif de ladite compétition était d’évaluer une image téléchargée par des internautes et mise à la disposition du public pour son appréciation. Le vainqueur était celui qui devait obtenir le plus grand nombre de votes. Dans cet article, je vais partager avec vous certaines de mes expériences en matière de sécurisation (et de piratage) de telles applications.

Il existe différentes méthodes pour sécuriser une application de vote néanmoins, aucune n’est parfaite. Voici une liste non exhaustive de quelques applications, car vous les connaissez peut-être. Dans le cas contraire ,consultez les références ou recherchez-le sur Google).

Vue d’ensemble des méthodes

  1. Cookies – [lockercat]méthode la plus simple (à mettre en œuvre et à éviter). En bref, en tant que développeur, vous pouvez enregistrer sur l’ordinateur de l’utilisateur un petit fichier texte et en lire le contenu ultérieurement (du moins si l’utilisateur n’est pas un maniaque paranoïaque qui a désactivé les cookies). Evitez les cookies est aussi simple que de les désactiver, de les supprimer ou de les modifier. Mais cela fonctionne pour certains tricheurs moins expérimentés. Récemment (septembre-octobre 2010), un malin a mis au point Evercookies – une API qui utilise différentes méthodes pour stocker un équivalent « non supprimable » de cookies. C’est bien, mais cela ne fonctionne pas lorsque vous vous connectez selon une méthode différente, utilisez un navigateur Web (c-à-d. Curl) ou utilisez le mode « sans échec » dans votre navigateur.[/lockercat]
  2. CAPTCHA – cet acronyme signifie « Test de Turing public entièrement automatisé pour différencier Computers and Humans ». En d’autres termes, il s’agit d’un texte plus ou moins incompréhensible que vous devez retaper. Dans de nombreuses situations, cela vous aidera à éviter les gens qui voudraient écrire des scripts automatisés pour effectuer le sale boulot – bien que si votre captcha est nul, il est facile de le lire avec un script du type OCR. Si ce n’est pas le cas, il y a des Russes qui seraient heureux de vous aider de toute façon (je ne les ai pas testés ou approuvés de quelque manière que ce soit, je suis simplement impressionné par leur service – et vous le trouverez peut-être utile). Ce n’est toujours pas utile contre les gens qui s’asseyaient devant leur ordinateur 24h / 24 et 7j / 7 et appuyaient sur «voter» toutes les cinq secondes, puis retapaient leur mot de passe (plus d’informations à ce sujet plus tard).
  3. Lien de confirmation par e-mail – le vote ne sera compté que lorsque l’utilisateur clique sur le lien qui lui est envoyé par e-mail. Le principal avantage de cette méthode est que le processus prend plus de temps pour l’utilisateur (il est donc un peu plus difficile de voter en masse). Filtrer les votes illégitimes est possible, mais nécessite une certaine connaissance de la part de l’attaquant: vous pouvez bloquer les adresses électroniques jetables connues telles que spam.la ou 10minutemail.com ; vous pouvez voir si quelqu’un tente d’utiliser les capacités connues des services de messagerie gratuits (dans Gmail, les adresses sont connectées au même compte: example+something@gmail.com , e.xample@gmail.com , example@gmail.com, etc.); Vous pouvez suivre d’autres évasions dans l’analyse de publication – vous pouvez ainsi voir que quelqu’un a créé un alias fourre-tout dans son propre domaine ou utilise des adresses gratuites telles que john01@yahoo.com, john02@yahoo.com, john03@yahoo.com, etc.). Une extension plus ennuyeuse de cette méthode oblige les utilisateurs à créer un compte sur votre site.
  4. Facebook Connect – ce n’est pas toujours une bonne idée, mais parfois, la concurrence est dirigée vers les utilisateurs de Facebook. Alors, l’identifiant de l’utilisateur Facebook est une variable additionnelle, que nous pouvons prendre en compte (mais il n’est pas sage de s’en remettre à cela !)
  5. Limite IP – Limite d’un vote par IP (c’est-à-dire par jour). Cela semble être la meilleure idée, mais pas toujours. Par exemple, les fournisseurs d’ADSL ou de téléphonie mobile n’assurent pas leurs abonnés avec une adresse IP fixe, mais les changent chaque fois que la connexion est établie. Le réseau TOR peut être utilisé pour changer son adresse IP à tout moment. En revanche, les personnes appartenant au même réseau (réseau de bureaux, réseau domestique ou universitaire) ne pourraient pas voter, même si elles se trouvaient sur des postes de travail différent, car elles sont visibles à l’extérieur comme si elles se connectaient depuis le même hôte.
  6. Empreinte de navigateur – méthode agréable, que vous pouvez lire ici et ici . Il se trouve que votre navigateur laisse de nombreuses traces qui, combinées en une, permettent de préparer une empreinte digitale assez unique. Comme avec evercookies, bon pour les utilisateurs non avancés utilisant des navigateurs, mais complètement inutile si quelqu’un veut vous tromper en utilisant curl ou quelque chose du genre.
  7. Vérification par SMS – OK, à mon avis, cette méthode est la meilleure, mais les clients ne veulent pas la mettre en œuvre, car elle coûte cher. L’idée est simple – si vous voulez voter, vous devez donner votre numéro de téléphone portable. Nous vous envoyons des SMS avec du code que vous devez utiliser pour valider votre vote. La règle est que vous ne pouvez enregistrer qu’un seul vote par numéro de téléphone portable (c’est-à-dire par jour, par semaine ou un et un seul). Il est hautement improbable que quelqu’un dispose de nombreux numéros de téléphone mobiles différents.

Comme vous pouvez le constater, aucune des méthodes n’est parfaite excepté le 7. Ma suggestion est de combiner certains d’entre eux et, en dernier recours, d’ajouter des techniques d’analyse des votes après leur placement – pour plus d’informations plus tard.

Étude de cas

Pour illustrer le problème, je vais partager avec vous un cas parmi tant d’autres. Il s’agissait d’un projet entre une grande entreprise internationale que je ne citerai pas ici et la mienne. L’idée de ce concours était assez simple : des personnes téléchargeaient des images du sujet donné, puis les visiteurs devaient voter pour les photos qu’ils préféraient. Le gagnant recevait un prix exorbitant équivalent à environ 3 500 dollars. Le niveau de fraude était assez élevé vu l’enjeu de la compétition.

Donc, c’est là que se trouvait le serveur de production – mon application – dont je ne pouvais pas m’y fier, avec une protection faible, attendant quelques coquins.

J’ai présenté au client certaines recommandations, basées sur la liste ci-dessus. Malheureusement, le client a décidé d’employer les techniques les moins efficaces et les plus vulnérables: protection par CAPTCHA, cookies et limite IP. Il ne voulait pas employer de méthodes exigeantes ou coûteuses. En fait, je n’avais pas le choix.

Ce n’était pas une grande surprise pour moi quand, un ou deux jours après l’annonce du concours, certaines des entrées ont commencé à gagner plus de voix que d’autres. À ce stade, la bataille commençait. Premièrement, j’ai exporté une liste de votes par image, avec leur temps et leurs adresses IP. J’ai parcouru des blocs de propriété intellectuelle dans les bases de données (disponibles en ligne sur www.ripe.net [Europe], www.arin.net [Amérique du Nord], www.apnic.net [Asie et Pacifique], www.lacnic.net [Amérique latine] & Carribean] et www.afrinic.net[Afrique]) pour obtenir les informations du FAI pour les votes. Il s’est avéré que les tricheurs (quelques-uns votaient pour leurs propres entrées respectivement) utilisant des connexions ADSL ou mobiles sans fil, qui permettent de modifier votre adresse IP lorsque vous réinitialisez votre modem. J’ai conclu qu’ils tapaient toujours manuellement les CAPTCHAS, car l’intervalle entre les votes consécutifs était important et (je l’ai trouvé assez drôle), le vote a commencé à 8 heures-10 heures quand ils se sont réveillés et se sont terminés vers 23 heures. – 1 heure du matin, quand ils se sont couchés. Pour empêcher ces personnes de voter, j’ai bloqué certaines plages d’adresses IP. J’ai observé que les électeurs légitimes n’utilisaient pas de réseaux mobiles pour voter de toute façon.

Cette action a provoqué une grande diminution du nombre de votes illégaux. Mais quelques jours plus tard, j’ai fait un constat un monsieur qui faisait des trucs marrants. Le schéma était le même: plusieurs votes enregistrés toute la journée, avec une pause pour dormir la nuit. Une chose était différente : les IP changeaient tout le temps, mais ils ne provenaient pas du même réseau. Ils venaient du monde entier ! L’Allemagne, puis les États-Unis, puis le Japon, la Chine, certains pays africains, etc. Je me suis vite rendu compte que cet individu utilisait TOR ou un réseau similaire. Heureusement, les règles du concours étaient strictes : seules les personnes de mon pays ont le droit de participer à la compétition. J’ai donc trouvé une base de données fournissant des informations sur le pays d’origine de chaque adresse IP (google pour « géolocalisation ip gratuite »). Deux heures plus tard, chaque vote de l’étranger – passé et futur – était invalide.

Pendant ce temps, j’ai renforcé la sécurité du site – l’utilisation de cookies a ordonné une exigence de variables de session chargées sur la page contenant la photo (juste avant le vote). Cela m’a permis de supprimer certains tricheurs inexpérimentés.
Pendant un moment, j’ai pensé que c’était fini – mais j’avais tort. Il y avait toujours une créature qui votait tout le temps. Il utilisait sans cesse des pratiques pour changer d’adresse IP et je n’avais pas le droit de censurer sa plage d’adresses IP, car il s’agissait du fournisseur d’accès Internet haut débit le plus populaire de mon pays (10 % de parts de marché). Une chose que j’ai remarquée, c’est qu’il votait tout le temps, même la nuit. C’était impossible à faire pour une personne normale, donc – j’ai conclu – il avait un script pour y parvenir mon (moche) CAPTCHA. Le remède était simple : j’ai trouvé un script open source avec des CAPTCHA plus sophistiqués et déformés et je l’ai mis en œuvre. En fin de compte, ses compétences ne suffisaient pas à résoudre le problème, alors qu’il était trop paresseux pour taper chaque CAPTCHA 12 heures par jour.
Finalement mon combat a été fructueux. Tout s’est terminé en happy-end. Le grand prix a été remporté par un couple récemment marié, qui a posté partout en ligne sa jolie photo et a demandé de voter. Autre chose que j’ai trouvée significative à ce sujet et à d’autres projets légitimes est que, lorsqu’on a analysé les sources de leurs votes (blocs IP), il s’est avéré qu’ils étaient répartis uniformément et sur un grand nombre de réseaux différents (c’est-à-dire quelques réseaux différents), tandis que les votes pour les projets des fraudeurs venaient en grand nombre de seulement quelques réseaux, avec une queue relativement courte des autres réseaux.

Conclusion

En somme, quelle leçon pouvons-nous tirer de cette expérience ? Dans certaines situations, vos ressources peuvent être limitées et vous ne pouvez pas appliquer de techniques sophistiquées pour protéger votre application néanmoins, la bonne information et la sensibilisation peuvent vous aider à vaincre le mal (bien sûr, vous pouvez « regarder »). dans les journaux de manière automatisée – c’est un sujet sur lequel je prévois de travailler, ayant une nouvelle expérience de ces projets).

Salut, mon nom est BIKO GEORGES, je suis Expert en Hacking Militaire spécialisé dans la Cyberdéfense et la sécurité Informatique avancée. Je suis multi-cerfié en sécurité infrmatique (CEH, CCNA, CHFI, LPT, RHCE, COMPTIA SECURITY+ et PRO+ SECURITY).De retour de l’étranger, j'ai mis sur pied des entreprises capables de lutter contre la mauvaise utilisation des systèmes informatiques.J'ai créé à cet effet : Le Centre de Cyber-Défense Avancée(CCDA), LE SMART HACKING SCHOOL(SHS) devenue ISA aujourd’hui, L’ONG EMANTIC, LE GROUPE D’ENTREPRISE NITRIX (Qui regroupe 8 autres entreprises), ACS, ESH, CHP..

Laisser un commentaire

fr_FRFrench
en_USEnglish fr_FRFrench