||| Página inicial Privacidade Online Softwares Comprar Artigos|Tutoriais|Notícias Depoimentos Quem Somos Contato Doar

Qubes OS Live Zram Amnésico - ITP logo

Qubes OS 100% na RAM: Modo Live Anti-Forense, Amnésico e com Anti Cold Boot Attack

SEGURANÇA AVANÇADA TUTORIAL COMPLETO NÍVEL: AVANÇADO

Neste artigo você aprenderá como tornar o Qubes OS completamente anti-forense, operando 100% na memória RAM, assim como o Tails OS faz. Entenda por que usar o Qubes em modo live na RAM com anti cold boot attack e o que isso representa em termos de segurança real. O script ephemeral.sh, desenvolvido por leandroibov, automatiza toda essa configuração: coloca o dom0 100% na RAM, instala os módulos anti cold boot attack e ainda oferece atalhos de teclado para desligamento de emergência em caso de ataque físico.




O que é o modo live 100% na RAM e por que é a técnica mais eficaz de segurança para operações sensíveis

O acesso físico ao seu dispositivo pode expor rastros e metadados que permanecem acessíveis mesmo após você acreditar ter apagado tudo. Arquivos deletados, históricos de navegação, chaves criptográficas temporárias e metadados de sistema ficam gravados no disco e podem ser recuperados com ferramentas forenses mesmo depois de formatações comuns.

Atenção: Usar secure erase em SSD não garante a destruição total dos dados. Isso está comprovado em pesquisas acadêmicas publicadas no USENIX, no blog de Bruce Schneier e no The Register. SSDs utilizam tecnicas internas como wear leveling e blocos de reserva que impedem que o secure erase alcance todos os setores onde os dados foram gravados.

Usando secure erase em HD é possível aniquilar os rastros, mas é um processo demorado. Não há tempo de apagar os rastros com secure erase caso sua casa seja invadida com o objetivo de acessar seu computador. Ao desligar o PC com anti cold boot attack ativado, todos os rastros e metadados são aniquilados imediatamente, pois nunca foram escritos no disco.

Criptografia robusta resolve o problema? Não completamente, e aqui está o motivo mais importante que poucas pessoas consideram:

Não é anti-tortura: Se um atacante, sequestrador ou agente governamental torturar seus familiares ou seus animais para obter a senha, você será obrigado a revelar o acesso. Se os rastros foram irrecuperáveis porque tudo estava na RAM, você está protegido. Se não estavam, o atacante poderá lhe torturar para revelar a senha de um keepass criptografado, arquivos .gpg, carteiras de criptomoedas ou qualquer outro dado sensível que a análise forense encontrar no disco.

Por isso, o meio mais eficaz de proteger informações sensíveis é operar tudo: metadados, rastros, arquivos, tudo 100% na memória RAM com sistema anti cold boot. Assim, ao desligar a máquina, não existe absolutamente nada para recuperar.

O problema específico do Qubes OS: O Qubes roda lentamente em HD mesmo em computadores potentes, então o caminho natural é usar SSD. Porém o SSD não garante secure erase, conforme comprovado nas referências abaixo. A melhor tática é usar SSD no Qubes para o desempenho, mas para operações que requerem anti-forense avançada e amnésia total, coloca-se o dom0 100% na memória RAM e as AppVMs, DispVMs e Standalone VMs dentro do dom0, para que tudo fique 100% na RAM assim como o Tails OS faz.

Infelizmente, para colocar um sistema inteiro de 200 GB ou 600 GB na RAM seria necessária uma quantidade absurda de memória. O dom0 por padrão vem com uma partição de 20 GB, mas pode ser aumentada. Com 20 GB é possível colocar muitas AppVMs leves. Você precisará gerenciar isso com cuidado.

Pesquisas que comprovam a falha do secure erase em SSD:



Qubes OS é superior ao Tails quando usa o modo ephemeral 100% na RAM

Quando o Qubes OS opera em modo ephemeral, ele herda todas as vantagens do Tails OS em termos de amnésia e anti-forense, mas adiciona camadas de segurança que o Tails simplesmente não possui. Veja a comparação:

Recurso de Segurança Tails OS Qubes Ephemeral
100% na RAM, sem rastros no disco SIM SIM
Anti-forense e amnésia total SIM SIM
Isolamento de VMs por compartimentação NÃO SIM
Gateway Tor isolado (Whonix) impedindo vazamento de IP NÃO SIM
Proteção contra desanonimização por serial number de USB VULNERÁVEL PROTEGIDO
Anti Cold Boot Attack SIM SIM (via ram-wipe)

Gateway Tor isolado via Whonix: No Qubes com Whonix, o roteamento Tor é feito por uma VM isolada (sys-whonix). Isso impede que um atacante que invada sua VM de trabalho descubra seu IP real, pois o Tor é gerenciado por outra máquina virtual completamente separada.

Vulnerabilidade do Tails OS que o Qubes resolve: Se o Tails dá boot pelo pendrive, o serial number desse pendrive fica disponível para o usuário amnésia. Isso pode ser usado para desanonimização. No Qubes, o serial number de pendrives fica isolado na sys-usb (offline) ou em outras VMs como a vault, sem expor o identificador nas AppVMs que você usa para navegar. Mesmo que o atacante invada sua VM de uso, ele não conseguirá lhe desanonimizar pelo metadado do serial dos dispositivos USB. No Tails, isso é uma vulnerabilidade real: você pode ser desanonimizado pelo serial number do próprio pendrive que está rodando o Tails. Observação: No Qubes você pode anexar um dispositivo USB na sua AppVM que está usando para operar anonimamente, mas é opcional! Por segurança, você deve usar dispositivos USB sempre em outras AppVMs para evitar o acesso ao número serial deles!


Anti Cold Boot Attack: por que todo sistema precisa disso e por que apenas desligar não é suficiente

Erro crítico: Muitas pessoas acreditam que desligar ou reiniciar o computador apaga automaticamente a RAM. Isso é falso e comprovado experimentalmente.

Um ataque cold boot consiste em extrair dados sensíveis diretamente da memória RAM após o desligamento da máquina. Chaves LUKS, senhas, tokens de sessão e qualquer informação que estava na memória durante a sessão podem ser recuperados por um atacante com acesso físico ao equipamento.

A pesquisa da empresa 3mdeb confirmou experimentalmente que chips DDR4 e DDR5 modernos, os mais usados nos computadores atuais, retêm dados legíveis por segundos ou até minutos após a perda de energia. Em alguns módulos testados, os bits permaneceram estáveis por tempo suficiente para um atacante físico congelar os chips com spray de ar comprimido invertido ou nitrogênio líquido, removê-los e transferi-los para outra máquina, recuperando o conteúdo intacto.

Na parte 2 da pesquisa ficou claro que o comportamento varia muito entre fabricantes e modelos: alguns módulos se degradam em menos de 1 segundo, outros levam vários minutos para atingir 49,5% de bits alterados, que é o limiar mínimo de irrecuperabilidade.

No Qubes OS o risco é ainda maior: O dom0 gerencia todas as VMs e mantém chaves criptográficas ativas na RAM durante toda a sessão. Um shutdown comum não limpa essa memória. A solução é o módulo ram-wipe, que intercepta o processo de desligamento no nível do initramfs via Dracut e executa a limpeza de cache mais verificação de volumes LUKS antes do power-off, garantindo que nenhum dado sensível permaneça acessível nos chips.

Pesquisas sobre remanencia de dados na RAM:

Reboot ou shutdown sem ram-wipe = RAM exposta. Simples assim.


Ephemeral: Instalação do Qubes OS 100% em RAM com Anti-Forense e Anti Cold Boot Attack

Este script automatiza a configuração para rodar o dom0 do Qubes inteiramente em RAM, utilizando AppVMs e templates no varlibpool, mantendo um estado anti-forense e amnésico semelhante ao Tails OS. Também permite restaurar o estado original do Qubes com um único comando.

Baixe o script no repositório oficial do desenvolvedor leandroibov: GitHub do projeto Clique aqui!

Qual versão usar:

Importante: Não use versões erradas para evitar danos irreversíveis ao seu Qubes OS.

Exemplo de instalação com 4.3.ephemeral.sh:

1. Copie o script 4.3.ephemeral.sh para a AppVM vault, para o usuário user, em /home/user/. O novo caminho será /home/user/4.3.ephemeral.sh.

2. Abra um terminal no dom0 e execute os comandos abaixo:

qvm-run --pass-io vault 'cat "/home/user/4.3.ephemeral.sh"' > /home/user/4.3.ephemeral.sh
sudo chmod +x 4.3.ephemeral.sh
sudo ./4.3.ephemeral.sh


Opção 1: Rodar o Qubes com dom0 100% em RAM

Para usar AppVMs e templates inteiramente em RAM, você deve criá-los no varlibpool dentro do dom0. O ambiente Qubes torna-se híbrido: o dom0 opera 100% em RAM, enquanto as VMs no pool no SSD ou HD funcionam normalmente mas não estão em RAM.

Ao reiniciar, aparecerá uma opção y/n: use y para o modo live (como o Tails) ou n para continuar com o dom0 normal no SSD.

Atenção: Criar AppVMs ou templates no pool de VMs enquanto o dom0 está em RAM pode causar problemas, pois eles não serão reconhecidos após a reinicialização, perdendo os registros ao desligar. As partições no SSD permanecem, mas ficam inacessíveis ao dom0.

Se você configurou o Qubes para 15 GB de RAM, usar a opção n continuará alocando essa quantidade ao dom0, o que é ineficiente já que apenas 4 GB são necessários para uso normal. A Opção 2 permite restaurar as condições originais, fazendo o dom0 usar 4 GB e liberando o restante para outras VMs.



Opção 2: Restaurar as configurações padrão do Qubes

Para reverter tudo ao estado original, ao reiniciar escolha a opção n e então execute:

sudo ./4.3.ephemeral.sh
# Escolha a opção 2 no menu
reboot

Seu Qubes voltará ao comportamento normal e a opção y/n para o modo live não aparecerá mais na inicialização.



Opção 3: Instalar os Módulos de Proteção contra Cold Boot Attack

Similar ao Tails OS e ao Whonix, usando o mesmo algoritmo de proteção contra cold boot attack desenvolvido pela equipe do Whonix. O usuário precisará configurar um atalho de teclado para acionar rapidamente o desligamento caso um atacante físico invada sua casa para realizar um cold boot attack. O dom0 não permite a conexão de pen drives USB, portanto não é possível programar um dispositivo USB para iniciar a proteção removendo-o e desligando o sistema, como no Tails.

Atalho sugerido: No Qubes, vá em Abrir Menu de Aplicativos, depois Gerenciador de Configurações, depois Teclado, e adicione o atalho para o comando abaixo. Use o atalho Control + Super para acionamento rápido em emergências.
sudo shutdown now


Opção 4: Remover os Módulos de Proteção contra Cold Boot Attack

Para manutenção em caso de problemas. Esta opção verifica os hashes SHA-256 originais dos arquivos usados para criar os módulos do Dracut e indica modificações ou arquivos ausentes para diagnosticar erros de instalação. Após verificação, oferece a opção de remover os módulos e regenerar o initramfs.



Notas Importantes sobre Tamanho do dom0 e RAM necessária

O dom0 tem um tamanho padrão de 20 GB, ocupando inicialmente cerca de 6 GB do sistema. Para adicionar muitos templates e AppVMs grandes totalizando, por exemplo, 40 GB, pode ser necessário:

Lembre-se: Em modo ephemeral não existe swap. Todo o sistema opera apenas com a RAM física disponível. Se a RAM esgotar, processos serão encerrados pelo kernel (OOM Killer). Planeje com margem de segurança.


Análise Técnica Completa do Script 4.3.ephemeral.sh para Usuários Avançados

Script desenvolvido por leandroibov com base nas contribuições da comunidade Qubes OS. Fontes originais:


Visão Geral e Arquitetura do Script

O script 4.3.ephemeral.sh transforma o Qubes OS em um sistema operacional efêmero similar ao Tails OS, onde o dom0 (o domínio privilegiado do Xen) opera inteiramente a partir da RAM, sem deixar rastros no disco após o desligamento. O Qubes OS é baseado no hipervisor Xen. O dom0 é o domínio administrativo com acesso direto ao hardware, responsável por gerenciar todos os outros domínios (AppVMs, TemplateVMs, etc.). Comprometer o dom0 equivale a comprometer toda a máquina.

O script é estruturado em cinco funções principais, chamadas por um menu interativo:

+---------------------------------------------------------------+ | Menu Principal (loop) | +---------------------------------------------------------------+ | | | | | v v v v v [Opção 1] [Opção 2] [Opção 3] [Opção 4] [Opção 5] ephemeral restore_ anti_cold_ remove_ Exit _qubes() original_ boot() anti_cold_ qubes() boot()

Dependencias externas utilizadas pelo script:


check_root_ram(): A Barreira de Segurança Inicial

Esta função é executada ANTES de qualquer operação e serve como proteção contra erros críticos. Ela identifica qual dispositivo de bloco está montado como raiz do sistema e verifica se já é um dispositivo ZRAM.

root_dev=$(findmnt -n -o SOURCE /) root_dev=${root_dev#/dev/} if [[ $root_dev == zram* ]]; then # Sistema já esta rodando em ZRAM (modo ephemeral ativo) # Executar a opção 1 novamente geraria um initramfs incorreto exit 1 fi

Se o sistema já está rodando em ZRAM (modo RAM ativo), executar a opção 1 novamente geraria um initramfs incorreto, potencialmente tornando o sistema impossível de bootar. A proteção evita essa catástrofe. O método com findmnt é mais preciso do que verificar a existência de /sys/block/zram0, pois a simples presença do bloco ZRAM não indica necessariamente que o sistema está rodando nele.


ephemeral_qubes(): O Pipeline Completo de Boot em RAM

Esta é a função central do script, operando em sete etapas sequenciais:

Etapa A: Cálculo de RAM disponível

Utiliza dmidecode para ler diretamente as tabelas SMBIOS/DMI do hardware e obter o tamanho físico de cada módulo de RAM instalado. Isso é mais preciso do que usar /proc/meminfo, que mostra a RAM disponível para o sistema operacional já descontando o overhead do kernel.

total_ram=$(sudo dmidecode -t memory \ | awk '/Size:/ && $2 != "No" { gsub(/GB|MB/, "", $2); sum += ($2 ~ /MB/ ? $2/1024 : $2) } END { printf "%.2f", sum }')

Etapa B: Cálculo do espaço usado no dom0

Verifica quanto espaço está REALMENTE sendo usado na partição que contém /var/lib/qubes. Esse valor é o mínimo de RAM que o ZRAM precisa ter para comportar uma cópia completa do dom0.

Etapa C: Validação interativa da entrada do usuário

Loop com múltiplas validações: o valor deve ser inteiro positivo, não pode ser maior que a RAM total da máquina e não pode ser menor que o espaço usado no dom0. Isso previne configurações impossíveis que causariam corrupção de dados.

Etapa D: Modificação do GRUB e do Xen

Cria backup do grub antes de qualquer alteração e insere novos parâmetros no hipervisor Xen (detalhados na seção de GRUB abaixo). Regenera os arquivos de configuração para BIOS Legacy e UEFI.

Etapa E: Desativação do swap

Remove a entrada de swap do /etc/fstab e esvazia o serviço [email protected]. Essencial para evitar que dados sensíveis vazem para o disco físico durante a sessão em RAM.

Etapa F: Criação do módulo Dracut 01ramboot

Cria três scripts no diretório /usr/lib/dracut/modules.d/01ramboot/:

# Fluxo do tmpfs.sh quando usuário responde y umount /sysroot # Desmonta o LVM do dom0 mount /dev/mapper/qubes_dom0-root /mnt # Monta o volume LUKS no /mnt modprobe zram # Carrega módulo ZRAM echo 10G > /sys/block/zram0/disksize # Define tamanho do disco virtual /mnt/usr/sbin/mkfs.ext2 /dev/zram0 # Formata ZRAM como ext2 mount /dev/zram0 /sysroot # Monta ZRAM como novo / cp -a /mnt/* /sysroot # Copia TUDO do LVM para ZRAM

Etapa G: Verificação de integridade pós-instalação

Calcula os hashes SHA-256 dos arquivos gerados e compara com valores esperados gravados no script. Qualquer divergência é reportada ao usuário.

Dracut e o initramfs: como funciona a cadeia de boot

O Dracut é o framework usado pelo Qubes OS (baseado em Fedora) para gerar o initramfs, a imagem de boot inicial carregada pelo bootloader. O ciclo de vida completo:

GRUB
→
Kernel + initramfs
→
Hooks Dracut
→
pass.sh (y/n?)
→
tmpfs.sh (se y)
→
dom0 em ZRAM

ZRAM: O Disco Virtual Comprimido Inteiramente na RAM

ZRAM é um módulo do kernel Linux que cria dispositivos de bloco comprimidos inteiramente na memória RAM. Originalmente projetado para swap comprimido em dispositivos com pouca RAM, aqui é usado para criar um disco raiz volátil.

O sistema de arquivos escolhido é ext2 por ser simples e sem journaling. Para uso em RAM onde a consistência em caso de falha de energia não é uma preocupação (o sistema é amnésico de qualquer forma), ext2 é a escolha mais eficiente.

Após a cópia com cp -a, o sistema raiz real do boot passa a ser o ZRAM. O LVM original no SSD permanece montado apenas em /mnt como referência, ficando efetivamente inativo para o restante da sessão. A partir desse momento, TODAS as escritas vão para o ZRAM (RAM) e o SSD não recebe nenhum dado novo da sessão atual.


Módulo Anti Cold Boot Attack (40ram-wipe): Como Funciona

O módulo opera em dois momentos distintos do ciclo de shutdown do Dracut:

wipe-ram-needshutdown.sh (hook: cleanup, prioridade 80): Executado DURANTE o boot normal. Registra que o sistema precisa voltar ao initramfs durante o shutdown, chamando need_shutdown. Isso permite executar código de limpeza ANTES da memória ser liberada. Se o parâmetro de kernel wiperam=skip for detectado, o módulo se desativa graciosamente, útil para manutenção.

wipe-ram.sh (hook: shutdown, prioridade 40): Executado NO SHUTDOWN, dentro do initramfs. Executa a função drop_caches() seguida de ram_wipe():

drop_caches() { sync # Força escrita de buffers pendentes echo 3 > /proc/sys/vm/drop_caches # Libera: 1=page cache, 2=dentries/inodes, 3=tudo sync # Segundo sync para consistência final }

Após o drop_caches, o script verifica via dmsetup ls --target crypt se ainda existem volumes LUKS montados. Volumes LUKS mantêm as chaves de descriptografia na RAM enquanto estão ativos. Se ainda houver volumes montados no shutdown, as chaves ainda estão na memória, representando risco para ataques cold boot. O Dracut deve fechar automaticamente os volumes LUKS durante o shutdown, mas o script verifica explicitamente e reporta qualquer anomalia via force_echo() no kernel log.


Modificações no GRUB e no Xen Hypervisor

A cadeia de boot do Qubes OS é: UEFI/BIOS, depois GRUB, depois Xen Hypervisor, depois Kernel dom0, depois initramfs, depois dom0. Os parâmetros adicionados ao GRUB_CMDLINE_XEN_DEFAULT afetam o Xen, não diretamente o kernel Linux:


Desativação do Swap: Por que é Obrigatória em Modo Ephemeral

O script realiza duas operações relacionadas ao swap. Primeira: remove entradas de swap do /etc/fstab usando expressão regular que captura linhas contendo a palavra swap entre espaços e tabs. Segunda: esvazia o serviço [email protected], que é o swap baseado em ZRAM do próprio Qubes OS.

Se o sistema usasse swap no SSD durante a sessão em RAM, dados sensíveis poderiam vazar para o disco físico, quebrando a propriedade amnésica do sistema. Além disso, manter o serviço de ZRAM-swap ativo criaria um segundo dispositivo ZRAM em paralelo com o usado para boot em RAM, gerando conflito.

Consequência direta: Na sessão efêmera o sistema opera sem swap. Processos não podem fazer swap para disco. Maior pressão sobre a RAM disponível. Potencial OOM (Out of Memory) se a RAM for insuficiente. Por isso o script recomenda mínimo de 16 GB de RAM.

Verificação de Integridade via SHA-256

Após criar todos os arquivos dos módulos, o script calcula os hashes SHA-256 e compara com valores esperados gravados diretamente no código. Isso serve para três propósitos: verificar que os arquivos foram escritos sem corrupção, detectar adulterações (se um adversário modificar os scripts de boot para inserir backdoors o hash divergirá) e diagnosticar erros de instalação.

Nota técnica: O hash do tmpfs.sh está intencionalmente excluído da verificação porque esse arquivo é modificado dinamicamente pelo sed para inserir o tamanho correto do ZRAM, fazendo o hash variar a cada instalação. Para proteção contínua contra adulterações futuras seria necessário um mecanismo como IMA (Integrity Measurement Architecture) do kernel Linux.

Restauração do Sistema Original: Como Funciona

O script cria backups (.bak) de TODOS os arquivos modificados antes de qualquer alteração:

A restauração segue esta ordem crítica:

  1. Remove os módulos Dracut (01ramboot)
  2. Regenera o initramfs (sem os módulos efêmeros)
  3. Restaura o grub a partir do .bak e regenera o GRUB
  4. Restaura o fstab (swap volta a funcionar)
  5. Restaura o serviço zram-swap
A ordem importa: O initramfs deve ser regenerado ANTES de restaurar o grub. Caso contrário o sistema poderia bootar com o novo grub mas o initramfs antigo ainda tentaria fazer boot em RAM, causando falha.

Limitações e Considerações de Segurança


Diagrama Geral do Fluxo

Fluxo de Boot em Modo Ephemeral (resposta y):

GRUB
→
Xen
→
Kernel
→
initramfs
→
pass.sh (y)
→
tmpfs.sh
→
ZRAM criado
→
LVM copiado para ZRAM
→
dom0 100% em RAM

Fluxo de Shutdown com Anti Cold Boot:

Shutdown acionado
→
Retorno ao initramfs
→
wipe-ram.sh
→
sync + drop_caches
→
Verifica LUKS
→
Power off
→
RAM perde dados

Fluxo de Restauração ao Estado Original:

Opção 2 no menu
→
Remove módulos Dracut
→
Regenera initramfs
→
Restaura GRUB do .bak
→
Restaura fstab e swap
→
Qubes normal


Referências Técnicas


Tutoriais avançados sobre Qubes OS: Clique aqui!

Qubes OS Espectro Proibido: Clique aqui!

Doar monero para ajudar no crescimento desse projeto: Clique aqui!

Contato:
Clique aqui