Como é capaz de invadir qualquer máquina Linux através do grub2 seguro?

52

Como é segura a capacidade de uma pessoa que obteve acesso físico ao seu computador para obter root com essas etapas?

  1. Quando o menu grub2 for aberto, pressione e para editar as opções de inicialização do Linux
  2. Mudança:

    "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, basta fazer:

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

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

Clutchy
fonte
51
Quem disse que o acesso físico precisa ser tornado impossível? Quando alguém tem acesso físico, todas as apostas são desativadas. O proprietário de uma máquina sempre deve ter acesso à sua máquina quando estiver próximo a ela. Caso contrário, seria possível fazer tijolos sem formas de recuperação.
Rinzwind
7
e você pode reclamar disso: mas que tal colocar um dvd / usb ao vivo no sistema? Ou retirando o disco, coloque-o em outra máquina e coloque ddo disco? E "linux"? Obras para outros sistemas que usam grub também ... janelas, por outro lado ... quando janelas breaks ... você provavelmente só pode formatar o sistema: P
Rinzwind
10
Para ser totalmente seguro, você precisa esta solução
Anwar
5
Oh, não commerades! @Clutchy descobriu o nosso segredo. Todos nós devemos tomar as cápsulas de cianeto agora.
22916 paulzag
3
@paulzag Entendido, vou acionar o mecanismo de autodestruição da sala do servidor. Glória ao RMS!
Kaz Wolfe

Respostas:

108

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

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, o jogo terminará. Eu ganhei.

Além disso, imagine que seu servidor X quebrou e você não tem mais uma GUI. Você precisa inicializar em um console de recuperação para consertar as coisas, mas 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? Defino uma senha no meu Grub para que você não possa mudar initpara Bash!

Ah, você fez, não é? Interessante, porque parece o seu álbum de fotos. O GRUB não possui nenhum fator de segurança inerente. É apenas um gerenciador de inicialização , não um passo em uma cadeia segura de inicialização e autenticação. A "senha" que você configurou é, de fato, bastante fácil de ignorar.

Isso e que sysadmin não carrega um drive de inicialização para emergências?

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

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

Então ... como eu não permito que você tenha acesso aos meus dados?

Simples. Mantenha seu computador longe de mim. Se eu conseguir tocá-lo, acessar um teclado, inserir minhas próprias unidades flash ou desmontá-lo, posso ganhar.

Então, posso colocar meu computador em um datacenter ou algo assim? Esses são bem seguros, certo?

Sim, eles são. Mas, você está esquecendo que os humanos também podem ser hackeados e, com tempo e preparação suficientes, eu provavelmente poderia entrar no datacenter e desviar todos esses dados doces do seu computador. Mas eu discordo. Estamos lidando com soluções reais aqui.

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

Certamente você pode! É o seu computador! Isso vai me ajudar a parar? Nem um pouco. Só posso substituir algo importante, como /usr/bin/firefoxpor 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 frequente à sua máquina, basta configurar sua pasta pessoal para ser copiada /usr/share/nonsecrets/home/ou em qualquer local semelhante (não criptografado).

Ok, e a criptografia de disco completo?

Isso é realmente muito bom. No entanto, ainda não é perfeito! Sempre posso realizar um ataque de inicialização a frio usando minha confiável lata de ar comprimido. Ou, basta conectar um keylogger de hardware ao seu computador. Um é obviamente mais fácil que o outro, mas o caminho realmente não importa.

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

Obviamente, ainda posso instalar alguns malwares / backdoors oferecendo um PPA ou similar, mas isso entra na área bastante 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 que você possa fazer.

Bem, sim e não. Quero dizer, se estivesse motivado o suficiente, poderia ler o chip flash e obter tudo o que precisava. Mas, os iPhones são fundamentalmente diferentes, pois 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 deve ser uma cadeia em um sistema de segurança. De fato, a maioria dos sistemas Linux tem suas cadeias de segurança iniciadas após a inicialização, portanto, depois que o GRUB termina de fazer suas coisas.

Além disso, iPhones têm aplicação criptográfica de assinatura (também discutido abaixo), o que torna muito difícil para o malware a esgueirar-se para o seu telefone através de vias legítimas.

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

Bem, agora você está associando segurança física à equação, ainda mais complicada. Porém, 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) forte o suficiente para criptografar o próprio chip (alguns discos rígidos sofisticados têm algo parecido com isso), 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 receber sua senha e posso carregar com facilidade algum malware em sua máquina, como a exploração do Firefox que mencionei anteriormente. Tudo o que preciso é que você saia de sua casa / computador por talvez uma hora.

Agora, se você levar seu TPM / cartão inteligente / o que quer que seja com você, e toda a criptografia for realmente feita no chip (o que significa que sua chave não está armazenada na RAM), é praticamente praticamente impossível entrar em tudo, 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) no barramento do sistema.

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

Como demonstrado por várias empresas de smartphones, essa é uma maneira muito boa de lidar com segurança. Você 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 reter acesso persistente à sua máquina remotamente, o que é uma grande vantagem.

No entanto, este ainda não é um método perfeito! A imposição de assinaturas digitais não interrompe um keylogger de hardware, por exemplo. Ele também precisa estar completamente livre de erros, o que significa que não há como encontrar uma exploração que me permita carregar meu próprio certificado no repositório de certificados da sua máquina. Além disso, isso significa que todo executável em seu sistema precisa ser assinado . A menos que você queira fazer manualmente tudo isso, será muito difícil encontrar pacotes Apt e similares que tenham assinaturas digitais em tudo. Da mesma forma, isso bloqueia usos legítimos para executáveis ​​não assinados, como 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 maneira, um esforço para fazer isso no Linux foi praticamente abandonado e não funciona mais para novos kernels; portanto, você precisará criar o seu próprio.

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

Efetivamente, sim, desculpe. Se eu tenho 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 chegar tão longe apenas para algumas fotos de gatos. Normalmente, apenas a criptografia de disco completo (ou mesmo executando o Linux!) É suficiente para impedir que a maioria das crianças de script tenha seus dois segundos de fama.

TL; DR: Apenas não deixe pessoas em quem você não confia perto do seu computador. Isso normalmente é bom o suficiente.

Kaz Wolfe
fonte
Ou apenas criptografe sua partição pessoal.
user13161
5
@ user13161 Isso ainda permite que uma entidade mal-intencionada substitua algo como /bin/bashseu próprio script malicioso , que fará coisas ruins por uma pasta inicial não criptografada.
Kaz Wolfe
O GRUB permite usar uma partição de inicialização criptografada LUKS, em cujo cenário a senha para inicialização não pode ser ignorada. Veja wiki.archlinux.org/index.php/Dm-crypt/… .
V7d8dpo4 27/10/16
@ v7d8dpo4: A criptografia /booté realmente inútil. Ele adicionará uma senha de inicialização, mas você ainda precisará descriptografar /para fazer qualquer coisa útil, portanto, você está apenas adicionando uma sobrecarga extra por pouco ou nenhum benefício. Além disso, eu só posso usar o meu próprio disco Grub para ignorar o seu arranque encriptado se única /boot está protegida. Ou posso apenas ler a unidade normalmente.
Kaz Wolfe
2
Os iPhones (6 em ​​diante, eu acho) não apenas possuem criptografia completa de "disco", mas também estão vinculados ao login pin / biométrico. Portanto, se você deseja que seu computador se recuse a inicializar sem intervenção, você também pode vincular sua criptografia de disco a um módulo de token / senha / TPM de hardware. É muito trabalho.
Pjc50 27/10/16
17

Se você quiser amarrá-lo, use uma senha . No link:

Notas de proteção de senha do GRUB 2

O Grub 2 pode estabelecer requisitos de senha em:

  • Todas as entradas do 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, acessível apenas por "John", o superusuário.
  • O administrador deve ativar a proteção por senha manualmente, editando os arquivos do sistema GRUB 2.

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

  • A menos que a proteção universal de todas as entradas do menu seja desejada, as entradas específicas devem ser identificadas:

    • Editando manualmente os /etc/grub.d/scripts do Grub 2 , como 10_linuxe30_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 o update-grub for executado.

    • Manualmente editando /boot/grub/grub.cfg. As edições neste arquivo serão removidas quando update-grubexecutadas 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 aos modos de edição de menu e linha de comando do GRUB 2.

  • O nome de usuário e / ou a senha não precisam ser iguais ao nome / senha de logon do Ubuntu.
  • A menos que o recurso de criptografia de senha do GRUB 2 seja usado, a senha é armazenada como texto sem formatação em um arquivo legível. Consulte a seção Criptografia de senha para obter orientações sobre o uso desse recurso.

Por padrão (!), Neste caso, a usabilidade supera a segurança. Se você não pode confiar nas pessoas 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 obrigatória a senha.

Rinzwind
fonte
Sejamos honestos, essas senhas podem ser facilmente ignoradas com acesso físico. Eles protegem um sistema de noobs, mas não de invasores com algumas habilidades básicas (usar o google já é suficiente) e acesso físico.
Byte Commander
3

Seu hack intencional começa com isso:

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

Mas você pode proteger com senha a eopção conforme discutido aqui: Como adicionar a proteção por senha do GRUB ao processo de carregamento do SO em vez de editar opções de inicialização

Você pode executar a etapa extra de criptografar a senha do grub, conforme discutido no link. De fato, com talvez 3% da população (suposição selvagem) usando Linux / Ubuntu em casa, é uma boa idéia para os Administradores de Sistemas se protegerem contra a efunção nos sistemas de produção em funcionamento. Eu imagino que se o Ubuntu for usado no trabalho, 30 a 40% também o utilizariam em casa e talvez 10% deles estejam aprendendo a fazer isso eem seus sistemas domésticos.

Graças à sua pergunta, eles acabaram de aprender mais. No entanto, com o link acima, os Administradores do Sistema têm outra tarefa em sua lista de tarefas para proteger os ambientes de produção.

WinEunuuchs2Unix
fonte
11
Sejamos honestos, essas senhas podem ser facilmente ignoradas com acesso físico. Eles protegem um sistema de noobs, mas não de invasores com algumas habilidades básicas (usar o google já é suficiente) e acesso físico.
Byte Commander
@ByteCommander É tudo sobre acesso físico. O BIOS pode ser configurado com senha de administrador para nunca inicializar a partir de USB ou DVD. Alguém pode abrir o gabinete, colocar dois pinos curtos na placa-mãe e a senha é redefinida para espaços em branco (nenhuma senha é necessária para alterar a ordem de inicialização do BIOS).
WinEunuuchs2Unix
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 eu estou falando aqui sobre a segurança do disco onde está armazenada no firmware do próprio disco. O disco não pode ser lido ou gravado em. Portanto, não é apenas o grub inacessível sem a senha, mas seus dados também.

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

Há um software em torno do qual pode remover a senha dos discos de alguns fabricantes, mas também limpa efetivamente o disco. Portanto, seus dados ainda estão seguros.

Scooby-2
fonte
Comentários tardios, mas gostaria de salientar que isso pode ser derrotado ocasionalmente de maneiras simples. Pode haver algum comando do fabricante (documentado) para limpar uma senha do HDD sem disparar um formato. Da mesma forma, talvez eu possa "emprestar" os pratos do disco rígido e colocá-los no meu próprio controlador - a senha é (geralmente) armazenada na NVRAM do controlador, não nos pratos.
Kaz Wolfe
@Kaz, você está absolutamente certo no que diz, mas a ênfase deve ser colocada na palavra "ocasionalmente" em sua frase "isso pode ocasionalmente ser derrotado de maneiras simples". À medida que a tecnologia do disco rígido continua a melhorar, ao contrário do que você diz, quase todos os fabricantes agora armazenam seu firmware e senhas nos pratos, portanto, mudar a placa controladora não ajuda. Existe um software disponível para desbloquear unidades sem limpar os dados, mas funciona apenas em unidades antigas.
Scooby-2