Hier soir a eu lieu la Hackito Ergo Sum Pary à la Rotonde, très bonne soirée, ambiance festive et beaucoup de discussions dans les nombreux salons de la Rotonde. Malgré une soirée tardive une très grande majorité des personnes sont présentes ce matin, les conférences reprennent.
Advances in IPv6 Security par Fernando Gont
#HES2012 2012-04-14 10h-11h
Fernando nous présente les motivations de sa présentation, le premier point c’est que tôt ou tard nous aurons à déployer ipv6, ipv6 est un challenge et vous avez plusieurs possibilités, faire l’autruche et attendre, se suicidé en activant ipv6 pour dire que c’est fait sans se soucier des enjeux, la troisième option c’est de prévenir le suicide et faire le nécessaire pour sa sécurité. Beaucoup de recherche de sécurité ont été fait sur ipv6, il va nous présenter les différents points sur lesquels il faut faire attention.
A présent nous abordons l’adressage standard ipv6 basé sur l’adresse mac. L’autoconfiguration pour se cacher dans un range d’ip très grand est une mauvaise idée, le scan d’un range en ipv6 sera aussi facile qu’en ipv4 puisqu’il ne reste que 24 bits à la fin de l’adresse à chercher et qui correspondra à l’adresse mac de la carte réseau. Aussi on peut prédire le début en fonction des constructeurs des cartes (Intel, Broadcom, …). Le fait de pouvoir savoir quel constructeur de carte est sur une machine, c’est déjà donner un peu trop d’informations. Autre problème en utilisant l’adresse automatique ipv6, on peut effectuer un tracking de machines. Quand on change de réseau, la fin de l’adresse correspondant à l’adresse mac ne change pas, seul le préfixe change. Le IID d’une machine devient alors un super cookie persistant. Un début de solution c’est de changer de manière aléatoire l’IID mais cela devient compliqué à gérer à grande échelle et n’empêche pas le scan d’un range ip et ne résous pas entièrement la traque d’une machine. Microsoft remplace l’adresse mac par une IID aléatoire mais cet IID va rester statique par la suite, aussi cela ne résous pas le tracking de machine. Une solution stable pour générer une adresse aléatoire serait de faire une fonction qui prendrait en paramètre, le préfix, l’EUI64 modifié, le network id et une clef secrète. Le résultat serait une adresse stable et identique tant que l’on est sur le même réseau, l’adresse change à chaque changement de réseau. Cela conférerait la meilleure des solutions pour contrer le host tracking et le host scanning. Ce concept a été proposé à l’IETF 83 à Paris en mars 2012, le 6man est en train de voir comment adopter ce principe. Si ce principe passe le scan de réseau deviendrait plus compliqué voir quasi infaisable tandis que le tracking de machine perd son intérêt.
Fernando nous parle de la fragmentation des réseaux ipv6. La fragmentation se fait toujours sur les machines et non par les routeurs. Le souci c’est en fonction des OS, on peut prédire l’ID de fragmentation comme sur Linux 3.0, Solaris 10 et Windows 7. Linux et Solaris ont patchés une partie de la génération mais pas tout. Lorsqu’il s’agit de rassemblé les paquets, il y a plusieurs implémentations avec des résultats différents, la RFC-5722 a interdit les fragments en overlap. La plupart des implémentations actuelles reflètent les standards mis à jour. L’enjeu de la sécurité en ipv6 se situe principalement sur le premier saut réseau. C’est sur ce point que le maximum de sécurité doit être mis, filtrage, protections diverses.
Le firewalling de l’ipv6 est aussi un enjeu important. Un filtrage state less en ipv6 est impossible car on ne peut pas fragmenter le chain header. Le 6man tente de faire améliorer les choses et c’est en cours de travaux, présenté à l’IETF en mars 2012. Il y a un très gros travail pour réaliser cette implémentation, on suppose donc que ce travaille ne sera pas accomplie avant plusieurs années.
Que donne ipv6 vis à vis des DDOS? IPv6 ne répond pas aux adresses multicast. On lutte donc contre les smurf-like mais des options de type permettent de générer des paquets d’erreur ICMP en v6 et ce type de paquet est destiné aux adresses multicast. Cela ne devrait pas poser de problème si le multicast n’est pas utilisé à grande échelle comme il peut l’être en ipv4. Mais si beaucoup de réseaux connectés déploient le routage multicast on peut s’attendre à un nouveau type d’attaque DDOS. Le 6man s’occupe du problème et recommande que les paquets multicast ne doit pas susciter d’erreur ICMPv6.
En conclusion il faut garder à l’esprit que la plupart des vulnérabilités en ipv4 ont été ré-implémentée en ipv6 surtout sur la pression des entreprises qui souhaitent garder leurs modèles de sécurités. Il faut donc encore faire beaucoup de travail sur ipv6 mais pour cela il faut néanmoins le mettre en production pour l’améliorer par le retour de production.
Decomposing the Network to perform Attack par Carlos Sarraute
#HES2012 2012-04-14 11h-12h
Carlos nous présente les méthodes habituelles de pentesting et les outils associés comme Nessus, Retina, Core Impact, Metasploit. Ces outils limitent les actions humaines et le temps nécessaire. Ils permettent de faire des tests de grandes envergures de façon plus rapprochées. De nouveaux exploits sont intégrés et de nouveaux vecteurs sont ajoutés. Sur un scénario d’exemple, un attaquant prend la main sur un serveur web en dmz puis rebondit sur les postes utilisateurs pour pouvoir enfin attaquer les serveurs sensibles dans un autre lan. A présent Carlos reprend les différents termes comme vulnérabilité, exploit, Proof of Concept exploit, Exploit code pour montrer les différents niveaux de criticité que l’on peut rencontrer. On peut mesurer la probabilité de résistance à un brut force, la probabilité de succès d’une attaque, la quantité de trafic généré par un exploit et le niveau d’implication d’actions humaines par les utilisateurs ou par l’attaquant. On mesure aussi l’intérêt des machines cibles, typiquement des Windows non patchés. Ces données en fonction des failles possibles donnent des indicateurs de pertinence vis à vis du risque. Dans son entreprise il dispose de 748 machines virtuelles avec un large panel d’OS différent sous différentes versions. Son équipe peut ainsi lancer les outils de détection de manière récurrente avec les nouvelles failles découvertes et déterminer le risque de chaque. En fonction des probabilités entre deux exploits qui auraient plus ou moins de chances à être réalisée en fonction du temps. Une formule simple est de mettre le temps pour un exploit sur ses chances de succès, le taux sera faible déterminera l’exploit le plus pertinent à exécuter. Comme les chances de réussites ne sont pas à 100% il faut lancer les exploits dans l’ordre croissant de l’indicateur temps/chance. Carlos nous présente le cas où il faut combiner plusieurs exploits de manières parallèles et où il faut minimiser le temps passé. Lorsque les combinaisons sont étendues à tout un réseau, on parle d’attack tree, il faut alors trouver un chemin le plus efficace de manière mathématique. Le plus important est de pouvoir piloter des outils de pentesting à partir de l’arbre et des chemins choisis et de pouvoir récupérer les résultats pour les réinjecter dans l’arbre qui à nouveau choisira les prochains chemins.
Le souci de ce modèle c’est qu’un attaquant doit connaître de manière parfaite chaque machine à attaquer (version, patchs installés) sinon les probabilités sont fausses. Lorsque l’on ne connait pas exactement tous les composants d’une machine, les applications installées, cela ajoute un taux d’incertitude trop grand. La solution classique c’est de collecter un maximum d’informations par remote scan, récupération d’informations grâce à un complice. Sa solution est le modèle POMDP qui fait un mix intelligent de plans. La partie MDP pour Markov Decision Process qui se compose d’un état, d’une espace d’action, d’une fonction de transition et une fonction reverse. La partie PO pour Partially Observable consiste en un espace d’observation, la fonction d’observation et la croyance initiale. Le modèle parait compliqué mais il est solvable en faisant des approximations sur certaines connaissance des cibles. Les états peuvent être connus comme la structure du réseau qui ne bouge pas beaucoup dans le temps, les actions sont les exploits et leurs résultats succès ou échec, les scans qui rendent compte des états. Les retours des humains qui peuvent impacter les décisions du modèle. Les exploits sur une famille d’os permettent d’affiner la détection parfaite d’une version d’os ainsi que de son service pack car même un exploit pour un OS A d’une même famille retournera des résultats différents sur les OS B et C. Il faut ensuite déterminer le chemin d’attaque pour atteindre la cible. Les résultats du modèle mathématique en version graphique permettent d’apprécier l’attaque ayant la meilleure qualité et le meilleur taux de probabilité d’être effectuée.
Les avantages de cette approche est clairement un gain de temps, un taux de réussite plus élevé mais aussi le fait de mener des scans et des exploits uniquement sur les cibles nécessaires limitant ainsi considérablement la détection d’attaque.
Modern webapp hacking or how to kill a bounty program : Itzhak (Zuk) Avraham, Nir Goldshlagere
#HES2012 2012-04-14 13h30-14h30
Itzhak commence la présentation en parlant des motivations pour chercher des failles dans les webapps : l’argent et pour la honte que pourrait récolter certaines entreprises. Entre 1995 et 2011 on est passé de bug d’applicatifs clients à des bugs applicatifs des services (Google, Facebook). La première étape d’une recherche c’est de connaître sa cible. Pour cela il faut s’intéresser aux développeurs et aux chef d’équipes des entreprises qui souvent laissent des pistes de recherches sur leurs blogs. En suivant l’actualité de l’entreprise on peut exploiter des acquisitions externes qui n’auraient pas le même niveau de sécurité. En prenant l’exemple de Google, des nouveaux sous-domaines apparaissent régulièrement, wikipedia tient à jour une liste des acquisitions. Google acquiert une nouvelle entreprise toute les semaines depuis 2010!
Itzhak parle à présent de Google Calendar et d’une faille XSS dans le nom du calendrier. Le but est de chercher comment supprimer à distance un calendrier d’un compte utilisateur. Le but va être de partager un calendrier avec notre utilisateur cible. L’approbation des calendriers partagée n’est pas nécessaire. L’utilisateur envoie un mail à l’utilisateur avec une url vers le calendrier partagé. Il faut après spammer la victime par le partage répété du calendrier. A chaque partage un mail est envoyé. L’utilisateur va donc devoir supprimer plein de calendrier et lancer le xss tant convoité.
Nir aborde Google Feedburner où deux méthodes existent pour exploiter une faille xss dans le champs title d’un rss. Il faut envoyer une url de désabonnement à un utilisateur pour qu’en un seul clic sans confirmation la faille se révèle. Itzhak parle de Google FriendConnect où l’on peut forcer un utilisateur à supprimer un ami ou à changer son nom. Nir parle de Google Analytics qui n’échappe pas les requêtes entrantes dans le mode in-page. Ce qui fait que l’on peut envoyer un xss un administrateur de Google Analytics et lancer l’installation de ce que l’on souhaite sur son poste. Une des méthodes pour entrer en contact c’est de partager ses stats analytics.
On assiste à présent à différentes démonstrations vidéos. Toutes les fonctions de partage sont des vecteurs d’attaques et comme le contexte des webapps actuel fait un usage très conséquent de la fonction partage cela devient inquiétant.
Easy Local Windows Kernel Exploitation : Cesar Cerrudo
#HES2012 2012-04-14 14h30-15h30
Les failles exploitables sur les kernels windows sont très rares et ne sont pas durables entre les versions. Les techniques d’exploitations ne sont pas les mêmes en fonction des versions de Windows. Les méthodes ne sont pas simples à utiliser. Les zones de mémoires que l’on arrive à toucher ne concernent que de petites parties, quelques bits dans le meilleur des cas, ou l’on a juste la possibilité d’incrémenter ou décrémenter une valeur. Par contre l’avantage c’est que dans tous les cas on peut faire exécuter du code par le kernel.
Son idée est partie d’une publication en janvier 2010 de Matthew Jurczyk et Gynvael Coldwind sur l’exploit GDT et LDT Windows kernel. Ils utilisent la fonction NtQuerySystemInformation pour récupérer l’adresse kernel de processus du kernel. Ces adresses pointent vers des treads, des objets, des valeurs diverses. Cesar se pose alors la question de savoir si il n’y a pas moyen d’enlever les protections ACL de la plupart des objets de Windows faisant alors sauter toute protection de ces objets. L’autre but serait de pouvoir modifier les privilèges du token d’un processus. Pourrait on remplacer le token du precessus? Pourrait on faire cela sans exécuter de code par le kernel et donc ne pas avoir besoin d’accès shell système.
Cesar nous commente une démonstration enregistrée. Il récupère l’adresse du pointeur kernel qui l’intéresse. Il remplace la valeur présente par un NULL et cela a pour effet de faire sauter les ACL du processus visé. Cesar nous présente les variations d’exploitation dans les différentes versions de Windows notamment sur les différences d’attribut et les modes 32bits/64bits. Une fois qu’un processus obtient des privilèges plus élevé, on peut facilement le debugger, prendre le contrôle, restaurer des fichiers/répertoires, anonymiser un client après authentification, charger ou décharger des drivers, créer de nouveaux token d’objets, devenir une partie de l’OS.
Cesar montre différents exploits permettant d’obtenir les paramètres dont il a besoin et ceux lui permettant de les modifier. Si l’on remplace un token ou plusieurs token l’approche n’est pas la même. Sa conclusion est qu’exploiter les vulnérabilités des kernel Windows est très simple avec l’aide de NtQuerySystemInformation.
Yo Dawg, I Heard You Like Reversing… : Aaron Portnoy, Brandon Edwards
#HES2012 2012-04-14 15h30-16h30
Aaron et Brandon nous présentent leurs méthodes pour faire des recherches par reverse engineering. Je ne ferais pas de note sur ce sujet, ils sont très rapide dans leurs explications.
Fin de la conférence
Nous avons eu un debriefing sur le wargame qui se déroulait pendant la conférence, quelques présentation de 0days très courtes et très bien présentées. A présent la conférence se termine sur une table ronde sur l’éthique hacker vis à vis du full disclosure ou du limited disclosure des 0days, les black markets. Les points de vues viennent des hackers comme des parties plus légales avec un représentant de la Gendarmerie Eric Freyssinet.
Un merci aux organisateurs bénévoles pour ces trois jours forts sympathiques.