Espionner le contenu des fichiers récemment ouverts dans une machine virtuelle

Sécurité VirtualBox

Bonjour,

dans cet article j’aimerais partager avec vous une récente découverte que j’ai fait sur la fonctionnalité sauvegarder l’état, rien de bien transcendant mais ça peut être problématique selon certain cas.

Le contexte

En créant une machine virtuelle l’autre jour, je me suis rendu compte que la configuration de VirtualBox peut être dangereuse dans certains cas. Lorsque l’on regarde l’emplacement des dossiers des instantanés, on se rend compte que par défaut ils se placent dans le répertoire utilisateur (non chiffré).

Ce dossier peut être accessible en démarrant sur un autre système d’exploitation où en branchant le disque dur comme un périphérique externe.

Le test

J’ai donc décidé d’explorer un peu ce fichier sur une machine de test (VM Ubuntu) car je me suis dit que je pourrais y trouver des choses intéressantes…
Lorsque vous éteignez la machine en mode sauvegarde de l’état pour gagner du temps à l’allumage par exemple, une sauvegarde complète de tout ce qui est en mémoire vive est écrite dans un fichier .sav (sauvé dans les instantanés). J’ai donc crée un fichier texte de test qui simule le cas où Eclipse est ouvert avec tous les fichiers source ouvert d’un programme ou un fichier texte qui contient du contenu sensible. En explorant ce fameux fichier à l’aide d’un éditeur hexadécimal, on trouve pas mal d’informations notamment comme je le pensais, le contenu lui-même des fichiers et son emplacement puisqu’ils sont stockés temporairement en mémoire.
Voilà donc ce que ça donne

Emplacement absolu du fichier texte
Emplacement absolu du fichier texte
Contenu en claire du fichier texte
Contenu en claire du fichier texte

Tous le contenu est disponible, cela pourrait être un code source. Ce qui veut dire qu’un attaquant en ayant un accès physique à la machine non déchiffrée pourrait explorer quelques fichiers, ça peut se faire aussi avec un accès distant en volant ce fichier. Je n’ai pas eu le temps de chercher mais je ne serais pas surpris de pouvoir récupérer le mot de passe de session de Ubuntu.

Comment sécurisé l’installation ?

Il y a un moyen très simple de palier à ce problème. Il faut modifier le dossier des instantanés et le mettre dans un conteneur TrueCrypt.

Pour se faire, il faut aller dans les paramètres de la machine virtuelle :

Onglet général -> Avancé -> Dossier des instantannés (rentrer le chemin d’un dossier qui est dans votre conteneur TrueCrypt actuellement déchiffré)

Ainsi, vous serez obligé de déchiffrer votre conteneur TrueCrypt.

Vous pouvez aussi tout simplement arrêter d’utiliser cette fonctionnalité.

Comment sortir du mode de récupération sur un LG G6

LG G6
LG G6
LG G6

Il arrive parfois lors de l’installation d’une ROM personnalisée comme Lineage OS qu’un smartphone soit bloqué en mode récupération (recovery mode). Lors du démarrage, le téléphone démarre obligatoirement sur le custom recovery TWRP par exemple. Il est alors impossible d’en sortir même en réinstallant le système d’exploitation ou le custom recovery.

Une solution existe, réinstaller le système d’exploitation de base. Cette solution aura pour effet de remettre votre téléphone comme à sa sortie d’usine mais aussi supprimera le custom recovery.

Pour se faire, il est nécessaire d’avoir une machine qui tourne sous Windows (éviter les machines virtuelles ce qui pourrait engendrer des problèmes de pilotes).

Il faut en premier lieu installer les pilotes des smartphones LG disponible sur cette page : http://www.lg.com/us/support/product-help/CT10000025-20150179827560-downloaded-apps

Il faudra également installer le logiciel LGUP de LG en version 1.14 (à l’heure où j’écris cet article) qui permet de mettre à jour ou réinitialiser le système d’exploitation du smartphone. Le logiciel est disponible sur cette page : https://forum.xda-developers.com/lg-g5/development/uppercut-lgup-loader-g5-variants-t3511295

Sur la même page, il faut télécharger le logiciel UPPERCUT qui permet de résoudre certains problèmes de pilote. Dans certains cas, si vous n’utilisez pas UPPERCUT, le téléphone n’apparaîtra pas dans la liste des smartphones détectés par LGUP.

Enfin, le dernier fichier à télécharger est le fichier KDZ qui est en fait l’image du système d’exploitation de base. Vous pourrez télécharger la version qui vous convient sur cette page : https://lg-kdz-firmware.com/lg-g6-firmware/492.html

Une fois tous les fichiers téléchargés et installés, le plus gros du travail est fait.

Il vous faut démarrer en mode Download. Pour ce faire, éteindre le téléphone. Rester appuyé quelques secondes sur la touche volume haut tout en branchant le téléphone à l’ordinateur. Le téléphone est alors en mode Download.

Il ne reste qu’à lancer UPPERCUT en mode administrateur, il exécutera LGUP et votre téléphone apparaîtra dans la listes des téléphones branchés au port COM. Vous pouvez ensuite sélectionner refurbish ou upgrade, il faut ensuite choisir le fichier KDZ sur votre machine et cliquer sur install.

Une fois terminé, votre téléphone sera comme neuf.

Comment créer un partage NFS sous Linux

Linux NFS
Linux NFS

Il faut tout d’abord comprendre que pour créer un partage NFS (Network File System) sous Linux Ubuntu, il faut un serveur et un ou plusieurs clients. Notre serveur servira à gérer les clients qui se connectent à ce dernier. Il contient un dossier partagé et un fichier de configuration. Les clients qui se connectent au serveur auront accès en lecture aux fichiers contenu dans le dossier du serveur. Il pourront aussi selon la configuration que vous lui indiquez écrire dans ce dossier. Veuillez noter que cet article est écrit grâce à la documentation officielle que je vous conseille fortement de lire : https://help.ubuntu.com/community/SettingUpNFSHowTo.

La création du serveur

La première étape est de créer le serveur car il est indispensable pour qu’un client puisse se connecter. Il faut tout d’abord installer le paquet qui permet de lancer le serveur :

sudo apt-get install nfs-kernel-server

On va ensuite créer le dossier à partager (Partant du postulat que l’on est dans /home/NomUtilisateur/:

sudo mkdir Partage

ATTENTION : Il faut créer le dossier de partage avec le même utilisateur connecté, bien vérifier les droits du dossier.
Il faut maintenant éditer le fichier nfs-kernel-server grâce à la commande

sudo gedit /etc/default/nfs-kernel-server

et remplacer NEED_SVCGSSD= » » par NEED_SVCGSSD=no # no is default.

Nous allons à nouveau devoir éditer un fichier, cette fois pour configurer les autorisations des clients. Le fichier /etc/exports doit être édité en mode utilisateur connecté et non en root. La commande doit donc être celle-ci :

gedit /etc/exports

Ajouter la ligne des autorisations à la fin du fichier :

/home/NomUtilisateur/Partage IPduClient (rw,fsid=0,no_subtree_check,async,insecure)

Les options doivent être utilisées selon la configuration souhaitée.
rw signifie que le client à les droits de lecture et d’écriture.
no_subtree_check signifie que la vérification des droits sur le partage des sous dossiers n’est pas effectuée.
async signifie que l’intégrité des transferts n’est pas vérifié par le serveur nfs, il y a un gain des performances.
L’adresse IP donnée doit être celle du ou des client(s), un astérisque peut être ajouté à la place d’un octet pour autoriser toutes les IP. Ce qui donnerait par exemple 192.168.0.* Exécuter la commande suivante pour redémarrer le serveur :

sudo service nfs-kernel-server restart

La création du client

Exécuter la commande suivante pour installer le client :

sudo apt-get install nfs-common

Exécuter la commande suivante pour vérifier que le serveur partage bien le dossier demandé. L’adresse du serveur avec le dossier partagé devrait apparaître :

showmount -e adresseDuServeur

Exécuter la commande suivante pour monter le disque partagé :

sudo mount -t nfs4 -o proto=tcp,port=2049 adresseDuServeur:/ /home/utilisateurClient/DossierPartage

Le dossier est maintenant accessible depuis le client. Si des problèmes d’accès sont evoqués au montage, il faut vérifier les adresses IP configurées dans le serveur mais aussi les droits sur le dossier partagé côté serveur.
Je rappelle qu’il est fortement conseillé de lire la documentation officielle citée plus haut pour configurer correctement le serveur. Ce pense bête a pour but de lancer rapidement une installation mais demande une configuration plus poussée pour sécuriser l’installation.