Le Web 2.0 et ses insuffisances
Sommaire Danger et but des attaques en Web 2.0 Problématique de Traces Rappel des attaques existantes Le DNS Pinning Cas d’école: Stormworm Le piratage accessible à tous Défenses et solutions Futur de ces attaques
Danger et but des attaques Code exécuté sur le poste client, de manière transparente Vol d’identifiants (mail, sites) Données bancaires Prise de contrôle du poste Rebond pour attaque Attaque réseau local Attaque orientée Web
Problématique de traces Le navigateur possède un cache Les résultats de requête Ajax n’y sont pas nécessairement stockés, ils peuvent être aisément écrasés A la fermeture du navigateur il ne reste plus rien: Aucun journal ne recense l’activité réseau Tout était en mémoire vive et sera réalloué très vite
Rappel des attaques existantes Cross Site Scripting Injections SQL HTTP Smuggling Web cache poisonning Phishing Vol de session Anti DNS Pinning Ajax
DNS Pinning Mécanisme de protection pour protéger l’utilisateur des détournements faits sur le DNS Le navigateur met en cache le résultat de la requête du domaine et le conserve pendant toute la session courante Par exemple: www.nbs-system.com se résout en 212.43.229.196
DNS Pinning Problème Pour être compatible avec les bascules de serveur DNS, une entrée du cache de DNS Pinning est vidé lorsque le site demandé est indisponible.
Anti DNS Pinning Par exemple, sur un site avec deux serveurs frontaux: www.nbs-system.com 212.43.229.196 62.23.95.18 Pendant toute la session utilisateur, le site nbs-system sera associé avec la première IP retenue par le navigateur: considérons 212.43.229.196 Si le serveur à cette adresse est indisponible; le navigateur effectuera une autre requête DNS. A ce moment précis, une personne malveillante pourrait renvoyer une réponse DNS pour détourner www.nbs- system.com vers 123.123.123.123
Anti DNS Pinning L’intérêt: Il est possible de faire basculer le navigateur d’une adresse IP à une autre sur un même nom de domaine Cette possibilité permet de contourner le mécanisme de défense bien connu: « Same Origin Policy » Cette bascule DNS reste « lente », il est nécessaire de faire jouer les Timeout pour que le navigateur décide que le serveur est indisponible
Rappel: Same Origin Policy Empêche un document (Web) chargé d’un emplacement de récupérer ou changer des propriétés d’un autre site URL Résultat Raison http://www.example.com/dir2/page.html Succès Même serveur et protocole http://www.example.com/dir/autre/page2.html http://www.example.com:81/dir2/autre.html Echec Même serveur et protocole mais port différent https://www.example.com/dir2/autre.html Protocole différent http://en.example.com/dir2/autre.html Hôte différent http://example.com/dir2/autre.html
DNS Pinning Le véritable problème émergent est posé par les plugins, qui peuvent effectuer des connections par eux-mêmes Il est possible de charger un objet actif (flash, java ...) d’une adresse, de « rebinder » celle-ci puis d’ouvrir du trafic vers une autre destination (par exemple, intranet)
Potentiel Ces plugins ouvrent donc la porte à une nouvelle génération de possibilités offertes par nos navigateurs Web : Le navigateur permet d’effectuer de l’http La fonction XMLHTTPRequest fournit un moyen pour effectuer du « tcp » séquentiellement Flash9 permet d’utiliser des sockets TCP Java fournit le support de TCP et UDP
Scénario Il est possible de contourner la « Same Origin Policy » et d’avoir plusieurs Ips sur un même nom de domaine Il est possible d’utiliser des <Iframes> pour transformer le navigateur en « routeur » La logique de communication est faite en Javascript
Scénario de DNS Rebinding
Scénario de DNS Rebinding
Scénario de DNS Rebinding
Scénario de DNS Rebinding
Scénario de DNS Rebinding
Scénario de DNS Rebinding
Ajax Design des applications Ajax non conventionnel: Il est très aisé de mettre en place la logique applicative côté client, et de ne pas suffisamment verrouiller celle-ci côté serveur La majorité des risques de sécurité liés à Ajax proviennent d’implémentations légères côté serveur
Stormworm Un vers particulièrement complexe et destructeur. Utilisation d’un mix entre ingénierie sociale et polymorphisme rendant inefficace la détection. Un vers possédant des vecteurs d’infection en perpétuelle mutation. Le vers Stormworm a tout d’abord été envoyé par e-mail à différents utilisateurs. Il semblerait que les premières versions datent même de Janvier 2006 même si c’est surtout en Janvier 2007 que la vériable attaque a réellement commencé. Par la suite l’utilisateur se retrouve sur des pages web dont le contenu change toutes les heures, toutes les demi heures ou même parfois à chaque chargement de la page. Il s’agit d’un script javascript tentant d’executer automatiquement le malware. Le malware une fois installé utilise de nombreux autres vecteurs d’attaques tel que par exemple des technologies rootkit ainsi que des techniques de covert channel très intéressante mais ce n’est pas le sujet pour le moment. Nous pouvons voir et c’est très intéressant (du moins il faut essayer de le faire croire) que le malware utilise de très nombreuses et variées techniques d’ingénéries sociale. Ainsi l’utilisateur se retrouve a être hameconné lors de sa visite sur des sites pour adultes, lors de sa consultation des résultats de la NHL (ligue de hockey américaine) ou plus récemment à la réception d’un message du type : ‘Quelqu’un a flashé sur vous veuillez télécharger la petite carte que cette personne vous a très adorablement et amoureusement écrite’. Peu de défense existent à l’heure actuelle à moins de refuser le traffic peer2peer.
Stormworm Apparu en début d’année, ce vers utilise des fonctionnalités avancées, signe de la maturité croissante des codes malveillants. StormWorm est en effet divisé en plusieurs composants, chacun étant dédié à une tache précise : Backdoor, relais SMTP, sniffer d’adresses de messagerie, propagateur, module d’attaque DDoS, utilisation de peer to peer pour les mises à jour.
Mpack : Le piratage s’industrialise Programmé en PHP, adossé à une base de données MySQL, MPack a tout d'une application web traditionnelle. Il recense une librairie d’exploits visant les navigateurs qu’il est possible d’acheter (700$) et des mises à jour payantes existent Néanmoins, il n’intègre que les vulnérabilités publiées publiquement (metasploit, securityfocus) Donc alors MPACK se vends au prix de 700 $ même si il est possible d’avoir des versions de merde à partir de 350$. Le principe c’est qu’il est alors possible d’acheter de nouveaux exploits dessus pour la modique somme de 50 à 150$. Il s’agit surtout d’un agrégat de pages web contenant chacune des attaques publiques différentes ou l’utilisateur se retrouve redirigé selon Le navigateur qu’il utilise. Il semblerait qu’à l’heure actuelle plus de 10000 sites utilisent ce pack ce qui nous donne une idée de l’argent qu’on pu se faire les créateurs du malware. DEFENSE : D’après la créateur du MPACK le seul moyen d’être sur que l’on ne sera jamais infecté par le malware est d’utiliser Le navigateur opera en désactivant le javascript et les plugins.
Mpack Comme toute application « professionnelle », un suivi de statistiques existe Les statistiques fournissent le nombre de personnes infectées par pays
Mécanismes de défense Désactiver Javascript? Désactiver les plugins Se protéger de l’anti DNS Pinning: DNSWall et Proxy Naviguer sur des sites de confiance?
Technos XAML, nouveaux vecteurs d’attaque ? La technologie Silverlight de Microsoft utilise ce langage permettant de très nombreuses actions ainsi qu’une interaction accrue avec le système d’exploitation. Une exposition aux risques de sécurité accrue. L’accroissement de l’importance du rôle des navigateurs pose de nouveaux et nombreux problème de sécurité. Donc en fait on entends parler de ces technologies depuis 2004, mais c’est surtout maintenant que la véritable évolution de ces technologies va se produire. En fait Silverlight est surtout une alternative à flash en bien plus puissante. La puissance est ici un problème de sécurité étant donné que cela signifie que le script aura un éventail de possibilités beaucoup plus large. Pour le prouver notons que microsoft a inclus à Silverlight une classe entière d’API appellée ‘security’. Qui dit qu’un onglet sécurité est présent dit également qu’il sera mal utilisé par les créateurs de page web ce qui impliquera de nouvelles erreurs récurrentes sur ces pages. Le XAML est en langage basé sur XML ce qui les rends extrèmement pratique à écrire. Il devient alors un jeu d’enfant de réaliser des applications XAML fonctionnant un peu de manière évenementielle à la manière d’un programme VB ou C sharp. Nul doute que par le futur des techniques d’attaque venant abuser les navigateurs par le biais de Silverlight vont voir le jour. DEFENSE : dure à identifier à l’heure actuelle. Utiliser un logiciel comme NoScript sur Firefox qui bloque les scripts Silverlight.
Attaques indirectes Un lien sur un site web ou un ‘contenu actif’ type Ajax peut contenir une attaque déposée par un attaquant. C’est le visiteur du site web qui se retrouve alors à lancer l’attaque. Nombreux problèmes de responsabilité juridique. Cela signifie t’il qu’il suffit pour un attaquant de créer lui-même une page lançant une attaque et de surfer dessus pour revendiquer son innocence? Donc la c’est une attaque qui était déjà plus ou moins possible par le passé mais qui devient encore plus importante maintenant. Le slide représente bien les problématiques de cette attaque et je pense qu’il y a beaucoup de chose à dire dessus. DEFENSE : C’est mort ou alors faire que les navigateurs web vérifient si les connexions effectuées par une page web se cantonnent Bien au même site. Mais dans ce cas là cela veut il dire qu’on ne pourra plus aller sur d’autres site potentiellement hébergé sur Des ports arbitraires ;)
Questions
Cross Site Scripting Moyen détourné pour injecter du contenu dynamique (code client) au sein d’une page tierce: Possibilité d’en modifier le comportement, le contenu et de tromper l’utilisateur L’adresse de base de l’url est bien connue, pourtant la page ne réagira pas comme voulu à l’origine
Injection SQL Des paramètres « utilisateurs » sont repris directement dans le code de génération d’une page et envoyés à la base de données Il est donc possible de modifier la requête initialement prévue pour qu’elle réponde plus ou moins de résultat, voir plus d’informations et éventuellement exécuter des commandes sur le serveur de base de données