Making network protocols go crazy

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

SSTIC 2013 - jour 2

UEFI : bootkits

Pierre Chifflier & Sébastien Kaczmarek

Présentation conjointe pour cause de similarité au début, puis split pour les spécificités. Ça c'est du travail d'équipe.

BIOS vs UEFI : BIOS c'est vraiment vieux. C'est chargé de l'initialisation de l'ordinateur et de la découverte des périphériques. C'est aussi x86 only. Trop de limitations, d'où l'introduction de l'UEFI pour régler celles-ci.

Par rapport au BIOS, l'UEFI est très proche d'un OS (multiples couches réseau, support de différents file systems. Le MBR est remplacé par des binaires PE (32-bits et/ou 64-bits). L'UEFI est un vrai OS, avec des drivers (TCP/IP, VGA, ...).

Partie 1 : Sébastien Kaczmarek

L'implémentation officielle d'Intel est Tianocore (disponible sur sourceforge). Cette implémentation possède un serveur Web ... et un interpréteur Python. A noter que tout a été redéveloppé from scratch (libc, pile TCP/IP, parseurs PE, ...).

But de Dreamboot : corruption noyau, contournement de l'authentification et escalade de privilèges (sur SecureBoot non activé). Aucune exploitation de faille, ce sont les capacités offertes par le boot qui permettent ce genre d'attaque. L'idée générale est de poser des hooks de fonctions sur les différents composants EFI (fichiers .efi au format PE). Exemple : winload.efi. MsvpPasswordValidate() est la fonction finalement patchée pour contourner l'authentification Windows.

Pour l'élévation de privilège, l'idée est de parcourir la structure _EPROCESS (DKOM ?). Le bootkit Dreamboot est disponible sur le Github de Quarkslab. C'est une ISO qui permet d’acquérir les droits SYSTEM sous Windows 8.

Partie 2 : Pierre Chifflier

Cette fois, c'est un bookit matériel sur PCI. Même but : élévation de privilège, mais cette fois en utilisant une carte graphique PCI. Moins de 100 ko disponibles pour mettre le code. Pour les détails, voir les slides et le papier ;)

Programmation d'un noyau sécurisé en ADA

Arnauld Michelizza

Les protections actuelles sont réactives (bit NX, randomisation, ...), les vulnérabilités sont tout de même exploitées par les attaquants. L'idée principale est que pour éviter 80% des bugs d'implémentation de type buffer overflow ou integer overflow ou déréférencement de pointeur null, il faut utiliser un langage qui est garanti sans ce type de bug : Ada.

Langage toujours vivant aujourd'hui, et bien maintenu. Le portage Linux est Gnat. C'est un langage utilisé dans les applications critiques ou la vie humaine est en jeu.

Faisabilité d'écriture d'un noyau en ADA : 11000 lignes de code, 400 en assembleur. Pile IPv6, ext2, quelques drivers (clavier/souris). Le langage ADA fait des vérifications à la compilation, et à l'exécution. Cout en performance +65% de cycle d'horloge, et facteur 4 en taille. Les vérifications faites sont là pour interdire les buffer overflow & co.

Hack Android/Samsung

Etienne Comet

Différents types d'exploits : physique nécessitant un accès local, ou à distance. Ensuite, il est souvent nécessaire d'exploiter des failles locales pour élever ses privilèges. Ce talk se concentre sur ce dernier point, en attaquant directement le noyau.

Le noyau Android est un Linux patché avec des features spécifiques : binder, Ashmem, ... . Les constructeurs (tels Samsung) modifient aussi le noyau par eux-même. Ainsi, ils élargissent la surface d'attaque.

Le debug de ce genre de système n'est pas automatique avec les outils OTS. La voie royale est l'utilisation de bug de type information leak. Exemple du bug /dev/diag, exploitant copy_from_user() pour récupérer les données kernel space. C'est une faille spécifique à Android/Samsung.

Compromission d'un environnement VoIP Cisco

LEXFO

L'idée est d'attaquer le Cisco Call Manager. C'est le composant qui gère les échanges SCCP. Si accès root sur le Call Manager, on peut écouter l'ensemble du réseau VoIP. Il y a déjà eu des confs sur le sujet, mais personne ne s'est occupé du Call Manager en lui-même.

Attaque style black box pour commencer : ils ont exploité une injection SQL pour récupérer un mot de passe chiffré. En auditant le code en mode white box, ils ont déchiffré la clé : c'est la même pour tous les Call Managers. FAIL.

Après l'accès admin à l'interface Web, recherche de vulnérabilité d'exécution de commande. Faille trouvée ;) puis recherche d'une autre faille pour élever ses privilèges vers root. Un fichier Perl exécuté par l'utilisateur informix est dans le fichier sudoers sans avoir à entrer le mot de passe. Ce fichier appartient à informix. FAIL.

Ça finit par une démo d'exploitation à distance pour gagner un accès root via l'interface Web du Call Manager. Ce sont 6 failles 0-day exploitées (par un programme PHP dans la démo). Cisco n'a pas été contacté.

Observatoire de la résilience de l'Internet français

Guillaume Valadon

Rapport disponible http://www.ssi.gouv.fr/observatoire/ .

Note : outil pour faire des graphes de grands réseaux : GEPHI.

Sécurité des applications Android constructeurs et backdoors sans permission

André Moulu

Les applications vérolées se trouvent majoritairement sur les Market alternatifs. Ce sont souvent des applications payantes dévérouillées dans lesquelles un malware a été intégré.

La sécurité des applications est principalement basée sur l'utilisation UID/GID différents par application, et par de l'isolation de processus.

/system/app : 216 applications par défaut sur un Galaxy SIII contre 91 sur un Nexus 4. Bien sur, plus il y a d'applications, plus la surface d'attaque est grande. Une suite d'outils a été développée pour analyser ces applications (nommée ASA. Voir aussi Androguard). Ainsi, on peut facilement lister les applications qui utilisent telle ou telle permission (exemple : INSTALL_PACKAGES).

Exemple d'une vulnérabilité permettant de faire de l'élévation de privlège : recherche d'une application tournant en UID/GID privilégié, analyse du code source : on trouve une exécution de code arbitraire via l'appel d'un classique /bin/sh avec des paramètres non-filtrés. Allô quoi.

Beaucoup de vulnérabilités découvertes, une présentation très intéressante. Il faut lire le papier pour les détails.

Limites des tables Rainbow et dépassement par l'utilisation de méthodes probabilistes optimisées

Pierre Lestringant

L'écart de performance entre les rainbow tables et le brute force est de plus en plus réduit grâce aux GPU. Autre problème des rainbow tables, plus elle est grande (2 To, par exemple), plus les accès disques ralentiront le crackage.

L'orateur propose des solutions algorithmiques pour corriger ces problèmes de performance ; l'idée principale est de réduire la taille du fichier final en faisant des études probabilistes d’occurrences de suites de caractères afin de réduire le nombre de mot de passes "rainbow"isés.

La présentation est purement algorithmique, si ça vous intéresse, lisez l'article ;)

Les RUMPS :)

Quelques présentations ayant retenu mon attention :

  • MGCPScan && MGCPForge, des outils pour exploiter les faiblesses de la VoIP (RTC) => démo de MitM de comunication. Ca marche aussi sur Internet si la gateway MGCP est accessible depuis Internet .... (par Sn0rky)
  • Houracle : Proxy TNS pour faire du MitM sur Oracle TNS (par Nicolas Collignon)

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.

Fil des commentaires de ce billet