John the Ripper 1.9.0-jumbo-1 com suporte FPGA

Liberado nova versão do cracker de senha mais antigo com suporte, John the Ripper 1.9.0-jumbo-1. (O projeto está em desenvolvimento desde 1996.) página do projeto fontes estão disponíveis para download, bem como montagens prontas para Windows.

Observa-se que 1.8.0 anos se passaram desde o lançamento da versão 1-jumbo-4.5, durante os quais foram feitas mais de 6000 alterações (git commits) de mais de 80 desenvolvedores. Durante este período, os desenvolvedores recomendaram o uso revisão atual do GitHub, cujo estado se manteve estável apesar das alterações introduzidas graças a integração contínua, que inclui uma verificação preliminar de cada alteração (solicitação pull) em muitas plataformas. Uma característica da nova versão é o surgimento do suporte para FPGA (FPGA), além de CPU, GPU e Xeon Phi.


Para placas Ztex 1.15 anos, que incluía 4 chips FPGA e foi originalmente usado principalmente para mineração de Bitcoin, agora são implementados 7 tipos de hashes de senha: bcrypt, descrypt clássico (incluindo bigcrypt), sha512crypt, sha256crypt, md5crypt (incluindo Apache apr1 e AIX smd5), Drupal7 e phpass (usado, principalmente no WordPress). Alguns deles são implementados em FPGA pela primeira vez. Para bcrypt, o desempenho alcançado de ~119k c/s em 2^5 iterações ("$2b$05") com um consumo de energia de cerca de 27 watts supera significativamente o desempenho das GPUs mais recentes por placa, por preço de hardware e por watt. Também suportado aglomerados de placas deste tipo, que testaram até 16 placas (64 FPGAs) controladas a partir de um Raspberry Pi 2. A funcionalidade usual de John the Ripper é suportada, incluindo todos os modos de adivinhação de senha e download simultâneo de um grande número de hashes. Para agilizar o trabalho, implementamos o uso de máscara (modo "--mask", inclusive em combinação com outros modos) e comparação dos hashes calculados com aqueles carregados no lado do FPGA. Em termos de implementação, em muitos dos projetos (por exemplo, para sha512crypt e Drupal7) usou blocos que consistem em núcleos de processador multithread (núcleos de CPU suaves) interagindo com núcleos criptográficos. O desenvolvimento desta funcionalidade foi liderado por Denis Burykin em coordenação com outros desenvolvedores jumbo.

Outras mudanças importantes:

  • Suporte para um grande número de tipos adicionais de hashes, cifras, etc., incluindo hashes de senha clássicos (por exemplo, de novas versões do QNX) e carteiras de criptomoedas, arquivos criptografados e sistemas de arquivos criptografados (por exemplo, Bitlocker e FreeBSD geli ), bem como suporte para novas variedades de formatos anteriormente suportados (por exemplo, foi adicionado suporte bcrypt-pbkdf para softraid OpenBSD) e muito mais. No total, 80 formatos foram adicionados na CPU e 47 no OpenCL (e um pequeno número de formatos antigos foram removidos por serem integrados em formatos novos e obsoletos). O número total de formatos é agora 407 na CPU (ou 262 sem incluir os formatos "dinâmicos" configurados nos arquivos de configuração) e 88 no OpenCL.
  • Remoção do suporte à linguagem CUDA em favor do OpenCL, o que não interfere em nada no uso total da GPU NVIDIA (e até ajuda, graças ao foco de desenvolvimento e otimizações em uma implementação de cada formato sob a GPU em vez de dois implementações anteriores).
  • Suporte para novos conjuntos de instruções SIMD - AVX2, AVX-512 (inclusive para a segunda geração do Xeon Phi) e MIC (para a primeira geração) - bem como uso mais universal e completo de SIMD em implementações de diversos formatos, incluindo o uso de conjuntos de instruções suportados anteriormente até AVX e XOP em x86(-64) e
    NEON, ASIMD e AltiVec em ARM, Aarch64 e POWER, respectivamente. (Parcialmente dentro do GSoC 2015.)
  • Inúmeras otimizações para CPU e OpenCL, tanto para trabalhar de forma mais eficiente com um grande número de hashes ao mesmo tempo (por exemplo, carregar 320 milhões de hashes SHA-1 na GPU) quanto para aumentar a velocidade do cálculo de hash. Algumas dessas otimizações são universais, algumas cobrem vários subconjuntos de formatos e muitas são específicas de cada formato.
  • (Auto) ajuste do buffer ideal de senhas verificadas na CPU ("-tune=auto --verbosity=5") e dimensões ideais do trabalho no OpenCL (habilitado por padrão), incluindo levar em consideração a recuperação lenta para a operação completa frequência das GPUs da série NVIDIA GTX 10xx e mais recentes. Uso de hashes carregados reais e comprimento real de senhas verificadas (quando conhecidas antecipadamente) para tal autoajuste.
  • Adicionando um compilador de "expressões dinâmicas" que é especificado diretamente na linha de comando e implementa novos tipos de hash híbridos, por exemplo "--format=dynamic='sha1(md5($p).$s)'", calculado na CPU usando SIMD. Dezenas de hashes rápidos (desde os comuns como MD5 até alguns levemente exóticos como Whirlpool), concatenação de substring, codificação e decodificação, conversão de maiúsculas e minúsculas, referências de senha, salt, nome de usuário e constantes de string são suportados como componentes de tais expressões.
  • Eliminação de diferenças indesejáveis ​​do hashcat, incluindo suporte para comandos de regras de lista de palavras anteriormente específicos do hashcat, mudança para a numeração de dispositivos OpenCL de 1, usando os mesmos comprimentos de senha padrão (geralmente comprimento 7) para testes de desempenho.
  • Novos modos de cracking, incluindo PRINCE de hashcat (gera "frases" concatenando várias palavras em ordem crescente de comprimento total), subconjuntos (traz senhas com caracteres diferentes insuficientes, mesmo que esses caracteres venham de um grande conjunto de caracteres possíveis) e externo híbrido (permite que modos externos, descritos em arquivos de configuração em linguagem C, gerem muitas senhas verificáveis ​​com base em cada "palavra" base recebida de outro modo). Além disso, vários novos modos externos predefinidos.
  • Recursos adicionais para usar vários modos ao mesmo tempo (um em cima do outro - empilhamento), bem como para tal uso de conjuntos de regras (empilhamento de regras de lista de palavras).
  • Melhorias nos modos de máscara (alongamento gradual da máscara na faixa especificada de comprimentos, aplicação da máscara na lateral de um dispositivo OpenCL ou placa FPGA) e crack único (comportamento razoável em dispositivos que calculam um grande número de hashes em paralelo, que anteriormente neste modo faltavam senhas para serem verificadas e também limites de consumo de memória).
  • Muitas melhorias no suporte para Unicode e outras codificações em vários subsistemas.
  • Muitas melhorias nos programas *2john (conversão de arquivos de vários formatos para
    use com john), especialmente wpapcap2john (lida com tráfego WiFi).
  • Muitas novas opções de linha de comando, configurações de john.conf, opções de configuração de script e seus novos recursos correspondentes, nem todos mencionados aqui.
  • Melhorando a qualidade do código devido ao suporte integrado para compilações de depuração com AddressSanitizer (anteriormente) e UndefinedBehaviorSanitizer (adicionado), adicionando um fuzzer de formato integrado (dentro do GSoC 2015), usando integração contínua (compilações para dezenas de sistemas operacionais e combinações de compilador e testando-os para suporte correto de todos os formatos).

Fonte: linux.org.ru

Adicionar um comentário