Skip to content

Instantly share code, notes, and snippets.

@lesnuages
Created March 23, 2020 15:27
Show Gist options
  • Save lesnuages/f27ef9b33676ac4f0e882c738ed0fb10 to your computer and use it in GitHub Desktop.
Save lesnuages/f27ef9b33676ac4f0e882c738ed0fb10 to your computer and use it in GitHub Desktop.
donut
PS C:\Users\lab\Desktop\donut> .\donut.exe -e 1 -b 1 -z 1 -c TestClass -m RunProcess -p "calc.exe calc.exe" C:\Users\lab\source\repos\donut\DemoCreateProcess\bin\Release\DemoCreateProcess.dll
[ Donut shellcode generator v0.9.3
[ Copyright (c) 2019 TheWover, Odzhan
DEBUG: donut.c:1524:DonutCreate(): Entering.
DEBUG: donut.c:1302:validate_loader_cfg(): Validating loader configuration.
DEBUG: donut.c:1399:validate_loader_cfg(): Loader configuration passed validation.
DEBUG: donut.c:463:read_file_info(): Entering.
DEBUG: donut.c:471:read_file_info(): Checking extension of C:\Users\lab\source\repos\donut\DemoCreateProcess\bin\Release\DemoCreateProcess.dll
DEBUG: donut.c:479:read_file_info(): Extension is ".dll"
DEBUG: donut.c:500:read_file_info(): File is DLL
DEBUG: donut.c:507:read_file_info(): Mapping C:\Users\lab\source\repos\donut\DemoCreateProcess\bin\Release\DemoCreateProcess.dll into memory
DEBUG: donut.c:249:map_file(): Entering.
DEBUG: donut.c:535:read_file_info(): Checking characteristics
DEBUG: donut.c:547:read_file_info(): COM Directory found indicates .NET assembly.
DEBUG: donut.c:570:read_file_info(): Runtime version : v4.0.30319
DEBUG: donut.c:594:read_file_info(): Leaving with error : 0
DEBUG: donut.c:1465:validate_file_cfg(): Validating configuration for input file.
DEBUG: donut.c:1507:validate_file_cfg(): Validation passed.
DEBUG: donut.c:686:build_module(): Entering.
DEBUG: donut.c:700:build_module(): Assigning 3584 bytes of 0000000000160000 to data
DEBUG: donut.c:707:build_module(): Allocating 4912 bytes of memory for DONUT_MODULE
DEBUG: donut.c:744:build_module(): Domain : AAAAAAAA
DEBUG: donut.c:749:build_module(): Class : TestClass
DEBUG: donut.c:752:build_module(): Method : RunProcess
DEBUG: donut.c:759:build_module(): Runtime : v4.0.30319
DEBUG: donut.c:791:build_module(): Copying data to module
DEBUG: donut.c:803:build_module(): Leaving with error : 0
DEBUG: donut.c:823:build_instance(): Entering.
DEBUG: donut.c:826:build_instance(): Allocating memory for instance
DEBUG: donut.c:832:build_instance(): The size of module is 4912 bytes. Adding to size of instance.
DEBUG: donut.c:836:build_instance(): Total length of instance : 8576
DEBUG: donut.c:898:build_instance(): Generating hashes for API using IV: 0
DEBUG: donut.c:908:build_instance(): Hash for kernel32.dll : LoadLibraryA = 8322A3F655D252A0
DEBUG: donut.c:908:build_instance(): Hash for kernel32.dll : GetProcAddress = 5F9A2F5A70159AF7
DEBUG: donut.c:908:build_instance(): Hash for kernel32.dll : GetModuleHandleA = ECEC2E0F77C1DF79
DEBUG: donut.c:908:build_instance(): Hash for kernel32.dll : VirtualAlloc = 52622E8E2A03836A
DEBUG: donut.c:908:build_instance(): Hash for kernel32.dll : VirtualFree = A0F99483877BBCC4
DEBUG: donut.c:908:build_instance(): Hash for kernel32.dll : VirtualQuery = A6B3DEBBBD52F776
DEBUG: donut.c:908:build_instance(): Hash for kernel32.dll : VirtualProtect = E0206318E83E16F4
DEBUG: donut.c:908:build_instance(): Hash for kernel32.dll : Sleep = 29407C7E01077DEF
DEBUG: donut.c:908:build_instance(): Hash for kernel32.dll : MultiByteToWideChar = B2D46685A8D6CC8F
DEBUG: donut.c:908:build_instance(): Hash for kernel32.dll : GetUserDefaultLCID = 3D28AFB2AD9197E5
DEBUG: donut.c:908:build_instance(): Hash for kernel32.dll : WaitForSingleObject = C45F651AAFFB410B
DEBUG: donut.c:908:build_instance(): Hash for kernel32.dll : CreateThread = A88D8A63D7D17933
DEBUG: donut.c:908:build_instance(): Hash for kernel32.dll : GetThreadContext = EDBBC13672C19CE4
DEBUG: donut.c:908:build_instance(): Hash for kernel32.dll : GetCurrentThread = 6A2447B1BECC189C
DEBUG: donut.c:908:build_instance(): Hash for kernel32.dll : GetCommandLineA = E6E2D0AA08292200
DEBUG: donut.c:908:build_instance(): Hash for kernel32.dll : GetCommandLineW = 1C7CF9F57FA86E3D
DEBUG: donut.c:908:build_instance(): Hash for shell32.dll : CommandLineToArgvW = F3848EC570838A21
DEBUG: donut.c:908:build_instance(): Hash for oleaut32.dll : SafeArrayCreate = DFBD47E13EE13B10
DEBUG: donut.c:908:build_instance(): Hash for oleaut32.dll : SafeArrayCreateVector = BD77AF2569689C8A
DEBUG: donut.c:908:build_instance(): Hash for oleaut32.dll : SafeArrayPutElement = 8AD71499A1140B4D
DEBUG: donut.c:908:build_instance(): Hash for oleaut32.dll : SafeArrayDestroy = 2082D640CCFD441B
DEBUG: donut.c:908:build_instance(): Hash for oleaut32.dll : SafeArrayGetLBound = 7046B02E03CE7D0C
DEBUG: donut.c:908:build_instance(): Hash for oleaut32.dll : SafeArrayGetUBound = C1EB0C113A5660BA
DEBUG: donut.c:908:build_instance(): Hash for oleaut32.dll : SysAllocString = F3AC45C203C14CE0
DEBUG: donut.c:908:build_instance(): Hash for oleaut32.dll : SysFreeString = 733CE6F644E27222
DEBUG: donut.c:908:build_instance(): Hash for oleaut32.dll : LoadTypeLib = 3E3F0153FB195BEB
DEBUG: donut.c:908:build_instance(): Hash for wininet.dll : InternetCrackUrlA = 908B117CC2EF66F9
DEBUG: donut.c:908:build_instance(): Hash for wininet.dll : InternetOpenA = A146D290F7863A30
DEBUG: donut.c:908:build_instance(): Hash for wininet.dll : InternetConnectA = 57777DD39940F617
DEBUG: donut.c:908:build_instance(): Hash for wininet.dll : InternetSetOptionA = 9395C00826DDF250
DEBUG: donut.c:908:build_instance(): Hash for wininet.dll : InternetReadFile = D388820170E23FB1
DEBUG: donut.c:908:build_instance(): Hash for wininet.dll : InternetCloseHandle = 6A0E5F83356BF090
DEBUG: donut.c:908:build_instance(): Hash for wininet.dll : HttpOpenRequestA = F66DD0723A6E8482
DEBUG: donut.c:908:build_instance(): Hash for wininet.dll : HttpSendRequestA = 0B43C51621CD164B
DEBUG: donut.c:908:build_instance(): Hash for wininet.dll : HttpQueryInfoA = B872B6B717BFF247
DEBUG: donut.c:908:build_instance(): Hash for mscoree.dll : CorBindToRuntime = 957235ACDB519818
DEBUG: donut.c:908:build_instance(): Hash for mscoree.dll : CLRCreateInstance = 60111C8D1049452E
DEBUG: donut.c:908:build_instance(): Hash for ole32.dll : CoInitializeEx = 121D46593E41D827
DEBUG: donut.c:908:build_instance(): Hash for ole32.dll : CoCreateInstance = 2D5F94E307433D52
DEBUG: donut.c:908:build_instance(): Hash for ole32.dll : CoUninitialize = E9A80D05EE05D859
DEBUG: donut.c:908:build_instance(): Hash for ntdll.dll : RtlEqualUnicodeString = 453737D2E7D0F769
DEBUG: donut.c:908:build_instance(): Hash for ntdll.dll : RtlEqualString = 439713CC2F516036
DEBUG: donut.c:908:build_instance(): Hash for ntdll.dll : RtlUnicodeStringToAnsiString = C7B512E9E2D2F84F
DEBUG: donut.c:908:build_instance(): Hash for ntdll.dll : RtlInitUnicodeString = 2992DE171F478173
DEBUG: donut.c:908:build_instance(): Hash for ntdll.dll : RtlExitUserThread = 8C914E01296AFCA9
DEBUG: donut.c:908:build_instance(): Hash for ntdll.dll : RtlExitUserProcess = B2038712DAAC1A44
DEBUG: donut.c:908:build_instance(): Hash for ntdll.dll : RtlCreateUnicodeString = 8EDF30B20BC8A076
DEBUG: donut.c:908:build_instance(): Hash for ntdll.dll : RtlGetCompressionWorkSpaceSize = 5FD236D633BA0134
DEBUG: donut.c:908:build_instance(): Hash for ntdll.dll : RtlDecompressBuffer = 0CF4EFF0BA940F2B
DEBUG: donut.c:908:build_instance(): Hash for ntdll.dll : NtContinue = B0C67F05012616EC
DEBUG: donut.c:908:build_instance(): Hash for kernel32.dll : AddVectoredExceptionHandler = 2B187C9F4F529D96
DEBUG: donut.c:908:build_instance(): Hash for kernel32.dll : RemoveVectoredExceptionHandler = 0989367F9B2F00CE
DEBUG: donut.c:914:build_instance(): Setting number of API to 52
DEBUG: donut.c:917:build_instance(): Setting DLL names to ole32;oleaut32;wininet;mscoree;shell32
DEBUG: donut.c:1037:build_instance(): Copying module data to instance
DEBUG: donut.c:1061:build_instance(): Leaving with error : 0
DEBUG: donut.c:1229:build_loader(): Inserting opcodes
DEBUG: donut.c:1266:build_loader(): Copying 41056 bytes of x86 + amd64 shellcode
DEBUG: donut.c:1109:save_loader(): Saving instance 0000000000DC8D00 to file. 8576 bytes.
DEBUG: donut.c:1080:save_file(): Entering.
DEBUG: donut.c:1084:save_file(): Writing 8576 bytes of 0000000000DC8D00 to instance
DEBUG: donut.c:1089:save_file(): Leaving with error : 0
DEBUG: donut.c:1158:save_loader(): Saving loader as binary
DEBUG: donut.c:1191:save_loader(): Leaving with error : 0
DEBUG: donut.c:1559:DonutCreate(): Leaving with error : 0
[ Instance type : Embedded
[ Module file : "C:\Users\lab\source\repos\donut\DemoCreateProcess\bin\Release\DemoCreateProcess.dll"
[ Entropy : None
[ File type : .NET DLL
[ Class : TestClass
[ Method : RunProcess
[ Parameters : calc.exe calc.exe
[ Target CPU : x86+amd64
[ AMSI/WDLP : none
[ Shellcode : "loader.bin"
DEBUG: donut.c:1575:DonutDelete(): Entering.
DEBUG: donut.c:1581:DonutDelete(): Releasing memory for module.
DEBUG: donut.c:1587:DonutDelete(): Releasing memory for configuration.
DEBUG: donut.c:1593:DonutDelete(): Releasing memory for loader.
DEBUG: donut.c:298:unmap_file(): Unmapping input file.
DEBUG: donut.c:303:unmap_file(): Closing input file.
DEBUG: donut.c:1599:DonutDelete(): Leaving.
PS C:\Users\lab\Desktop\donut> .\loader64.exe .\instance
Running...
DEBUG: loader/loader.c:109:MainProc(): Maru IV : 0
DEBUG: loader/loader.c:112:MainProc(): Resolving address for VirtualAlloc() : 52622E8E2A03836A
DEBUG: loader/loader.c:116:MainProc(): Resolving address for VirtualFree() : A0F99483877BBCC4
DEBUG: loader/loader.c:120:MainProc(): Resolving address for RtlExitUserProcess() : B2038712DAAC1A44
DEBUG: loader/loader.c:128:MainProc(): VirtualAlloc : 00007FFA94C7A190 VirtualFree : 00007FFA94C7A180
DEBUG: loader/loader.c:131:MainProc(): Allocating 8576 bytes of RW memory
DEBUG: loader/loader.c:143:MainProc(): Copying 8576 bytes of data to memory 00000000001A0000
DEBUG: loader/loader.c:147:MainProc(): Zero initializing PDONUT_ASSEMBLY
DEBUG: loader/loader.c:172:MainProc(): Resolving LoadLibraryA
DEBUG: loader/loader.c:189:MainProc(): Loading ole32
DEBUG: loader/loader.c:189:MainProc(): Loading oleaut32
DEBUG: loader/loader.c:189:MainProc(): Loading wininet
DEBUG: loader/loader.c:189:MainProc(): Loading mscoree
DEBUG: loader/loader.c:189:MainProc(): Loading shell32
DEBUG: loader/loader.c:193:MainProc(): Resolving 52 API
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for 5F9A2F5A70159AF7
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for ECEC2E0F77C1DF79
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for 52622E8E2A03836A
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for A0F99483877BBCC4
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for A6B3DEBBBD52F776
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for E0206318E83E16F4
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for 29407C7E01077DEF
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for B2D46685A8D6CC8F
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for 3D28AFB2AD9197E5
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for C45F651AAFFB410B
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for A88D8A63D7D17933
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for EDBBC13672C19CE4
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for 6A2447B1BECC189C
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for E6E2D0AA08292200
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for 1C7CF9F57FA86E3D
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for F3848EC570838A21
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for DFBD47E13EE13B10
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for BD77AF2569689C8A
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for 8AD71499A1140B4D
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for 2082D640CCFD441B
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for 7046B02E03CE7D0C
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for C1EB0C113A5660BA
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for F3AC45C203C14CE0
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for 733CE6F644E27222
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for 3E3F0153FB195BEB
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for 908B117CC2EF66F9
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for A146D290F7863A30
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for 57777DD39940F617
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for 9395C00826DDF250
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for D388820170E23FB1
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for 6A0E5F83356BF090
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for F66DD0723A6E8482
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for 0B43C51621CD164B
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for B872B6B717BFF247
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for 957235ACDB519818
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for 60111C8D1049452E
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for 121D46593E41D827
DEBUG: loader/peb.c:86:FindExport(): 121d46593e41d827 is forwarded to api-ms-win-core-com-l1-1-0.CoInitializeEx
DEBUG: loader/peb.c:110:FindExport(): Trying to load api-ms-win-core-com-l1-1-0.dll
DEBUG: loader/peb.c:114:FindExport(): Calling GetProcAddress(CoInitializeEx)
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for 2D5F94E307433D52
DEBUG: loader/peb.c:86:FindExport(): 2d5f94e307433d52 is forwarded to api-ms-win-core-com-l1-1-0.CoCreateInstance
DEBUG: loader/peb.c:110:FindExport(): Trying to load api-ms-win-core-com-l1-1-0.dll
DEBUG: loader/peb.c:114:FindExport(): Calling GetProcAddress(CoCreateInstance)
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for E9A80D05EE05D859
DEBUG: loader/peb.c:86:FindExport(): e9a80d05ee05d859 is forwarded to api-ms-win-core-com-l1-1-0.CoUninitialize
DEBUG: loader/peb.c:110:FindExport(): Trying to load api-ms-win-core-com-l1-1-0.dll
DEBUG: loader/peb.c:114:FindExport(): Calling GetProcAddress(CoUninitialize)
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for 453737D2E7D0F769
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for 439713CC2F516036
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for C7B512E9E2D2F84F
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for 2992DE171F478173
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for 8C914E01296AFCA9
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for B2038712DAAC1A44
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for 8EDF30B20BC8A076
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for 5FD236D633BA0134
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for 0CF4EFF0BA940F2B
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for B0C67F05012616EC
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for 2B187C9F4F529D96
DEBUG: loader/peb.c:86:FindExport(): 2b187c9f4f529d96 is forwarded to NTDLL.RtlAddVectoredExceptionHandler
DEBUG: loader/peb.c:110:FindExport(): Trying to load NTDLL.dll
DEBUG: loader/peb.c:114:FindExport(): Calling GetProcAddress(RtlAddVectoredExceptionHandler)
DEBUG: loader/loader.c:196:MainProc(): Resolving API address for 0989367F9B2F00CE
DEBUG: loader/peb.c:86:FindExport(): 0989367f9b2f00ce is forwarded to NTDLL.RtlRemoveVectoredExceptionHandler
DEBUG: loader/peb.c:110:FindExport(): Trying to load NTDLL.dll
DEBUG: loader/peb.c:114:FindExport(): Calling GetProcAddress(RtlRemoveVectoredExceptionHandler)
DEBUG: loader/loader.c:218:MainProc(): Module is embedded.
DEBUG: loader/loader.c:302:MainProc(): Checking type of module
DEBUG: loader/inmem_dotnet.c:43:LoadAssembly(): CLRCreateInstance
DEBUG: loader/inmem_dotnet.c:51:LoadAssembly(): ICLRMetaHost::GetRuntime("v4.0.30319")
DEBUG: loader/inmem_dotnet.c:59:LoadAssembly(): ICLRRuntimeInfo::IsLoadable
DEBUG: loader/inmem_dotnet.c:63:LoadAssembly(): ICLRRuntimeInfo::GetInterface
DEBUG: loader/inmem_dotnet.c:71:LoadAssembly(): HRESULT: 00000000
DEBUG: loader/inmem_dotnet.c:93:LoadAssembly(): ICorRuntimeHost::Start
DEBUG: loader/inmem_dotnet.c:98:LoadAssembly(): Domain is AAAAAAAA
DEBUG: loader/inmem_dotnet.c:102:LoadAssembly(): ICorRuntimeHost::CreateDomain("AAAAAAAA")
DEBUG: loader/inmem_dotnet.c:110:LoadAssembly(): IUnknown::QueryInterface
DEBUG: loader/inmem_dotnet.c:121:LoadAssembly(): Copying 3584 bytes of assembly to safe array
DEBUG: loader/inmem_dotnet.c:127:LoadAssembly(): AppDomain::Load_3
DEBUG: loader/inmem_dotnet.c:134:LoadAssembly(): HRESULT : 00000000
DEBUG: loader/inmem_dotnet.c:136:LoadAssembly(): Erasing assembly from memory
DEBUG: loader/inmem_dotnet.c:142:LoadAssembly(): SafeArrayDestroy
DEBUG: loader/inmem_dotnet.c:163:RunAssembly(): Type is DLL
DEBUG: loader/inmem_dotnet.c:239:RunAssembly(): Class: SysAllocString("TestClass")
DEBUG: loader/inmem_dotnet.c:243:RunAssembly(): Method: SysAllocString("RunProcess")
DEBUG: loader/inmem_dotnet.c:246:RunAssembly(): Assembly::GetType_2
DEBUG: loader/inmem_dotnet.c:251:RunAssembly(): Parameters: calc.exe calc.exe
DEBUG: loader/inmem_dotnet.c:256:RunAssembly(): SafeArrayCreateVector(2 argument(s))
DEBUG: loader/inmem_dotnet.c:262:RunAssembly(): Adding "calc.exe" as argument 1
DEBUG: loader/inmem_dotnet.c:262:RunAssembly(): Adding "calc.exe" as argument 2
DEBUG: loader/inmem_dotnet.c:278:RunAssembly(): Calling Type::InvokeMember_3
DEBUG: loader/inmem_dotnet.c:291:RunAssembly(): Type::InvokeMember_3 : 00000000 : Success
DEBUG: loader/inmem_dotnet.c:309:FreeAssembly(): Type::Release
DEBUG: loader/inmem_dotnet.c:321:FreeAssembly(): Assembly::Release
DEBUG: loader/inmem_dotnet.c:327:FreeAssembly(): AppDomain::Release
DEBUG: loader/inmem_dotnet.c:333:FreeAssembly(): IUnknown::Release
DEBUG: loader/inmem_dotnet.c:339:FreeAssembly(): ICorRuntimeHost::Stop
DEBUG: loader/inmem_dotnet.c:342:FreeAssembly(): ICorRuntimeHost::Release
DEBUG: loader/inmem_dotnet.c:348:FreeAssembly(): ICLRRuntimeInfo::Release
DEBUG: loader/inmem_dotnet.c:354:FreeAssembly(): ICLRMetaHost::Release
DEBUG: loader/loader.c:343:MainProc(): Erasing RW memory for instance
DEBUG: loader/loader.c:346:MainProc(): Releasing RW memory for instance
DEBUG: loader/loader.c:354:MainProc(): Returning to caller
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment