Direct sys_call_table modifications
Traditional kernel rootkits, such as adore and phalanx, worked by overwriting pointers in sys_call_table
so that they would point to a replacement function, which would then call the original syscall as needed. This was accomplished by either an LKM or a program that modified the kernel through /dev/kmem
or /dev/mem
. On today's Linux systems, for security reasons, these writable windows into memory are disabled or are no longer capable of anything but read operations depending on how the kernel is configured. There have been other ways of trying to prevent this type of infection, such as marking sys_call_table
as const
so that it is stored in the .rodata
section of the text segment. This can be bypassed by marking the corresponding
PTE (short for Page Table Entry) as writeable, or by disabling the write-protect bit in the cr0
register. Therefore, this type of infection is a very reliable way to make a rootkit even today, but it is also very easily detected...