Como é possível invadir qualquer máquina Linux através do grub2 secure?

47

Qual é a capacidade de uma pessoa que obteve acesso físico ao seu computador para obter raízes com essas etapas de alguma forma segura?

  1. Quando o menu grub2 for aberto, pressione e para editar as opções de início do Linux
  2. Alterar:

    "linux   /vmlinuz-2.6.35-23-generic root=UUID=e7f1e48d-0015-485f-be7d-836217a31312 ro   quiet splash" 
    

    para:

    "linux   /vmlinuz-2.6.35-23-generic root=UUID=e7f1e48d-0015-485f-be7d-836217a31312 ro init=/bin/bash"
    
  3. Agora você tem acesso root, faça:

    mount -o remount,rw /
    passwd user
    mount -o remount,ro / 
    sync
    
  4. reinicie o computador e você ganha.

A minha pergunta é, como é ser capaz de invadir qualquer máquina Linux através do grub2 secure? Eu não entendo esse fato sobre o Linux, obrigado por suas respostas.

    
por Clutchy 26.10.2016 / 18:48

4 respostas

106
  

Como a capacidade de uma pessoa que obteve acesso físico ao seu computador para obter root [usando o Grub / Bash] de alguma forma segura?

Porque se o Linux decidisse começar a fazer isso, os hackers apenas explorariam outras falhas de segurança. A primeira regra de segurança é que se eu tiver acesso físico ao seu sistema, é game over. Eu ganhei.

Além disso, imagine o seu servidor X quebrado e você não tem mais uma GUI. Você precisa inicializar em um console de recuperação para consertar as coisas, mas você não pode, porque isso é inseguro. Nesse caso, você fica com um sistema totalmente quebrado, mas, pelo menos, é "seguro!"

  

Mas Kaz, como isso é possível? Eu configurei uma senha no meu Grub para que você não possa alterar meu init para Bash!

Oh, você fez, não é? Interessante, porque isso parece com o seu álbum de fotos. O GRUB não possui nenhum fator de segurança inerente. É apenas um bootloader , não um passo em alguma cadeia de inicialização e autenticação segura. A "senha" que você configurou é, na verdade, muito fácil ignorar.

Isso, e qual sysadmin não carrega uma unidade de inicialização para emergências?

  

Mas como ?! Você não sabe minha senha (que não é totalmente P@ssw0rd btw)

Sim, mas isso não me impede de abrir seu computador e retirar seu disco rígido. A partir daí, são alguns passos simples para montar a sua unidade no meu computador, dando-me acesso a todo o seu sistema. Isso também tem o incrível benefício de contornar sua senha da BIOS. Isso, ou eu poderia ter apenas redefinir seu CMOS. Ou / ou.

  

Então ... como eu não deixo você acessar meus dados?

Simples. Mantenha seu computador longe de mim. Se eu puder tocá-lo, acessar um teclado, inserir meus próprios flash drives ou desmontá-lo, posso ganhar.

  

Então, posso apenas colocar meu computador em um datacenter ou algo assim? Essas são bem seguras, né?

Sim, eles são. Mas, você está esquecendo que os seres humanos também podem ser hackeados, e com tempo e preparo suficientes, eu provavelmente poderia entrar naquele datacenter e extrair todos os dados doces do seu computador. Mas eu divago. Estamos lidando com as soluções real aqui.

  

Ok, você chamou meu blefe. Eu não posso colocá-lo em um datacenter. Posso apenas criptografar minha pasta pessoal ou algo assim?

Claro, você pode! É o seu computador! Isso ajudará a me parar? Não no menor. Eu posso apenas substituir algo importante, como /usr/bin/firefox com meu próprio programa malicioso. Da próxima vez que você abrir o Firefox, todos os seus dados secretos serão desviados para algum servidor secreto em algum lugar secreto. E você nem vai saber. Ou, se eu tiver acesso freqüente à sua máquina, posso simplesmente configurar sua pasta pessoal para ser copiada para /usr/share/nonsecrets/home/ ou qualquer outro local semelhante (não criptografado).

  

Ok, e a criptografia completa do disco?

Isso é realmente muito bom. No entanto, ainda não é perfeito! Eu sempre posso executar um Cold Boot Attack usando minha fiel lata de ar comprimido. Ou posso apenas conectar um keylogger de hardware ao seu computador. Um é obviamente mais fácil que o outro, mas o caminho não importa realmente.

Na maioria dos vastos casos, este é um bom ponto de parada. Talvez parear com TPM (discutido abaixo), e você é de ouro. A menos que você tenha irritado uma agência de três letras ou um hacker motivado muito , ninguém vai passar pelo esforço exigido após esse estágio.

É claro que ainda posso fazer com que você instale alguns malwares / backdoors oferecendo a você um PPA ou similar, mas isso entra na área muito obscura da confiança do usuário.

  

Então ... como os iPhones são tão seguros? Mesmo com acesso físico, não há muito o que fazer.

Bem, sim e não. Quero dizer, se eu estivesse motivado o suficiente, eu poderia ler o chip flash e conseguir tudo que eu preciso. Mas, os iPhones são fundamentalmente diferentes na medida em que são uma plataforma totalmente bloqueada. Mas, ao mesmo tempo, você realmente sacrifica a usabilidade e a capacidade de se recuperar de falhas catastróficas. O GRUB (exceto quando projetado especificamente) não é para ser uma cadeia em um sistema de segurança. Na verdade, a maioria dos sistemas Linux tem suas cadeias de segurança iniciando após a inicialização, portanto, depois que o GRUB terminar de fazer sua parte.

Além disso, os iPhones têm aplicação de assinatura criptográfica (também discutida abaixo), o que dificulta bastante a entrada de malware em seu telefone por meio de caminhos legítimos.

  

Mas e o TPM / SmartCards / [insira a tecnologia de criptografia aqui]?

Bem, agora você está associando a segurança física à equação, isso se torna ainda mais complicado. Mas, isso não é realmente uma solução porque os TPMs são relativamente fracos e toda a criptografia não ocorre no chip.Se o seu TPM for (de alguma forma) suficientemente strong onde ele faz criptografia no próprio chip (alguns discos rígidos muito sofisticados têm algo assim), a chave nunca será revelada e coisas como ataques de inicialização a frio são impossíveis. No entanto, as chaves (ou os dados brutos) ainda podem estar presentes no barramento do sistema, o que significa que podem ser interceptadas.

Mesmo assim, meu keylogger de hardware ainda pode obter sua senha, e eu posso carregar facilmente alguns malwares em sua máquina, como a exploração do Firefox que mencionei anteriormente. Tudo o que preciso é que você deixe sua casa / computador por talvez uma hora.

Agora, se você pegar seu TPM / smartcard / qualquer coisa com você, e toda a criptografia for realmente feita no chip (significando que sua chave não está armazenada na RAM), então é praticamente impossível para mim entrar, a menos que você (o usuário) escorregue e esqueça alguma coisa. Ou seja, a menos que eu encontre alguma maneira de ler a chave (não criptografada) do barramento do sistema.

  

Mas e se eu tiver algum tipo de aplicação de assinatura criptográfica / digital em todos os meus programas para garantir que eles sejam legítimos?

Como demonstrado por várias empresas de smartphones, essa é uma boa maneira de lidar com a segurança. Você agora anulou minha capacidade de injetar algum código em sua máquina para fazer coisas nefastas, o que é uma vantagem. Efetivamente, você desativou minha capacidade de manter o acesso persistente à sua máquina remotamente, o que é uma grande vantagem.

No entanto, isso ainda não é um método perfeito! A aplicação de assinaturas digitais não irá parar um keylogger de hardware, por exemplo. Ele também precisa estar completamente livre de bugs, o que significa que não há nenhuma maneira de encontrar uma exploração que me permita carregar meu próprio certificado no armazenamento de certificados da sua máquina. Além disso, isso significa que todos os executáveis do seu sistema precisam ser assinados. A menos que você queira passar manualmente e fazer tudo isso, será muito difícil encontrar pacotes do Apt e coisas do tipo que tenham assinaturas digitais em tudo. De maneira semelhante, isso bloqueia os usos legítimos de executáveis não assinados, ou seja, recuperação. E se você quebrar algo importante e não tiver o executável (assinado) para corrigi-lo? Bem, lá vai o seu sistema.

De qualquer forma, um esforço para fazer isso no Linux foi praticamente abandonado e não funciona mais para novos kernels , então você precisa criar o seu próprio.

  

Então, é impossível mantê-lo fora do meu computador?

Efetivamente, sim, desculpe. Se eu tiver acesso físico e motivação suficiente, é sempre possível entrar em um sistema. Sem exceções.

Na realidade, porém, a maioria das pessoas más não tenta ir tão longe apenas para algumas fotos de gatos. Normalmente, apenas a criptografia de disco completo (ou até mesmo a execução do Linux!) É suficiente para impedir que a maioria das crianças de script tenha seus dois segundos de fama.

TL; DR: Apenas não permita que pessoas que você não confie perto do seu computador. Isso é bom o suficiente.

    
por Kaz Wolfe 26.10.2016 / 18:59
17

Se você quiser, use uma senha . Do link:

Notas de proteção por senha do GRUB 2

  

O Grub 2 pode estabelecer requisitos de senha em:

  • Todas as entradas de menu
  • Menuentries específicas
  • Para usuários específicos: Por exemplo, o usuário "Jane" pode acessar o Ubuntu, mas não o modo de recuperação do Windows, que só é acessível por "John", o superusuário.
  • O administrador deve ativar a proteção por senha manualmente editando os arquivos de sistema do GRUB 2.

  • Usuários e senhas devem ser identificados no arquivo de script /etc/grub.d/00_header ou outro arquivo de script do GRUB 2.

  • A menos que a proteção universal de todos os menus seja desejada, as entradas específicas devem ser identificadas:

    • Manualmente editando os scripts do Grub 2 /etc/grub.d/ , como 10_linux e 30_os-prober
    • Manualmente editando um arquivo de configuração personalizado criado pelo usuário.

    • Qualquer um dos métodos acima permite que o GRUB 2 adicione automaticamente o requisito de senha ao arquivo de configuração (grub.cfg) sempre que update-grub for executado.

    • Manualmente, editando /boot/grub/grub.cfg . Edições para este arquivo serão removidas quando update-grub for executado e a proteção por senha será perdida.

  • Se qualquer forma de proteção por senha do GRUB 2 estiver ativada, o nome e a senha do superusuário serão necessários para obter acesso à linha de comando e aos modos de edição de menu do GRUB 2.

  • O nome de usuário e / ou senha não precisam ser o mesmo nome de login / senha do Ubuntu.
  • A menos que o recurso de criptografia de senha do GRUB 2 seja usado, a senha será armazenada como texto simples em um arquivo legível. Consulte a seção Criptografia de senhas para obter orientações sobre como usar esse recurso.

Por padrão (!), neste caso, a usabilidade supera a segurança. Se você não pode confiar nas pessoas que estão ao seu redor, mantenha a máquina com você o tempo todo. As pessoas que precisam de mais segurança tendem a criptografar todo o sistema, tornando a necessidade de uma senha obrigatória.

    
por Rinzwind 26.10.2016 / 19:03
3

Seu hack intencional começa com isso:

  1. Quando o menu grub2 for aberto, pressione 'e' para editar as opções de início do linux

Mas você pode proteger por senha a opção e como discutido aqui: por WinEunuuchs2Unix 27.10.2016 / 01:54

0

Para tornar o grub seguro, você precisa proteger o acesso a ele. Isso pode ser feito simplesmente com uma senha de disco rígido, e estou falando aqui sobre a segurança do disco em que ela está armazenada no firmware do próprio disco. O disco não pode ser lido nem gravado. Assim, não só o grub é inacessível sem a senha, mas também os seus dados.

Como a senha é armazenada no próprio disco, movê-la para outro sistema não ajudará o hacker.

Existe um software em torno do qual é possível remover a senha dos discos de alguns fabricantes, mas também efetivamente limpa o disco. Então, seus dados ainda estão seguros.

    
por Scooby-2 02.11.2016 / 05:39