Making network protocols go crazy

Aller au contenu | Aller au menu | Aller à la recherche

Compte-rendu CanSecWest 2010 - jour 3

Friday March 26

08:30 - 09:00 Breakfast

09:00 - 10:00 Stuff we don't want on our Phones: On mobile spyware and PUPs - Jimmy Shah, McAfee, Inc

Chercheur en antivirus pour la mobilité. Les spyware sous plateformes mobiles : - adware : pas aussi intrusifs que sur PC - PUP : Potentially Unwanted Program, comme des serveurs Web ou FTP intégrés au téléphone. Mais aussi des programmes qu'une entreprise ne souhaite pas voir sur ses téléphones comme Metasploit, Aircrack, ...

En Indes, le gouvernement a demandé un accès de type spyware aux téléphone Blackberry. Ils ont aussi réduit la taille des clés de chiffrement de 256 bits à seulement 40 bits. Ils ont aussi obtenu que les serveurs Blackberry soient en Indes, pour pouvoir monitorer le trafic. Le gouvernement a aussi prétendu avoir cracké le chiffrement "non-corporate".

Etisalat a poussé une mise à jour sur les Blackberry. Un reverse engineering a montré que cette mise à jour intégrait du lawful interception. Une copie des mails était envoyée à une adresse Etisalat. Ce reverse a été simplifié puisque l'update était au format .JAR, au lieu du format .COD.

Une famille de vers iPhone (OSX/RRoll.A-B) modifiait l'image de fond et désactivait le démon SSH. L'auteur était Ashley "ikex" Towns.

Attention, certains spywares sont distribués via Android Appstore (cas d'une App de banking). Il existe aussi des Appstore alternatifs aux originaux, où le contrôle est difficile.

Présentation sans intérêt, j'ai arrêté de la suivre à la moitié. En gros, il fait un historique des recherches en développement spyware pour téléphones mobiles faites par d'autres, et présentées à BlackHat et autres conférences (Spyphone (iPhone), Phonesnoop (Blackberry)).

A noter aussi un PoC de botnet (WeatherFistBadMonkey), mais jamais releasé. Envoi des emails, fait du DDoS et fournit un reverse shell.

La présentation s'est achevée parce que l'ordinateur de l'orateur n'avait plus de batterie ... à 10 minutes de la fin. Un mec de l'organisation est venu l'aider pour rétablir le courant. Ça donne le niveau. Sur le mur tweeter de CanSecWest, les gens se lâchent sur la présentation. Je ne suis pas le seul à l'avoir trouvé pourri.

10:00 - 10:30 Second Breakfast

10:30 - 11:30 Practical Exploitation of Modern Wireless Devices - Thorsten Schroeder and (contributing) Max Moser, Dreamlab Technologies

Les gars sont du Dreamlab Technologies et de remote-exploit.

C'est un talk sur l'injection et l'écoute de données pour les claviers sans fils basés sur les fréquences 27 MHz. Keykeriki est un petit dispositif hardware, ils ont aussi fait le firmware. Le talk n'aborde pas l'infrarouge ou les technologies bluetooth.

Ça parle des communications en sens unique sur 27 MHz. Le protocole n'a pas de support pour le chiffrement (enfin c'est à la charge du fabriquant d'implémenter çà), et les messages ne sont pas protégés contre le rejeu. Ils ont reversé le protocole des claviers Logitech et Microsoft. Chaque frappe au clavier provoque l'envoi d'un paquet avec le keyboard ID, la touche, et l'état (appuie ou relâche).

Ils ont releasé la V1 de Keykeriki en may 2009, et il pouvait juste sniffer les claviers Microsoft, Seimens-Fujitsu et Logitech. Une SDCard pour le stockage des données, et du cracking à la volée du chiffrement. L'injection était limité, parce que certains bits du protocole n'était pas encore vraiment reversé.

Nordic Semi NRF24xxx permet d'avoir un receiver, et jusqu'à 6 appareils connectés (concept du multiceiver). Le protocole supporte un CRC (mais optionnel). Pour sniffer, il faut tout d'abord trouver l'adresse de l'appareil. Il faut identifier le préambule, et seulement ensuite on peut trouver cette information. Cette-ci est sur 5 bytes. et le préambule fait 8 bits. Un heuristique est utilisé pour trouver cette adresse, avec un certain niveau de False Positive. Keykeriki a une interface JTAG pour le débogage.

Microsoft utilise du crypto hardware AES-128 dans ses claviers. Ensuite, une explication sur les différents paquets et leur format. Les claviers Logitech utilisent aussi le chiffrement AES-128.

Note : certains appareils utilisés pour le vote sont basés sur ce genre de hardware. Certains appareils sont aussi présents dans les voitures.

Démo sur un clavier Micorosoft, remote command execution par injection de frappes clavier. Ce n'est pas du simple replay, ils ont implémenté les fonctions d'un vrai clavier. Injection possible jusqu'à 75 mètres ...

Ils ont l'intention de fournir une version gratuite et une version commercial du produit, ainsi qu'un module Wireshark. Toutes les infos sur http://www.remote-exploit.org/.

11:30 - 12:30 RFID Hacking at Home - Dr. Melanie Rieback, Vrije Universiteit Amsterdam

Elle bosse dans le lab ubisec, Security in Ubiquitous Computing. C'est le même genre de travail qui a été fait dans la présentation précédente.

Les menaces à prendre en compte : - lecture non autorisée - clonage - DoS - tracking - écoute

Existe-t-il des malwares pour RFID ? - exploits - vers - virus Via l'exploitation de buffer overflow dans le format des messages. Rien de connu pour l'instant.

Note : utilisation de Google Trend pour voir l'évolution d'un sujet (comme RFID malware).

Elle bosse sur un dispositif nommé RFID Guardian. Un dispositif mobile de pentesting et firewalling pour RFID. C'est un projet vendor-neutral, tout est disponible sur http://rfidguardian.org/. Le but est de montrer au monde que les RFID ne sont pas suffisamment sécurisés. Le dispositif coûte dans les 500 euros à fabriquer. Le bootloader est GPL. Ils cherchent des sociétés qui voudraient collaborer avec eux.

Fonctionnalités: - emulation de tag RFID - attaques de rejeu - attaques de relai - selective jamming - tag spoofing - RFID firewall (ACL) => n'autoriser que les bonnes personnes à accéder au tag RFID => mais ça n'empêche pas une personne d'écouter le trafic. - implémentation de SSL. Ça marche, mais c'est très lent - RFID fuzzing (Bstorm)

12:30 - 13:30 Lunch

Remise des prix de PWN2OWN, les gagnants se voient remettre un super laptop et un gros chèque de 10,000 CAD.

13:30 - 14:30 Advanced Mac OS X Physical Memory Analysis - Matthieu Suiche

Il a créé sa propre société MoonSols. Spécialisé dans le forensics. C'est notamment l'auteur du Sandman framework et de Windd.

Pourquoi ? La mémoire non-volatile ne suffit pas. Actuellement uniquement base sur x86 (32-bits) Mac OS X. Uniquement de l'acquisition basée sur du software. En hardware, le mapping mémoire n'est pas le même.

Accès à la mémoire physique : - soit accès au /dev/mem, mais c'est désactivé par défaut (et on ne peut pas rebooter, c'est du live forensics) => donc utilisation bcopy_phys() - soit utiliser l'hibernation (Safe Sleep)

Safe Sleep : créé une image compressée (format WKDM). Et peut éventuellement être chiffré (mais désactivable sans rebooter). Le but de l'analyse est d'éviter la recherche de chaine en mémoire de manière aléatoire. Méthodologie: - recherche des symboles kernel - initialisation du gestionnaire de mémoire - parcourir l'espace d'adressage virtuel du kernel - collecter l'information.

On obtient : - la liste des threads - les processus - information sur la machine - les descripteurs de fichiers - des informations réseau - des fichiers ouverts et leur contenu - des mots de passe ...

Windows stocke les symboles dans des fichiers séparés (.PDB). Sous Mac OS X, ils sont stockés dans l'exécutable kernel. Pour lire les données d'adresse des symboles kernel, ils faut utiliser une formule de conversion. S'ensuit une description du parcours de l'espace d'adressage virtuel. Maintenant, on a les sympboles kernel et le gestionnaire de mémoire est initialisé, tout l'espace mémoire kernel est maintenant parcourable.

D'abord récupérer les informations de version du système. Puis la liste des systèmes de fichier. La liste des extensions kernel via le parcours de la liste chainée kmod. Puis la liste des processus BSD via la structure kernproc, ainsi que les informations associées dans la structure de données du processus. Reconstruction de la syscall table.

Détection de rootkit : si un offset dans une entrée syscall n'est pas dans les symboles kernel, y'a un soucis ^^

Démo. Commandes info (version du kernel, mémoire, CPU), mount (listage des filesystems avec leur mountpoints). syscall pour la syscall table (avec offset associés, et si l'entrée est correcte pour détecter la modification d'une entrée comme par du hooking). kext pour avoir la liste des extensions kernel. ps pour la liste des processus avec parent ID. On peut "zoomer" sur un processus via la commande pid. Puis démo en zoomant sur le processus loginwindow. Une simple commande exploite une faiblesse de ce programme divulguée début 2008 qui affiche en clair le mot de passe utilisé pour se loguer.

Site : http://www.moonsols.com/ Twitter : msuiche

14:30 - 15:30 Full Process Analysis and Reconstitution of a Virtual Machine from the Native Host - James Butler, MANDIANT

Une présentation qui se rapproche très fortement de la précédente. Cette fois c'est sous Windows que ca se passe. Il fait l'historique des dispositifs hardware permettant un accès à la mémoire physique (PCI, bus DMA, PCMCIA, ...). Ensuite les méthodes software (BSoD, \.\DebugMemory, ...). Il n'est plus possible aujourd'hui depuis un processus userland d'avoir accès à la mémoire physique (Doh!). Outils : Windd (Matthieu Suiche), Memoryze (MANDIANT). Description du mécanisme de translation d'adresse mémoire sous x64. Des pages de débogueur kernel Windows.

VMSafe (disponible dans VMWare vSphere) fournit de l'introspection de la mémoire et de l'état des CPUs, du filtrage des paquets réseau, monitoring et contrôle complet des processus, montage des filesystems depuis le guest sur le host. XenAccess tente d'implémenter les même fonctions.

Démo. Son outil se branche sur une machine virtuelle VMWare en cours d'exécution (un guest Windows). Il se branche sur le fichier .vmem que VMWare utilise pour ses machines en cours d'exécution. Donc, outil est vraiment poussé, beaucoup de choses sont explorés dans la mémoire des processus.

Vraiment trop orienté Windows internals, je n'ai pas vraiment suivi (désolé Charles). L'orateur n'était pas aussi didactique que le précédent.

15:30 - 16:00 Break

16:00 - 17:00 Through the Looking Glass: An Investigation of Malware Trends and Response Activity - Jeff Williams, Microsoft

Historique de la détection des botnets. Puis zoom sur le malware Win32/Waledac. Il parle de la bêtise des utilisateurs qui cliquent sur n'importe quel lien. Waledac installe aussi automatiquement d'autres malwares une fois la machine infectée. S'ensuit une énumération d'autres malwares ainsi que leur distribution à travers le monde. L'idée est que chaque botnet est distribué de manière différente à travers le globe. Certains sont plus répandus en Russie, d'autres en Chine, d'autres encore aux États-Unis.

Tous les botnets n'utilisent pas le même canal de C&C : IRC, HTTP, P2P, autre.

Waledac est un acteur majeur de production de spam. Son canal de C&C se base sur différents protocole : HTTP, P2P et l'architecture est basé autour d'une structure hiérarchique de type fast-flux DNS. Tous les domaines sont en .com. Microsoft a bossé avec Verisign (gestionnaire des .com) et les forces de l'ordre pour couper ce botnet. Ce botnet possède un middle-tier pour masquer la tête du réseau. Cette opération s'est appelée "Operation b49".

Cela a créé un précédent : le shutdown de certains domaines. Pour la première fois, on a montré qu'un botnet basé sur du P2P pouvait être contrôlé par une autre personne que le hurder.

Maintenant, grâce aux enseignements de cette opération, Microsoft lance le projet MARS (Micrososft Active Response for Security) pour couper le plus de botnet possible. Des centaines de milliers d'heures de ressource humaines sur ce projet.

Présentation était très courte et sans détails techniques, en forme de "Microsoft sauveur du monde".

17:00 - 18:00 The Jedi Packet Trick takes over the Deathstar: taking NIC backdoors to the next level - Arrigo Triulzi, Independent Security and Networking Consultant

Le speaker est loin, il est connecté via Skype. Talk originellement donné à PacSec 2008. Il a découvert par hasard que le NIC faisait du checksum offloading. Il s'est posé la question : peut-on en tirer quelque chose ? Il utilise une carte Broadcom (Tigon, basé sur un processeur MIPS), avec un firmware téléchargeable sur le site du fabriquant. L'idée est d'implémenter une attaque depuis une carte NIC1 vers une carte NIC2. Une carte n'a pas l'habitude de gérer une attaque venant de l'intérieur. Via PCI-to-PCI. Comment créer un rootkit directement dans une carte ?

Pré-requis : - NIC1 pour communication externe - NIC2 pour communication interne - nVidia GPU (on dirait que l'attaque repose en grande partie sur le fait qu'il y ait un kit de développement nVidia) - EFI BIOS

nicssh utilise plusieurs fonctions : findnic pour trouver une autre carte en scannant le bus PCI. grabnic pour injecter un firmware sur une carte vulnérable. forward pour mettre en place du forwarding de paquets. Il y a aussi nicfw (le firmware modifié).

La possibilité de faire du remote update nécessitait des droits admin. Cela fonctionne en envoyant un WOL suivi d'un message UDP dans un format particulier. Mais pousser un firmware via UDP est risqué, on risque de perdre des morceaux.

En gros, il injecte un nouveau firmware à distance, et ouvre un shell sur la carte réseau ...

Amélioration suivante, utiliser un module EFI pour charger nicssh 2.0 sur la NIC. Ce module chargera le nouveau firmware et installera nicssh sur le GPU. Le but final étant d'obtenir la persistance pour se protéger contre le re-flashing de la NIC. Le module EFI est stocké dans le SATA pour gérer ca.

Ces problèmes de sécurité viennent de failles crypto, d'une mauvaise gestion des clés (PKI FAIL). Une autre idée est d'utiliser les ucode pour mettre à jour les CPU (les errata). Les updates de ucode ne sont pas persistantes lors des reboots. EFI est encore la solution. C'est encore du work-in-progress, plein de choses sont encore à explorer dans ce domaine.

18:00 - 19:00 C8H10N4O2 and C2H6O (and teardown)