Fermer

septembre 30, 2019

Kali Project Encryption and Isolation à l'aide de Vagrant et BitLocker


Imaginez que vous travailliez sur différents engagements ou projets dans lesquels Kali Linux est l’un de vos principaux outils. En outre, vous devez peut-être également conserver les données de chacun de ces projets isolés des autres projets. En d'autres termes, vous devez éviter toute contamination croisée entre vos projets. Dans cet article, je vais vous montrer comment utiliser mon outil d'installation de projet Vagrant Kali pour effectuer rapidement et facilement les opérations suivantes sur votre hôte Windows:

  • Créez un dossier de projet qui fournira l'espace de travail d'un nouveau projet
  • Créer un BitLocker virtuel protégé pour protéger les fichiers de votre projet et la portabilité des données à des fins d’archivage
  • Fournissez une machine virtuelle Kali Linux propre, configurée avec un périphérique de stockage virtuel crypté qui fournit un «cryptage inactif» pour le serveur. machine virtuelle elle-même. Nous utiliserons Virtualbox comme fournisseur de machines virtuelles Vagrant.

L’obligation d’isoler les données par projet est assez courante dans le secteur de la consultation et dans d’autres contextes commerciaux dans lesquels vous travaillez avec des données provenant de plusieurs clients. Dans ces cas, vous devez vous assurer que les données sensibles sont protégées par un cryptage inactif et vous voulez également vous assurer que les outils ou artefacts de données que vous créez pour un client (ou département ou unité commerciale) ne fuient pas sur d'autres ordinateurs. ou ensembles de données de projet.

Prenons le cas de quatre «projets» différents que vous devez gérer et protéger individuellement. Il serait utile de disposer d’un outil capable de créer un environnement complet et isolé pour chaque projet à la demande. Le diagramme suivant illustre un tel scénario dans lequel nous avons créé quatre dossiers spécifiques à un projet, chacun contenant un disque virtuel montable synchronisé sur une machine virtuelle Kali cryptée et gérée par Vagrant:

 Schéma des dossiers de projet

Outil de configuration de projet Kali vagabond

L'outil de configuration de projet Kali vagabond automatise le processus de configuration d'un nouvel environnement de projet tel que décrit dans le diagramme. Cet outil est un script Windows Powershell qui génère:

  1. Un nouveau dossier de projet contenant un nouveau fichier Vagrantfile et un disque virtuel (vhdx) spécifiques au projet. Par exemple, il peut s'agir du dossier «MyProj1» figurant dans le diagramme.
  2. Fichier de lecteur virtuel spécifique au projet, monté sur une lettre de lecteur Windows (par exemple, «G:»), et protégé par BitLocker. Il s'agit du fichier «MyProj1.vhdx» figurant dans le diagramme ainsi que du lecteur G: associé.
  3. Un fichier Vagrant initialisé spécifique au projet qui définit la configuration Vagrant pour le Kali Linux. Le fichier Vagrant est généré dynamiquement par l'outil afin de faciliter la définition du nom du dossier synchronisé spécifique au projet (par exemple, «/MyProj1» ).
  4. A configuré et géré par la machine virtuelle Kali Kali où le périphérique de stockage virtuel associé a été crypté par Virtualbox.

L’outil d’installation du projet Kali de Vagrant effectue également un correctif léger mais critique de Vagrant. Vagrant, au moins à partir de la version 2.2.5, nécessite des correctifs pour assurer la survie de l'opération de «vagabondage» jusqu'au moment où le processus de démarrage de Virtualbox s'interrompt pour vous permettre de saisir un mot de passe de chiffrement. L'outil vérifie si le correctif doit être appliqué, puis le corrige si nécessaire (le script Powershell contient une discussion plus approfondie du mécanisme en jeu). Si vous ne corrigez pas, l’opération «vagabond» échoue au cours du processus de démarrage et certaines étapes de démarrage telles que la synchronisation des dossiers échouent. Tout cela est géré par le script.

Exécution de l'outil

L'outil se compose d'un script Powershell et d'un fichier de modèle Vagrant “Vagrantfile.erb”. Vous devrez télécharger ces deux fichiers à partir du référentiel GitHub :

  • vagrant-kali-project-setup-tool.ps1 – le script Powershell qui exécute toutes les actions de l'outil
  • Vagrantfile. erb – le fichier modèle Vagrant qui définit la plupart des paramètres initiaux dont nous avons besoin pour spécifier et lancer notre boîte Kali.

L'outil suppose que vous êtes sur un hôte Windows, bien sûr, et suppose également que vous avez installé Vagrant et Virtualbox. .

Commencez par ouvrir une invite de commande en tant qu'administrateur. Le script Powershell effectue quelques opérations nécessitant des privilèges élevés, notamment la création et le cryptage du lecteur virtuel et l'application de correctifs à Vagrant. Il doit donc être exécuté en tant qu'administrateur, comme indiqué ici:

[19659006] L'outil créera un dossier de projet contenant les artefacts liés à votre nouvelle boîte Kali. À des fins d’illustration, j’ai créé un dossier appelé «Mes projets Kali» pour représenter le «Dossier Projets» parent présenté dans le diagramme ci-dessus. Ici, je commence avec un dossier propre sans projet pour le moment. Après avoir exécuté l'outil, nous verrons notre nouveau dossier de projet dans celui-ci.

 capture d'écran du dossier parent vide initial dans lequel les projets seront créés.

Exécutons maintenant. le script Powershell. À l'invite de commande de l'administrateur, tapez la ligne de commande suivante pour lancer le script:

 powershell -executionpolicy bypass -file vagrant-kali-project-setup-tool.ps1 

Le script effectue certaines vérifications initiales pour s'assurer que les conditions préalables sont définies:

  1. Le script vérifie que Vagrant est installé. Normalement, Vagrant ajoutera son répertoire à votre variable d’environnement PATH. Si l'exécutable Vagrant n'est pas résolu dans ce PATH, le script vous en avertira et vous quittera.
  2. Le script vérifie que Virtualbox est installé. Dans ma propre installation de Windows 10, le chemin d'accès aux fichiers binaires Virtualbox (en particulier VBoxManage.exe) ne se trouvait pas dans PATH. Le script effectue donc une recherche dans le répertoire Program Files 64 bits. Si VBoxManage.exe est introuvable, le script vous en informe et quitte l'application.
  3. Le script vérifie que BitLocker est installé. L'exécutable BitLocker doit également se trouver dans le PATH. De nouveau, si BitLocker n’est pas trouvé, le script vous en avertira et quittera.
  4. Enfin, le script vérifie si Vagrant a besoin de notre petit correctif, qui consiste en une seule ligne de code correspondant à l’un des scripts ruby ​​de Vagrant. Si nécessaire, le script enregistre une copie du fichier d'origine, puis met à jour cette ligne de code pour la rendre compatible avec le processus de démarrage de Virtualbox qui met en pause la saisie du mot de passe de chiffrement.

 une capture d'écran de l'invite de commande vous demandant où pour créer notre projet

Une fois les vérifications de l'environnement terminées, le script vous invite à désigner le dossier «parent» dans lequel votre dossier de projet sera créé. Dans mon cas, je souhaite que tout nouveau dossier de projet soit créé dans le dossier «Mes projets Kali». Le script ouvre une fenêtre Windows "Rechercher un dossier" pour vous aider à trouver et à désigner votre dossier de projet parent.

 Capture d'écran de

Après avoir sélectionné votre dossier parent, le script vous demandera le nom de votre projet. Le nom de votre projet sera intégré à divers emplacements, notamment le nom du dossier de projet, le nom du fichier de disque virtuel et l’étiquette de volume du disque virtuel. Généralement, afin de prendre en compte les contraintes de format des étiquettes de volume de disque virtuel, le script applique un jeu de caractères autorisé et une longueur de chaîne maximale au nom de projet choisi. Dans l'exemple suivant, j'ai choisi «MyProj1» pour correspondre au diagramme en haut de cet article:

 Capture d'écran du script demandant le nom du dossier de projet [19659006] Après vous être assuré que le nom de projet sélectionné n’a pas déjà été utilisé comme nom de projet dans l’emplacement de votre dossier parent, le script vous demande une «lettre de lecteur» Windows. Lorsque le script crée un nouveau fichier de disque virtuel, celui-ci est automatiquement monté et affecté à une lettre de lecteur (par exemple, «lecteur G: »). Pour vous aider à sélectionner une lettre de lecteur appropriée et à éviter les collisions, le script présente une liste des lecteurs actuellement montés. Une fois que vous avez fourni la lettre de lecteur souhaitée, le script vérifie que la lettre de lecteur n’est pas déjà utilisée. Dans cet exemple, je choisis «G» comme lettre de lecteur Windows.

 Capture d'écran du script demandant une lettre de lecteur

Après avoir accepté la lettre de lecteur, le script présente un résumé de la configuration de projet proposée et demande une approbation finale avant le début du processus de construction:

 capture d'écran du script confirmant vos sélections d'entrée

Après la frappe “Y” pour continuer, le script crée le nouveau dossier du projet, puis crée le fichier de disque virtuel du projet dans ce dossier. Le script monte ensuite le disque virtuel avec la lettre de lecteur désignée. Une fois le disque monté, le script appelle l'utilitaire BitLocker pour chiffrer le lecteur. Dans la capture d'écran suivante, BitLocker demande le mot de passe qui sera utilisé pour déverrouiller le lecteur lors de son prochain montage.

 capture d'écran du script en attente d'un mot de passe Bitlocker [19659006] Pendant le processus de création et de protection du lecteur par BitLocker, Windows ouvre une nouvelle fenêtre d’explorateur pour le nouveau lecteur. Dans la capture d'écran ci-dessous, vous pouvez voir notre nouveau lecteur «G:» et, comme nous nous y attendons, le lecteur ne contient encore aucun fichier. Une fois le script exécuté et notre nouvelle machine virtuelle Kali créée, ce lecteur mappé sera synchronisé dans un dossier correspondant situé dans la machine virtuelle.

 capture d'écran de la fenêtre de l'explorateur affichant le lecteur virtuel nouvellement monté. .

Une fois le lecteur virtuel configuré, le script procède à la construction vagabonde de la machine virtuelle Kali. Nous voyons ici que le script a effectué une opération «vagrant init» (qui crée un fichier Vagrant spécifique au projet) et qu'il exécute maintenant la première opération «vagrant up».

 capture d'écran montrant la première opération. opérations vagabondes

La toute première opération de "vagabondage" pour une nouvelle boîte peut durer longtemps, car Vagrant devra télécharger le modèle de boîte Vagrant à partir du référentiel Vagrant. Cela peut prendre plusieurs minutes. Les opérations "vagabondantes" suivantes ne suivent pas, car Vagrant a déjà le modèle de boîte.

Pendant l'opération "vagabond", vous verrez apparaître la fenêtre Virtualbox Kali VM dans laquelle vous pouvez voir le nom du projet incorporé. le nom Virtualbox généré par la machine.

 capture d'écran de l'exécution de Kali VM avec l'écran de connexion

Une fois que la machine virtuelle Kali est démarrée et accessible, l'opération initiale de "vagabondage" se poursuit. avec l'approvisionnement de la boîte. Le «provisionnement» est une série d’étapes postérieures à l’amorçage comprenant l’association de notre lecteur virtuel monté à la VM pour servir de «dossier synchronisé». Le processus de provisioning exécute également un script shell sur la machine virtuelle pour installer des packages logiciels supplémentaires que nous aurions peut-être spécifiés dans le fichier Vagrantfile.

 capture d'écran de la

publiée après le Les dernières étapes de provisionnement sont terminées et nous avons une machine virtuelle Kali utilisable. Il reste encore une exigence non satisfaite: la machine virtuelle Kali ne fonctionne pas encore sur un périphérique de stockage chiffré. Pour répondre à notre exigence de «chiffrement au repos», nous devrons appliquer le chiffrement de stockage.

Le script applique le chiffrement de Virtualbox en plusieurs étapes. Premièrement, le script effectue un arrêt en douceur de la machine virtuelle avec une opération «arrêt vagabond». Ensuite, le script effectue une extraction de données pour déterminer l'ID de l'image de stockage virtuel associée à notre machine virtuelle Kali. Une fois que nous avons trouvé la bonne image de stockage, elle peut être chiffrée à l’aide de l’utilitaire de gestion Virtualbox.

Dans la capture d’écran ci-dessous, l’utilitaire de gestion Virtualbox collecte le mot de passe que nous utiliserons pour chiffrer, puis déverrouiller la machine virtuelle pendant le processus. processus de démarrage.

Notez que ce mot de passe est indépendant du mot de passe fourni lors de la construction du disque virtuel crypté. En d'autres termes, vous avez maintenant deux mots de passe: un pour monter / déverrouiller le disque virtuel de notre projet et un second pour déverrouiller la machine virtuelle Kali au démarrage.

 capture d'écran du processus de chiffrement de la machine virtuelle [1945] 19659006] Après avoir fourni notre deuxième mot de passe, le script crypte l'image de stockage et effectue une deuxième opération de «réorientation» pour redémarrer la Kali VM, maintenant cryptée:

 de la deuxième opération de réorientation

Pendant le processus de démarrage de notre machine virtuelle maintenant cryptée, Virtualbox s'interrompt pour nous demander le mot de passe de cryptage que nous venons de fournir:

capture d'écran du formulaire de saisie du mot de passe Virtualbox . ]

Du point de vue du script en cours d’exécution (ci-dessous), nous pouvons voir l’interaction entre Virtualbox et Vagrant à la fin du «vagant up».

Dans la section A de la capture d’écran, Vagrant nous donne une heads-up que nous devons rechercher le cryptage Virtualbox

Dans la section B, Vagrant interroge l’état de la VM en attendant la fin du démarrage. C'est pendant cette période que le formulaire de saisie du mot de passe de cryptage apparaît et attend notre saisie.

Dans la section C, Virtualbox a collecté notre mot de passe et démarré avec succès la machine virtuelle Kali. Les processus normaux d'approvisionnement après l'amorçage se poursuivent jusqu'à la fin de toutes les étapes du "vagabond".

 capture d'écran de la suite

Testez le nouveau projet Kali

] Une fois le script Powershell terminé, notre machine virtuelle Kali est maintenant en marche et nous pouvons nous connecter avec le nom d'utilisateur Kali par défaut «root» et le mot de passe par défaut «toor»:

capture d'écran de Kali - enregistré dans .

Si nous examinons le contenu de notre nouveau dossier de projet, nous pouvons voir le fichier de disque virtuel “vhdx” créé par l'outil, le fichier Vagrant créé par Vagrant et le dossier “.vagrant” qui contient divers Virtualbox. fichiers liés à notre Kali VM. Dans le volet de gauche de la fenêtre, vous pouvez également voir le disque virtuel monté (notre nouveau lecteur «G: »).

 capture d'écran du dossier de projet montrant que les fichiers ont été créés.

Démontrons que notre lecteur virtuel fonctionne correctement en tant que dossier synchronisé avec Kali

Au cours du processus de provisionnement Vagrant, Vagrant a créé un dossier de niveau supérieur dans la machine virtuelle Kali avec le nom de notre projet. En Kali, ouvrons un terminal, modifions notre répertoire de travail en dossier de niveau supérieur portant le nom «MyProj1», puis écrivons «Hello World» dans un fichier test nommé «testfile.txt».

 capture d'écran de la création d'un fichier testfile.txt dans le dossier synchronisé

Une fois que la commande “echo” a créé le fichier test, nous pouvons immédiatement voir le fichier test apparaître dans notre lecteur G :. Cela montre que le processus de synchronisation de fichiers entre la machine virtuelle Kali et notre disque virtuel monté («G: lecteur») fonctionne (notez que le fichier «.encryptionsemaphore» que vous voyez dans la capture d'écran est un artefact attendu du processus de provisionnement).

 capture d'écran de G: lecteur avec notre fichier de test dedans.

Nous pouvons utiliser le Bloc-notes Windows pour ouvrir le fichier de test figurant dans notre lecteur G: afin de confirmer que les données arrivé intact:

 capture d'écran de la fenêtre du bloc-notes démontrant que nos données synchronisées sont intactes

Réussite

À ce stade, vous pouvez utiliser la machine virtuelle Kali en toute confiance et savoir que rien votre synchronisation avec le lecteur G: sera complète et protégée. Lorsque vous avez fini d'utiliser Kali, vous pouvez effectuer une «interruption vagabonde» via votre ligne de commande pour exécuter un arrêt ordonné de la boîte, puis «éjecter» le disque virtuel monté. Le stockage de la machine virtuelle et le disque virtuel sont «cryptés au repos» en toute sécurité.

Lorsque vous souhaitez reprendre le travail plus tard, il vous suffit de «monter» le disque virtuel en double-cliquant sur le fichier de disque virtuel, puis exécutez un «vagabond ”Pour démarrer la VM Kali. Si vous souhaitez par la suite détruire complètement la machine virtuelle afin de récupérer de l’espace disque, lancez une «destruction par vagabond».

Voici une remarque importante sur le ré-montage du disque virtuel protégé par BitLocker après son éjection. Lorsque vous double-cliquez sur le fichier, vous verrez probablement (et immédiatement) le message «l'accès est refusé» dans la section A de la capture d'écran ci-dessous. C'est normal. Toutefois, si vous regardez dans le volet de gauche de la fenêtre de l'explorateur (voir section B de la capture d'écran), vous verrez que la lettre de votre lecteur est utilisée, comme si le lecteur était monté ou en cours de montage. C’est bien et ce que vous voulez voir.

 Capture d’écran du message d’erreur affiché lors de la tentative de montage d’un disque virtuel protégé par un bloqueur de bitlocker

Pour terminer l’opération de montage, vous devez simplement besoin de fournir le mot de passe. Le formulaire présenté dans la capture d'écran suivante est quelque peu petit et se cache probablement bien en vue sur votre moniteur principal. Trouvez-le, indiquez le mot de passe du disque virtuel, puis cliquez sur le bouton «déverrouiller».

Pour en savoir plus

Vagrant: https: //www.vagrantup .com /

Support inconditionnel pour Kali Linux: https://www.kali.org/news/announcing-kali-for-vagrant/

Windows diskpart: https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/diskpart[19459009HER19199006aserBitLocker: https://docs.microsoft.com/fr-fr/ fenêtres / sécurité / protection de l'information / bitlocker / bitlocker-overview

Virtualbox: https://www.virtualbox.org/

Windows Powershell: https: // docs.microsoft.com/fr-fr/windows-server/administration/windows-commands/powershell[19459009hnle19659006hnleoutildeconfigurationdeprojetVagrantKali: https://github.com/tonykarre/Vagrant-Kali -Project-Setup-Tool

Pour plus d'informations ou pour obtenir de l'aide sur l'évaluation de la sécurité de vos applications Web, contactez-nous à Perficient.






Source link