Olá pessoal! Na
última parte, falamos sobre soluções existentes para "orquestrar" as tarefas paralelas de "quebra de hash" no hashcat.
Nesta parte, continuamos a falar sobre o projeto Hashtopolis. Considere preparar os componentes do ambiente da web no servidor. Vamos analisar os principais parâmetros do servidor e do agente Hashtopolis.
Instalando e configurando o Hashtopolis
Por seu trabalho, o servidor Hashtopolis deseja os seguintes componentes:
- Apache2 / nginx
- Módulos PHP 7.0 ou superior de 64 bits: módulos php-gd, pear, php-curl
- MySQL 5.x + KM com acesso total ao banco de dados do aplicativo
O Hashtopolis possui suporte ao nginx, para o qual você precisa configurar o bloqueio de acesso para todos os subdiretórios "/ hashtopolis" que contêm o arquivo .htaccess. Neste artigo, estamos pensando em instalar o Hashtopolis com o servidor da web Apache2 (portanto, LAMP).
Para se familiarizar com o projeto, você também pode usar o
XAMPP , na versão 5.6.40, tudo "decolou" sem problemas. O material neste artigo é útil na configuração do Hashtopolis no XAMPP.
Sob o spoiler, um pouco sobre a imagem do Hocktopolis Docker:
Instale Hashtopolis na janela de encaixeVárias imagens de servidor hashtopolis foram encontradas no Docker Hub, no entanto, apenas uma gerou pelo menos alguma confiança:
hub.docker.com/r/kpeiruza/hashtopolisO autor não era muito preguiçoso e adicionou uma descrição da "instalação" de hashtopolis no Docker. Detalhes de configuração e contêiner são descritos em detalhes. Uma observação importante - ao configurar o mapeamento de portas (por exemplo, 'docker run ... -p 80:80'), considere os recursos do seu sistema operacional e a necessidade de acessar o servidor da Web nos agentes host de Hashtopolis.
O processo de configuração do aplicativo da Web é descrito mais adiante em nosso artigo.
Instalação LAMP
A versão do projeto que usamos: Hashtopolis 0.10.1
Para o servidor Hashtopolis funcionar, possuímos um host suficiente com a seguinte configuração:
- 1 CPU
- 1GB RAM
- Disco de 25 GB
Recomendamos a instalação do phpMyAdmin, Adminer ou outro análogo para trabalhar com o DBMS. Portanto, em caso de problemas com a funcionalidade Hashtopolis, a solução de problemas pode ser realizada sem sair do navegador.
No processo de instalação do software em nosso servidor LAMP, usamos as instruções do Wiki do projeto Hashtopolis (https://github.com/s3inlc/hashtopolis/wiki/Server-Prerequisites):
- sudo apt update && sudo apt upgrade
- sudo apt instala o servidor mysql
- sudo apt instala apache2
- sudo apt install libapache2-mod-php php-mysql php php-gd php-pearl php-curl
- sudo apt install git
- sudo apt instala o phpmyadmin
Se o assistente de configuração interativa não foi iniciado durante a instalação dos pacotes mysql, você precisará executar o seguinte comando: mysql_secure_installation.
Assim, usando o "assistente interativo", uma senha será definida para acessar o DBMS.
Então você precisa criar um usuário no MySQL e um banco de dados ao qual esse usuário terá acesso de leitura / gravação.
Prosseguimos com a instalação do servidor Hashtopolis.
Você pode clonar o código fonte do Hashtopolis no repositório git do projeto.Nós agimos de acordo com as instruções e clonamos o repositório e, a partir do diretório "hashtopolis", transferimos "src" recursivamente para "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
Defina a diretiva "KeepAliveTimeout" para 10 milissegundos, conforme recomendado pelos desenvolvedores. Justificação:
Para aproveitar o uso de sessões TCP no cliente python, o tempo limite do servidor precisa ser definido como algo maior que o tempo de atualização do status
Nossa tradução gratuita: “Para usar sessões TCP em um cliente implementado em Python, o tempo limite da sessão na configuração do servidor web deve ser definido como mais alto que o“ status update “agent value”
Abra qualquer editor (favorito) com o arquivo de configuração Apache2 (em nosso sistema, o caminho para o arquivo "/etc/apache2/apache2.conf") e altere o valor da diretiva "KeepAliveTimeout" de 5 para 10.
Se necessário, adicione um alias à pasta Hashtopolis na configuração do servidor da web (se o diretório foi criado em um diretório diferente de "/ var / www / html"). Também adicionamos a diretiva “AllowOverride All” para permitir o uso de arquivos .htaccess em diretórios filhos.
Apenas no caso, adicionamos as diretivas “ServerSignature Off” e “ServerTokens Prod” ao arquivo de configuração “/etc/apache2/apache2.conf” com a reinicialização subsequente do serviço apache2 e também indicamos os endereços IP permitidos para acessar a diretiva “phpMyAdmin” Permitir a partir de 1.2.3.4/28 "na configuração" /etc/apache2/conf-enabled/phpmyadmin.conf ". Permitir acesso de qualquer endereço a Hashtopolis ou restringir locahost / PrivateIP-space - depende da configuração específica. No nosso caso, o acesso é permitido a partir de qualquer IP, como é melhor, decida esse momento.
Seria uma boa idéia restringir o acesso ao diretório hashtopolis. Seguimos o caminho mais rápido e fácil - para acessar o diretório "/ hashtopolis", o cliente da Web deve passar pela Autenticação Básica.
Instale o pacote apache-utils (se não tiver sido feito antes). Dos utilitários nesta fase, é necessário "htpasswd". Crie um arquivo e login de usuário:
sudo htpasswd -c /etc/apache2/.htpasswd kraud
Após digitar a senha, o usuário será adicionado ao arquivo .htpasswd, você pode verificar com o comando "cat /etc/apache2/.htpasswd". A adição de usuários é realizada por um comando semelhante sem a tecla "-c".
Em seguida, configuramos o acesso ao diretório de aplicativos da web adicionando diretivas à configuração apache2 / sites-available / 000-default.conf. Como resultado, obtivemos uma configuração de "diretório":
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>
Observe que ao usar o "Basic-Auth", você deve adicionar parâmetros à configuração do agente Hashtopolis (arquivo "\ 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 o Hashtopolis Agent um pouco mais tarde.
Você também deve criar um novo banco de dados para o aplicativo Hashtopolis e o usuário MySQL com acesso a esse banco de dados. Então, alguém que gosta mais - no PMA ou no console para criar um banco de dados - isso não deve ser difícil. Salvamos o nome e as credenciais do banco de dados em notas - elas serão necessárias mais tarde.
Como resultado dessas etapas, a página de instalação do aplicativo Web Hashtopolis deve carregar no seguinte URL: http: // <ip_do_servidor> / hashtopolis:

Se isso não acontecer, provavelmente o problema está nas permissões no diretório "/ var / www / hashtopolis" ou na configuração do servidor da Web (por exemplo, um erro em "Alias"). Vale a pena conferir o URL http: // <server_ip> /hashtopolis/src/index.php ou http: // <server_ip> /hashtopolis/src/install/index.php
Em seguida, o formulário “DB Connection” será carregado, no qual será necessário preencher os parâmetros de conexão com o DBMS, o nome do banco de dados (por exemplo, 'hashtopolis') e as credenciais do usuário para acessá-lo. Se a conexão for estabelecida corretamente, o seguinte formulário será aberto com um único botão "Continuar" - clique nele. Se tudo estiver correto - o seguinte formulário "Criar usuário administrador" será aberto - aqui indicamos as credenciais do administrador do aplicativo da web Hashtopolis:

Depois de clicar no botão "Criar", se o formulário foi processado corretamente, um documento será exibido com a confirmação da instalação e recomendações bem-sucedidas:
- Verifique se as permissões no diretório "./install" estão corretas ou exclua este diretório
- Verifique o conteúdo do arquivo "./install/.htaccess" (deve ser "Negar pedido, permitir \ nDeny de todos")
- Na solicitação direcionada para "./install", o código de status 403 deve retornar
Após todas as etapas, o formulário de autenticação do Hashtopolis deve ser carregado no URL "http: // <server_ip> / hashtopolis /":

Em seguida (opcional) configure o uso do HTTPS, a conexão do certificado de segurança - omitiremos esta etapa. Prosseguimos para configurar o agente Hashtopolis.
Instalação do agente
Os agentes estão diretamente envolvidos na tarefa de “quebra de hash” - instâncias de 'hashcat' ou outro cracker são iniciadas nos agentes host. O diálogo entre o servidor Hashtopolis e os agentes ocorre por HTTP / HTTPs.
O agente pode ser instalado em sistemas executando Windows / Linux / MacOS X. Na versão atual do Hashtopolis, apenas o agente Python é suportado.
A versão .net do agente Hashtopolis não é mais suportadaJá tínhamos um host do Windows 10 que costumávamos “quebrar hashes” usando 'hashcat'. Portanto, decidimos não mudar nada, mas adotar um sistema de trabalho pronto para conexão com Hashtopolis.
Em um sistema Windows, você deve primeiro instalar o intérprete Python 3. Não se esqueça de instalar o passarinho "Adicionar Python 3.x ao PATH" (exemplo abaixo):

Em seguida, é necessário baixar o arquivo hastopolis.zip do servidor Hashtopolis ou entregar o arquivo ao host do agente.
Para baixar arquivos do agente do servidor, clique em "Novo agente" no menu suspenso "Agentes". Em seguida, chegamos à seção "Adicionar novo agente", onde o botão de download estará contido - "Download".

Além disso, na seção "Adicionar novo agente", o URL para conectar o agente e o botão para criar um voucher serão indicados (você precisa clicar em "Criar").
No nosso caso, o arquivo foi salvo no diretório "C: \ hashtopolis", que será o diretório de trabalho do agente.
Para a conveniência de trabalhar com o agente (exibindo o log, copie / cole etc.), usamos uma sessão do PowerShell. O agente é iniciado pelo comando:
> python.exe .\hashtopolis.zip
O agente é iniciado no modo de depuração usando a opção -d.
> python3.exe .\hashtopolis.zip -d
Você pode desativar a depuração editando a configuração config.json com a string debug: false ".
Você pode chamar a ajuda para obter argumentos adicionais para executar o comando do agente usando a opção "-h":
Comandos do agente Hashtopolis> python.exe. \ hashtopolis.zip -h
uso: python3 hashtopolis.zip [-h] [--de-register] [--version]
[--number-only] [--disable-update] [--debug]
[--voucher VOUCHER] [--url URL]
Cliente Hashtopolis v0.4.0
argumentos opcionais:
-h, --help mostra esta mensagem de ajuda e sai
--de-register client deve cancelar o registro automaticamente do servidor agora
--version mostra informações da versão
--number-only ao usar --version mostra apenas o número
--disable-update desativar a recuperação de atualizações automáticas do cliente a partir do
servidor
--debug, -d impõe saída de depuração
--voucher VOUCHER para usar para registrar automaticamente
--url URL URL para a API do cliente Hashtopolis
Após a inicialização, o agente solicitará o URL do servidor Hashtopolis (você pode copiá-lo da seção "Adicionar novo agente"): "Digite o URL da API da sua instalação do Hashtopolis:"
Nota: o script do agente deve sempre funcionar em segundo plano. Há um componente hashtopolis-runner que executa o agente ao receber mensagens multicast do servidor. O Runner funciona apenas em hosts Linux. Leia mais aqui:
github.com/s3inlc/hashtopolis-runnerSe o URL estiver correto e o agente puder se conectar, será recebida uma mensagem solicitando o comprovante: “Nenhum token encontrado! Digite um voucher para registrar seu agente: "
O agente emitirá uma confirmação, se o código do comprovante estiver correto e for para o modo de espera de tarefas:
Successfully registered! Collecting agent data... Login successful! Hashtopolis Server version: 0.10.1 () Client is up-to-date! No task available!
Na seção "Agentes" da tabela, um novo agente será adicionado, com informações sobre o sistema: Nome do host, GPU / CPU e outras informações:

No diretório C: \ hashtopolis, um arquivo config.json com configuração do agente e um arquivo de log client.log serão criados. Parâmetros adicionais (por exemplo, proxy HTTP) podem ser adicionados manualmente, de acordo com as instruções:
github.com/s3inlc/hashtopolis-agent-pythonNão foi possível encontrar informações sobre a rotação do log ou o tamanho máximo do log, a julgar pela origem do agente, todo o stdout do terminal também é gravado em um arquivo, sem restrições ou verificações.
Recomendamos que você vá imediatamente para as configurações do agente na interface da web do Hashtopolis - basta clicar no nome do host (na captura de tela acima, é “DENIGMA”). É melhor instalar o passarinho "Agente de confiança com dados secretos" e indicar o proprietário ("Proprietário"):

Configuração de binários do cracker
A seção “Crackers / Cracker Biniaries” apresenta os parâmetros dos arquivos executáveis do “cracker”; por padrão, a seção contém “hashcat 5.1.0”. Se você precisar usar uma versão diferente do hashcat para tarefas específicas, clique em "Adicionar versão / binário" (lista de liberação:
github.com/hashcat/hashcat/releases ). No formulário, preencha todos os campos e clique em "Criar binário":

Tenha cuidado ao preencher o formulário, em particular, evite "espaços" no "URL de download", especifique "hashcat" no campo "Nome da base binária" - o script do agente complementará as partes ausentes no nome do arquivo executável. Portanto, adicionamos um conjunto adicional de executáveis para a versão 4.1.0. Você pode fazer alterações clicando no nome do cracker na coluna "Nome".
Como resultado dessa “configuração”, ao criar uma nova tarefa (“Tarefas / Novas Tarefas”), será possível selecionar uma versão hashcat.

Na seção Crackers, você também pode adicionar outro tipo de cracker,
mais sobre como trabalhar com o cracker genérico aqui .
Ao iniciar a tarefa no diretório local de "crackers" no host do agente, o arquivo 7z especificado no "URL de download" será descompactado na pasta com o número de identificação do cracker

Se esta versão do cracker foi "instalada" anteriormente, o arquivo não será baixado novamente.
Crie uma tarefa para quebrar hashes
Montamos o agente e mal podemos esperar para conferir. Para iniciar a "quebra de hashes", é necessário criar uma lista de hashes (ou "lista de hash") e depois especificá-la na tarefa. Para criar uma lista na interface da web do Hashtopolis, clique em "Listas" e selecione "Nova lista de hash" no menu suspenso. Em nossos projetos, encontramos regularmente hashes NTLM / NetNTLM - praticaremos sobre eles. Usaremos qualquer serviço online e geraremos hashes NTLM. Em seguida, defina os parâmetros restantes da lista e clique em "Criar hashlist":
Um ponto importante - todos os hashes "rachados / não rachados" podem ser vistos na lista criada, ou seja, todos os dados de hash estão associados à lista, até tarefas associadas a ela. Portanto, tenha cuidado ao excluir listas de hash. E se, por algum motivo, os módulos do aplicativo pararem de funcionar, por exemplo, o módulo "Notifications.php" foi desativado após a exclusão da tarefa à qual as notificações foram atribuídas, tivemos que clicar nas entradas da tabela "NotificationSetting"
Em seguida, você precisa adicionar o dicionário, pois quebraremos os hashes com a seleção “dictionary” (a tecla '-a0' em 'hashcat'). Vá para a seção "Arquivos" (a guia "Listas de palavras" estará ativa), clique no botão "Adicionar arquivo" e selecione um arquivo local e clique em "Enviar arquivos". Também podemos usar o download por URL, por exemplo,
baixar o dicionário de um repositório "conhecido" :

Agora você pode iniciar as tarefas para o agente. No menu principal do Hashtopolis, selecione "Tarefas / Nova tarefa". Em seguida, preencha o formulário:
- Digite o nome da tarefa no parâmetro "Nome"
- Selecione a lista de hash no parâmetro Haslist
- Marcamos o dicionário da lista de "Listas de palavras" à direita - o nome do dicionário é substituído automaticamente no campo "Linha de comando": Especifique o caminho para o dicionário no formato ".. \ caminho \ para \ arquivo \% filename%"
- No campo "Linha de comando", insira os parâmetros de inicialização do hashcat, por exemplo, "-a0"
- A prioridade é relevante quando há muitas tarefas.
- As notas de tarefas são usadas para anotações; fora de Hashtopolis, elas não estarão disponíveis.
- Você pode selecionar uma cor para a tarefa com a qual será marcada na lista de tarefas (menu "Tarefa / Mostrar tarefas")
Deixamos o restante dos parâmetros por padrão, clique em "Criar tarefa". Depois disso, uma nova tarefa aparecerá na lista de tarefas:

Como pode ser visto na tabela, o (s) agente (s) não está atribuído à tarefa "NTLM_test_crack". Você pode atribuir um agente no menu "Detalhes do agente" no parâmetro "Atribuição:" ou nas propriedades da tarefa, selecione um agente na lista e clique no botão "Atribuir":

Imediatamente depois disso, o "mecanismo" começará no agente - as instruções serão transmitidas:
- Faça o download de “binários do cracker” (por padrão, hashcat.net/files/hashcat-5.1.0.7z ). Se os arquivos existirem e a versão corresponder, o arquivo não será baixado
- Baixe o arquivo do dicionário (se "lista de palavras" do servidor hashtopolis for especificada)
- Execute um teste de desempenho curto
- Comece a hackear hashes
Nesse caso, o console exibirá informações sobre as etapas de preparação da GPU, o processo de seleção, o desempenho do sistema em "H / s" etc.
Como resultado do lançamento da tarefa e sua execução, o status da "lista de hash" será atualizado. As senhas selecionadas podem ser visualizadas clicando no número ao lado de "Cracked:" na tabela "Tasks" ou na seção "Hash details":

Se um agente encontrar erros durante a execução das tarefas, o status desse agente será alterado e será necessário ativá-lo manualmente. Para "ativar" o agente novamente, é necessário colocar um pássaro na frente do parâmetro "Activity" nas configurações do agente. O status de pausa fica assim:

Para impedir que o agente pare devido a erros, é necessário alterar o parâmetro "Erros do cracker" para uma das opções "Manter o agente em execução" (o agente funcionará, mas os erros podem ser corrigidos no log ou rejeitados):

Cauda
Obrigado pela atenção! Na próxima parte, falaremos sobre a configuração de notificações em Hashtopolis.