Compte rendu hack.lu 2009

Mon 02 November 2009 by cedric

Nous voici de retour de la conférence hack.lu 2009 qui s'est déroulée du mercredi 28/10 au vendredi 30/10 non loin de la ville de Luxembourg. Autour des conférences, plusieurs activités comme des workshops ou des challenges (cryptographie et reverse engineering) étaient au rendez-vous...

Voici un petit résumé des conférences que j'ai trouvé intéressantes :

1) Workshop - Bypassing the Perimeter: Client Side Exploitation

Billy K Rios a effectué un workshop dans lequel il présente, ou rappelle, quelques idées intéressantes :

Les mots de passe sauvegardés par Firefox sont chiffrés lorsque l'utilisateur utilise un mot de passe principal, et déchiffrés lorsque le navigateur en a besoin ; par conséquent, une méthode de forensics peut être utilisée pour retrouver ces mots de passe lorsqu'ils sont en clair. Il est aussi possible d'utiliser des outils, comme ceux présentés ici. Attention donc à la confiance que l'on donne à ce genre d'outils single sign-on...

L'auteur a enfin souligné le problème qu'ont certains navigateurs Web à mélanger dans une seule page du contenu distant (provenant d'un site Web) et du contenu local, comme le menu de la page, car il est constant et donc stocké localement. Il a pris l'iTunes Store en exemple. La distinction entre local et distant n'est plus définie et ceci peut être utilisé par des attaquants.

2) Analyzing Word and Excel Encryption

Eric Filiol présente ses travaux sur la sécurité du chiffrement utilisé dans les documents Microsoft Word et Excel. Les slides sont disponibles ici.

L'auteur précise tout d'abord que le chiffrement par défaut dans Microsoft Word et Excel (jusqu'à 2003) utilise un simple XOR (avec une clef en dur dans le document) et qu'il ne faut bien entendu pas l'utiliser.

Il détaille ensuite le second chiffrement, à base de RC4, utilisé jusqu'à la version d'Office 2003. Le vecteur d'initialisation du RC4 est stocké à une adresse fixe dans le document, ce qui ne pose pas de problème a priori puisqu'il est regénéré pour chaque document. Malheureusement, cet IV ne change pas lorsque le document est modifié. Ainsi, l'auteur a présenté le cas où il existe plusieurs révisions d'un même document. Typiquement, ceci se produit automatiquement lorsqu'un document est modifié sur une machine, car des versions temporaires sont créées et supprimées. Ainsi, alliées à des méthodes de forensics, il est possible de retrouver les différentes versions d'un document et d'attaquer le protocole RC4 compte tenu qu'il est initialisé de la même manière sur les différentes versions du document. L'auteur ne retrouve donc pas la clef mais est en mesure de déchiffrer les documents en utilisant des méthodes de statistiques sur la langue utilisée (français, anglais, etc.).

L'auteur montre donc qu'il n'y a a priori pas de problème d'implémentation dans le protocole RC4, ni dans celle du système d'exploitation qui consiste à supprimer (partiellement) les fichiers temporaires. Cependant, dans la vraie vie, la combinaison de ces différents paramètres rend possible l'attaque présentée.

3) New advances in Office Malware analysis

Frank Boldewin présente un framework qu'il a développé pour analyser les malwares pour la suite Office. Il utilise pour cela des méthodes variées comme GetEIP scan, Kernel32.dll scan, API hashing scan, ou la détection d'appels indirects de fonction. Il cherche également à détecter des chaînes de caractères suspicieuses. Ses slides sont disponibles ici et son framework ici.

4) Fun with extension malware

Candid Wueest présente ses travaux sur les extensions pour Firefox. Une telle extension est un fichier .xpi, correspondant en réalité à une archive zip. L'auteur souligne tout d'abord que 99% des extensions ne sont pas signées, et que donc les utilisateurs ont l'habitude de voir le message d'avertissement lors de l'installation d'une extension. Les statistiques sur les extensions font plutôt peur : 17 millions de téléchargements par jour, 150 nouvelles extensions par jour !

L'auteur explique qu'une extension peut faire à peu prêt tout et n'importe quoi : utilisation de raw sockets, modification de l'interface graphique pour que les alertes des certificats n'apparaissent pas, modification de fichiers (modulo les droits avec lesquels le navigateur est exécuté), etc.

Il explique également qu'une extension peut modifier une autre extension. Il cite l'exemple des extensions AdBlock Plus et NoScript. La première bloque les publicités et la seconde bloque les contenus dynamiques côté client (JavaScript, Flash). Lorsque NoScript se met à jour (très régulièrement...), l'extension ouvre une page Web pour afficher les nouveautés de la nouvelle version, et cette page contient de la publicité. Les développeurs de NoScript ont donc modifié l'extension AdBlock pour que les publicités de leur site ne puissent pas être bloquée par AdBlock. Les ripostes se sont ensuite enchaînées, allant jusqu'au dysfonctionnement total d'AdBlock Plus, via du code chiffré contenu dans NoScript. La guerre s'est finalement bien terminée et tout est revenu dans l'ordre.

Tout ceci me rappelle une partie de la conférence faite par Julien et Christophe l'an dernier...

5) PDF- Penetration Document Format & malicious PDF origamis strike back

Didier Stevens, Guillaume Delugré et Fred Raynal nous ont fait une présentation groupée du format PDF et des risques que l'on pouvait encourir avec ces fichiers lorsqu'ils sont lus par Acrobat Reader. Il était à mon avis très intéressant d'avoir deux points de vue complémentaires sur le sujet.

Il est inutile de rappeler que les fichiers PDFs contiennent maintenant du JavaScript et de nombreuses fonctionnalités (trop ?) avancées qui permettent aux créateurs de malwares de s'amuser. Un premier bon réflexe consiste à ne pas ouvrir les fichiers PDFs dans un navigateur Web, car aucune alerte n'est affichée (contrairement à un visualiseur PDF classique). De plus, il n'est pas nécessaire d'utiliser du code externe pour effectuer des actions malveillantes, puisqu'il est par exemple possible d'exécuter une requête HTTP POST en utilisant du code PDF natif.

Quelques lecteurs alternatifs à Adobe Reader : Foxit Reader, Sumatra PDF.

Pour rappel, des outils ont été développés par leurs auteurs respectifs, à savoir PDFiD et origami pour effectuer une analyse sur les fichiers PDFs et manipuler ce format. Voici la présentation en français présentée par le lab à SSTIC 2009. Les slides de la présentation de Didier pour hack.lu 2009 sont disponibles ici.

6) Exploiting Delphi/Object Pascal

Ilja van Sprundel présente ses recherches sur les possibilités d'exploitation sur un code compilé par Delphi.

Ses conclusions sont que les résultats sont sensiblement identiques à un code compilé avec un compilateur C, que ce soit d'un point de vue audit de code et/ou exploitation de vulnérabilités. Du point de vue de la pile, il n'y a pas de vérification de débordement. Concernant le tas, les équivalents malloc/free sont GetMem/FreeMem en Delphi. Les métadonnées utilisées pour la gestion du tas peuvent être réécrites dans le cas d'un heap overflow de manière à détourner le flot d'exécution. Enfin, il précise qu'il est possible de minimiser les risques en utilisant des techniques de "Range-checking" ou "Overflow checking".

7) Workshop - Traveling Hacksmith: The Traveling Hacksmith

Après nous avoir fait sa présentation sur Ownage 2.0, Saumil Shah a présenté lors d'un Workshop les techniques utilisables pour contourner des portails captifs. Ses expériences dans différents hôtels ont démontré qu'il est possible de se faire passer pour quelqu'un d'autre et donc d'être facturé pour des temps de connexion que l'on n'a pas forcément fait. En effet, les portails captifs sont très souvent mal sécurisés (champs "mal cachés", injections SQL, modification de la chambre possible, etc.). Les slides de sa présentation faite à hack.lu en 2007.

NB: Bravo à Jean-Baptiste pour sa performance sur le challenge Reverse Engineering :)