bimbo – un modulo per il kernel Linux, progettato per ridurre i rischi di sfruttare (alcune) vulnerabilità del kernel.
Il meccanismo di protezione implementato in questo modulo si basa su un'idea semplice, ovvero che durante l'attacco, l'obiettivo dell'attacco viene in qualche modo identificato. Pertanto, se tale identificazione viene resa difficile, la complessità dell'operazione può moltiplicarsi, perché in molti casi, gli exploit già pronti contengono tabelle di vari tipi di offset corrispondenti alle versioni del kernel di destinazione.
Ad esempio, ecco come è fatto CVE-2017-1000112. Puoi anche vedere lì che la versione del kernel viene identificata utilizzando uname.
Il modulo sviluppato è di facile implementazione e consente di:
- cambiare l'identificazione del kernel;
- limitare l'accesso al registro del kernel (dmesg);
- limitare l'accesso a determinati file in /proc che contengono anche informazioni identificative;
- limitare l'accesso a file e cartelle che potenzialmente contengono informazioni identificative;
- modificare l'identificazione della versione del kernel disponibile tramite vDSO.
Durante il processo di assemblaggio, il modulo consente di utilizzare il cosiddetto. "preimpostazioni" che implementano una logica diversa per la modifica dell'identificazione. Ad esempio, utilizzando la preimpostazione "windows" è possibile ottenere il seguente comportamento:
Prima di caricare il modulo
$ ./misc/id.sh ** Perdite di identità UNAME — uname -r 2.6.32-754.35.1.el6.x86_64 — uname -v #1 SMP Sab 7 Nov 12:42:14 UTC 2020 — uname -a Linux localhost.localdomain 2.6.32-754.35.1.el6.x86_64 #1 SMP Sab 7 Nov 12:42:14 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux ** Perdite di 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 Versione Linux 2.6.32-754.35.1.el6.x86_64 (mockbuild@x86-02.bsys.centos.org) (versione gcc 4.4.7 20120313 (Red Hat 4.4.7-23) (GCC) ) #1 SMP Sab 7 Nov 12:42:14 UTC 2020 - /proc/sys/kernel/version #1 SMP Sab 7 Nov 12:42:14 UTC 2020 - /proc/sys/kernel/osrelease 2.6.32-754.35.1.el6.x86_64 che: nessun hostnamectl in (/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/vagrant/bin)
Dopo aver caricato il modulo
$ ./misc/id.sh ** Perdite di 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 ** Perdite di identità 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)
Gli script kiddie non passeranno!
Fonte: linux.org.ru
