Kiddy — um módulo do núcleo Linux para proteção contra script kiddies

Kiddy – um módulo para o núcleo Linux, projetado para reduzir os riscos de exploração de (algumas) vulnerabilidades do núcleo.

Na base do mecanismo de proteção implementado neste módulo está uma ideia simples, que consiste em que, durante um ataque, de alguma forma ocorre a identificação do objeto de ataque. Portanto, se dificultarmos essa identificação, podemos aumentar significativamente a complexidade da exploração, uma vez que, em muitos casos, exploits prontos contêm tabelas de vários tipos de deslocamentos (offsets), correspondendo às versões-alvo do núcleo.

Por exemplo, aqui está como isso é feito para CVE-2017-1000112. Ali também podemos ver que a identificação da versão do núcleo é realizada utilizando uname.

O módulo projetado é simples de implementar e permite:

  • alterar a identificação do núcleo;
  • limitar o acesso ao log do núcleo (dmesg);
  • limitar o acesso a alguns arquivos em /proc, que também contêm informações identificadoras;
  • limitar o acesso a arquivos e pastas que podem conter informações identificadoras;
  • alterar a identificação da versão do núcleo, disponível através do vDSO.

Durante a construção, o módulo permite usar os chamados "presets", que implementam várias lógicas de alteração da identificação. Por exemplo, usando o preset "windows", podemos obter o seguinte comportamento:

Antes de carregar o módulo

$ ./misc/id.sh ** VAZAMENTOS identitários UNAME — uname -r 2.6.32-754.35.1.el6.x86_64 — uname -v #1 SMP Sáb Nov 7 12:42:14 UTC 2020 — uname -a Linux localhost.localdomain 2.6.32-754.35.1.el6.x86_64 #1 SMP Sáb Nov 7 12:42:14 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux ** VAZAMENTOS identitários PROCFS — /proc/cmdline ro root=/dev/mapper/VolGroup00-LogVol00 rd_NO_LUKS no_timer_check console=tty0 console=ttyS0,115200n8 net.ifnames=0 biosdevname=0 LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 rd_LVM_LV=VolGroup00/LogVol01 rd_LVM_LV=VolGroup00/LogVol00 KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet — /proc/version Linux version 2.6.32-754.35.1.el6.x86_64 (mockbuild@x86-02.bsys.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-23) (GCC)) #1 SMP Sáb Nov 7 12:42:14 UTC 2020 — /proc/sys/kernel/version #1 SMP Sáb Nov 7 12:42:14 UTC 2020 — /proc/sys/kernel/osrelease 2.6.32-754.35.1.el6.x86_64 which: no hostnamectl in (/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/vagrant/bin)

Após carregar o módulo

$ ./misc/id.sh ** VAZAMENTOS identitários UNAME — uname -r Windows — uname -v NT 4.0 — uname -a Linux localhost.localdomain Windows NT 4.0 x86_64 x86_64 x86_64 GNU/Linux ** VAZAMENTOS identitários PROCFS — /proc/cmdline EFIMicrosoftBootbootmgfw.efi — /proc/version Windows NT 4.0 — /proc/sys/kernel/version NT 4.0 — /proc/sys/kernel/osrelease Windows which: no hostnamectl in (/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/vagrant/bin)

Os scripts kiddie não passarão!

Fonte: linux.org.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster