podemos saber a senha dos outros usuários se tivermos acesso root?

17

Se uma pessoa tiver acesso root a uma determinada máquina RHEL, ela poderá recuperar a senha dos outros usuários?

    
por monu 09.04.2012 / 09:22

4 respostas

32

TL; DR: Não, a senha é armazenada como hashes que (em geral) não podem ser recuperados.

O Linux não armazena senhas em texto puro em qualquer lugar por padrão . Eles são criptografados ou criptografados por meio de diversos algoritmos. Então, em geral, não, isso não é possível com dados armazenados.

Se você tiver senhas armazenadas em algum lugar diferente do banco de dados /etc/passwd , elas poderão ser armazenadas de uma maneira que permita isso. htpasswd arquivos podem conter senhas criptografadas, e outros aplicativos podem armazenar hashes mais fracos ou senhas de texto simples por vários motivos (geralmente ruins).

Além disso, os arquivos de configuração do usuário podem conter senhas não criptografadas ou senhas pouco protegidas por vários motivos - o conteúdo obtido pelo fetchmail de outro serviço, .netrc , ou itens automatizados simples podem incluir a senha.

Se as senhas forem criptografadas ou hash com um algoritmo mais antigo e fraco (3DES, MD5), seria possível calcular de forma razoavelmente eficiente / barata qual era a senha - embora atacando os dados em vez de apenas reverter a transformação. (por exemplo: coisas como link ou link )

Como você é root, também é possível atacar a senha do usuário em outro nível - substitua o binário de login ou sudo, ou parte do PAM, etc., por algo que capture a senha quando ela for inserida.

Então, em específico, não, mas, em geral, ter acesso root facilita a obtenção dos detalhes dos usuários por meio de vários canais secundários.

    
por 09.04.2012 / 09:28
10

Em contraste com algumas outras respostas aqui, eu diria que a resposta simples, a esta e a muitas outras perguntas que terminam com "se você tiver raiz" é SIM.

Basicamente, o root pode fazer qualquer coisa na máquina que o próprio sistema possa fazer. O sistema pode aceitar sua senha, então o root pode aceitar sua senha, ou a sua própria no lugar da sua, com bastante esforço. Mais importante, ele pode simplesmente alterar sua senha ou TORNAR você.

Especificamente, as senhas geralmente são criptografadas. Isso geralmente é um algoritmo chamado "unidirecional", que gera um número (um hash) que pode ser usado para verificar a senha, mas geralmente não para inverter o número e recuperar a senha novamente. Então, não se trata apenas de ler um arquivo para obter a senha de alguém.

Dito isso, você PODE ler seu histórico de shell e o histórico de login, onde eles provavelmente digitaram sua senha em vez de seu nome de usuário em algum momento, ou digitaram em um shell em vez de em um prompt de senha. Nesse caso, seria texto simples. Isso é perturbadoramente comum em terminais baseados em texto, sem boas soluções que conheço.

No entanto, mesmo deixando essa questão de lado, a criptografia "unidirecional" não é realmente de um jeito. Há muitas ferramentas ao redor que passarão por muitas combinações de senhas, criptografando-as com o mesmo processo unidirecional, até que você encontre uma que corresponda. Eles então sabem a senha que vai ganhar acesso (embora como root, eles JÁ têm acesso, nessa máquina).

Pior, existem tabelas de arco-íris, que são respostas pré-computadas para o processo acima: as pessoas já geraram a senha original que vem da senha criptografada. Usando estes, é uma simples pesquisa - não são necessárias tentativas de cracking demoradas.

Mais uma vez, o acesso no nível da raiz é o que você deve proteger. Com isso comprometido, toda a máquina e tudo o que está nela está comprometido. É hora de começar de novo, incluindo informar a todos os seus usuários que sua empresa não pode mais ser confiável para proteger sua privacidade. E, sim, isso pode significar sair do negócio.

    
por 09.04.2012 / 13:23
5

Se você tiver root , poderá executar um cracker de senha contra /etc/shadow (assumindo senhas locais e não LDAP ou Kerberos, etc.). Isso pode não ser eficaz se eles escolherem boas senhas e o sistema estiver configurado para usar hashing de senha strong. Mas as senhas do sistema não são armazenadas em texto simples; as senhas não estão diretamente disponíveis, mesmo para root .

    
por 09.04.2012 / 09:26
3

Todas as senhas são armazenadas no arquivo /etc/shadow . Você pode abrir esse arquivo usando o acesso root e ver o hash value dessas senhas para cada usuário (até mesmo usuário root).

A menos que você tenha algum tipo de senha para descriptografar o software, não será possível converter o valor de hash de volta para o texto normal.

Mas, ainda assim, se você tiver acesso ao usuário root, poderá alterar a senha de qualquer usuário normal usando o seguinte comando e acessando a conta dele.

root@localhost$ passwd pradeep

Isso pedirá a nova senha que você deseja definir para o usuário pradeep . Desta forma você pode mudar o passwd para o pradeep.

Agora você pode acessar a partir de sua conta:

root@localhost$ su pradeep

Isso resultará na mudança para o usuário pradeep e você terá um terminal como este:

pradeep@localhost$

    
por 09.04.2012 / 09:48