From a3d6f61a1d5a782267d829442a01eba0e4bb8c02 Mon Sep 17 00:00:00 2001 From: Sam Brown Date: Mon, 13 Feb 2017 22:10:16 +0000 Subject: [PATCH] 64 bit/windows 8 done --- .../DescriptorTables/DescriptorTables.cpp | 56 +++++++++++++++-- .../DescriptorTables/DescriptorTables.vcxproj | 7 +++ .../DescriptorTables.vcxproj.filters | 5 ++ .../DescriptorTables/asm_funcs.asm | 18 ++++++ ...NtQuerySysInfo_SystemHandleInformation.cpp | 6 +- .../NtQuerySysInfo_SystemLockInformation.cpp | 9 ++- ...NtQuerySysInfo_SystemModuleInformation.cpp | 15 +++-- .../ReadMe.txt | 40 ++++++++++++ ...tQuerySysInfo_SystemProcessInformation.cpp | 46 ++++++++------ README.md | 12 ++-- .../SharedInfoHandleTable.cpp | 15 ++++- Syscalls/Syscalls/Syscalls.cpp | 59 ++++++++++++++---- Syscalls/Syscalls/Syscalls.vcxproj | 5 ++ Syscalls/Syscalls/Syscalls.vcxproj.filters | 9 ++- Syscalls/Syscalls/asm_funcs.asm | 11 ++++ ...SystemHandleInformation_windows8_64bit.PNG | Bin 0 -> 19658 bytes ...o_SystemLockInformation_windows8_64bit.PNG | Bin 0 -> 19665 bytes ...SystemModuleInformation_windows8_64bit.PNG | Bin 0 -> 27243 bytes ...ystemProcessInformation_windows7_32bit.PNG | Bin 0 -> 20690 bytes ...ystemProcessInformation_windows8_64bit.PNG | Bin 0 -> 23422 bytes ...dleTable_info_leak_poc_windows7_32bit.PNG} | Bin .../SharedInfoHandleTable_windows8_64bit.PNG | Bin 0 -> 25119 bytes ...ormation_info_leak_poc_windows7_32bit.PNG} | Bin ...ormation_info_leak_poc_windows7_32bit.PNG} | Bin ...ormation_info_leak_poc_windows7_32bit.PNG} | Bin ...SystemProcessInformation_info_leak_poc.PNG | Bin 6194 -> 0 bytes ...r_tables_info_leak_poc_windows7_32bit.PNG} | Bin ... syscall_info_leak_poc_windows7_32bit.PNG} | Bin 28 files changed, 258 insertions(+), 55 deletions(-) create mode 100644 DescriptorTables/DescriptorTables/asm_funcs.asm create mode 100644 NtQuerySysInfo_SystemModuleInformation/NtQuerySysInfo_SystemModuleInformation/ReadMe.txt create mode 100644 Syscalls/Syscalls/asm_funcs.asm create mode 100644 screenshots/NtQuerySysInfo_SystemHandleInformation_windows8_64bit.PNG create mode 100644 screenshots/NtQuerySysInfo_SystemLockInformation_windows8_64bit.PNG create mode 100644 screenshots/NtQuerySysInfo_SystemModuleInformation_windows8_64bit.PNG create mode 100644 screenshots/NtQuerySysInfo_SystemProcessInformation_windows7_32bit.PNG create mode 100644 screenshots/NtQuerySysInfo_SystemProcessInformation_windows8_64bit.PNG rename screenshots/{SharedInfoHandleTable_info_leak_poc.PNG => SharedInfoHandleTable_info_leak_poc_windows7_32bit.PNG} (100%) create mode 100644 screenshots/SharedInfoHandleTable_windows8_64bit.PNG rename screenshots/{SystemHandleInformation_info_leak_poc.PNG => SystemHandleInformation_info_leak_poc_windows7_32bit.PNG} (100%) rename screenshots/{SystemLockInformation_info_leak_poc.PNG => SystemLockInformation_info_leak_poc_windows7_32bit.PNG} (100%) rename screenshots/{SystemModuleInformation_info_leak_poc.PNG => SystemModuleInformation_info_leak_poc_windows7_32bit.PNG} (100%) delete mode 100644 screenshots/SystemProcessInformation_info_leak_poc.PNG rename screenshots/{descriptor_tables_info_leak_poc.PNG => descriptor_tables_info_leak_poc_windows7_32bit.PNG} (100%) rename screenshots/{syscall_info_leak_poc.PNG => syscall_info_leak_poc_windows7_32bit.PNG} (100%) diff --git a/DescriptorTables/DescriptorTables/DescriptorTables.cpp b/DescriptorTables/DescriptorTables/DescriptorTables.cpp index 76276af..c5d6290 100644 --- a/DescriptorTables/DescriptorTables/DescriptorTables.cpp +++ b/DescriptorTables/DescriptorTables/DescriptorTables.cpp @@ -4,10 +4,29 @@ #include "stdafx.h" #include #include +#include +extern "C" void get_idtr(unsigned char *out); +extern "C" BYTE get_tss_selector(void); int main() { + +#ifdef _WIN64 + unsigned char idtr[10] = { 0 }; + get_idtr(idtr); + unsigned long long idtrBase = (unsigned long long)idtr[0] << 56 | + (unsigned long long)idtr[1] << 48 | + (unsigned long long)idtr[2] << 40 | + (unsigned long long)idtr[3] << 32 | + (unsigned long long)idtr[4] << 24 | + (unsigned long long)idtr[5] << 16 | + (unsigned long long)idtr[6] << 8 | + (unsigned long long)idtr[7]; + unsigned short idtrLimit = (unsigned int)idtr[8] << 8 | + (unsigned int)idtr[9]; + printf("Interrupt Descriptor Table Register base: 0x%llx, limit: 0x%X\r\n", idtrBase, idtrLimit); +#else unsigned char idtr[6] = { 0 }; __asm { sidt idtr; @@ -16,9 +35,28 @@ int main() (unsigned int)idtr[1] << 16 | (unsigned int)idtr[2] << 8 | (unsigned int)idtr[3]; - unsigned short idtrLimit = (unsigned int) idtr[4] << 8 | + unsigned short idtrLimit = (unsigned int)idtr[4] << 8 | (unsigned int)idtr[5]; printf("Interrupt Descriptor Table Register base: 0x%X, limit: 0x%X\r\n", idtrBase, idtrLimit); +#endif + + + +#ifdef _WIN64 + unsigned char gdtr[10] = { 0 }; + _sgdt(gdtr); + unsigned long long gdtrBase = (unsigned long long)gdtr[0] << 56 | + (unsigned long long)gdtr[1] << 48 | + (unsigned long long)gdtr[2] << 40 | + (unsigned long long)gdtr[3] << 32 | + (unsigned long long)gdtr[4] << 24 | + (unsigned long long)gdtr[5] << 16 | + (unsigned long long)gdtr[6] << 8 | + (unsigned long long)gdtr[7]; + unsigned short gdtrLimit = (unsigned int)gdtr[8] << 8 | + (unsigned int)gdtr[9]; + printf("Global Descriptor Table Register base: 0x%llx, limit: 0x%X\r\n", gdtrBase, gdtrLimit); +#else unsigned char gdtr[6] = { 0 }; __asm { sgdt gdtr; @@ -30,14 +68,22 @@ int main() unsigned short gdtrLimit = (unsigned int)gdtr[4] << 8 | (unsigned int)gdtr[5]; printf("Global Descriptor Table Register base: 0x%X, limit: 0x%X\r\n", gdtrBase, gdtrLimit); - - LDT_ENTRY tss; +#endif + WORD tr; - +#ifdef _WIN64 + tr = get_tss_selector(); +#else __asm str tr +#endif +#ifdef _WIN64 + WOW64_LDT_ENTRY tss; + Wow64GetThreadSelectorEntry(GetCurrentThread(), tr, &tss); +#else + LDT_ENTRY tss; GetThreadSelectorEntry(GetCurrentThread(), tr, &tss); - +#endif unsigned int tssBase = (tss.HighWord.Bits.BaseHi << 24) + (tss.HighWord.Bits.BaseMid << 16) + tss.BaseLow; diff --git a/DescriptorTables/DescriptorTables/DescriptorTables.vcxproj b/DescriptorTables/DescriptorTables/DescriptorTables.vcxproj index e6a4d29..a4e8b22 100644 --- a/DescriptorTables/DescriptorTables/DescriptorTables.vcxproj +++ b/DescriptorTables/DescriptorTables/DescriptorTables.vcxproj @@ -53,6 +53,7 @@ + @@ -157,7 +158,13 @@ Create + + + Document + + + \ No newline at end of file diff --git a/DescriptorTables/DescriptorTables/DescriptorTables.vcxproj.filters b/DescriptorTables/DescriptorTables/DescriptorTables.vcxproj.filters index c710a1d..0cec648 100644 --- a/DescriptorTables/DescriptorTables/DescriptorTables.vcxproj.filters +++ b/DescriptorTables/DescriptorTables/DescriptorTables.vcxproj.filters @@ -33,4 +33,9 @@ Source Files + + + Source Files + + \ No newline at end of file diff --git a/DescriptorTables/DescriptorTables/asm_funcs.asm b/DescriptorTables/DescriptorTables/asm_funcs.asm new file mode 100644 index 0000000..a48f65c --- /dev/null +++ b/DescriptorTables/DescriptorTables/asm_funcs.asm @@ -0,0 +1,18 @@ +_DATA SEGMENT +_DATA ENDS +_TEXT SEGMENT + +PUBLIC get_idtr +get_idtr PROC + sidt [rcx] + ret +get_idtr ENDP + +PUBLIC get_tss_selector +get_tss_selector PROC + str eax + ret +get_tss_selector ENDP + +_TEXT ENDS +END \ No newline at end of file diff --git a/NtQuerySysInfo_SystemHandleInformation/NtQuerySysInfo_SystemHandleInformation/NtQuerySysInfo_SystemHandleInformation.cpp b/NtQuerySysInfo_SystemHandleInformation/NtQuerySysInfo_SystemHandleInformation/NtQuerySysInfo_SystemHandleInformation.cpp index 8b42541..0b9bb50 100644 --- a/NtQuerySysInfo_SystemHandleInformation/NtQuerySysInfo_SystemHandleInformation/NtQuerySysInfo_SystemHandleInformation.cpp +++ b/NtQuerySysInfo_SystemHandleInformation/NtQuerySysInfo_SystemHandleInformation/NtQuerySysInfo_SystemHandleInformation.cpp @@ -59,8 +59,12 @@ int main() HANDLE handle = pHandleInfo->Handles[i].HandleValue; HANDLE pid = pHandleInfo->Handles[i].UniqueProcessId; printf("PID: %d\t", pid); +#ifdef _WIN64 + printf("Object 0x%llx\t", object); +#else printf("Object 0x%X\t", object); - printf("Handle 0x%X\r\n", handle); +#endif + printf("Handle 0x%x\r\n", handle); } return 0; } diff --git a/NtQuerySysInfo_SystemLockInformation/NtQuerySysInfo_SystemLockInformation/NtQuerySysInfo_SystemLockInformation.cpp b/NtQuerySysInfo_SystemLockInformation/NtQuerySysInfo_SystemLockInformation/NtQuerySysInfo_SystemLockInformation.cpp index 2249ea1..face0b1 100644 --- a/NtQuerySysInfo_SystemLockInformation/NtQuerySysInfo_SystemLockInformation/NtQuerySysInfo_SystemLockInformation.cpp +++ b/NtQuerySysInfo_SystemLockInformation/NtQuerySysInfo_SystemLockInformation/NtQuerySysInfo_SystemLockInformation.cpp @@ -12,6 +12,9 @@ typedef struct _SYSTEM_LOCK { ULONG ActiveCount; ULONG ContentionCount; ULONG Reserved2[2]; +#ifdef _WIN64 + ULONG Reserved3; +#endif ULONG NumberOfSharedWaiters; ULONG NumberOfExclusiveWaiters; } SYSTEM_LOCK, *PSYSTEM_LOCK; @@ -51,10 +54,14 @@ int main() status = query(SystemLockInformation, pLockInfo, len, &len); } while (status == (NTSTATUS)0xc0000004); - for (int i = 0; i < pLockInfo->LocksCount; i++) { + for (unsigned int i = 0; i < pLockInfo->LocksCount; i++) { PVOID lockAddress = pLockInfo->Locks[i].Address; USHORT lockType = (USHORT)pLockInfo->Locks[i].Type; +#ifdef _WIN64 + printf("Lock Address 0x%llx\t", lockAddress); +#else printf("Lock Address 0x%X\t", lockAddress); +#endif printf("Lock Type 0x%X\r\n", lockType); } return 0; diff --git a/NtQuerySysInfo_SystemModuleInformation/NtQuerySysInfo_SystemModuleInformation/NtQuerySysInfo_SystemModuleInformation.cpp b/NtQuerySysInfo_SystemModuleInformation/NtQuerySysInfo_SystemModuleInformation/NtQuerySysInfo_SystemModuleInformation.cpp index 32c79b2..dd7242d 100644 --- a/NtQuerySysInfo_SystemModuleInformation/NtQuerySysInfo_SystemModuleInformation/NtQuerySysInfo_SystemModuleInformation.cpp +++ b/NtQuerySysInfo_SystemModuleInformation/NtQuerySysInfo_SystemModuleInformation/NtQuerySysInfo_SystemModuleInformation.cpp @@ -9,6 +9,9 @@ typedef struct SYSTEM_MODULE { ULONG Reserved1; ULONG Reserved2; +#ifdef _WIN64 + ULONG Reserved3; +#endif PVOID ImageBaseAddress; ULONG ImageSize; ULONG Flags; @@ -16,7 +19,7 @@ typedef struct SYSTEM_MODULE { WORD Rank; WORD w018; WORD NameOffset; - BYTE Name[MAXIMUM_FILENAME_LENGTH]; + CHAR Name[MAXIMUM_FILENAME_LENGTH]; }SYSTEM_MODULE, *PSYSTEM_MODULE; typedef struct SYSTEM_MODULE_INFORMATION { @@ -56,11 +59,15 @@ int main() printf("Failed to retrieve system module information.\r\n"); return 1; } - for (int i = 0; i < pModuleInfo->ModulesCount; i++) { + for (unsigned int i = 0; i < pModuleInfo->ModulesCount; i++) { PVOID kernelImageBase = pModuleInfo->Modules[i].ImageBaseAddress; PCHAR kernelImage = (PCHAR)pModuleInfo->Modules[i].Name; - printf("Module name %s\t", kernelImage); - printf("Base Address 0x%X\r\n", kernelImageBase); + printf("Mod name %s ", kernelImage); +#ifdef _WIN64 + printf("Base Addr 0x%llx\r\n", kernelImageBase); +#else + printf("Base Addr 0x%X\r\n", kernelImageBase); +#endif } return 0; } diff --git a/NtQuerySysInfo_SystemModuleInformation/NtQuerySysInfo_SystemModuleInformation/ReadMe.txt b/NtQuerySysInfo_SystemModuleInformation/NtQuerySysInfo_SystemModuleInformation/ReadMe.txt new file mode 100644 index 0000000..10ab2b4 --- /dev/null +++ b/NtQuerySysInfo_SystemModuleInformation/NtQuerySysInfo_SystemModuleInformation/ReadMe.txt @@ -0,0 +1,40 @@ +======================================================================== + CONSOLE APPLICATION : NtQuerySysInfo_SystemModuleInformation Project Overview +======================================================================== + +AppWizard has created this NtQuerySysInfo_SystemModuleInformation application for you. + +This file contains a summary of what you will find in each of the files that +make up your NtQuerySysInfo_SystemModuleInformation application. + + +NtQuerySysInfo_SystemModuleInformation.vcxproj + This is the main project file for VC++ projects generated using an Application Wizard. + It contains information about the version of Visual C++ that generated the file, and + information about the platforms, configurations, and project features selected with the + Application Wizard. + +NtQuerySysInfo_SystemModuleInformation.vcxproj.filters + This is the filters file for VC++ projects generated using an Application Wizard. + It contains information about the association between the files in your project + and the filters. This association is used in the IDE to show grouping of files with + similar extensions under a specific node (for e.g. ".cpp" files are associated with the + "Source Files" filter). + +NtQuerySysInfo_SystemModuleInformation.cpp + This is the main application source file. + +///////////////////////////////////////////////////////////////////////////// +Other standard files: + +StdAfx.h, StdAfx.cpp + These files are used to build a precompiled header (PCH) file + named NtQuerySysInfo_SystemModuleInformation.pch and a precompiled types file named StdAfx.obj. + +///////////////////////////////////////////////////////////////////////////// +Other notes: + +AppWizard uses "TODO:" comments to indicate parts of the source code you +should add to or customize. + +///////////////////////////////////////////////////////////////////////////// diff --git a/NtQuerySysInfo_SystemProcessInformation/NtQuerySysInfo_SystemProcessInformation/NtQuerySysInfo_SystemProcessInformation.cpp b/NtQuerySysInfo_SystemProcessInformation/NtQuerySysInfo_SystemProcessInformation/NtQuerySysInfo_SystemProcessInformation.cpp index 0bfd9ac..f660e56 100644 --- a/NtQuerySysInfo_SystemProcessInformation/NtQuerySysInfo_SystemProcessInformation/NtQuerySysInfo_SystemProcessInformation.cpp +++ b/NtQuerySysInfo_SystemProcessInformation/NtQuerySysInfo_SystemProcessInformation/NtQuerySysInfo_SystemProcessInformation.cpp @@ -86,8 +86,7 @@ typedef enum _KWAIT_REASON MaximumWaitReason = 37 } KWAIT_REASON; - -typedef struct _SYSTEM_THREAD_INFORMATION{ +typedef struct _SYSTEM_THREAD_INFORMATION { LARGE_INTEGER KernelTime; LARGE_INTEGER UserTime; LARGE_INTEGER CreateTime; @@ -96,10 +95,13 @@ typedef struct _SYSTEM_THREAD_INFORMATION{ CLIENT_ID ClientId; KPRIORITY Priority; LONG BasePriority; - ULONG ContextSwitches; + ULONG ContextSwitchCount; ULONG ThreadState; KWAIT_REASON WaitReason; -} SYSTEM_THREAD_INFORMATION, *PSYSTEM_THREAD_INFORMATION; +#ifdef _WIN64 + ULONG Reserved[4]; +#endif +}SYSTEM_THREAD_INFORMATION, *PSYSTEM_THREAD_INFORMATION; typedef struct _SYSTEM_EXTENDED_THREAD_INFORMATION { @@ -107,13 +109,11 @@ typedef struct _SYSTEM_EXTENDED_THREAD_INFORMATION PVOID StackBase; PVOID StackLimit; PVOID Win32StartAddress; - PVOID TebAddress; + PVOID TebAddress; /* This is only filled in on Vista and above */ ULONG Reserved1; ULONG Reserved2; ULONG Reserved3; -} SYSTEM_EXTENDED_THREAD_INFORMATION, * -PSYSTEM_EXTENDED_THREAD_INFORMATION; - +} SYSTEM_EXTENDED_THREAD_INFORMATION, *PSYSTEM_EXTENDED_THREAD_INFORMATION; typedef struct _SYSTEM_EXTENDED_PROCESS_INFORMATION { ULONG NextEntryOffset; @@ -126,7 +126,7 @@ typedef struct _SYSTEM_EXTENDED_PROCESS_INFORMATION LARGE_INTEGER KernelTime; UNICODE_STRING ImageName; KPRIORITY BasePriority; - ULONG UniqueProcessId; + ULONG ProcessId; ULONG InheritedFromUniqueProcessId; ULONG HandleCount; ULONG SessionId; @@ -137,9 +137,8 @@ typedef struct _SYSTEM_EXTENDED_PROCESS_INFORMATION SYSTEM_EXTENDED_THREAD_INFORMATION Threads[1]; } SYSTEM_EXTENDED_PROCESS_INFORMATION, *PSYSTEM_EXTENDED_PROCESS_INFORMATION; - typedef enum _SYSTEM_INFORMATION_CLASS { - SystemSessionProcessInformation = 57 + SystemExtendedProcessInformation = 57 } SYSTEM_INFORMATION_CLASS; typedef NTSTATUS(WINAPI *PNtQuerySystemInformation)( @@ -157,20 +156,29 @@ int main() printf("GetProcAddress() failed.\n"); return 1; } - ULONG len = 20; + ULONG len = 2000; NTSTATUS status = NULL; PSYSTEM_EXTENDED_PROCESS_INFORMATION pProcessInfo = NULL; do { - len *= 2; + len *= 2; pProcessInfo = (PSYSTEM_EXTENDED_PROCESS_INFORMATION)GlobalAlloc(GMEM_ZEROINIT, len); - status = query(SystemSessionProcessInformation, pProcessInfo, len, &len); + status = query(SystemExtendedProcessInformation, pProcessInfo, len, &len); } while (status == (NTSTATUS)0xc0000004); - for (unsigned int i = 0; i < pProcessInfo->NumberOfThreads; i++) { - PVOID stackBase = pProcessInfo->Threads[i].StackBase; - PVOID stackLimit = pProcessInfo->Threads[i].StackLimit; - printf("Stack base 0x%X\t", stackBase); - printf("Stack limit 0x%X\r\n", stackLimit); + + while (pProcessInfo->NextEntryOffset != NULL) { + for (unsigned int i = 0; i < pProcessInfo->NumberOfThreads; i++) { + PVOID stackBase = pProcessInfo->Threads[i].StackBase; + PVOID stackLimit = pProcessInfo->Threads[i].StackLimit; +#ifdef _WIN64 + printf("Stack base 0x%llx\t", stackBase); + printf("Stack limit 0x%llx\r\n", stackLimit); +#else + printf("Stack base 0x%X\t", stackBase); + printf("Stack limit 0x%X\r\n", stackLimit); +#endif + } + pProcessInfo = (PSYSTEM_EXTENDED_PROCESS_INFORMATION)((ULONG_PTR)pProcessInfo + pProcessInfo->NextEntryOffset); } return 0; } diff --git a/README.md b/README.md index ef7afa6..537c97d 100644 --- a/README.md +++ b/README.md @@ -4,13 +4,13 @@ This repository aims to provide functioning code that demonstrated usage of vari | Technique | Windows 7 | Windows 8 | Windows 8.1 | Windows 10| |---------------------------------------------------|-----------|-----------|-------------|-----------| -|[NtQuerySystemInformation (SystemHandleInformation)](https://github.com/sam-b/windows_kernel_address_leaks/blob/master/NtQuerySysInfo_SystemHandleInformation/NtQuerySysInfo_SystemHandleInformation/NtQuerySysInfo_SystemHandleInformation.cpp) | ![](tick.png) | | | | -|[NtQuerySystemInformation (SystemLockInformation)](https://github.com/sam-b/windows_kernel_address_leaks/blob/master/NtQuerySysInfo_SystemLockInformation/NtQuerySysInfo_SystemLockInformation/NtQuerySysInfo_SystemLockInformation.cpp) |![](tick.png) | | | | -|[NtQuerySystemInformation (SystemModuleInformation)](https://github.com/sam-b/windows_kernel_address_leaks/blob/master/NtQuerySysInfo_SystemModuleInformation/NtQuerySysInfo_SystemModuleInformation/NtQuerySysInfo_SystemModuleInformation.cpp) |![](tick.png) | | | | -|[NtQuerySystemInformation (SystemProcessInformation)](https://github.com/sam-b/windows_kernel_address_leaks/blob/master/NtQuerySysInfo_SystemProcessInformation/NtQuerySysInfo_SystemProcessInformation/NtQuerySysInfo_SystemProcessInformation.cpp)|![](tick.png) | | | | +|[NtQuerySystemInformation (SystemHandleInformation)](https://github.com/sam-b/windows_kernel_address_leaks/blob/master/NtQuerySysInfo_SystemHandleInformation/NtQuerySysInfo_SystemHandleInformation/NtQuerySysInfo_SystemHandleInformation.cpp) | ![](tick.png) |![](tick.png) | | | +|[NtQuerySystemInformation (SystemLockInformation)](https://github.com/sam-b/windows_kernel_address_leaks/blob/master/NtQuerySysInfo_SystemLockInformation/NtQuerySysInfo_SystemLockInformation/NtQuerySysInfo_SystemLockInformation.cpp) |![](tick.png) |![](tick.png) | | | +|[NtQuerySystemInformation (SystemModuleInformation)](https://github.com/sam-b/windows_kernel_address_leaks/blob/master/NtQuerySysInfo_SystemModuleInformation/NtQuerySysInfo_SystemModuleInformation/NtQuerySysInfo_SystemModuleInformation.cpp) |![](tick.png) |![](tick.png) | | | +|[NtQuerySystemInformation (SystemProcessInformation)](https://github.com/sam-b/windows_kernel_address_leaks/blob/master/NtQuerySysInfo_SystemProcessInformation/NtQuerySysInfo_SystemProcessInformation/NtQuerySysInfo_SystemProcessInformation.cpp)|![](tick.png) |![](tick.png) | | | |[System Call Return Values](https://github.com/sam-b/windows_kernel_address_leaks/blob/master/Syscalls/Syscalls/Syscalls.cpp) |![](tick.png) | | | | -|[Win32k Shared Info Handle Table](https://github.com/sam-b/windows_kernel_address_leaks/blob/master/SharedInfoHandleTable/SharedInfoHandleTable/SharedInfoHandleTable.cpp) |![](tick.png) | | | | -|[Descriptor Tables](https://github.com/sam-b/windows_kernel_address_leaks/blob/master/DescriptorTables/DescriptorTables/DescriptorTables.cpp) |![](tick.png) | | | | +|[Win32k Shared Info Handle Table](https://github.com/sam-b/windows_kernel_address_leaks/blob/master/SharedInfoHandleTable/SharedInfoHandleTable/SharedInfoHandleTable.cpp) |![](tick.png) |![](tick.png) | | | +|[Descriptor Tables](https://github.com/sam-b/windows_kernel_address_leaks/blob/master/DescriptorTables/DescriptorTables/DescriptorTables.cpp) |![](tick.png) |![](tick.png) | | | diff --git a/SharedInfoHandleTable/SharedInfoHandleTable/SharedInfoHandleTable.cpp b/SharedInfoHandleTable/SharedInfoHandleTable/SharedInfoHandleTable.cpp index d82cc49..83f6714 100644 --- a/SharedInfoHandleTable/SharedInfoHandleTable/SharedInfoHandleTable.cpp +++ b/SharedInfoHandleTable/SharedInfoHandleTable/SharedInfoHandleTable.cpp @@ -7,15 +7,20 @@ typedef struct _HANDLEENTRY { PVOID phead; - ULONG pOwner; + PVOID pOwner; BYTE bType; BYTE bFlags; WORD wUniq; }HANDLEENTRY, *PHANDLEENTRY; typedef struct _SERVERINFO { - DWORD dwSRVIFlags; - DWORD cHandleEntries; +#ifdef _WIN64 + UINT64 dwSRVIFlags; + UINT64 cHandleEntries; +#else + DWORD dwSRVIFlags; + DWORD cHandleEntries; +#endif WORD wSRVIFlags; WORD wRIPPID; WORD wRIPError; @@ -39,7 +44,11 @@ int main() for (unsigned int i = 0; i < gSharedInfo->psi->cHandleEntries; i++) { HANDLEENTRY entry = gSharedInfo->aheList[i]; if (entry.bType != 0) { //ignore free entries +#ifdef _WIN64 + printf("Head: 0x%llx, Owner: 0x%llx, Type: 0x%X\r\n", entry.phead, entry.pOwner, entry.bType); +#else printf("Head: 0x%X, Owner: 0x%X, Type: 0x%X\r\n", entry.phead, entry.pOwner, entry.bType); +#endif } } return 0; diff --git a/Syscalls/Syscalls/Syscalls.cpp b/Syscalls/Syscalls/Syscalls.cpp index 79076bb..d14a940 100644 --- a/Syscalls/Syscalls/Syscalls.cpp +++ b/Syscalls/Syscalls/Syscalls.cpp @@ -5,16 +5,28 @@ #include #include -//0x64D4B - NtUserModifyUserStartupInfoFlags -typedef DWORD(NTAPI * lNtUserModifyUserStartupInfoFlags)(DWORD Set, DWORD Flags); -//0xA2F4 - NtUserGetAsyncKeyState -typedef DWORD(NTAPI *lNtUserGetAsyncKeyState)(DWORD key); +#ifdef _WIN64 +//win8, 64bit +#define NtUserModifyUserStartupInfoFlagsAddress 0x263F0 +#define NtUserGetAsyncKeyStateAddress 0x3B30 +#define NtGdiPATHOBJ_vEnumStartClipLinesAddress 0x67590 -//0x47123 - NtGdiFONTOBJ_vGetInfo +#else +//win7, 32bit +#define NtUserModifyUserStartupInfoFlagsAddress 0x64D4B +#define NtUserGetAsyncKeyStateAddress 0xA2F4 +#define NtGdiFONTOBJ_vGetInfoAddress 0x47123 +#define NtGdiPATHOBJ_vEnumStartClipLinesAddress 0x47263 + +#endif + +typedef DWORD(NTAPI * lNtUserModifyUserStartupInfoFlags)(DWORD Set, DWORD Flags); +typedef DWORD(NTAPI *lNtUserGetAsyncKeyState)(DWORD key); typedef VOID(NTAPI * lNtGdiFONTOBJ_vGetInfo)(FONTOBJ *pfo,ULONG cjSize,FONTINFO *pfi); -//0x47263 - NtGdiPATHOBJ_vEnumStartClipLines typedef VOID(NTAPI * lNtGdiPATHOBJ_vEnumStartClipLines)(PATHOBJ *ppo, CLIPOBJ *pco, SURFOBJ *pso, LINEATTRS *pla); +extern "C" unsigned long long get_rax(); + int main() { HMODULE hUser32 = LoadLibraryA("user32.dll"); @@ -23,49 +35,70 @@ int main() return 1; } - lNtUserGetAsyncKeyState pNtUserGetAsyncKeyState = (lNtUserGetAsyncKeyState)((DWORD_PTR)hUser32 + 0xA2F4); + lNtUserGetAsyncKeyState pNtUserGetAsyncKeyState = (lNtUserGetAsyncKeyState)((DWORD_PTR)hUser32 + NtUserGetAsyncKeyStateAddress); pNtUserGetAsyncKeyState(20); +#ifdef _WIN64 + unsigned long long ethread = get_rax(); +#else unsigned int ethread = 0; + __asm { mov ethread, eax; } +#endif printf("NtUserGetAsyncKeyState ETHREAD partial disclosure: 0x%X\r\n", ethread); - lNtUserModifyUserStartupInfoFlags pNtUserModifyUserStartupInfoFlags = (lNtUserModifyUserStartupInfoFlags)((DWORD_PTR)hUser32 + 0x64D4B); + lNtUserModifyUserStartupInfoFlags pNtUserModifyUserStartupInfoFlags = (lNtUserModifyUserStartupInfoFlags)((DWORD_PTR)hUser32 + NtUserModifyUserStartupInfoFlagsAddress); pNtUserModifyUserStartupInfoFlags(20, 12); +#ifdef _WIN64 + unsigned long long ethread_full = get_rax(); +#else unsigned ethread_full = 0; __asm { mov ethread_full, eax; } - printf("NtUserModifyUserStartupInfoFlags ETHREAD full disclosure: 0x%X\r\n", ethread_full); +#endif + printf("NtUserModifyUserStartupInfoFlags ETHREAD full disclosure: 0x%X\r\n", ethread_full); + HMODULE hGDI32 = LoadLibraryA("gdi32.dll"); if (hGDI32 == NULL) { printf("Failed to load gdi32"); return 1; } +#ifdef _WIN64 + //unsigned long long w32thread = get_rax(); +#else + - lNtGdiFONTOBJ_vGetInfo pNtGdiEngUnLockSurface = (lNtGdiFONTOBJ_vGetInfo)((DWORD_PTR)hGDI32 + 0x47123); + lNtGdiFONTOBJ_vGetInfo pNtGdiFONTOBJ_vGetInfo = (lNtGdiFONTOBJ_vGetInfo)((DWORD_PTR)hGDI32 + NtGdiFONTOBJ_vGetInfoAddress); FONTOBJ surf = { 0 }; FONTINFO finfo = { 0 }; - pNtGdiEngUnLockSurface(&surf,123, &finfo); + pNtGdiFONTOBJ_vGetInfo(&surf,123, &finfo); + long int w32thread = 0; __asm { mov w32thread, eax; } + +#endif printf("NtGdiEngUnLockSurface W32THREAD full disclosure: 0x%X\r\n", ethread); - lNtGdiPATHOBJ_vEnumStartClipLines pNtGdiPATHOBJ_vEnumStartClipLines = (lNtGdiPATHOBJ_vEnumStartClipLines)((DWORD_PTR)hGDI32 + 0x47263); + lNtGdiPATHOBJ_vEnumStartClipLines pNtGdiPATHOBJ_vEnumStartClipLines = (lNtGdiPATHOBJ_vEnumStartClipLines)((DWORD_PTR)hGDI32 + NtGdiPATHOBJ_vEnumStartClipLinesAddress); PATHOBJ pathobj = { 0 }; CLIPOBJ pco = { 0 }; SURFOBJ pso = { 0 }; LINEATTRS pla = { 0 }; pNtGdiPATHOBJ_vEnumStartClipLines(&pathobj, &pco, &pso, &pla); +#ifdef _WIN64 + unsigned long long w32thread = get_rax(); +#else w32thread = 0; __asm { mov w32thread, eax; - } + +#endif printf("NtGdiPATHOBJ_vEnumStartClipLines W32THREAD full disclosure: 0x%X\r\n", ethread); return 0; diff --git a/Syscalls/Syscalls/Syscalls.vcxproj b/Syscalls/Syscalls/Syscalls.vcxproj index 4b3c278..0135dd5 100644 --- a/Syscalls/Syscalls/Syscalls.vcxproj +++ b/Syscalls/Syscalls/Syscalls.vcxproj @@ -53,6 +53,7 @@ + @@ -157,7 +158,11 @@ + + + + \ No newline at end of file diff --git a/Syscalls/Syscalls/Syscalls.vcxproj.filters b/Syscalls/Syscalls/Syscalls.vcxproj.filters index 68029ab..a6b6f43 100644 --- a/Syscalls/Syscalls/Syscalls.vcxproj.filters +++ b/Syscalls/Syscalls/Syscalls.vcxproj.filters @@ -26,11 +26,14 @@ - - Source Files - Source Files + + + + + Source Files + \ No newline at end of file diff --git a/Syscalls/Syscalls/asm_funcs.asm b/Syscalls/Syscalls/asm_funcs.asm new file mode 100644 index 0000000..a38266d --- /dev/null +++ b/Syscalls/Syscalls/asm_funcs.asm @@ -0,0 +1,11 @@ +_DATA SEGMENT +_DATA ENDS +_TEXT SEGMENT + +PUBLIC get_rax + +get_rax PROC +ret +get_rax ENDP +_TEXT ENDS +END \ No newline at end of file diff --git a/screenshots/NtQuerySysInfo_SystemHandleInformation_windows8_64bit.PNG b/screenshots/NtQuerySysInfo_SystemHandleInformation_windows8_64bit.PNG new file mode 100644 index 0000000000000000000000000000000000000000..11343278d492629b5964d2def8f3f2edc3314954 GIT binary patch literal 19658 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 literal 0 HcmV?d00001 diff --git a/screenshots/NtQuerySysInfo_SystemLockInformation_windows8_64bit.PNG b/screenshots/NtQuerySysInfo_SystemLockInformation_windows8_64bit.PNG new file mode 100644 index 0000000000000000000000000000000000000000..9e63130290e3731f1b23a8fb0249bdc91e966135 GIT binary patch literal 19665 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 IvA_%e2VnxfegFUf literal 0 HcmV?d00001 diff --git a/screenshots/NtQuerySysInfo_SystemModuleInformation_windows8_64bit.PNG b/screenshots/NtQuerySysInfo_SystemModuleInformation_windows8_64bit.PNG new file mode 100644 index 0000000000000000000000000000000000000000..d829703d7b24bf76d7554406debd97ff0bade3af GIT binary patch literal 27243 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 Wd*gEfk(RSuAhsyD{)JlcldUbq4z$av7 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 literal 0 HcmV?d00001 diff --git a/screenshots/NtQuerySysInfo_SystemProcessInformation_windows8_64bit.PNG b/screenshots/NtQuerySysInfo_SystemProcessInformation_windows8_64bit.PNG new file mode 100644 index 0000000000000000000000000000000000000000..2383269770185fdcd130a4b00ac059527d7a5ff4 GIT binary patch literal 23422 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 QEO>8A4 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 I`SSdK0?nB(Q2+n{ diff --git a/screenshots/descriptor_tables_info_leak_poc.PNG b/screenshots/descriptor_tables_info_leak_poc_windows7_32bit.PNG similarity index 100% rename from screenshots/descriptor_tables_info_leak_poc.PNG rename to screenshots/descriptor_tables_info_leak_poc_windows7_32bit.PNG diff --git a/screenshots/syscall_info_leak_poc.PNG b/screenshots/syscall_info_leak_poc_windows7_32bit.PNG similarity index 100% rename from screenshots/syscall_info_leak_poc.PNG rename to screenshots/syscall_info_leak_poc_windows7_32bit.PNG