Gdt and ldt in windows kernel vulnerability exploitation
Home Windows syscall tables ntoskrnl. The title is very misleading, this has nothing to do with Windows itself being vulnerable. Hi Jeff, thanks for your opinion! Pingback: Een verhaal van twee zero-days - Computertaal. This is another method that is briefly presented in the book "A guide to Kernel Exploitation".
Actually, a Logical Address is composed of: An offset address, which is a bits value, A Segment Selector, which is a bits value. In our case, we just need to put the right value for the Segment Selector, and we just have to leave the index at 0x Indeed, here we're doing like a call in two times; I mean the first call is aimed to reach the Call-Gate Descriptor and then the Call-Gate Descriptor points to the code we want to execute. For this reason, it's unclear how this could be used to access kernel-mode memory due to the fact that page protections would still prevent lesser privileged callers from accessing kernel-mode pages when paging is enabled.
Derek Soeder identified an awesome flaw in that allowed a user-mode process to create an expand-down segment descriptor in the calling process' LDT[ 40 ]. An expand-down segment descriptor inverts the meaning of the limit and base address associated with a segment descriptor. In this way, the limit describes the lower limit and the base address describes the upper limit. The reason this is useful is due to the fact that when kernel-mode routines validate addresses passed in from user-mode, they assume flat segments that start at base address zero.
This is the same thing as assuming that a logical address is equivalent to a linear address. However, when expand-down segment descriptors are used, the linear address will reference a memory location that can be in stark contrast to the address that's being validated by kernel-mode.
Use of the IDT is triggered by three types of events: hardware interrupts, software interrupts, and processor exceptions, which together are referred to as "interrupts". The IDT consists of interrupt vectors—the first 32 or F of which are reserved for processor exceptions.
It is used by the operating system kernel for task management. The TSS may reside anywhere in memory.
0コメント