DEFCON 17. Hackear 400.000 senhas, ou como explicar a um colega de quarto por que a conta de luz aumentou. Parte 1Se você não seguir nenhuma regra para criar senhas, a senha poderá parecer uma simples lista
PHP . As pessoas odeiam regras, odeiam frases e não querem usá-las. Se você lhes der liberdade, eles imprimirão qualquer senha trivial e assumirão que o trabalho está concluído. Nesse caso, é mais seguro se eles não usarem palavras básicas simples, portanto, é melhor usar dicionários de entrada grandes.

A maior contribuição para a criação de dicionários de entrada foi feita por Sebastian Ravo - ele criou enormes listas de palavras de cada artigo da Wikipedia, bem como de projetos similares. Se você conhece uma palavra, cria um artigo da Wikipedia para ela. Mas o que é bom para a Wikipedia nem sempre é bom para criar senhas seguras; portanto, se o dicionário é realmente grande, é impossível aplicar muitas regras diferentes a ele. Você pode ler a lista de palavras da Wikipedia em seu blog
http://blog.sebastien.raveau.name/ .
Se houver uma política de criação de senha, você deve ser guiado pelas seguintes regras:
é melhor usar pequenas listas temáticas especializadas de palavras em dicionários,
Os melhores dicionários são baseados em senhas quebradas anteriormente.
Por motivos de privacidade, não posso fornecer uma lista de senhas hackeadas, mas acredite, assim como uma pessoa rica fica mais rica, uma senha hackeada se torna mais forte se você ver onde o erro foi cometido ao criá-la e corrigi-la.
Existem listas dessas senhas e podemos ver que os mesmos usuários são repetidos nessas listas porque usaram a mesma senha em todos os lugares.
Será útil se você puder extrair a base dessas senhas. Por exemplo,
a senha
do TigerWoods1982 não deve ser muito difundida, mas as pessoas constantemente usam
a senha
do TigerWoods . Portanto, você pode extrair esta frase básica
“TigerWoods” para criar uma senha
forte com base nela. Existem algumas ferramentas no meu CD que ajudarão você a tornar isso muito mais fácil.
As regras para criar palavras para senhas são muito simples:
No entanto, você precisará desenvolver suas próprias regras se desejar quebrar senhas realmente fortes. No meu
CD, há outra ferramenta que permite analisar senhas em 2 conjuntos diferentes.
A primeira são as senhas, sobre as quais sabemos como foram criadas, por exemplo, a
senha123 , e a segunda são as senhas, cujo princípio não sabemos. Isso é muito bom, porque você não precisa separar 200 mil senhas como
password123 e tentar criar novas regras para usá-las. Você receberá uma pequena lista na qual poderá ver, por exemplo, que as pessoas usam emojis para criar senhas inserindo emoticons em palavras. Você aprenderá novas combinações de teclas e isso ajudará a criar senhas fortes muito mais facilmente.
Como eu disse, decidi me afastar das regras
internas do
JtR e desenvolvi minha própria maneira de gerar “palpites”. Bons resultados vêm do método
probabilístico de craqueamento ,
craqueamento probabilístico . Eu já disse que nossas reações são universais: passamos por algo com nossos olhos, acenamos com a cabeça, dizemos que parece ótimo, mas para nós mesmos pensamos: “que tipo de lixo acadêmico!” Mas quero dizer que realmente queríamos aprender a criar as senhas mais resistentes a cracking, por isso tentamos fazer tudo da melhor maneira.
Sabe-se que algumas palavras são mais apreciadas por pessoas do que outras, por exemplo,
senha ,
macaco ,
futebol . Também é sabido que as pessoas preferem certas regras para “distorcer” as senhas adicionando 123, 007, $$$ ou as primeiras letras maiúsculas das palavras. Para aumentar a força, precisamos otimizar as regras para criar senhas de maneira atípica. Este é um processo bastante demorado. No boletim informativo por e-mail
John the Ripper , descobri a pessoa que criou 10 ou 12 mil arquivos de configuração de regras
JtR , tentando
tirar o máximo proveito disso.

Eu sou muito mais preguiçoso que ele, então não fiz isso. Eu apenas tentei facilitar a otimização do processo de criação de senha e automatizar o processo. Processamos todas as informações e determinamos a probabilidade de usar determinadas palavras e combinações, ou seja, classificamos as senhas pela probabilidade de adivinhação. E então usamos a combinação menos provável de palavras e "distorções" para criar uma senha. Então, aqui está o que devemos tentar tornar nossas senhas mais fortes:
- use uma palavra comum com uma maneira não comum de distorção de senha, por exemplo 13! password13!;
- use uma palavra rara com uma "distorção" comum, por exemplo, zibra123.
Com este método, conseguimos. Se você não conseguir dividir as senhas em dois conjuntos, de acordo com os sinais mencionados acima, teremos um programa de treinamento que analisa automaticamente a lista de senhas conhecidas e gera o que chamamos de "gramática". Essa "gramática" contém todas as informações necessárias, por isso usamos duas dessas "gramáticas" para investigar as possibilidades de quebra de senhas.
Graças a isso, determinamos a probabilidade de usar tudo o que temos: palavras em dicionários, regras para "distorcer" palavras em senhas, algoritmos para organizar caracteres como "dois dígitos no final da senha 12", em contraste com o qual você pode usar a regra "dois dígitos no final da senha" 21 "e similares.
Posso continuar falando sobre isso, mas é melhor mostrar um bom exemplo de como isso funciona. Não espero que você leia tudo no slide, por isso vou lhe dizer o que vou fazer. Vou lançar nosso cracker de senha probabilístico e "alimentá-lo" com dois dicionários de entrada diferentes. De fato, ele suporta até 10 dicionários, mas é melhor não enlouquecer.

Um dicionário de entrada contém as senhas mais comuns, portanto, tem uma alta probabilidade de adivinhação. O segundo dicionário contém as palavras menos comuns e um cracker de senha alterna entre os dois dicionários. Depois disso, “salino” o resultado diretamente em
John, o Estripador , porque, como eu disse, quero criar meu próprio algoritmo de hash de senha.
Infelizmente, não podemos usar a lista
PHP aqui, novamente por causa da confidencialidade, porque você não pode demonstrar quebra de senha para todos, nosso instituto não reconhece isso como legal. Portanto, demonstrarei o trabalho do cracker no exemplo da lista do
MySpace , divulgada há 2 anos. Todas as senhas foram apresentadas em texto simples, para que você possa lê-las, e esta operação não representa um perigo adicional.
Usamos o hash
MD5 , este é exatamente o mesmo algoritmo de hash usado para a lista
phpbb ; portanto, aqui simula amplamente um ataque ao
phpbb . Cerca de 17.000 hashes de senha sem “entusiasmo” foram carregados aqui e, na verdade, dividimos suas listas em várias partes diferentes para o aprendizado de máquina típico.
No momento, na tela, é possível ver a velocidade com que as senhas são decifradas; portanto, você provavelmente deve usar um algoritmo de hash mais lento. Também há uma alternância entre regras diferentes, portanto, essas não são apenas tentativas como "tente 1 dígito, tente 2 dígitos" e assim por diante.
Você vê que as senhas têm tamanhos diferentes, geralmente as pessoas usam um comprimento de 6 a 8 caracteres e, às vezes, existem pontos de exclamação no final da senha.
Existem vários outros tipos de otimização que estamos tentando integrar nesse algoritmo, porque nosso trabalho ainda está em andamento. Uma dessas coisas é a inclusão de ataques direcionados no processo, quando, em vez de quebrar uma grande senha antiga, o programa tenta decifrar a senha de um usuário específico.

Tudo o que você precisa para um ataque direcionado é usar um dicionário de entrada diferente, como nomes de bebês, aniversários, códigos postais e assim por diante.
Você vê que o processo de invasão na tela diminuiu um pouco, esses são recursos de design; se a invasão for simples o suficiente, o processo será acelerado. Porém, como é baseado em um modelo probabilístico, as senhas com maior probabilidade são adivinhadas mais rapidamente e as senhas com a menor probabilidade são quebradas um pouco mais devagar, portanto, um número maior de suposições é usado aqui.
Você também notou que as senhas nesta lista são bastante fracas. Isso ocorre porque estamos apenas começando uma sessão de quebra de senha e não queremos usar senhas muito complexas ou avançadas.
Se você possui uma estratégia de hackers na qual pretende atacar apenas senhas fortes, é necessário criar uma lista apropriada com base nessas senhas e iniciar a sessão invadindo apenas senhas fortes.
Portanto, nosso programa concluiu seu trabalho. O processo de invasão demorou 2 minutos e 30 segundos, período durante o qual 5586 senhas foram invadidas ou adivinhadas, o que representa pouco mais de 30% do número total.
Existem centenas de razões pelas quais penso que a política de criação de senhas precisa ser alterada, não porque o próprio uso de senhas seja algo retroativo e estúpido. Apenas acredito que eles fazem mais mal do que bem à nossa segurança. Especialmente se estivermos falando de ataques offline que não podem ser resistidos, a menos que você altere sua senha a cada 2 minutos.
Agora eu quero falar sobre a técnica de ataque da
Força Bruta . Esses ataques podem realmente causar muitos danos se você não cuidar da defesa.
Eles são bastante poderosos, mas você pode resistir a eles, basta usar o cérebro. Para fazer isso, você precisa analisar a frequência de uso de letras e símbolos para descobrir quais letras ou símbolos são usados nas senhas relativamente raramente.

Certamente todos vocês já ouviram falar sobre isso, então tente, por exemplo, usar a letra Q com mais frequência, o que é raro nas senhas. Seu algoritmo de hackers não deve tentar quebrar todas as senhas; você precisa se concentrar nas mais prováveis.
Uma opção mais "avançada" é
o modelo de Markov . Ele se baseia na probabilidade condicional das letras, por exemplo, se você tiver duas letras Q seguidas, estará mais protegido do que quando você tiver U no conjunto de letras, porque U geralmente segue a letra Q em palavras. Também pressupõe que a senha seja criada em Maneira "Humana", isto é, se uma determinada letra estiver localizada neste local da palavra, ela será seguida por outra letra, que é usada com mais freqüência apenas nessa combinação de letras. O modelo de Markov é usado pelo
algoritmo de hackers
JtR , que leva em conta que a letra Q em "palavras humanas" geralmente é seguida por U ou W, mas não S ou Z. Não pense que estou lutando para conseguir o "John, o Estripador" aqui, mas é realmente bom programa.
Podemos aprofundar ainda mais a lógica da
Força Bruta usando ataques direcionados. Eles são baseados no uso de tais princípios de criação de senhas:
- as pessoas tendem a iniciar a senha com uma letra maiúscula;
- eles geralmente adicionam números no final da senha;
- pelo mesmo motivo, eles gostam de usar combinações php ou phpbb em senhas.
Os mesmos princípios podem ser usados para "ataques de dicionário". Existe uma ferramenta muito boa para verificar a eficácia dos ataques chamados
"Crunch" , que pode ser encontrada no
fórum de programadores do
remote-exploit.com .
Quero dar um exemplo de quebra de uma senha "forte" usando o
ataque da Força Bruta . Para fazer isso, inicio o
JtR e ele começa a gerar "palpites" com base em letras minúsculas usando o modelo de Markov.

Você vê que nesta lista existem muitas palavras reais, como cachorro, sem estrela, marinho, que estão no dicionário de entrada. Mas, graças ao modelo de Markov, ele também gera palavras que estão faltando lá, por exemplo, stech. Mas, como estamos resolvendo uma senha forte, precisamos aplicar alguma lógica adicional. Portanto, eu uso scripts que fornecem uma letra maiúscula no início de uma palavra e também adiciono caracteres e números especiais no final de uma palavra.

Como você pode ver, essas "suposições" parecem uma senha muito forte. Agora que você conhece a política de criação de senhas, clique no botão "desativar a preguiça" e gaste 5 minutos para atribuir um certo tamanho a essas palavras, pois elas são muito curtas.
Também podemos tentar fazer o upload de tudo de volta ao
JtR e tentar quebrar hashes.

No início da apresentação, falei detalhadamente sobre como quebrar a lista de senhas dos usuários do
phpbb.com , e agora quero falar um pouco sobre como quebrar a lista de
Web Hosting Talk .

Ele foi hackeado em 21 de março de 2009, pelo menos na época em que uma lista foi publicada na rede, e o atacante acabou sendo um patife de verdade, porque colocou no domínio público cerca de 200 mil logins e senhas e outras informações confidenciais do usuário. Ele roubou hashes e excluiu o próprio site e todos os backups. Este foi um grande golpe para o administrador do sistema.

Depois disso, os proprietários do site relataram que foram invadidos, mas os usuários não precisam se preocupar, porque agora eles estão seguros. Ao mesmo tempo, eles expressaram um pensamento, que na verdade era enganador e perigoso, cito as palavras do coordenador da comunidade
iNET : “As senhas têm“ entusiasmo ”e será um evento sem precedentes se alguém puder reprojetá-las. Altero minha senha periodicamente, então talvez hoje seja um bom dia para isso ".
Parece que eu digo: "Olá pessoal, você sabe, a sala de cópias está ligada, mas não se preocupe, existe um sistema de extinção de incêndios por lá, por isso é absolutamente impossível que este edifício queime completamente. Mas às vezes eu gosto de sair na hora do almoço, para que você também possa sair se quiser. ” Esta é uma das razões pelas quais eu decidi invadir esta lista aqui.
Além disso, o coordenador publicou a seguinte declaração: "Nenhum cartão de crédito de usuário ou conta
PayPay foi invadido". Provavelmente apenas porque o hacker não precisava disso. E então houve uma nova falha - o mesmo site foi hackeado novamente pelo mesmo hacker em 7 de abril, e desta vez ele publicou na rede cerca de 202 mil hashes de senha e 2218 números de cartão de crédito.
Eu nunca irei ao site, cuja administração diz: “Sim, dois mil cartões de crédito foram roubados de nós, mas o resto está seguro”!
Eu quero esclarecer um pouco a situação. Hackear pessoas é um fato, e não quero culpar o
Web Hosting Talk por isso . Tentar salvar e extrair algo do seu sistema imediatamente após ter sido invadido é um problema difícil, especialmente se os usuários solicitarem repetidamente que você faça backup do sistema. Portanto, acho que o principal problema do
Web Hosting Talk é que eles minimizam os riscos enfrentados por seus usuários. E agir da parte deles era muito perigoso.
Porque você, pelo menos, deve fornecer aos usuários algo como um relógio que indique a necessidade de efetuar login e alterar sua senha, e não apenas neste site, mas em todos os outros sites, o mais rápido possível. Isso é muito importante, porque logo descobri um fato interessante sobre este site: após o primeiro ataque, 1348 usuários alteraram suas senhas, o que representava apenas 0,6% do número total registrado no site!
É por isso que o hacker teve uma grande oportunidade de retornar e invadir o site novamente usando as mesmas credenciais de usuário inalteradas, ou até mesmo usá-las para invadir outros sites onde eles também estavam registrados.
Eu queria descobrir se o hash deste site era realmente tão fraco e procurei o
Google para descobrir qual software o site usa. Descobriu-se que este é um mecanismo de fórum
vBulletin , escrito em
PHP e usando o servidor
MySQL para manter seu banco de dados. O Google também respondeu à pergunta de qual algoritmo de hash este site usa - esse hash é duplo como
MD5 (MD5 (Password) .salt) . Ou seja, você pega a senha do usuário, faz o hash usando o
MD5 e, mais uma vez, o hash da senha recebida usando o mesmo
MD5 . Eu não sabia como "John, o Estripador" lidaria com esse hash, então escrevi meu próprio "cracker". Mas não tentei decifrar as senhas reais deste site, pois levaria várias semanas, apenas decidi testar a presença da senha “senha” na lista e imediatamente hackeei 1109 pessoas que usavam a palavra “senha” como senha.

Quero dizer que o "destaque" na senha realmente se torna um problema para o invasor e, portanto, é importante para o usuário. Eu continuo a "anunciar" senhas com "entusiasmo" diferente, porque para um cracker isso significa ter que "adivinhar" o hash de cada senha para cada usuário individual. Se usarmos o site
phpbb , por exemplo, onde o hash de uma etapa
MD5 foi usado, o hacker passou cerca de 1 hora quebrando a lista de senhas. Para tal ataque à lista de senhas do
Web Hosting Talk , se elas estiverem protegidas por "zest", levaria 200 mil horas.
O que mais precisa ser dito? , «Dell» 34% 200
phpbb . , «». , , ? , .
, «» , - , , , «». , , 200 , . , «admin» «webmaster».
, , . , , «», , .
, weir@cs.fsu.edu
- , .
: , «It's fun to try the impossible»! : «!!It's fun to try the impossible!» «!!ifttti!».
,
Mad Libs , .
: ASCII, :

Obrigado por ficar conosco. Você gosta dos nossos artigos? Deseja ver materiais mais interessantes? Ajude-nos fazendo um pedido ou recomendando a seus amigos, um
desconto de 30% para os usuários da Habr em um análogo exclusivo de servidores básicos que inventamos para você: Toda a verdade sobre o VPS (KVM) E5-2650 v4 (6 núcleos) 10GB DDR4 240GB SSD 1Gbps de US $ 20 ou como dividir o servidor? (as opções estão disponíveis com RAID1 e RAID10, até 24 núcleos e até 40GB DDR4).
VPS (KVM) E5-2650 v4 (6 núcleos) 10GB DDR4 240GB SSD de 1Gbps até dezembro de graça quando pagar por um período de seis meses, você pode fazer o pedido
aqui .
Dell R730xd 2 vezes mais barato? Somente nós temos
2 TVs Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 a partir de US $ 249 na Holanda e nos EUA! Leia sobre
Como criar um prédio de infraestrutura. classe usando servidores Dell R730xd E5-2650 v4 custando 9.000 euros por um centavo?