Photos NDH 2009

27 juillet 2009 – 8:24
News éclair : je viens d'apprendre sur le blogs de Virtualabs que les photos de la Nuit du Hack 2009 sont en ligne. C'est par ici.

RDTSC hooking sous Linux : théorie et pratique

14 juillet 2009 – 14:30
L'architecture x86 possède des subtilités parfois méconnues de beaucoup de développeurs. En effet, il existe une instruction assez spéciale, RDTSC, qui renvoie le nombre de cycles d'horloge depuis le démarrage du processeur. En 2007, un chercheur d'IBM présente au Black Hat une technique de hook basée sur cette instruction. En effet, il se trouve qu'il existe un flag dans le registre de contrôle CR4 permettant de désactiver cette instruction en ring 3, et de déclencher une exception #GP (int 13) lors de son appel. Via un hook de l'IDT par un driver codé maison, il devient donc possible de détourner les appels ring 3 à RDTSC, de filtrer les résultats et imaginer toutes sortes de choses. D'autant plus que RDTSC est couramment utilisée dans des application ayant trait à la sécurité, comme les méthodes d'anti-debugging ou de génération de nombres aléatoires...

Problème de multiboot Vista – XP

25 juin 2009 – 0:35
Je viens tout juste de me pencher sur un problème de multiboot avec mon ordi portable. Pour résumer grossièrement la situation, j'avais un triple boot fonctionnel entre Windows Vista, Windows XP et Ubuntu, et un beau jour je me suis décidé de supprimer la partition contenant Vista. Résultat : impossible de booter sur XP ; Grub me renvoie une erreur "Invalid device requested". Après quelques bidouilles, d'autres messages d'erreurs font leur apparition, comme "NTLDR is missing" ou "Invalid partition table". Finalement, après deux soirées d'acharnement, je parviens à refaire démarrer mon Windows XP. Je poste cet article dans l'espoir qu'il vienne en aide à ceux qui seront confronté à un problème similaire.

Nuit Du Hack 2009 : Et les vainqueurs sont…

14 juin 2009 – 22:17
Tant attendue, la NDH 2009 s'est terminée ce matin même. La péniche sur laquelle se déroulait l'événement battait son plein ; nous étions quasiment 200 à bord. Pour la première fois, le challenge était un Capture The Flag  au cours duquel se sont affrontés une demi douzaine d'équipes. Mais cette année, la team de Ghosts In The Stack n'était pas au complet car il manquait Heurs, contraint de ne pas participer au challenge vu qu'il fait désormais partie du staff. Ma team, répondant au nom de Trollkore (un trip IRC...) était donc composée d'Ivanlef0u, sh4ka, Pierz et Kal0n. Et c'est notre équipe qui a remporté le challenge ! Voici, rien que pour vous, un petit résumé de cette super nuit organisée par Sysdream. [EDIT 15/16/09 : slides et sources mis en ligne]

Conférence NDH 2009 sur GoRing0

14 mai 2009 – 0:50
Je me suis récemment lancé sur un nouveau projet perso, nommé GoRing0. Ce projet est parti d'une question existentielle que je me suis posée concernant les processus, ou plutôt les threads. Sous Linux et Windows, ceux-ci s'exécutent normalement en ring 3 (mode processeur userland), alors que les drivers s'exécutent en ring 0 (kernelland).  Ma question était la suivante : est-ce techniquement possible de passer un thread du ring 3 vers le ring 0 ? Attention, je ne parle pas de faire un appel à un code driver depuis un programme ring 3 par le biais d'une interruption ou d'un IOCTL, mais bien de passer une le code du thread lui-même en ring 0. Étant convaincu que la réponse à cette question est affirmative, je me lance dans la conception d'une preuve de concept : GoRing0.

Tunnez votre BSOD (Blue Screen Of Death)

30 avril 2009 – 20:58
Tous les développeurs de drivers et les reversers kernel vous le diront : quand on touche au noyau Windows d'un peu trop près, on a le droit à un écran bleu de la mort, ou BSOD (Blue Screen Of Death). C'est justement parce que je me suis pris un tas de BSOD que j'ai commencé à en avoir marre de voir des écrans bleus partout et à me poser des questions existentielles du genre : pourquoi l'écran bleu est-il bleu ? Est-ce possible de changer cela ? Oui, et je vais montrer dans cet article comment faire en ne modifiant qu'un octet en mémoire kernel. Matériel requis : une deuxième machine (une VM fait très bien l'affaire), Windbg, IDA PRO (facultatif) et quelques neurones.

Problèmes liés aux interruptions

21 avril 2009 – 20:52
Dans le cadre de mon stage, je m'intéresse au fonctionnement des interruptions de l'architecture x86. Il s'agit d'un mécanisme complexe mais extrêmement important pour comprendre comment un système d'exploitation arrive à fonctionner. Si j'écris ce post, c'est parce que je me suis pris la tête sur des problèmes qui y sont liés...  Je viens d'en trouver les causes, et je pense que cela pourra en intéresser plus d'un.

Conférences Nuit du Hack 2009

9 avril 2009 – 13:17
C'est désormais officiel : je présenterai deux conférences à la prochaine Nuit Du Hack organisée par Sysdream et l'équipe de Hackerzvoice. Ma première conférence sera l'occasion de présenter XeeK, un projet personnel en cours de développement dont le but est de fournir un framework pour exploiter facilement des failles XSS et démontrer leur puissance. L'outil n'est toujours pas fini, donc il va falloir que je fasse vite pour arriver à quelque chose de présentable... :p Le sujet de la deuxième conférence n'est pas encore décidé à 100%, mais une chose est sure : il traitera d'un domaine nettement plus applicatif et bas niveau. Je pensais au départ présenter InjecSO, mais je vais voir si je ne peux pas trouver un autre sujet encore plus intéressant et inédit...

Plongeon dans les appels systèmes Windows

28 mars 2009 – 12:53
Mon stage m'a donné l'occasion d'analyser en détails comment un appel système est réalisé sous Windows. Si vous vous demandez comment un programme utilisateur (ring 3) fait pour appeler une fonction s'exécutant en mode noyau (ring 0), alors cet article est pour vous. J'y explique toutes les étapes de la chaîne en partant du début (l'appel de fonction dans un programme quelconque) pour arriver au code de l'API en mode noyau. Pour lire cet article, des bases d'assembleur sont indispensables.

Stage chez Thomson R&D

25 mars 2009 – 16:48
J'ai commencé mon stage il y a maintenant une dizaine de jours chez Thomson R&D à Cesson-Sévigné. Comme prévu, mon stage a pour sujets principaux le reverse-engineering et le développement de drivers.  Pour être plus précis, le but du stage est de réaliser un conteneur sécurisé de données. Autrement dit, un module qui va contenir des données très sensibles et dont le but va être de les rendre inaccessibles de l'extérieur. Il s'agit d'un projet purement orienté recherche, et à part mon maître de stage, je suis seul à travailler dessus.