Senhas em um sistema Linux não são criptografadas, elas são hash que é uma grande diferença.
Não é possível inverter uma função hash por definição. Para mais informações, consulte a entrada da Wikipedia no hash .
Qual função hash é usada, depende da configuração do seu sistema. MD5 e blowfish são exemplos comuns de funções hash usadas.
Portanto, a senha "real" de um usuário nunca é armazenada no sistema.
Se você fizer o login, a string digitada como senha será criptografada e verificada no arquivo / etc / shadow. Se corresponder, você obviamente digitou a senha correta.
De qualquer forma, ainda existem alguns vetores de ataque contra os hashes de senha. Você pode manter um dicionário de senhas populares e testá-las automaticamente. Há muitos dicionários disponíveis na internet. Outra abordagem seria apenas experimentar todas as combinações possíveis de personagens que consomem uma quantidade enorme de tempo. Isso é conhecido como ataque bruteforce.
Rainbowtables são outro bom vetor de ataque contra hashes. A idéia por trás desse conceito é simplesmente pré-calcular todos os hashes possíveis e depois procurar um hash nas tabelas para encontrar a senha correspondente. Existem vários projetos de computação distribuída para criar tais tabelas , o tamanho difere dos caracteres usados e é principalmente de vários TB.
Para minimizar o risco de tais tabelas de pesquisa, é uma prática comum e o comportamento padrão no Unix / Linux adicionar os chamados " salt " para o hash da senha. Você hash sua senha, adicione um valor de sal aleatório para o hash e hash essa nova seqüência novamente. Você precisa salvar o novo hash e o sal para poder verificar se um valor inserido é a senha correta. A grande vantagem desse método é que você teria que criar novas tabelas de consulta para cada sal exclusivo.
Uma ferramenta popular para executar ataques de dicionário ou de força bruta contra senhas de usuários de diferentes sistemas operacionais é John The Ripper (ou JTR ). Veja a página inicial do projeto para mais detalhes:
John the Ripper is a fast password cracker, currently available for many flavors of Unix, Windows, DOS, BeOS, and OpenVMS. Its primary purpose is to detect weak Unix passwords.