Onde as senhas são armazenadas?

4

Como você descobre onde as senhas do usuário são armazenadas, para usuários que podem fazer login? Eu sei que o sistema está usando LDAP para usuários (nome de usuário, caminho de casa, etc.), mas não contém nenhum tipo de senha. Eu tenho acesso a uma máquina configurada, então como descobrir onde estão as senhas? (qual arquivo de configuração?)

    
por redman 21.06.2011 / 23:53

3 respostas

4

As senhas não são armazenadas em segundo lugar. Eles são transformados por uma função e o valor assim produzido, chamado hash , é armazenado.

Se você efetuar login, a mesma função será executada na sua entrada e o valor gerado será comparado com o valor armazenado no arquivo /etc/shadow .

A função é de um tipo, que é difícil de inverter. Assim, com o valor em / etc / shadow, você não pode calcular a senha original, e a chave nela não é útil para o login - você precisa da senha.

Com força bruta, você pode tentar gerar essa senha, e para nomes comuns como 123456, password, asdf, secret, 1111 e assim por diante, os valores-sombra já são bem conhecidos e armazenados no chamado rainbow-tables .

Para evitar ataques com rainbow-tables, a função password pode usar um salt , que influencia o resultado, o que significa que toda senha usa um salt diferente, armazenado nos dois primeiros bytes da string hash da senha (obrigado para psusi, que me corrigiu), de modo que você precisaria de uma rainbow-table diferente para cada senha, o que não é muito prático - leva muito tempo para gerá-las e é caro.

Não tenho certeza se o ubuntu usa um sal. Podemos esperar por alguém que nos explique, ou você pode gerar o mesmo usuário com a mesma senha em duas máquinas e comparar o valor em / etc / shadow.

    
por user unknown 22.06.2011 / 00:31
2

As senhas (ou melhores hashes) são provavelmente armazenadas no servidor LDAP. "Muito provavelmente" significa que você poderia ter uma configuração muito estranha onde eles não estão. A configuração do LDAP é muito flexível, mas isso também significa que, sem inspecionar os arquivos de configuração, uma resposta clara sobre como isso é feito na sua situação não pode ser fornecida. Você provavelmente analisou /etc/ldap.conf no cliente para detalhes da configuração?

Uma configuração possível para a autenticação LDAP é assim: a caixa cliente pega o nome de usuário e a senha do login e executa uma ligação com o servidor LDAP com essas informações. O servidor LDAP verifica o nome de usuário & amp; senha e retorna sucesso ou falha. Nesta configuração, a caixa do cliente nunca vê o hash da senha armazenada do servidor LDAP.

Você conhece o tipo de servidor LDAP usado? Se você pode ver as senhas de usuário com hash depende da configuração do servidor LDAP. Veja como um exemplo de link sobre o que você poderia configurar em um servidor OpenLDAP.

A resposta no hash de senha de "user-unknown" está correta, é apenas que os hashes não são armazenados em /etc/shadow , mas no servidor LDAP. O hash em si também pode ser executado pelo servidor LDAP e não pela caixa do cliente.

    
por HelmuthB 22.06.2011 / 12:58
0

Você tentou fazer isso? - phpldapadmin?
- ldapsearch -LLL -x -b "dc = seu, dc = domínio" uid = * (ou substitua * por nome de usuário, talvez seja cn em vez de uid)
Se as senhas forem armazenadas no ldap, você deverá vê-las com este método.

Se o computador for um controlador de domínio, talvez ele tenha o smbldap-tools instalado, para que você possa redefinir as senhas com o nome de usuário smbldap-passwd

Você também pode querer verificar sua configuração pam.d (/etc/pam.d/common-*) para descobrir qual mecanismo de login seu computador está usando.

    
por sBlatt 22.06.2011 / 00:58