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


24

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


4
Sim, você pode, eles podem compartilhar com você sendo gentilmente convidado :) em outras palavras, sua pergunta não é colocada com precisão.
poige

Respostas:


37

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

O Linux não armazena senhas de texto sem formatação em nenhum lugar por padrão . Eles são hash ou criptografados de outra forma através de uma variedade de algoritmos. Portanto, em geral, não, isso não é possível com os dados armazenados.

Se você tiver senhas armazenadas em algum lugar que não seja o /etc/passwdbanco de dados, elas poderão ser armazenadas de uma maneira que permita isso. htpasswdos arquivos podem conter senhas mal criptografadas e outros aplicativos podem armazenar hashes mais fracos ou senhas de texto sem formatação 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 fracamente protegidas por vários motivos - buscar o conteúdo de busca de outro serviço .netrc, ou coisas simples e automatizadas podem incluir a senha.

Se as senhas forem hash ou criptografadas com um algoritmo fraco e mais antigo (3DES, MD5), seria possível descobrir 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 http://project-rainbowcrack.com/ ou http://www.openwall.com/john/ )

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

Portanto, em específico, não, mas, em geral, o acesso root facilita os detalhes dos usuários por meio de vários canais laterais.


1
Mais informações na Wikipedia: /etc/shadow, função hash criptográfico , sal e quebra de senha
Tim

2
Essa é uma boa resposta para a maior parte, porém o 3DES e o MD5 não são de fato significativamente mais fracos que outros algoritmos. A força bruta ainda é o único método para encontrar uma senha de um hash (as tabelas arco-íris são uma maneira de acelerar os métodos de força bruta para qualquer algoritmo, não uma fraqueza do MD5). O que melhora um método de hash para senhas é que ele é lento e usa sal por tempo suficiente.
Gilles 'SO- stop be evil'

13

Em contraste com algumas outras respostas aqui, eu diria que a resposta simples para esta e muitas outras perguntas que terminam com "se você tem 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, para que o root possa aceitar sua senha, ou a sua própria no lugar da sua, com esforço suficiente. Mais importante, ele pode simplesmente mudar sua senha ou TORNAR-SE.

Especificamente, as senhas geralmente são criptografadas. Geralmente, esse é o tipo de algoritmo "unidirecional", que gera um número (um hash) que pode ser usado para verificar a senha, mas geralmente não para reverter o número e recuperar a senha novamente. Portanto, não basta ler um arquivo para obter a senha de alguém.

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

No entanto, mesmo deixando esse problema de lado, a criptografia "unidirecional" não é realmente unidirecional. Existem muitas ferramentas disponíveis que passarão por muitas combinações de frases secretas, criptografando-as com o mesmo processo unidirecional, até encontrar uma que corresponda. Eles então sabem a senha que terá acesso (embora como root, eles JÁ tenham acesso, nessa máquina).

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

Novamente, o acesso no nível da raiz é A coisa a proteger. Com isso comprometido, a máquina inteira e tudo nela estão comprometidos. É hora de começar de novo, incluindo informar a todos os usuários que sua empresa não pode mais ser confiável para proteger sua privacidade. E, sim, isso pode significar fechar negócios.


Obter acesso à minha conta é diferente de obter minha senha. Se você me permitir um login de usuário em sua máquina e eu (estúpido, mas comum) usar a mesma senha para todas as máquinas, você não terá acesso a todas as máquinas apenas b / c, poderá alterar minha senha na sua máquina. Acabei de ficar bloqueado em uma conta.
Emory

Além disso, se usar sistemas de arquivos criptografados para dados confidenciais, o comprometimento do acesso root não implica tempo para começar de novo.
Emory

@emory Se você usa sistemas de arquivos criptografados e o sistema é comprometido pela raiz, pode confiar no código que lida com o sistema de arquivos criptografados, lê a senha de criptografia, etc.? Eu diria que você não pode, porque, por definição, um compromisso com privilégios de root significa que tudo no sistema (até o kernel) está disponível.
a CVn

@ MichaelKjörling Posso confiar no código que lida com o sistema de arquivos criptografados? Na maioria dos casos, não. No meu caso, sim. Está alojado em mídia somente leitura. Raiz não pode escrever para ele. Os logs vão para uma unidade WORM. Da mesma forma, não estou entregando as chaves para o root e provavelmente recomeçaria.
Emory

8

Se você tiver root, poderá executar um cracker de senha /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 hash de senha forte. Mas as senhas do sistema não são armazenadas em texto sem formatação; senhas não estão diretamente disponíveis nem para root.


5

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

A menos que você tenha algum tipo de software de descriptografia de senha, não poderá converter esses valores de hash novamente em texto normal.

Ainda assim, se você tiver acesso ao usuário root, poderá alterar a senha de qualquer usuário normal usando o comando a seguir e acessar a conta deles.

root@localhost$ passwd pradeep

Isso solicitará a nova senha que você deseja definir para o usuário pradeep. Dessa forma, você pode alterar a senha para o pradeep.

Agora você pode acessar da conta dele:

root@localhost$ su pradeep

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

pradeep@localhost$


1
você pode fazer "su pradeep" mesmo sem senha pradeep mudança, porque quando você faz "su pradeep" com usuário root você não precisa digitar a senha pradeep para entrar ...
Wolfy
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.