Author: LinuxFr.org

Voici un projet qui me (Wenzel) tient à cœur : pyvmidbg.

Le but est assez simple: se donner la capacité de déboguer l’état complet d’un système d’exploitation, tournant dans une machine virtuelle, en utilisant uniquement l’hyperviseur et l’accès au matériel de la VM.

L’idée en elle-même a commencé à germer lorsque je travaillais sur des outils d’analyse de malware basés sur l’hyperviseur, et, voyant leur efficacité pour l’analyse automatisée, j’ai petit à petit creusé pour transposer ces concepts afin d’aboutir à de puissants débogueurs interactifs.

Intérêt

Problématiques

L’intérêt d’un tel outil ?
Au-delà du besoin évident pour des analystes en sécurité d’analyser furtivement des malwares avancés, on peut trouver d’autres problèmes plus généraux liés aux API de débogage des OS :

  1. La visibilité (l’effet d’observateur), qui va potentiellement changer l’environnement du programme. Par exemple certains appels systèmes auront un comportement différent ;
  2. cet effet d’observateur peut parfois être volontaire, dans une tentative de protection de la propriété intellectuelle de certains OS ;
  3. les nouvelles fonctionnalités de sécurité des OS modernes posent des soucis de compatibilité avec la visibilité et le contrôle total que demandent les débogueurs.

Avantages

Déboguer depuis l’hyperviseur apporte aussi des bénéfices non négligeables:

  1. en virtualisant le démarrage depuis un hyperviseur chargé sur une clé USB, il est possible d’analyser dans une machine virtuelle l’ensemble de la séquence de démarrage d’un OS, et ce depuis le BIOS/UEFI ;
  2. les unikernels, images noyau embarquant une seule application, sont dépouillés d’un maximum de fonctionnalités pour être minimaux et rapides. Le stub de débogage est également supprimé, laissant à l’API de l’hyperviseur les seuls moyens d’accès pour un unikernel en production ;
  3. l’unification des outils de débogage : en rebasant nos débogueurs sur l’hyperviseur, il nous sera possible d’utiliser le même outil pour déboguer et suivre des processus, de l’espace utilisateur au noyau, et ce sur tous les OS !

Full-system debugging

Afin de résoudre ces problématiques et implémenter une solution pérenne, j’aimerais vous présenter la vision que j’ai de nos futurs outils de déboguage, travaillant en mode full-system:

pyvmidbg

  • les multiples stubs de débogage implémentent les protocoles standard pour supporter tous les frontaux ;
  • les stubs possèdent une connaissance du système invité, c’est-à-dire qu’ils sont capables de suivre et d’intercepter l’exécution d’un processus cible dans la machine virtuelle ;
  • la LibVMI permet de faire le lien avec les différentes APIs de VMI (Virtual Machine Introspection) des hyperviseurs cibles.

Démo

Comme une démo vaudra mieux que mille mots, je vous propose cette petite vidéo que j’ai enregistrée pour la conférence Insomni’Hack qui se tenait la semaine dernière à Genève.

Dans celle-ci, avec une VM Windows XP en nested, je montre comment :

  1. intercepter l’exécution de cmd.exe ;
  2. se connecter au stub en utilisant radare2 ;
  3. mettre en place deux points d’arrêt, en espace utilisateur sur ntdll!NtOpenFile, puis en espace noyau sur nt!NtOpenFile ;
  4. suivre des événements liés à ces points d’arrêt dans le stub, en ignorant les autres processus pour ne renvoyer de résultat que pour cmd.exe.

Pour aller plus loin, je vous ai également mis le lien vers la présentation.

  • Quel est votre avis concernant nos outils de débogages actuels ? J’aimerais avoir vos retours !
  • Je cherche à présent à implémenter le support pour Linux, et à comprendre comment l’état des threads est sauvé/restauré, et comment l’ordonnanceur passe de l’un à l’autre.
  • Vous êtes curieux ou souhaitez participer ? nous avons un Slack !

Dans l’espoir de vous présenter une meilleure version au FOSDEM 2020 🙂

Merci à vous !

Commentaires :
voir le flux atom
ouvrir dans le navigateur

Read more

Bonjour’Nal d’antan, Nal des bookmarks, Nal antérieur à la rubrique lien.

Ce texte est destiné à faire connaître un article fort instructif sur le système de vote au parlement européen. Et plus précisément sur un élément relativement méconnu et qui p…

Read more

Ah Nal,

Je sais que les projets de ta SSII sont encore sous Java 1.6, mais il est temps de migrer: la douzième version du langage libre le plus populaire en entreprise vient de sortir.

Les nouveautés sont peu nombreuses, mais sympathiques.
Expression…

Read more

Le monde de Linux est un monde hostile et difficile à appréhender. Le courageux candidat à la conversion à Linux doit dans un premier temps effectuer son choix parmi les innombrables distributions de Linux (littéralement des centaines). Après avoir lu …

Read more

Bonjour à tous,

ça fait maintenant 5 ans que je travaille sur Lollypop.

Je me souviens encore de la genèse du projet. 2013, alors développeur pour KDE (kded-appmenu et KWIN), je me rends compte que GNOME prend une direction qui me plaît beaucoup: “Cl…

Read more

Bonjour,

À l’occasion de sa venue pour InOut (http://inout2019.com) à l’invitation de l’IMT Atlantique, l’ISTIC, l’IRISA, l’Université de Rennes 1, et l’association Actux (http://actux.eu.org) ont le plaisir de vous inviter à une conférence, de Richar…

Read more

La dix‐septième émission « Libre à vous ! » de l’April a été diffusée sur la radio Cause commune, mardi 19 mars 2019.

Nous avons commencé par la troisième chronique « Les transcriptions qui redonnent le goût de la lecture » de Marie‐Odile Morandi. Nou…

Read more

La conférence TuleapCon revient pour sa troisième édition le mercredi 27 mars à Genève‐Carouge. C’est dans à peine huit jours ! Inscrivez‐vous.

La TuleapCon est une journée de conférences et de partage, gratuite et ouverte à tous.

Développement logic…

Read more

Demat’iNal,

Il y a un peu moins de trois ans, je commençais à coucher sur le clavier (oui parce que coucher sur le papier, ça me fait bizarre) le résultats de mes pérégrinations autour du compilateur pythran sur pythran-stories.

Et hier, alors que je…

Read more

La seizième émission « Libre à vous ! » de l’April a été diffusée sur la radio Cause commune, mardi 12 mars 2019.

Nous avons commencé par la troisième chronique « Pépites libres » de Jean‐Christophe Becquet, président de l’April. Nous avons enchaîné …

Read more

La directive droit d’auteur, et son liberticide article 13, devrait être soumise au vote des parlementaires européens réunis en séance plénière lors de la session du 25 au 28 mars 2019. Ils et elles se prononceront sur le texte issu des négociations …

Read more

la société F5 (leader sur le marché des ADC) rachete NGINX pour 670 millions

https://techcrunch.com/2019/03/11/f5-acquires-nginx-for-670m-to-move-into-open-source-multi-cloud-services

l’annonce coté F5
https://www.f5.com/company/news/press-releases/…

Read more

J’avais écrit un journal pour la sortie de scrcpy v1.0, il y a un an.

C’est l’occasion de vous présenter les évolutions depuis cette toute première version, l’application étant aujourd’hui en version 1.8.

(oui, c’est la même image que dans le premi…

Read more

La quatorzième émission « Libre à vous ! » de l’April a été diffusée sur la radio Cause commune, mardi 26 février 2019.

Nous avons commencé par les chroniques d’Isabella Vanni (« Le Libre fait sa comm’ »), de Véronique Bonnet (« Partager est bon »), …

Read more

Une troisième phase commence pour Gandi.

Après cinq premières années un peu utopiques à démontrer au monde entier que l’on pouvait vendre des noms de domaine à des tarifs exceptionnellement bas raisonnables et très bien en vivre, les fondateurs, peut-…

Read more