Hola a todos! En la
última parte, hablamos sobre las soluciones existentes para "orquestar" las tareas paralelas de "hash cracking" en hashcat.
En esta parte, continuamos hablando sobre el proyecto Hashtopolis. Considere preparar los componentes del entorno web en el servidor. Analicemos los parámetros principales del servidor y el agente de Hashtopolis.
Instalar y configurar Hashtopolis
Para su trabajo, el servidor de Hashtopolis quiere los siguientes componentes de usted:
- Apache2 / nginx
- PHP 7.0+ de 64 bits y módulos: módulos php-gd, pear, php-curl
- MySQL 5.x + KM con acceso completo a la base de datos de la aplicación
Hashtopolis tiene soporte nginx, para lo cual debe configurar el bloqueo de acceso para todos los subdirectorios "/ hashtopolis" que contienen el archivo .htaccess. En este artículo, estamos considerando instalar Hashtopolis con el servidor web Apache2 (por lo tanto, LAMP).
También puede usar
XAMPP para familiarizarse con el proyecto, en la versión 5.6.40 todo "despegó" sin problemas. El material de este artículo es útil para configurar Hashtopolis en XAMPP.
Debajo del spoiler, un poco sobre la imagen de Hocktopolis Docker:
Instalar Hashtopolis en la ventana acoplableSe encontraron varias imágenes del servidor hashtopolis en Docker Hub, sin embargo, solo una generó al menos algo de confianza:
hub.docker.com/r/kpeiruza/hashtopolisEl autor no era demasiado vago y agregó una descripción de la "instalación" de hastopópolis en Docker. Los detalles de configuración y el contenedor se describen en detalle. Una nota importante: al configurar la asignación de puertos (por ejemplo, 'docker run ... -p 80:80'), tenga en cuenta las características de su sistema operativo y la necesidad de acceder al servidor web en los agentes host de Hashtopolis.
El proceso de configuración de la aplicación web en sí se describe más adelante en nuestro artículo.
Instalación de la LÁMPARA
La versión del proyecto que utilizamos: Hashtopolis 0.10.1
Para que el servidor de Hashtopolis funcione, tuvimos suficiente host con la siguiente configuración:
- 1 CPU
- 1 GB de RAM
- 25 GB de disco
Recomendamos instalar phpMyAdmin, Adminer u otro análogo para trabajar con el DBMS. Por lo tanto, en caso de problemas con la funcionalidad de Hashtopolis, la solución de problemas se puede realizar sin salir del navegador.
En el proceso de instalación de software en nuestro servidor LAMP, utilizamos las instrucciones del Wiki del proyecto Hashtopolis (https://github.com/s3inlc/hashtopolis/wiki/Server-Prerequisites):
- sudo apt update && sudo apt upgrade
- 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 el asistente de configuración interactiva no se inició durante la instalación de los paquetes de mysql, debe ejecutar el siguiente comando: mysql_secure_installation.
Por lo tanto, utilizando el "asistente interactivo", se establecerá una contraseña para acceder al DBMS.
Luego debe crear un usuario en MySQL y una base de datos a la que este usuario tendrá acceso de lectura / escritura.
Procedemos a la instalación del servidor Hashtopolis.
Puede clonar el código fuente de Hashtopolis desde el repositorio git del proyecto. Actuamos de acuerdo con las instrucciones y clonamos el repositorio, y desde el directorio "hashtopolis" transferimos "src" recursivamente a "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
Establezca la directiva "KeepAliveTimeout" en 10 milisegundos, como recomiendan los desarrolladores. Justificación
Para aprovechar el uso de las sesiones TCP en el cliente de Python, el tiempo de espera del servidor debe establecerse en algo más alto que el tiempo de actualización de estado
Nuestra traducción gratuita: "Para utilizar sesiones TCP en un cliente implementado en Python, el tiempo de espera de la sesión en la configuración del servidor web debe establecerse por encima del" valor de agente "de actualización de estado
Abra cualquier editor (favorito) con el archivo de configuración de Apache2 (en nuestro sistema, la ruta al archivo "/etc/apache2/apache2.conf") y cambie el valor de la directiva "KeepAliveTimeout" de 5 a 10.
Si es necesario, agregue un alias a la carpeta Hashtopolis en la configuración del servidor web (si el directorio se creó en un directorio que no sea "/ var / www / html"). También agregamos la directiva "AllowOverride All" para permitir el uso de archivos .htaccess en directorios secundarios.
Por si acaso, agregamos las directivas "ServerSignature Off" y "ServerTokens Prod" al archivo de configuración "/etc/apache2/apache2.conf" con el reinicio posterior del servicio apache2, y también indicamos las direcciones IP permitidas para acceder a la directiva "phpMyAdmin" Permitir desde 1.2.3.4/28 "en la configuración" /etc/apache2/conf-enabled/phpmyadmin.conf ". Permitir el acceso desde cualquier dirección a Hashtopolis o restringir locahost / PrivateIP-space, depende de la configuración específica. En nuestro caso, el acceso está permitido desde cualquier IP, ya que está mejor, decida este punto.
Sería una buena idea restringir el acceso al directorio hashtopolis. Seguimos el camino rápido y fácil: para acceder al directorio "/ hashtopolis", el cliente web debe pasar por la autenticación básica.
Instale el paquete apache-utils (si no lo ha hecho antes). De las utilidades en esta etapa, se requiere "htpasswd". Cree un archivo e inicio de sesión de usuario:
sudo htpasswd -c /etc/apache2/.htpasswd kraud
Después de ingresar la contraseña, el usuario se agregará al archivo .htpasswd, puede verificar con el comando "cat /etc/apache2/.htpasswd". La adición de usuarios se realiza mediante un comando similar sin la tecla "-c".
A continuación, configuramos el acceso al directorio de aplicaciones web agregando directivas a la configuración apache2 / sites-available / 000-default.conf. Como resultado, obtuvimos dicha configuración de "directorio":
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>
Tenga en cuenta que cuando use "Basic-Auth", también debe agregar parámetros a la configuración del agente de Hashtopolis (archivo "\ 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" }
Sobre el agente de Hashtopolis un poco más tarde.
También debe crear una nueva base de datos para la aplicación Hashtopolis y el usuario MySQL con acceso a esta base de datos. Entonces, a alguien a quien le guste más, en el PMA o en la consola para crear una base de datos, esto no debería ser difícil. Guardamos el nombre de la base de datos y las credenciales en notas; se necesitarán más adelante.
Como resultado de estos pasos, la página de instalación de la aplicación web Hashtopolis debería cargarse en la siguiente URL: http: // <server_ip> / hashtopolis:

Si esto no sucede, el problema probablemente esté en los permisos en el directorio "/ var / www / hashtopolis", o en la configuración del servidor web (por ejemplo, un error en "Alias"). Vale la pena consultar la URL http: // <ip_servidor> /hashtopolis/src/index.php o http: // <ip_servidor> /hashtopolis/src/install/index.php
Luego, se cargará el formulario “Conexión DB”, en el cual será necesario completar los parámetros para conectarse al DBMS, el nombre de la base de datos (por ejemplo, 'hashtopolis') y las credenciales de usuario para acceder a él. Si la conexión se establece correctamente, el siguiente formulario se abrirá con un solo botón "Continuar": haga clic en él. Si todo está bien, se abrirá el siguiente formulario "Crear usuario administrador". Aquí le indicamos las credenciales del administrador de la aplicación web Hashtopolis:

Después de hacer clic en el botón "Crear", si el formulario se ha procesado correctamente, se mostrará un documento con la confirmación de la instalación exitosa y las recomendaciones:
- Asegúrese de que los permisos en el directorio "./install" sean correctos o elimine este directorio
- Verifique el contenido del archivo "./install/.htaccess" (debe ser "Orden denegar, permitir \ nDeny de todo")
- A petición dirigida a "./install", el código de estado 403 debería devolver
Después de todos los pasos realizados, el formulario de autenticación de Hashtopolis debe cargarse en la URL "http: // <ip_servidor> / hashtopolis /":

Luego (opcional) configure el uso de HTTPS, la conexión del certificado de seguridad; omitiremos este paso. Procedemos a configurar el agente de Hashtopolis.
Instalación de agente
Los agentes están directamente involucrados en la tarea de "hash cracking": se inician instancias de 'hashcat' u otro cracker en los agentes host. El diálogo entre el servidor de Hashtopolis y los agentes se produce a través de HTTP / HTTP.
El agente se puede instalar en sistemas que ejecutan Windows / Linux / MacOS X. En la versión actual de Hashtopolis, solo se admite el agente Python.
La versión .Net del agente de Hashtopolis ya no es compatibleYa teníamos un host de Windows 10 que solíamos "descifrar hashes" usando 'hashcat'. Por lo tanto, decidimos no cambiar nada, sino adoptar un sistema de trabajo listo para conectar a Hashtopolis.
En un sistema Windows, primero debe instalar el intérprete de Python 3. No olvide instalar el birdie "Agregar Python 3.x a PATH" (ejemplo a continuación):

Luego, debe descargar el archivo hastopolis.zip del servidor Hashtopolis o entregar el archivo al host del agente.
Para descargar archivos de agente del servidor, haga clic en "Nuevo agente" en el menú desplegable "Agentes". Luego llegamos a la sección "Agregar nuevo agente" donde se incluirá el botón de descarga - "Descargar".

Además, en la sección "Agregar nuevo agente", se indicará la URL para conectar el agente y el botón para crear un comprobante (debe hacer clic en "Crear").
En nuestro caso, el archivo se guardó en el directorio "C: \ hashtopolis", que será el directorio de trabajo del agente.
Para la conveniencia de trabajar con el agente (ver el registro, copiar / pegar, etc.) usamos una sesión de PowerShell. El agente se inicia mediante el comando:
> python.exe .\hashtopolis.zip
El agente se inicia en modo de depuración utilizando la opción -d.
> python3.exe .\hashtopolis.zip -d
Puede deshabilitar la depuración editando la configuración config.json con la cadena de depuración: falso ".
ConvenientePuede llamar a la ayuda para obtener argumentos adicionales para ejecutar el comando del agente utilizando la opción "-h":
Comandos de agente de Hashtopolis> python.exe. \ hashtopolis.zip -h
uso: python3 hashtopolis.zip [-h] [--de-register] [--version]
[--number-only] [--disable-update] [--debug]
[- vale de cupón] [- URL URL]
Cliente de Hashtopolis v0.4.0
argumentos opcionales:
-h, - ayuda a mostrar este mensaje de ayuda y salir
--de-registrarse cliente debería darse de baja automáticamente del servidor ahora
--version muestra información de la versión
--number-only cuando se usa --version muestra solo el número
--disable-update deshabilita la recuperación de actualizaciones automáticas del cliente desde el
servidor
--debug, -d hacer cumplir la salida de depuración
- Vale de cupón para usar para registrarse automáticamente
- URL URL URL a la API del cliente Hashtopolis
Después de la inicialización, el agente le preguntará la URL del servidor de Hashtopolis (puede copiarla desde la sección "Agregar nuevo agente"): "Ingrese la URL en la API de su instalación de Hashtopolis:"
Nota: el script del agente siempre debe funcionar en segundo plano. Hay un componente hashtopolis-runner que ejecuta el agente cuando recibe mensajes de multidifusión del servidor. Runner solo funciona en hosts Linux. Lea más aquí:
github.com/s3inlc/hashtopolis-runnerSi la URL es correcta y el agente pudo conectarse, se recibirá un mensaje solicitando el comprobante: “¡No se encontró ningún token! Ingrese un comprobante para registrar a su agente: "
El agente emitirá una confirmación, si el código del comprobante es correcto y pasará al modo de espera de tareas:
Successfully registered! Collecting agent data... Login successful! Hashtopolis Server version: 0.10.1 () Client is up-to-date! No task available!
En la sección "Agentes" de la tabla, se agregará un nuevo agente, con información sobre el sistema: nombre de host, GPU / CPU y otra información:

En el directorio C: \ hashtopolis, se creará un archivo config.json con configuración de agente y un archivo de registro client.log. Se pueden agregar parámetros adicionales (por ejemplo, proxy HTTP) manualmente, de acuerdo con las instrucciones:
github.com/s3inlc/hashtopolis-agent-pythonNo fue posible encontrar información sobre la rotación del registro o el tamaño máximo del registro, a juzgar por la fuente del agente, todo el stdout del terminal también se escribe en el archivo, no se encontraron restricciones ni comprobaciones.
Le recomendamos que vaya inmediatamente a la configuración del agente en la interfaz web de Hashtopolis, simplemente haga clic en el nombre del host (en la captura de pantalla de arriba es "DENIGMA"). Es mejor instalar el birdie "Agente de confianza con datos secretos", así como indicar el propietario ("Propietario"):

Configuración de binarios de cracker
La sección "Crackers / Cracker Biniaries" presenta los parámetros de los archivos ejecutables "cracker", por defecto la sección contiene "hashcat 5.1.0". Si necesita utilizar una versión diferente de hashcat para cualquier tarea específica, haga clic en "Agregar versión / binario" (lista de
versiones :
github.com/hashcat/hashcat/releases ). En el formulario, complete todos los campos y haga clic en "Crear binario":

Tenga cuidado al completar el formulario, en particular, evite los "espacios" en la "URL de descarga", especifique "hashcat" en el campo "Nombre base binario": el script del agente complementará las partes faltantes en el nombre del archivo ejecutable. Así que agregamos un conjunto adicional de ejecutables para la versión 4.1.0. Puede hacer cambios haciendo clic en el nombre de la galleta en la columna "Nombre".
Como resultado de esta "configuración", al crear una nueva tarea ("Tareas / Nuevas tareas"), será posible seleccionar una versión de hashcat.

En la sección Crackers, también puede agregar otro tipo de cracker,
más sobre cómo trabajar con el cracker genérico aquí .
Al iniciar la tarea en el directorio local de "crackers" en el host del agente, el archivo 7z especificado en la "URL de descarga" se desempaquetará en la carpeta con el número de ID del cracker

Si esta versión del cracker se "instaló" anteriormente, el archivo no se volverá a descargar.
Crea una tarea para romper hashes
Configuramos el agente y no podemos esperar para comprobarlo. Para comenzar a "descifrar hashes", debe crear una lista de hashes (o "Lista de hash") y luego especificarla en la tarea. Para crear una lista en la interfaz web de Hashtopolis, haga clic en "Listas" y seleccione "Nueva lista hash" en el menú desplegable. En nuestros proyectos, encontramos regularmente hash NTLM / NetNTLM, practicaremos en ellos. Utilizaremos cualquier servicio en línea y generaremos hashes NTLM. Luego, configure los parámetros restantes de la lista y haga clic en "Crear hashlist":
Un punto importante : todos los hashes "agrietados / no agrietados" se pueden ver en la lista creada, es decir Todos los datos hash están asociados con la lista, incluso las tareas asociadas con ella. Por lo tanto, tenga cuidado al eliminar listas hash. Y si por alguna razón los módulos de la aplicación dejan de funcionar, por ejemplo, el módulo "notificaciones.php" se apagó después de eliminar la tarea a la que se asignaron las notificaciones, tuvimos que hacer clic en las entradas en la tabla "Configuración de notificaciones"
A continuación, debe agregar el diccionario, ya que romperemos los hash con la selección de "diccionario" (la clave '-a0' en 'hashcat'). Vaya a la sección "Archivos" (la pestaña "Listas de palabras" estará activa), haga clic en el botón "Agregar archivo" y seleccione un archivo local, luego haga clic en "Cargar archivos". También podemos usar la descarga por URL, por ejemplo,
descargar el diccionario desde un repositorio "conocido" :

Ahora puede comenzar las tareas para el agente. Desde el menú principal de Hashtopolis, seleccione "Tareas / Nueva tarea". A continuación, complete el formulario:
- Ingrese el nombre de la tarea en el parámetro "Nombre"
- Seleccione la lista hash en el parámetro Haslist
- Marcamos el diccionario de la lista de "Listas de palabras" a la derecha: el nombre del diccionario se sustituye automáticamente en el campo "Línea de comando": Especifique la ruta al diccionario en el formato ".. \ ruta \ a \ archivo \% filename%"
- En el campo "Línea de comando", ingrese los parámetros de inicio de hashcat, por ejemplo, "-a0"
- La prioridad es relevante cuando hay muchas tareas.
- Las “notas de tareas” se usan para notas, fuera de Hashtopolis no estarán disponibles.
- Puede seleccionar un color para la tarea con la que se marcará en la lista de tareas (menú "Tarea / Mostrar tareas")
Dejamos el resto de los parámetros por defecto, haga clic en "Crear tarea". Después de eso, aparecerá una nueva tarea en la lista de tareas:

Como se puede ver en la tabla, los agentes no están asignados a la tarea "NTLM_test_crack". Puede asignar un agente desde el menú "Detalles del agente" en el parámetro "Asignación:", o en las propiedades de la tarea, seleccione un agente de la lista y haga clic en el botón "Asignar":

Inmediatamente después de eso, el "motor" comenzará en el agente; se transmitirán las instrucciones:
- Descargue "binarios de cracker" (por defecto hashcat.net/files/hashcat-5.1.0.7z ). Si los archivos existen y la versión coincide, el archivo no se descargará.
- Descargar el archivo de diccionario (si se especifica la "lista de palabras" del servidor hashtopolis)
- Ejecute una breve prueba de rendimiento
- Comience a hackear hashes
Al mismo tiempo, la consola mostrará información sobre las etapas de preparación de la GPU, el proceso de selección, el rendimiento del sistema en "H / s", etc.
Como resultado del lanzamiento de la tarea y su ejecución, se actualizará el estado de la "lista hash". Las contraseñas seleccionadas se pueden ver haciendo clic en el número opuesto a "Agrietado:" en la tabla "Tareas", o en la sección "Detalles de hash":

Si un agente encuentra errores durante la ejecución de las tareas, el estado de este agente cambiará y deberá activarlo manualmente. Para "activar" el agente nuevamente, debe colocar un pájaro delante del parámetro "Actividad" en la configuración del agente. El estado de pausa se ve así:

Para evitar que el agente se detenga debido a errores, debe cambiar el parámetro "Errores de cracker" a una de las opciones "Mantener el agente en ejecución" (el agente funcionará, pero los errores pueden repararse en el registro o rechazarse):

Cola
Gracias por su atencion! En la siguiente parte, hablaremos sobre la configuración de notificaciones en Hashtopolis.