Kiddy — un module du noyau Linux pour protection contre les script kiddies

Kiddy – un module pour le noyau Linux, conçu pour réduire les risques d'exploitation de certaines vulnérabilités du noyau.

La protection mise en œuvre dans ce module repose sur une idée simple, à savoir que lors d'une attaque, l'identification de l'objet cible se produit d'une manière ou d'une autre. Par conséquent, rendre cette identification plus difficile peut augmenter considérablement la complexité de l'exploitation, car dans de nombreux cas, les exploits prêts à l'emploi contiennent des tableaux de différents types décalés (offsets) correspondant aux versions cibles du noyau.

Par exemple, voici comment cela est fait pour CVE-2017-1000112. On peut également voir ici que l'identification de la version du noyau se fait à l'aide de uname.

Le module développé est simple à mettre en œuvre et permet de :

  • modifier l'identification du noyau ;
  • limiter l'accès aux journaux du noyau (dmesg) ;
  • limiter l'accès à certains fichiers dans /proc, contenant également des informations identifiantes ;
  • limiter l'accès aux fichiers et dossiers pouvant contenir des informations identifiantes ;
  • modifier l'identification de la version du noyau accessible via vDSO.

Lors de la compilation, le module permet d'utiliser ce qu'on appelle des « presets », réalisant une logique différente de modification de l'identification. Par exemple, en utilisant le preset « windows », on peut obtenir le comportement suivant :

Avant le chargement du module

$ ./misc/id.sh ** Fuites d'identité UNAME — uname -r 2.6.32-754.35.1.el6.x86_64 — uname -v #1 SMP Sam Nov 7 12:42:14 UTC 2020 — uname -a Linux localhost.localdomain 2.6.32-754.35.1.el6.x86_64 #1 SMP Sam Nov 7 12:42:14 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux ** Fuites d'identité 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 Version Linux 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 Sam Nov 7 12:42:14 UTC 2020 — /proc/sys/kernel/version #1 SMP Sam Nov 7 12:42:14 UTC 2020 — /proc/sys/kernel/osrelease 2.6.32-754.35.1.el6.x86_64 qui : aucun hostnamectl dans (/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/vagrant/bin)

Après le chargement du module

$ ./misc/id.sh ** Fuites d'identité 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 ** Fuites d'identité PROCFS — /proc/cmdline EFIMicrosoftBootbootmgfw.efi — /proc/version Windows NT 4.0 — /proc/sys/kernel/version NT 4.0 — /proc/sys/kernel/osrelease Windows qui : aucun hostnamectl dans (/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/vagrant/bin)

Les scripts kiddies ne passeront pas !

Source : linux.org.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster