A única maneira que vejo para evitar esse cenário é evitar dual-boot: se livrar do Windows. Claro, se você acha que a CIA não pode instalar malware que irá se esconder em um sistema Linux de desktop / laptop, você não é paranóico o suficiente ...
O Linux é compilado a partir de código aberto e milhares de desenvolvedores identificariam qualquer código-fonte malicioso. No entanto, muitos usuários de Linux com inicialização dupla do Windows e software de malware / spyware / "spook" ware (CIA) podem hackear os binários compilados do Linux após uma versão limpa ser instalada.
A solução que eu acho é executar um hash total nos binários do Kernel do Linux imediatamente após a instalação de uma atualização, isto é, no 4.4.0-63-generic .
A questão é quais arquivos precisam ser incluídos? ie / boot / 4.4.0-63-generic ou mais que isso?
Depois que o total de hash é gerado, um trabalho cron
pode ser executado mensalmente, semanalmente ou diariamente para regenerar o total de hash e compará-lo à versão original para garantir que ele não tenha sido alterado. Se o total de hash não coincidir com uma infecção ocorreu e um kernel limpo precisa ser reinstalado.
Editar 1 As respostas até agora são mais como comentários. Essas respostas e os comentários abaixo parecem dizer "A CIA é muito inteligente e muito rica para se proteger, então não se incomode em tentar" . Se eu lesse isso bem, então todas as respostas poderiam ser escritas por um, a CIA, a NSA, o MI6 ou o Mossad pagaram trolls ou alguém em folha de pagamento assustadora. Uma analogia seria "Seus criminosos da vizinhança são muito espertos e sofisticados. Eles vigiam sua casa e aprendem seus hábitos. Não adianta trancar suas portas ou instalar um sistema de alarme."
Alguém mais diz que, quando você reinicializar com o Windows, a senha usada para criptografar seus totais de hash pode ser lida por spyware. Duvido que a pegada de RAM do Windows seja maior do que a de RAM do Linux e que as janelas de carregamento apaguem qualquer RAM valiosa e pesquisável que o Linux possa ter deixado para trás. Além de um simples desligamento de 10 segundos apagaria toda a RAM.
No extremo oposto do espectro, alguém sugeriu "Não use o Windows" . Hum ... não, eu não vou me esconder de medo e evitar as plataformas que preciso usar quando precisar usá-las. É um laptop super rápido com gráficos híbridos da nVidia e, quando chegar a hora dos jogos do Windows, ele será usado como tal.
- Isso é mais como você faria isso, mas com a atualização do kernel você obviamente precisaria executar novamente o hash, para criar um novo. Mas o que se você esqueceu de reexecutar, o que aconteceria então?
Com uma atualização do kernel, um kernel inteiramente novo é instalado em /boot
. Se você esquecer de executar o trabalho para criar novos totais de hash, a tarefa cron que compara os totais dará a você um erro da mesma forma como se alguém tivesse modificado os binários do kernel pelas suas costas.
O design atual dos scripts e a criptografia dos totais de hash vem depois. Estamos colocando o carrinho na frente do cavalo. O primeiro passo é identificar o que precisa ser protegido. É NAA (não é uma resposta) para postar perguntas sobre "como você faria isso?" incorporado em uma resposta.
Respondendo parcialmente à minha pergunta, além de executar totais de hash nas imagens do Kernel, os drivers selecionados devem ser incluídos. Especificamente eu estou pensando em um onde eles podem desligar a energia para webcam dando a ilusão de que eles estão desligados e, em seguida, ativando a câmera. Algo parecido com o microfone, talvez?
Removendo todas as especulações sobre se você deve ou não monitorar modificações não autorizadas no seu espaço de kernel - quais binários devem ser protegidos de adulteração externa?
A única maneira que vejo para evitar esse cenário é evitar dual-boot: se livrar do Windows. Claro, se você acha que a CIA não pode instalar malware que irá se esconder em um sistema Linux de desktop / laptop, você não é paranóico o suficiente ...
Aprenda como fazer o grub funcionar para você e configure-o para inicializar as distribuições linux que são mantidas dentro dos arquivos .iso sempre que você inicializar. Mantenha sua máquina Windoze em casa e só permita que ela fale através de conexão direta com hardlink, à caixa linux que você permite falar com a internet em cada boot, e configure toda a atividade da internet remotamente, através do sistema linux que é inicializado tempo que é iniciado. Para aqueles que são hiper-paranóicos, faça drives flash inicializáveis, que você guarda no bolso, e desligue o boot-from-USB, sempre que sair de casa, no dispositivo linux. Todas as caixas envolvidas seriam protegidas por senha, no nível do BIOS, é claro! ; ^)
Aqui está uma amostra de outros binários do kernel para proteger além daqueles em /boot
:
$ ls /lib/modules/4.9.13-040913-generic/
build modules.alias.bin modules.dep.bin modules.symbols
initrd modules.builtin modules.devname modules.symbols.bin
kernel modules.builtin.bin modules.order updates
modules.alias modules.dep modules.softdep vdso
───────────────────────────────────────────────────────────────────────────────
rick@dell:~$ ls /lib/modules/4.9.13-040913-generic/kernel
arch crypto drivers fs kernel lib mm net sound virt
───────────────────────────────────────────────────────────────────────────────
rick@dell:~$ ls /lib/modules/4.9.13-040913-generic/kernel/drivers
acpi dca hwmon mcb nvme rapidio uio
ata dma hwtracing md nvmem regulator usb
atm edac i2c media parport reset uwb
auxdisplay extcon iio memstick pci rtc vfio
base firewire infiniband message pcmcia scsi vhost
bcma firmware input mfd phy spi video
block fmc iommu misc pinctrl spmi virtio
bluetooth fpga ipack mmc platform ssb vme
char gpio isdn mtd power staging w1
clk gpu leds net powercap target watchdog
cpufreq hid lightnvm nfc pps thermal xen
crypto hsi macintosh ntb ptp thunderbolt
dax hv mailbox nvdimm pwm tty
───────────────────────────────────────────────────────────────────────────────
rick@dell:~$ ls /lib/modules/4.9.13-040913-generic/kernel/drivers/net/ethernet/realtek/
8139cp.ko 8139too.ko atp.ko r8169.ko
───────────────────────────────────────────────────────────────────────────────
rick@dell:~$
Um algoritmo recursivo é necessário para obter o instantâneo md5sum (ou qualquer hashsum de segurança que você preferir) de todos os subdiretórios e arquivos no diretório /lib/modules/kernel_version/*
Provavelmente existem outros binários, mas eu queria postar uma resposta do que foi descoberto até agora.