Bonjour à tous! Dans la
dernière partie, nous avons parlé des solutions existantes pour "orchestrer" les tâches parallèles de "hachage cracké" sur hashcat.
Dans cette partie, nous continuons à parler du projet Hashtopolis. Pensez à préparer les composants de l'environnement Web sur le serveur. Analysons les principaux paramètres du serveur et de l'agent Hashtopolis.
Installation et configuration de Hashtopolis
Pour son travail, le serveur Hashtopolis veut de vous les composants suivants:
- Apache2 / nginx
- PHP 7.0+ et modules 64 bits: modules php-gd, pear, php-curl
- MySQL 5.x + KM avec un accès complet à la base de données d'application
Hashtopolis prend en charge nginx, pour lequel vous devez configurer le blocage d'accès pour tous les sous-répertoires "/ hashtopolis" contenant le fichier .htaccess. Dans cet article, nous envisageons d'installer Hashtopolis avec le serveur web Apache2 (donc LAMP).
Vous pouvez également utiliser
XAMPP pour vous familiariser avec le projet, sur la version 5.6.40 tout a «décollé» sans problème. Le contenu de cet article est utile pour configurer Hashtopolis sur XAMPP.
Sous le spoiler, un peu sur l'image de Docker Hocktopolis:
Installer Hashtopolis dans DockerPlusieurs images du serveur hashtopolis ont été trouvées dans le Docker Hub, mais une seule a généré au moins une certaine confiance:
hub.docker.com/r/kpeiruza/hashtopolisL'auteur n'était pas trop paresseux et a ajouté une description de "l'installation" de hashtopolis dans Docker. Les détails de configuration et le conteneur sont décrits en détail. Remarque importante - lors de la configuration du mappage de port (par exemple, «docker run ... -p 80:80»), tenez compte des fonctionnalités de votre système d'exploitation et de la nécessité d'accéder au serveur Web sur les agents hôtes Hashtopolis.
Le processus de configuration de l'application Web elle-même est décrit plus loin dans notre article.
Installation de LAMP
La version du projet que nous avons utilisée: Hashtopolis 0.10.1
Pour que le serveur Hashtopolis fonctionne, nous en avions assez d'un hôte avec la configuration suivante:
- 1 CPU
- 1 Go de RAM
- Disque de 25 Go
Nous vous recommandons d' installer phpMyAdmin, Adminer ou un autre analogue pour travailler avec le SGBD. Ainsi, en cas de problèmes avec la fonctionnalité Hashtopolis, le dépannage peut être effectué sans quitter le navigateur.
Lors de l'installation du logiciel sur notre serveur LAMP, nous avons utilisé les instructions du Wiki du projet Hashtopolis (https://github.com/s3inlc/hashtopolis/wiki/Server-Prerequisites):
- mise à jour sudo apt && mise à niveau sudo apt
- sudo apt install mysql-server
- sudo apt install apache2
- sudo apt install libapache2-mod-php php-mysql php php-gd php-pear php-curl
- sudo apt install git
- sudo apt install phpmyadmin
Si l'assistant de configuration interactif n'a pas été lancé lors de l'installation des packages mysql, vous devez exécuter la commande suivante: mysql_secure_installation.
Ainsi, en utilisant «l'assistant interactif», un mot de passe sera défini pour l'accès au SGBD.
Ensuite, vous devez créer un utilisateur dans MySQL et une base de données à laquelle cet utilisateur aura un accès en lecture / écriture.
Nous procédons à l'installation du serveur Hashtopolis.
Vous pouvez cloner le code source de Hashtopolis à partir du référentiel git du projet. Nous avons agi selon les instructions et cloné le référentiel, et du répertoire "hashtopolis" transféré récursivement "src" vers "www":
- git clone github.com/s3inlc/hashtopolis.git
- cd hashtopolis / src
- sudo mkdir / var / www / hashtopolis
- sudo cp -r * / var / www / hashtopolis
- sudo chown -R www-data: www-data / var / www / hashtopolis
Définissez la directive «KeepAliveTimeout» sur 10 millisecondes, comme le recommandent les développeurs. Justification:
Afin de tirer parti de l'utilisation des sessions TCP dans le client python, le délai d'expiration du serveur doit être défini sur quelque chose de plus élevé que l'heure de mise à jour de votre statut
Notre traduction gratuite: «Afin d'utiliser des sessions TCP dans un client implémenté en Python, le délai d'expiration de la session dans la configuration du serveur Web doit être défini plus haut que la« mise à jour du statut »de la valeur de l'agent»
Ouvrez n'importe quel éditeur (favori) avec le fichier de configuration Apache2 (dans notre système, le chemin d'accès au fichier "/etc/apache2/apache2.conf") et changez la valeur de la directive "KeepAliveTimeout" de 5 à 10.
Si nécessaire, ajoutez un alias au dossier Hashtopolis dans la configuration du serveur Web (si le répertoire a été créé dans un répertoire autre que "/ var / www / html"). Nous ajoutons également la directive «AllowOverride All» pour autoriser l'utilisation des fichiers .htaccess dans les répertoires enfants.
Juste au cas où, nous avons ajouté les directives "ServerSignature Off" et "ServerTokens Prod" au fichier de configuration "/etc/apache2/apache2.conf" avec le redémarrage ultérieur du service apache2, et avons également indiqué les adresses IP autorisées pour accéder à la directive "phpMyAdmin" " Autorisez à partir de 1.2.3.4/28 "dans la configuration" /etc/apache2/conf-enabled/phpmyadmin.conf ". Autoriser l'accès depuis n'importe quelle adresse à Hashtopolis ou restreindre l'espace locahost / PrivateIP - dépend de la configuration spécifique. Dans notre cas, l'accès est autorisé à partir de n'importe quelle adresse IP, comme vous êtes mieux, décidez ce point.
Ce serait une bonne idée de restreindre l'accès au répertoire hashtopolis. Nous avons opté pour la méthode simple et rapide: pour accéder au répertoire "/ hashtopolis", le client Web doit passer par l'authentification de base.
Installez le paquet apache-utils (si ce n'est pas fait auparavant). À ce stade, «htpasswd» est requis. Créez un fichier et une connexion utilisateur:
sudo htpasswd -c /etc/apache2/.htpasswd kraud
Après avoir entré le mot de passe, l'utilisateur sera ajouté au fichier .htpasswd, vous pouvez vérifier avec la commande "cat /etc/apache2/.htpasswd". L'ajout d'utilisateurs est effectué par une commande similaire sans la touche "-c".
Ensuite, nous configurons l'accès au répertoire de l'application Web en ajoutant des directives à la configuration apache2 / sites-available / 000-default.conf. En conséquence, nous avons obtenu une telle configuration de «répertoire»:
Alias /hashtopolis "/var/www/hashtopolis" <Directory /var/www/hashtopolis> AuthType Basic AuthName "Restricted Content" AuthUserFile /etc/apache2/.htpasswd Order allow,deny Allow from all AllowOverride All Require valid-user </Directory>
Veuillez noter que lorsque vous utilisez "Basic-Auth", vous devez en outre ajouter des paramètres à la configuration de l'agent Hashtopolis (fichier "\ hashtopolis_agent_dir \ config.json"):
{ "url": "http://1.2.3.4/hashtopolis/api/server.php", "voucher": "", "token": "token", "uuid": "d54de86f-3942-4127-af63-f257c45b66cd", "debug": false, "auth-user": "kraud", "auth-password": "password" }
A propos de l'agent Hashtopolis un peu plus tard.
Vous devez également créer une nouvelle base de données pour l'application Hashtopolis et l'utilisateur MySQL avec accès à cette base de données. Ensuite, quelqu'un qui l'aime plus - dans le PMA ou dans la console pour créer une base de données - cela ne devrait pas être difficile. Nous enregistrons le nom de la base de données et les informations d'identification dans des notes - elles seront nécessaires plus tard.
À la suite de ces étapes, la page d'installation de l'application Web Hashtopolis devrait se charger à l'URL suivante: http: // <server_ip> / hashtopolis:

Si cela ne se produit pas, le problème se situe probablement dans les permissions du répertoire "/ var / www / hashtopolis", ou dans la configuration du serveur web (par exemple, une erreur dans "Alias"). Il vaut la peine de vérifier l'URL http: // <server_ip> /hashtopolis/src/index.php ou http: // <server_ip> /hashtopolis/src/install/index.php
Ensuite, le formulaire «DB Connection» sera chargé, sur lequel il sera nécessaire de remplir les paramètres de connexion au SGBD, le nom de la base de données (par exemple «hashtopolis») et les informations d'identification de l'utilisateur pour y accéder. Si la connexion est correctement établie, le formulaire suivant s'ouvrira avec un seul bouton «Continuer» - cliquez dessus. Si tout va bien - le formulaire «Créer un utilisateur administrateur» s'ouvrira - nous indiquons ici les informations d'identification de l'administrateur de l'application Web Hashtopolis:

Après avoir cliqué sur le bouton «Créer», si le formulaire a été traité correctement, un document sera affiché avec une confirmation de l'installation réussie et des recommandations:
- Assurez-vous que les autorisations sur le répertoire "./install" sont correctes ou supprimez ce répertoire
- Vérifiez le contenu du fichier "./install/.htaccess" (devrait être "Order deny, allow \ nDeny from all")
- À la demande adressée à "./install", le code de statut 403 doit retourner
Après toutes les étapes effectuées, le formulaire d'authentification Hashtopolis doit être chargé à l'URL "http: // <server_ip> / hashtopolis /":

Ensuite (facultatif) configurez l'utilisation de HTTPS, la connexion du certificat de sécurité - nous allons omettre cette étape. Nous procédons à la configuration de l'agent Hashtopolis.
Installation de l'agent
Les agents sont directement impliqués dans la tâche de «hachage» - des instances de «hashcat» ou d'un autre pirate sont lancées sur les agents hôtes. Le dialogue entre le serveur Hashtopolis et les agents se fait via HTTP / HTTPs.
L'agent peut être installé sur des systèmes exécutant Windows / Linux / MacOS X. Dans la version actuelle de Hashtopolis, seul l'agent Python est pris en charge.
La version .Net de l'agent Hashtopolis n'est plus prise en chargeNous avions déjà un hôte Windows 10 que nous utilisions pour «casser les hachages» en utilisant «hashcat». Par conséquent, nous avons décidé de ne rien changer, mais de prendre un système de travail prêt à l'emploi pour se connecter à Hashtopolis.
Sur un système Windows, vous devez d'abord installer l'interpréteur Python 3. N'oubliez pas d'installer l'oiseau "Ajouter Python 3.x à PATH" (exemple ci-dessous):

Ensuite, vous devez télécharger l'archive hastopolis.zip depuis le serveur Hashtopolis ou livrer le fichier d'archive à l'hôte de l'agent.
Pour télécharger les fichiers d'agent depuis le serveur, cliquez sur le "Nouvel agent" dans le menu déroulant "Agents". Ensuite, nous arrivons à la section "Ajouter un nouvel agent" où le bouton de téléchargement sera contenu - "Télécharger".

De plus, dans la section «Ajouter un nouvel agent», l'URL de connexion de l'agent et le bouton de création d'un bon seront indiqués (vous devez cliquer sur Créer).
Dans notre cas, l'archive a été enregistrée dans le répertoire «C: \ hashtopolis», qui sera le répertoire de travail de l'agent.
Pour la commodité de travailler avec l'agent (affichage du journal, copier / coller, etc.), nous utilisons une session PowerShell. L'agent est lancé par la commande:
> python.exe .\hashtopolis.zip
L'agent est démarré en mode débogage à l'aide de l'option -d.
> python3.exe .\hashtopolis.zip -d
Vous pouvez désactiver le débogage en modifiant la configuration config.json avec la chaîne debug: false ".
Vous pouvez appeler l'aide pour des arguments supplémentaires pour exécuter la commande d'agent en utilisant l'option "-h":
Commandes de l'agent Hashtopolis> python.exe. \ hashtopolis.zip -h
utilisation: python3 hashtopolis.zip [-h] [--de-register] [--version]
[--nombre uniquement] [--disable-update] [--debug]
[--voucher VOUCHER] [--url URL]
Client Hashtopolis v0.4.0
arguments facultatifs:
-h, --help afficher ce message d'aide et quitter
- Le client de désenregistrement devrait se désinscrire automatiquement du serveur maintenant
--version afficher les informations de version
--number-only lors de l'utilisation de --version n'afficher que le nombre
--disable-update désactiver la récupération des mises à jour automatiques du client à partir du
serveur
--debug, -d applique la sortie de débogage
--voucher VOUCHER bon à utiliser pour s'inscrire automatiquement
--url URL URL vers l'API client Hashtopolis
Après l'initialisation, l'agent demandera l'URL du serveur Hashtopolis (vous pouvez le copier depuis la section "Ajouter un nouvel agent"): "Veuillez saisir l'URL de l'API de votre installation Hashtopolis:"
Remarque: le script d'agent doit toujours fonctionner en arrière-plan. Il existe un composant hashtopolis-runner qui exécute l'agent lors de la réception de messages de multidiffusion du serveur. Runner ne fonctionne que sur les hôtes Linux. En savoir plus ici:
github.com/s3inlc/hashtopolis-runnerSi l'URL est correcte et que l'agent a pu se connecter, un message sera reçu demandant le bon: «Aucun jeton trouvé! Veuillez saisir un bon pour enregistrer votre agent: "
L'agent émettra une confirmation, si le code du bon est correct et passera en mode veille des tâches:
Successfully registered! Collecting agent data... Login successful! Hashtopolis Server version: 0.10.1 () Client is up-to-date! No task available!
Dans la section «Agents» du tableau, un nouvel agent sera ajouté, avec des informations sur le système: nom d'hôte, GPU / CPU et d'autres informations:

Dans le répertoire C: \ hashtopolis, un fichier config.json avec la configuration de l'agent et un fichier journal client.log seront créés. Des paramètres supplémentaires (par exemple, proxy HTTP) peuvent être ajoutés manuellement, selon les instructions:
github.com/s3inlc/hashtopolis-agent-pythonIl n'a pas été possible de trouver des informations sur la rotation des journaux ou la taille maximale des journaux, à en juger par la source de l'agent, toutes les sorties standard du terminal sont également écrites dans le fichier, aucune restriction ou vérification n'a été trouvée.
Nous vous recommandons d'accéder immédiatement aux paramètres de l'agent dans l'interface Web de Hashtopolis - cliquez simplement sur le nom d'hôte (dans la capture d'écran ci-dessus, il s'agit de «DENIGMA»). Il est préférable d'installer l'oiseau "Trust agent with secret data", ainsi que d'indiquer le propriétaire ("Owner"):

Configuration des binaires de cracker
La section «Crackers / Cracker Biniaries» présente les paramètres des fichiers exécutables «cracker», par défaut la section contient «hashcat 5.1.0». Si vous devez utiliser une version différente de hashcat pour des tâches spécifiques, cliquez sur «Ajouter une version / binaire» (liste des
versions :
github.com/hashcat/hashcat/releases ). Dans le formulaire, remplissez tous les champs et cliquez sur "Créer un binaire":

Soyez prudent lorsque vous remplissez le formulaire, en particulier, évitez les "espaces" dans la "URL de téléchargement", spécifiez "hashcat" dans le champ "Nom de base binaire" - le script de l'agent complètera les parties manquantes dans le nom du fichier exécutable. Nous avons donc ajouté un ensemble supplémentaire d'exécutables pour la version 4.1.0. Vous pouvez apporter des modifications en cliquant sur le nom du cracker dans la colonne «Nom».
À la suite de cette «configuration», lors de la création d'une nouvelle tâche («Tâches / Nouvelles tâches»), il sera possible de sélectionner une version de hachage.

Dans la section Crackers, vous pouvez également ajouter un autre type de cracker,
plus d'informations sur l'utilisation du cracker générique ici .
Lors du démarrage de la tâche dans le répertoire «crackers» local sur l'hôte de l'agent, l'archive 7z spécifiée dans «URL de téléchargement» sera décompressée dans le dossier avec le numéro d'identification du cracker

Si cette version du cracker a été «installée» plus tôt, l'archive ne sera pas téléchargée à nouveau.
Créer une tâche pour casser des hachages
Nous avons configuré l'agent et avons hâte de le vérifier. Afin de démarrer les «hachages de craquage», vous devez créer une liste de hachages (ou «liste de hachage»), puis la spécifier dans la tâche. Pour créer une liste dans l'interface Web Hashtopolis, cliquez sur «Listes» et sélectionnez «Nouvelle liste de hachage» dans le menu déroulant. Sur nos projets, nous rencontrons régulièrement des hachages NTLM / NetNTLM - nous les pratiquerons. Nous utiliserons n'importe quel service en ligne et générerons des hachages NTLM. Ensuite, définissez les paramètres restants de la liste et cliquez sur "Créer une liste de hachage":
Un point important - tous les hachages «fissurés / non fissurés» peuvent être vus dans la liste créée, c'est-à-dire toutes les données de hachage sont associées à la liste, même les tâches qui lui sont associées. Par conséquent, soyez prudent lorsque vous supprimez des listes de hachage. Et si pour une raison quelconque les modules d'application cessent de fonctionner, par exemple, le module «notifications.php» a été désactivé après la suppression de la tâche à laquelle les notifications ont été affectées, nous avons dû cliquer sur les entrées du tableau «NotificationSetting»
Ensuite, vous devez ajouter le dictionnaire, car nous allons rompre les hachages avec la sélection «dictionnaire» (la clé «-a0» dans «hashcat»). Allez dans la section "Fichiers" (l'onglet "Listes de mots" sera actif), cliquez sur le bouton "Ajouter un fichier" et sélectionnez un fichier local, puis cliquez sur "Télécharger des fichiers". Nous pouvons également utiliser le téléchargement par URL, par exemple,
télécharger le dictionnaire à partir d'un référentiel "connu" :

Vous pouvez maintenant démarrer les tâches de l'agent. Dans le menu principal de Hashtopolis, sélectionnez «Tâches / Nouvelle tâche». Ensuite, remplissez le formulaire:
- Entrez le nom de la tâche dans le paramètre "Nom"
- Sélectionnez la liste de hachage dans le paramètre Haslist
- Nous marquons le dictionnaire à partir de la liste des "listes de mots" à droite - le nom du dictionnaire est automatiquement substitué dans le champ "Ligne de commande" soit: Spécifiez le chemin d'accès au dictionnaire au format ".. \ chemin \ vers \ fichier \% nom de fichier%"
- Dans le champ "Ligne de commande", entrez les paramètres de démarrage de hashcat, par exemple, "-a0"
- La priorité est pertinente lorsqu'il y a de nombreuses tâches.
- Les «notes de tâche» sont utilisées pour les notes; en dehors de Hashtopolis, elles ne seront pas disponibles.
- Vous pouvez sélectionner une couleur pour la tâche avec laquelle elle sera marquée dans la liste des tâches (menu "Tâche / Afficher les tâches")
Nous laissons le reste des paramètres par défaut, cliquez sur "Créer une tâche". Après cela, une nouvelle tâche apparaîtra dans la liste des tâches:

Comme le montre le tableau, le ou les agents ne sont pas affectés à la tâche "NTLM_test_crack". Vous pouvez affecter un agent soit dans le menu "Détails de l'agent" du paramètre "Affectation:", soit dans les propriétés de la tâche, sélectionnez un agent dans la liste et cliquez sur le bouton "Attribuer":

Immédiatement après cela, le «moteur» démarrera sur l'agent - des instructions seront transmises:
- Téléchargez les «binaires de cracker» (par défaut hashcat.net/files/hashcat-5.1.0.7z ). Si les fichiers existent et que la version correspond, l'archive ne sera pas téléchargée
- Télécharger le fichier du dictionnaire (si la "liste de mots" du serveur hashtopolis est spécifiée)
- Exécutez un court test de performance
- Commencer à pirater les hachages
Dans ce cas, la console affichera des informations sur les étapes de préparation du GPU, le processus de sélection, les performances du système en "H / s", etc.
À la suite du lancement de la tâche et de son exécution, l'état de la «liste de hachage» sera mis à jour. Les mots de passe sélectionnés peuvent être consultés en cliquant sur le numéro en face de «Cracked:» dans le tableau «Tasks», ou dans la section «Hash details»:

Si un agent rencontre des erreurs lors de l'exécution des tâches, le statut de cet agent sera modifié et il sera nécessaire de l'activer manuellement. Pour "réactiver" l'agent, vous devez placer un oiseau devant le paramètre "Activité" dans les paramètres de l'agent. Le statut suspendu ressemble à ceci:

Pour empêcher l'agent de s'arrêter en raison d'erreurs, vous devez remplacer le paramètre «Cracker errors» par l'une des options «Keep agent running» (l'agent fonctionnera, mais les erreurs peuvent être corrigées dans le journal ou rejetées):

Queue
Merci de votre attention! Dans la partie suivante, nous parlerons de la configuration des notifications dans Hashtopolis.