Dark Moon : un système Unix portable sous Windows Un tutoriel de John_the_ripper

Uncategorized

Dark Moon est un projet Open Source sous licence GPLv2 développé depuis 2013 par Mehdi Boutayeb Ferkatou.

Dark Moon est un sous-système embarqué, émulant des fonctionnalités POSIX grâce à Cygwin.

Ce dernier possède la particularité d’avoir été encapsulé en un unique fichier exécutable sur la plateforme Desktop Bridge de Microsoft.

Ce projet est la seule distribution Linux portable indépendante de Windows Subsystem for Linux (WSL) à être déployée sur le Microsoft Store aujourd’hui.

Le sous-système de Dark Moon est facile à installer. Vous n’avez rien à configurer au préalable, comme c’est le cas avec les sous-systèmes Linux disponibles sur le magasin Microsoft. Cela renforce le côté intuitif de ce logiciel capable de tenir en un unique fichier exécutable ayant pour rôle de déployer les fichiers sources dans un répertoire et de les lancer lors des appels.

Le protocole SSH est inclus ainsi que OpenSSL pour le chiffrement via des méthodes de cryptographies.

Dark Moon possède une riche bibliothèque de fonctionnalités Linux.

Dark Moon est également utilisé dans le domaine de la sécurité pour effectuer des attaques sur un réseau informatique depuis le noyau portable en exécutant des scripts et des programmes.

Ce logiciel est aussi utilisé pour déployer de petits serveurs portables légers peu gourmands, et donc plus réactifs (Intel Atom, Celeron, Pentium).

Ceci est un atout appréciable si vous souhaitez utiliser une machine de test sur des PC peu performants pour monter une infrastructure Linux flexible, et qui n’a pas vocation à être utilisée dans la durée en local, le tout sans avoir recours à la virtualisation ( ce qui serait parfaitement impossible à mettre en œuvre compte tenu de la configuration énoncée précédemment) permettant de communiquer sous Windows avec du POSIX Linux.

Dark Moon se présente en version STABLE et CURRENT. CURRENT est recommandée pour les développeurs ou utilisateurs ayant de bonnes connaissances techniques. Dans le cas contraire, il est recommandé d’utiliser la version STABLE.

L’outil a été développé par un jeune toulousain qui le maintient depuis 2013.

Il est en théorie impossible de porter un noyau Linux sur le Microsoft Store si ce dernier n’exploite pas WSL de Microsoft

Le problème est que le noyau est trop complexe pour UWP et utilise beaucoup d’API de bas niveau qui ne peuvent tout simplement pas être portées sinon le Build de l’APPX échoue.

Dark Moon a pu être encapsulé dans une APPX car ce dernier a été cloisonné dans un fichier exécutable contenant des ressources interprétables par UWP.

D’autant que les ressources sont consultables par tous dans le disque C:/ et exploitables et modifiables contrairement à WSL.

Le sous-système Microsoft est un noyau Linux intégré à Windows, mais WSL nécessite une virtualisation de très bas niveau pour fonctionner.

WSL n’est pas Open Source, c’est une technologie propriétaire qui ne fonctionne que sous Windows 10.

La différence avec Dark Moon est que le logiciel est un portage de programmes Linux sur Windows. Les outils de développement intégrés à Dark Moon vous construiront un exécutable Windows, tandis que WSL vous construira un exécutable Linux.

Il se peut que l’exécutable Linux résultant ne s’exécute pas correctement sur WSL.

En outre, contrairement au WSL, vous pouvez exécuter un .exe et accéder à tous les fichiers du noyau, ce qui n’est pas encore possible avec WSL/Bash en raison de la sécurité de Windows 10. La dernière différence est que Dark Moon est un noyau « portable », vous pouvez le transporter dans n’importe quel dossier ou périphérique.

Dark Moon UWP (Microsoft Store) ne nécessite aucune intervention humaine pour l’installation et tout est automatisé, à partir du moment où l’utilisateur clique sur « Télécharger » jusqu’au lancement de XFCE. Avec la version Microsoft Store, l’utilisateur exécutera une version approuvée par Microsoft pour Windows 10. L’application s’installera sur un dossier prédéfini %systemdrive%/Linux.

Avec la version Win32, l’utilisateur peut modifier le programme d’installation pour le placer dans le répertoire de son choix.

Il existe 2 versions de ce logiciel :

  • une version de la console fonctionnant directement à partir de cmd.exe :
    Cette version de Dark Moon étant nomade (portable), vous pouvez déplacer le répertoire du logiciel n’importe où, y compris sur un lecteur USB ou un disque dur portable. Par exemple, vous pouvez envisager d’installer et d’exécuter un serveur SSH sur votre clef USB à partir de Dark Moon ;
  • une version intégrant un environnement graphique XFCE 4.

Dark Moon intègre l’outil Cmdow pour masquer les processus. Voici ce que le développeur de l’utilitaire dit à ce sujet :

Bien sûr que non ! Cependant, tout le monde n’est pas d’accord… L’une des nombreuses fonctionnalités de Cmdow permet à l’utilisateur de masquer des fenêtres de programme, ce qui a conduit 40% des éditeurs d’antivirus à classer Cmdow comme un outil de piratage de type « cheval de Troie » 1. D’autre part, 60% des éditeurs d’antivirus considèrent Cmdow comme totalement sûr.

Vous pouvez visualiser vous-même les résultats de l’analyse antivirus. Téléchargez et extrayez la dernière version de l’archive Cmdow, puis téléchargez cmdow.exe sur VirusTotal. Vous vous retrouverez sur une page comme celle-ci: https://virustotal.com/fr/fichier/767b877e735c425bf05c34683356abfde4070b092f17a4741ea5ac490611f3de/analysis/.

Évidemment, si vous avez des doutes sur la sécurité de Cmdow, ne l’utilisez pas et n’auditez pas le code source vous-même. L’audit devrait être assez simple, car le code est explicite avec des commentaires libéraux et il n’y a pas d’assemblage ni de blobs binaires. cmdow compile sans erreurs ni avertissements à l’aide de l’EDI gratuit Code::Blocks. Il y a même un fichier de projet Code :: Blocks ( cmdow.cbp ) inclus dans le téléchargement Cmdow.

1 Dix fournisseurs considèrent en réalité que l’attribution d’un zéro à la fonction ShowWindowAsync de l’API Windows suffit à créer un cheval de Troie !

Si vous avez téléchargé l’archive à partir de Github, extrayez-la simplement, cliquez sur le répertoire « Fichiers compilés par Linux » et lancez  « Linux.exe ».

Le désarchivage et l’installation se feront sans intervention humaine.

Voici la liste des commandes disponibles sur le terminal :

 

Sélectionnez
Voi job_spec [&] historique [-c] [-d offset] [n] ou hist> ((expression)) if COMMANDS; puis COMMANDES; [elif C> . nom_fichier [arguments] jobs [-lnprs] [jobspec ...] ou jobs> : kill [-s sigspec | -n signum | -sigs> [arg ...] laissez arg [arg ...] [[expression]] local [option] nom [= valeur] ... alias [-p] [nom [= valeur] ...] déconnexion [n] bg [job_spec ...] mapfile [-d delim] [-n count] [-O ou> bind [-lpsvPSVX] [-m keymap] [-f fichier> popd [-n] [+ N | -N] break [n] printf [-v var] format [arguments] builtin [shell-builtin [arg ...]] pushd [-n] [+ N | -N | dir] appelant [expr] pwd [-LP] case MOT dans [PATTERN [| PATTERN] ...)> lire [-ers] [-a tableau] [-d delim] [-> cd [-L | [-P [-e]] [- @]] [dir] readarray [-n compte] [-O origine] [-s> commande [-pVv] commande [arg ...] en lecture seule [-aAf] [nom [= valeur] ...] o> compgen [-abcdefgjksuv] [option -o] [> return [n] compléter [-abcdefgjksuv] [-pr] [-DE]> sélectionner NOM [dans MOTS ...;] faire COMM> compopt [option -o | + o] [-DE] [nom ..> définir [-abefhkmnptuvxBCHP] [option -o-> continuer [n] shift [n] Commande coproc [NAME] [redirections] shopt [-pqsu] [-o] [optname ...] declare [-aAfFgilnrtux] [-p] [nom [= v> nom_fichier source [arguments] dirs [-clpv] [+ N] [-N] suspendre [-f] désavouer [-h] [-ar] [jobspec ... | pid> test [expr] echo [-neE] [arg ...] time [-p] pipeline activer [-a] [-dnps] [-f nomfichier] [na> fois eval [arg ...] piège [-lp] [[arg] signal_spec ...] exec [-cl] [-a nom] [commande [argument]> true exit [n] tapez [-afptP] nom [nom ...] export [-fn] [nom [= valeur] ...] ou ex> typeset [-aAfFgilnrtux] [-p] nom [= v> faux ulimit [-SHabcdefiklmnpqrstuvxPT] [l> fc [-e ename] [-lnr] [premier] [dernier] o> umask [-p] [-S] [mode] fg [job_spec] unalias [-a] nom [nom ...] pour NAME [dans les mots ...]; faire COMMAND> unset [-f] [-v] [-n] [nom ...] pour ((exp1; exp2; exp3)); faites COMMAN> jusqu'à COMMANDES; faire des commandes; terminé nom de fonction {COMMANDS; } ou nom> variables - Noms et significations de so> getopts optstring nom [arg] wait [-n] [id ...] hash [-lr] [-p nom du chemin] [-dt] [nom> while COMMANDS; faire des commandes; terminé help [-dms] [pattern ...] {COMMANDS; } Voi job_spec [&] historique [-c] [-d offset] [n] ou hist> ((expression)) if COMMANDS; puis COMMANDES; [elif C> . nom_fichier [arguments] jobs [-lnprs] [jobspec ...] ou jobs> : kill [-s sigspec | -n signum | -sigs> [arg ...] laissez arg [arg ...] [[expression]] local [option] nom [= valeur] ... alias [-p] [nom [= valeur] ...] déconnexion [n] bg [job_spec ...] mapfile [-d delim] [-n count] [-O ou> bind [-lpsvPSVX] [-m keymap] [-f fichier> popd [-n] [+ N | -N] break [n] printf [-v var] format [arguments] builtin [shell-builtin [arg ...]] pushd [-n] [+ N | -N | dir] appelant [expr] pwd [-LP] case MOT dans [PATTERN [| PATTERN] ...)> lire [-ers] [-a tableau] [-d delim] [-> cd [-L | [-P [-e]] [- @]] [dir] readarray [-n compte] [-O origine] [-s> commande [-pVv] commande [arg ...] en lecture seule [-aAf] [nom [= valeur] ...] o> compgen [-abcdefgjksuv] [option -o] [> return [n] compléter [-abcdefgjksuv] [-pr] [-DE]> sélectionner NOM [dans MOTS ...;] faire COMM> compopt [option -o | + o] [-DE] [nom ..> définir [-abefhkmnptuvxBCHP] [option -o-> continuer [n] shift [n] Commande coproc [NAME] [redirections] shopt [-pqsu] [-o] [optname ...] declare [-aAfFgilnrtux] [-p] [nom [= v> nom_fichier source [arguments] dirs [-clpv] [+ N] [-N] suspendre [-f] désavouer [-h] [-ar] [jobspec ... | pid> test [expr] echo [-neE] [arg ...] time [-p] pipeline activer [-a] [-dnps] [-f nomfichier] [na> fois eval [arg ...] piège [-lp] [[arg] signal_spec ...] exec [-cl] [-a nom] [commande [argument]> true exit [n] tapez [-afptP] nom [nom ...] export [-fn] [nom [= valeur] ...] ou ex> typeset [-aAfFgilnrtux] [-p] nom [= v> faux ulimit [-SHabcdefiklmnpqrstuvxPT] [l> fc [-e ename] [-lnr] [premier] [dernier] o> umask [-p] [-S] [mode] fg [job_spec] unalias [-a] nom [nom ...] pour NAME [dans les mots ...]; faire COMMAND> unset [-f] [-v] [-n] [nom ...] pour ((exp1; exp2; exp3)); faites COMMAN> jusqu`à COMMANDES; faire des commandes; terminé nom de fonction {COMMANDS; } ou nom> variables - Noms et significations de so> getopts optstring nom [arg] wait [-n] [id ...] hash [-lr] [-p nom du chemin] [-dt] [nom> while COMMANDS; faire des commandes; terminé help [-dms] [pattern ...] {COMMANDS; } Voi job_spec [&] historique [-c] [-d offset] [n] ou hist> ((expression)) if COMMANDS; puis COMMANDES; [elif C> . nom_fichier [arguments] jobs [-lnprs] [jobspec ...] ou jobs> : kill [-s sigspec | -n signum | -sigs> [arg ...] laissez arg [arg ...] [[expression]] local [option] nom [= valeur] ... alias [-p] [nom [= valeur] ...] déconnexion [n] bg [job_spec ...] mapfile [-d delim] [-n count] [-O ou> bind [-lpsvPSVX] [-m keymap] [-f fichier> popd [-n] [+ N | -N] break [n] printf [-v var] format [arguments] builtin [shell-builtin [arg ...]] pushd [-n] [+ N | -N | dir] appelant [expr] pwd [-LP] case MOT dans [PATTERN [| PATTERN] ...)> lire [-ers] [-a tableau] [-d delim] [-> cd [-L | [-P [-e]] [- @]] [dir] readarray [-n compte] [-O origine] [-s> commande [-pVv] commande [arg ...] en lecture seule [-aAf] [nom [= valeur] ...] o> compgen [-abcdefgjksuv] [option -o] [> return [n] compléter [-abcdefgjksuv] [-pr] [-DE]> sélectionner NOM [dans MOTS ...;] faire COMM> compopt [option -o | + o] [-DE] [nom ..> définir [-abefhkmnptuvxBCHP] [option -o-> continuer [n] shift [n] Commande coproc [NAME] [redirections] shopt [-pqsu] [-o] [optname ...] declare [-aAfFgilnrtux] [-p] [nom [= v> nom_fichier source [arguments] dirs [-clpv] [+ N] [-N] suspendre [-f] désavouer [-h] [-ar] [jobspec ... | pid> test [expr] echo [-neE] [arg ...] time [-p] pipeline activer [-a] [-dnps] [-f nomfichier] [na> fois eval [arg ...] piège [-lp] [[arg] signal_spec ...] exec [-cl] [-a nom] [commande [argument]> true exit [n] tapez [-afptP] nom [nom ...] export [-fn] [nom [= valeur] ...] ou ex> typeset [-aAfFgilnrtux] [-p] nom [= v> faux ulimit [-SHabcdefiklmnpqrstuvxPT] [l> fc [-e ename] [-lnr] [premier] [dernier] o> umask [-p] [-S] [mode] fg [job_spec] unalias [-a] nom [nom ...] pour NAME [dans les mots ...]; faire COMMAND> unset [-f] [-v] [-n] [nom ...] pour ((exp1; exp2; exp3)); faites COMMAND> jusqu`à COMMANDES; faire des commandes; terminé nom de fonction {COMMANDS; } ou nom> variables - Noms et significations de so> getopts optstring nom [arg] wait [-n] [id ...] hash [-lr] [-p nom du chemin] [-dt] [nom> while COMMANDS; faire des commandes; terminé help [-dms] [pattern ...] {COMMANDS; }

Vous pouvez ajouter d’autres programmes avec les outils suivants :

  • git
  • wget
  • setup-x86_64 (les paquets disponibles sur les sites miroir de cygwin sont entièrement compatibles avec Dark Moon car ils sont émulés par cygwin.dll)

Il existe 2 versions de ce logiciel :

  • une version en console ;
  • une version en interface graphique avec Xfce.

Pour exécuter la console Windows depuis Dark Moon, tapez « cmd » :

 

Sélectionnez
[1].Start an XFCE session [2].Start terminal [3].Exit DarkMoon ##### ####### # ##O#O## ###### ### #VVVVV# ## # ## VVV ## ## ### ### #### ### ### ##### ##### # ## ## # ## ### ## ## ## ## ## # ## ## # ## ## ## ## ## ### # ### ## ### ## ## ## ## ### QQ# ##Q ## # ### ## ## ## ## ## ## QQQQQQ# #QQQQQQ ## ## ### # ## ## ### ### ## ## QQQQQQQ# #QQQQQQQ ############ ### #### #### #### ### ##### ##### QQQQQ#######QQQQQ DARK MOON X for Microsoft Windows (c) UWP. GNU licensed project
2
[email protected] ~
$ cmd
Microsoft Windows [version 10.0.17134.885]
(c) 2018 Microsoft Corporation. Tous droits réservés.
C:\Linux\home\Admin>

Pour exécuter PowerShell tapez « Powershell » :

 

Sélectionnez
[1].Start an XFCE session [2].Start terminal [3].Exit DarkMoon ##### ####### # ##O#O## ###### ### #VVVVV# ## # ## VVV ## ## ### ### #### ### ### ##### ##### # ## ## # ## ### ## ## ## ## ## # ## ## # ## ## ## ## ## ### # ### ## ### ## ## ## ## ### QQ# ##Q ## # ### ## ## ## ## ## ## QQQQQQ# #QQQQQQ ## ## ### # ## ## ### ### ## ## QQQQQQQ# #QQQQQQQ ############ ### #### #### #### ### ##### ##### QQQQQ#######QQQQQ DARK MOON X for Microsoft Windows (c) UWP. GNU licensed project
2
[email protected] ~
$ powershell
Windows PowerShell
Copyright (C) Microsoft Corporation. Tous droits réservés.
PS C:\Linux\home\Admin>

Lancer Bash et XFCE à partir de cmd et powershell :

  • Pour démarrer XFCE, tapez dans la console :

     

    Sélectionnez
    cd% systemdrive% / linux
    start_xfce
  • Et pour démarrer une session Bash, tapez ceci :

     

    Sélectionnez
    cd% systemdrive% / linux
    start_bash
  • Vous pouvez également choisir de lancer le menu en tapant ceci sur la console (comme vu dans la partie 10Mode de lancement du logiciel) :
 

Sélectionnez
cd% systemdrive% / linux start_linux

Installez et lancez apt-cyg :

Téléchargez apt-cyg avec la commande wget :

 

Sélectionnez
$ wget https://raw.githubusercontent.com/transcode-open/apt-cyg/master/apt-cyg

Vous obtiendrez ceci :

 

Sélectionnez
--2019-07-26 20: 19: 24-- https://raw.githubusercontent.com/transcode-open/apt-cyg/master/apt-cyg Résolution de raw.githubusercontent.com (raw.githubusercontent.com)… 151.101.120.133 Connexion à raw.githubusercontent.com (raw.githubusercontent.com) | 151.101.120.133 |: 443… connecté. requête HTTP transmise, en attente de la réponse… 200 OK Taille: 13765 (13K) [text / plain] Sauvegarde en : «apt-cyg.1» apt-cyg.1 100% [======================================== =======>] 13,44K --.- KB / s ds 0,03s 2019-07-26 20:19:25 (396 KB / s) - «apt-cyg.1» sauvegardé [13765/13765]

Après avoir téléchargé apt-cyg, vous devez faire un CHMOD de façon à donner les droits d’exécution :

 

Sélectionnez
 chmod + x apt-cyg

Et finalement, vous devrez faire un mv (pour déplacer le fichier) :

 

Sélectionnez
mv apt-cyg /usr/local/bin

Voici tous les arguments de commande pour apt-cyg :

 

Sélectionnez
$ apt-cyg PRÉNOM apt-cyg - utilitaire de gestion de paquets SYNOPSIS apt-cyg [opération] [options] [cibles] LA DESCRIPTION apt-cyg est un utilitaire de gestion de paquets qui suit les paquets installés sur Système Cygwin. Invoquer apt-cyg implique de spécifier une opération avec options potentielles et cibles sur lesquelles opérer. Une cible est généralement un paquet nom, nom de fichier, URL ou chaîne de recherche. Les cibles peuvent être fournies en tant que commande arguments de ligne. Opérations installer Installer les packages. retirer Supprimez le (s) paquet (s) du système. mettre à jour Téléchargez une nouvelle copie de la liste de paquets principaux (setup.ini) à partir du serveur défini dans setup.rc. télécharger Récupérez les packages du serveur, mais n’installez / mettez à niveau rien. spectacle Affiche des informations sur les paquets donnés. dépend Produire un arbre de dépendance pour un package. dépendants Produire une arborescence de packages qui dépendent du package nommé. liste Recherchez dans chaque package installé localement les noms correspondants à regexp. Sinon Les noms de paquets sont fournis dans la ligne de commande, tous les paquets installés être interrogé. tout lister Ceci recherchera chaque paquet dans la liste des paquets maîtres (setup.ini) noms qui correspondent à regexp. catégorie Afficher tous les packages membres d'une catégorie nommée. listfiles Répertorie tous les fichiers appartenant à un paquet donné. Plusieurs packages peuvent être spécifiés sur la ligne de commande. chercher Recherchez les packages téléchargés qui possèdent le (s) fichier (s) spécifié (s). Le chemin peut être relatif ou absolu, et un ou plusieurs fichiers peuvent être spécifiés. fouiller Effectuez une recherche sur cygwin.com pour récupérer les informations sur les fichiers relatifs aux packages. Le fourni la cible est considérée comme un nom de fichier et searchall retournera le paquet (s) contenant ce fichier. miroir Placez le miroir. une URL complète vers un emplacement où se trouvent la base de données, les packages et les signatures pour ce référentiel peuvent être trouvés. Si aucune URL n'est fournie, affichez miroir de courant. cache Définissez le répertoire de cache du paquet. Si un fichier est introuvable dans le répertoire cache, il sera téléchargé. Les formulaires Unix et Windows sont acceptés, ainsi que chemins absolus ou réguliers. Si aucun répertoire n’est fourni, affiche le répertoire en cours. cache. OPTIONS --nodeps Spécifiez cette option pour ignorer toutes les vérifications de dépendance. --version Afficher la version et quitter.

Source

Sharing is caring!

Leave a Reply