## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-JTHURAISAMY-SYSWHISPERS2
# SysWhispers2
SysWhispers рдкреНрд░рддреНрдпрдХреНрд╖ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП implants рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ header/ASM рдлрд╝рд╛рдЗрд▓реЗрдВ рдЙрддреНрдкрдиреНрди рдХрд░рдХреЗ рдПрд╡рд┐рдЬрд╝рди рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред
рд╕рднреА рдХреЛрд░ syscalls рд╕рдорд░реНрдерд┐рдд рд╣реИрдВ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдЙрддреНрдкрдиреНрди рдлрд╝рд╛рдЗрд▓реЗрдВ `example-output/` рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред
## SysWhispers 1 рдФрд░ 2 рдХреЗ рдмреАрдЪ рдЕрдВрддрд░
рдЙрдкрдпреЛрдЧ SysWhispers1 рдХреЗ рд▓рдЧрднрдЧ рд╕рдорд╛рди рд╣реИ рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ Windows рдХреЗ рдХрд┐рд╕ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рд╣реИ рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЕрдзрд┐рдХрд╛рдВрд╢ рдкрд░рд┐рд╡рд░реНрддрди рдкрд░реНрджреЗ рдХреЗ рдкреАрдЫреЗ рд╣реИрдВред рдпрд╣ рдЕрдм @j00ru рдХреА syscall tables рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп @modexpblog рджреНрд╡рд╛рд░рд╛ рд▓реЛрдХрдкреНрд░рд┐рдп рдХреА рдЧрдИ "sorting by system call address" рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣ syscall stubs рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдХрд╛рдлреА рдХрдо рдХрд░ рджреЗрддрд╛ рд╣реИред
SysWhispers2 рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди @modexpblog рдХреЗ рдХреЛрдб рдХрд╛ рдПрдХ рд░реВрдкрд╛рдВрддрд░ рд╣реИред рдПрдХ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдирд╛рдо рд╣реИрд╢ рдкреНрд░рддреНрдпреЗрдХ рдкреАрдврд╝реА рдкрд░ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред @ElephantSe4l, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдкрд╣рд▓реЗ рдЗрд╕ рддрдХрдиреАрдХ рдХреЛ published рдХрд┐рдпрд╛ рдерд╛, рдХрд╛ C++17 рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рдФрд░ implementation рд╣реИ, рдЬреЛ рджреЗрдЦрдиреЗ рд▓рд╛рдпрдХ рднреА рд╣реИред
рдореВрд▓ SysWhispers рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдЕрднреА рднреА рдЙрдкрд▓рдмреНрдз рд╣реИ рд▓реЗрдХрд┐рди рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЕрдкреНрд░рдЪрд▓рд┐рдд рд╣реЛ рд╕рдХрддреА рд╣реИред
## рдкрд░рд┐рдЪрдп
рд╡рд┐рднрд┐рдиреНрди рд╕реБрд░рдХреНрд╖рд╛ рдЙрддреНрдкрд╛рдж рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдореЛрдб API рдлрд╝рдВрдХреНрд╢рдиреЛрдВ рдореЗрдВ рд╣реБрдХ рд▓рдЧрд╛рддреЗ рд╣реИрдВ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдЕрдкрдиреЗ рдЗрдВрдЬрдиреЛрдВ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдиреЗ рдФрд░ рд╕рдВрджрд┐рдЧреНрдз рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред `ntdll.dll` рдореЗрдВ syscalls рдмрдирд╛рдиреЗ рд╡рд╛рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗрд╡рд▓ рдХреБрдЫ рдЕрд╕реЗрдВрдмрд▓реА рдирд┐рд░реНрджреЗрд╢реЛрдВ рд╕реЗ рдорд┐рд▓рдХрд░ рдмрдиреЗ рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ implant рдореЗрдВ рдкреБрдирдГ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЙрди рд╕реБрд░рдХреНрд╖рд╛ рдЙрддреНрдкрд╛рдж рд╣реБрдХ рдХреЗ рдЯреНрд░рд┐рдЧрд░рд┐рдВрдЧ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рддрдХрдиреАрдХ рдХреЛ @Cn33liz рджреНрд╡рд╛рд░рд╛ рд▓реЛрдХрдкреНрд░рд┐рдп рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЙрдирдХреЗ blog post рдореЗрдВ рдЕрдзрд┐рдХ рддрдХрдиреАрдХреА рд╡рд┐рд╡рд░рдг рд╣реИрдВ рдЬреЛ рдкрдврд╝рдиреЗ рдпреЛрдЧреНрдп рд╣реИрдВред
SysWhispers рд▓рд╛рд▓ рдЯреАрдо рдХреЛ рдХреЛрд░ рдХрд░реНрдиреЗрд▓ рдЗрдореЗрдЬ (`ntoskrnl.exe`) рдореЗрдВ рдХрд┐рд╕реА рднреА рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХреЗ рд▓рд┐рдП header/ASM рдЬреЛрдбрд╝реЗ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╣реЗрдбрд░ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рдХрд╛рд░ рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ рднреА рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреАред
## рд╕реНрдерд╛рдкрдирд╛
root@kitploit:~
> git clone https://github.com/jthuraisamy/SysWhispers2.git
> cd SysWhispers2
> py .\syswhispers.py --help
## рдЙрдкрдпреЛрдЧ рдФрд░ рдЙрджрд╛рд╣рд░рдг
### рдХрдорд╛рдВрдб рд▓рд╛рдЗрдиреНрд╕
root@kitploit:~
# Export all functions with compatibility for all supported Windows versions (see example-output/).
py .\syswhispers.py --preset all -o syscalls_all
# Export just the common functions (see below for list).
py .\syswhispers.py --preset common -o syscalls_common
# Export NtProtectVirtualMemory and NtWriteVirtualMemory with compatibility for all versions.
py .\syswhispers.py --functions NtProtectVirtualMemory,NtWriteVirtualMemory -o syscalls_mem
### рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдЙрдЯрдкреБрдЯ
root@kitploit:~
PS C:\Projects\SysWhispers2> py .\syswhispers.py --preset common --out-file syscalls_common
python syswhispers.py -p all -a all -l all -o example-output/Syscalls
. ,--.
,-. . . ,-. . , , |-. o ,-. ,-. ,-. ,-. ,-. /
`-. | | `-. |/|/ | | | `-. | | |-' | `-. ,-'
`-' `-| `-' ' ' ' ' ' `-' |-' `-' ' `-' `---
/| | @Jackson_T
`-' ' @modexpblog, 2021
SysWhispers2: Why call the kernel when you can whisper?
All functions selected.
Complete! Files written to:
example-output/Syscalls.h
example-output/Syscalls.c
example-output/SyscallsStubs.std.x86.asm
example-output/SyscallsStubs.rnd.x86.asm
example-output/SyscallsStubs.std.x86.nasm
example-output/SyscallsStubs.rnd.x86.nasm
example-output/SyscallsStubs.std.x86.s
example-output/SyscallsStubs.rnd.x86.s
example-output/SyscallsInline.std.x86.h
example-output/SyscallsInline.rnd.x86.h
example-output/SyscallsStubs.std.x64.asm
example-output/SyscallsStubs.rnd.x64.asm
example-output/SyscallsStubs.std.x64.nasm
example-output/SyscallsStubs.rnd.x64.nasm
example-output/SyscallsStubs.std.x64.s
example-output/SyscallsStubs.rnd.x64.s
example-output/SyscallsInline.std.x64.h
example-output/SyscallsInline.rnd.x64.h
### рдХреНрд▓рд╛рд╕рд┐рдХ `CreateRemoteThread` DLL рдЗрдВрдЬреЗрдХреНрд╢рди рдХрд╛ рдкрд╣рд▓реЗ рдФрд░ рдмрд╛рдж рдХрд╛ рдЙрджрд╛рд╣рд░рдг
root@kitploit:~
py .\syswhispers.py -f NtAllocateVirtualMemory,NtWriteVirtualMemory,NtCreateThreadEx -o syscalls
root@kitploit:~
#include <Windows.h>
void InjectDll(const HANDLE hProcess, const char* dllPath)
{
LPVOID lpBaseAddress = VirtualAllocEx(hProcess, NULL, strlen(dllPath), MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
LPVOID lpStartAddress = GetProcAddress(GetModuleHandle(L"kernel32.dll"), "LoadLibraryA");
WriteProcessMemory(hProcess, lpBaseAddress, dllPath, strlen(dllPath), nullptr);
CreateRemoteThread(hProcess, nullptr, 0, (LPTHREAD_START_ROUTINE)lpStartAddress, lpBaseAddress, 0, nullptr);
}
root@kitploit:~
#include <Windows.h>
#include "syscalls.h" // Import the generated header.
void InjectDll(const HANDLE hProcess, const char* dllPath)
{
HANDLE hThread = NULL;
LPVOID lpAllocationStart = nullptr;
SIZE_T szAllocationSize = strlen(dllPath);
LPVOID lpStartAddress = GetProcAddress(GetModuleHandle(L"kernel32.dll"), "LoadLibraryA");
NtAllocateVirtualMemory(hProcess, &lpAllocationStart, 0, (PULONG)&szAllocationSize, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
NtWriteVirtualMemory(hProcess, lpAllocationStart, (PVOID)dllPath, strlen(dllPath), nullptr);
NtCreateThreadEx(&hThread, GENERIC_EXECUTE, NULL, hProcess, lpStartAddress, lpAllocationStart, FALSE, 0, 0, 0, nullptr);
}
## рд╕рд╛рдорд╛рдиреНрдп рдлрд╝рдВрдХреНрд╢рди
`--preset common` рд╕реНрд╡рд┐рдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╝рдВрдХреНрд╢рдиреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ header/ASM рдЬреЛрдбрд╝реА рдмрдирд╛рдИ рдЬрд╛рдПрдЧреА:
рдлрд╝рдВрдХреНрд╢рди рд╕реВрдЪреА рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред
* NtCreateProcess (CreateProcess)
* NtCreateThreadEx (CreateRemoteThread)
* NtOpenProcess (OpenProcess)
* NtOpenThread (OpenThread)
* NtSuspendProcess
* NtSuspendThread (SuspendThread)
* NtResumeProcess
* NtResumeThread (ResumeThread)
* NtGetContextThread (GetThreadContext)
* NtSetContextThread (SetThreadContext)
* NtClose (CloseHandle)
* NtReadVirtualMemory (ReadProcessMemory)
* NtWriteVirtualMemory (WriteProcessMemory)
* NtAllocateVirtualMemory (VirtualAllocEx)
* NtProtectVirtualMemory (VirtualProtectEx)
* NtFreeVirtualMemory (VirtualFreeEx)
* NtQuerySystemInformation (GetSystemInfo)
* NtQueryDirectoryFile
* NtQueryInformationFile
* NtQueryInformationProcess
* NtQueryInformationThread
* NtCreateSection (CreateFileMapping)
* NtOpenSection
* NtMapViewOfSection
* NtUnmapViewOfSection
* NtAdjustPrivilegesToken (AdjustTokenPrivileges)
* NtDeviceIoControlFile (DeviceIoControl)
* NtQueueApcThread (QueueUserAPC)
* NtWaitForMultipleObjects (WaitForMultipleObjectsEx)
## Visual Studio рдореЗрдВ рдЖрдпрд╛рдд рдХрд░рдирд╛
1. рдЙрддреНрдкрдиреНрди H/C/ASM рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХреЙрдкреА рдХрд░реЗрдВред
2. Visual Studio рдореЗрдВ, _Project_ тЖТ _Build Customizations..._ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ MASM рд╕рдХреНрд╖рдо рдХрд░реЗрдВред
3. _Solution Explorer_ рдореЗрдВ, .h рдФрд░ .c/.asm рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдХреНрд░рдорд╢рдГ рд╣реЗрдбрд░ рдФрд░ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред
4. x86 ASM рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЧреБрдгреЛрдВ рдкрд░ рдЬрд╛рдПрдВред
5. _Configurations_ рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реЗ _All Configurations_ рдЪреБрдиреЗрдВред
6. _Platform_ рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реЗ _Win32_ рдЪреБрдиреЗрдВред
7. рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдХрд▓реНрдк рд╕реЗрдЯ рдХрд░реЗрдВ:
* _Excluded From Build_ = _No_
* _Content_ = _Yes_
* _Item Type_ = _Microsoft Macro Assembler_
8. _Apply_ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ
9. _Platform_ рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реЗ _x64_ рдЪреБрдиреЗрдВред
10. рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдХрд▓реНрдк рд╕реЗрдЯ рдХрд░реЗрдВ:
* _Excluded From Build_ = _Yes_
* _Content_ = _Yes_
* _Item Type_ = _Microsoft Macro Assembler_
11. _Apply_ , рдлрд┐рд░ _OK_ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред
12. x64 ASM рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЧреБрдгреЛрдВ рдкрд░ рдЬрд╛рдПрдВред
13. _Configurations_ рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реЗ _All Configurations_ рдЪреБрдиреЗрдВред
14. _Platform_ рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реЗ _Win32_ рдЪреБрдиреЗрдВред
15. рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдХрд▓реНрдк рд╕реЗрдЯ рдХрд░реЗрдВ:
* _Excluded From Build_ = _Yes_
* _Content_ = _Yes_
* _Item Type_ = _Microsoft Macro Assembler_
16. _Apply_ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ
17. _Platform_ рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реЗ _x64_ рдЪреБрдиреЗрдВред
18. рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдХрд▓реНрдк рд╕реЗрдЯ рдХрд░реЗрдВ:
* _Excluded From Build_ = _No_
* _Content_ = _Yes_
* _Item Type_ = _Microsoft Macro Assembler_
19. _Apply_ , рдлрд┐рд░ _OK_ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред
## MinGW рдФрд░ NASM рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рди
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ MinGW рдФрд░ NASM рдЕрд╕реЗрдВрдмрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ EXE рдФрд░ DLL рдХреЗ рд░реВрдк рдореЗрдВ рдХреИрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП:
### x86 рдЙрджрд╛рд╣рд░рдг EXE
root@kitploit:~
i686-w64-mingw32-gcc -c main.c syscalls.c -Wall -shared
nasm -f win32 -o syscallsstubs.std.x86.o syscallsstubs.std.x86.nasm
i686-w64-mingw32-gcc *.o -o temp.exe
i686-w64-mingw32-strip -s temp.exe -o example.exe
rm -rf *.o temp.exe
### рдирд┐рд░реНрдпрд╛рдд рдХреЗ рд╕рд╛рде x86 рдЙрджрд╛рд╣рд░рдг DLL
root@kitploit:~
i686-w64-mingw32-gcc -c dllmain.c syscalls.c -Wall -shared
nasm -f win32 -o syscallsstubs.std.x86.o syscallsstubs.std.x86.nasm
i686-w64-mingw32-dllwrap --def dllmain.def *.o -o temp.dll
i686-w64-mingw32-strip -s temp.dll -o example.dll
rm -rf *.o temp.dll
### x64 рдЙрджрд╛рд╣рд░рдг EXE
root@kitploit:~
x86_64-w64-mingw32-gcc -m64 -c main.c syscalls.c -Wall -shared
nasm -f win64 -o syscallsstubs.std.x64.o syscallsstubs.std.x64.nasm
x86_64-w64-mingw32-gcc *.o -o temp.exe
x86_64-w64-mingw32-strip -s temp.exe -o example.exe
rm -rf *.o temp.exe
### рдирд┐рд░реНрдпрд╛рдд рдХреЗ рд╕рд╛рде x64 рдЙрджрд╛рд╣рд░рдг DLL
root@kitploit:~
x86_64-w64-mingw32-gcc -m64 -c dllmain.c syscalls.c -Wall -shared
nasm -f win64 -o syscallsstubs.std.x64.o syscallsstubs.std.x64.nasm
x86_64-w64-mingw32-gcc-dllwrap --def dllmain.def *.o -o temp.dll
x86_64-w64-mingw32-strip -s temp.dll -o example.dll
rm -rf *.o temp.dll
## MingGW рдФрд░ GNU Assembler (GAS) рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рди
### x86 рдЙрджрд╛рд╣рд░рдг EXE
root@kitploit:~
i686-w64-mingw32-gcc -m32 -Wall -c main.c syscalls.c syscallsstubs.std.x86.s -o temp.exe
i686-w64-mingw32-strip -s temp.exe -o example.exe
### рдирд┐рд░реНрдпрд╛рдд рдХреЗ рд╕рд╛рде x86 рдЙрджрд╛рд╣рд░рдг DLL
root@kitploit:~
i686-w64-mingw32-gcc -m32 -Wall -c dllmain.c syscalls.c syscallsstubs.std.x86.s -o temp.dll
i686-w64-mingw32-dllwrap --def dllmain.def *.o -o temp.dll
i686-w64-mingw32-strip -s temp.dll -o example.dll
### x64 рдЙрджрд╛рд╣рд░рдг EXE
root@kitploit:~
x86_64-w64-mingw32-gcc -m64 -Wall -c main.c syscalls.c syscallsstubs.std.x64.s -o temp.exe
x86_64-w64-mingw32-strip -s temp.exe -o example.exe
### рдирд┐рд░реНрдпрд╛рдд рдХреЗ рд╕рд╛рде x64 рдЙрджрд╛рд╣рд░рдг DLL
root@kitploit:~
x86_64-w64-mingw32-gcc -m64 -Wall -c dllmain.c syscalls.c syscallsstubs.std.x64.s -o temp.dll
x86_64-w64-mingw32-dllwrap --def dllmain.def *.o -o temp.dll
x86_64-w64-mingw32-strip -s temp.dll -o example.dll
## LLVM/Clang рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ
SysWhispers2 рдПрдХ clang рд╕рдВрдЧрдд `.s` рдлрд╝рд╛рдЗрд▓ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ ASM stubs рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ llvm рдХреЗ рд╕рд╛рде рдЖрдкрдХреЗ рдХреЛрдб рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдКрдкрд░ рджрд┐рдП рдЧрдП `CreateRemoteThread` DLL рдЗрдВрдЬреЗрдХреНрд╢рди рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП:
root@kitploit:~
clang -D nullptr=NULL main.c syscall.c syscallstubs.std.x64.s -o test.exe
## рдХреЗрд╡рд▓ рдЗрдирд▓рд╛рдЗрди рд╣реЗрдбрд░
**inlinegas** рдЖрдЙрдЯрдкреБрдЯ рд╡рд┐рдХрд▓реНрдк Syswhispers2 рдХрд╛ рдХреЗрд╡рд▓ рд╣реЗрдбрд░ рд╕рдВрд╕реНрдХрд░рдг рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ BOFs рдХреЗ рд╕рдВрдХрд▓рди рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдмрд╕ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╣реЗрдбрд░ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВред
## рд░реИрдВрдбрдо рд╕рд┐рд╕рдХреЙрд▓ рдЬрдВрдкреНрд╕
рд░реИрдВрдбрдо рд╕рд┐рд╕рдХреЙрд▓ рдЬрдВрдк рд░реВрдЯреАрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ "mark of the syscall" рд╕реЗ рдмрдЪрдирд╛ рд╕рдВрднрд╡ рд╣реИред рдЕрд╕реЗрдВрдмрд▓реА рд╕реНрдЯрдм рдПрдХ рдирдП рдлрд╝рдВрдХреНрд╢рди **SW__GetRandomSyscallAddress** рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП **ntdll.dll** рдореЗрдВ рдПрдХ рд╕реНрд╡рдЪреНрдЫ syscall рдирд┐рд░реНрджреЗрд╢ рдЦреЛрдЬрддрд╛ рд╣реИ рдФрд░ рдЪреБрдирддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдХреЗ, рдпреВрдЬрд╝рд░рд▓реИрдВрдб syscall рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдирд╛ рднреА рд╕рдВрднрд╡ рд╣реИред
рд░реИрдВрдбрдо рд╕рд┐рд╕рдХреЙрд▓ рдЬрдВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╕рдордп **RANDSYSCALL** рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ SysWhispers2 рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ **rnd** рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг GNU Assembler stubs рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
### x86 рдЙрджрд╛рд╣рд░рдг EXE - рд░реИрдВрдбрдо рд╕рд┐рд╕рдХреЙрд▓ рдЬрдВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ
root@kitploit:~
i686-w64-mingw32-gcc main.c syscalls.c syscallsstubs.rnd.x86.s -DRANDSYSCALL -Wall -o example.exe
### x64 рдЙрджрд╛рд╣рд░рдг EXE - рд░реИрдВрдбрдо рд╕рд┐рд╕рдХреЙрд▓ рдЬрдВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ
root@kitploit:~
x86_64-w64-mingw32-gcc main.c syscalls.c syscallsstubs.rnd.x64.s -DRANDSYSCALL -Wall -o example.exe
## рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдБ рдФрд░ рд╕реАрдорд╛рдПрдБ
* рдЧреНрд░рд╛рдлрд┐рдХрд▓ рд╕рдмрд╕рд┐рд╕реНрдЯрдо (`win32k.sys`) рд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВред
* Windows 10 SDK рдХреЗ рд╕рд╛рде Visual Studio 2019 (v142) рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ред
## рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг
* рдкреНрд░рдХрд╛рд░ рдкреБрдирд░реНрдкрд░рд┐рднрд╛рд╖рд╛ рддреНрд░реБрдЯрд┐рдпрд╛рдБ: рдпрджрд┐ `syscalls.h` рдореЗрдВ typedefs рдкрд╣рд▓реЗ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИрдВ, рддреЛ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
* рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рдлрд╝рдВрдХреНрд╢рди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ (рдЕрд░реНрдерд╛рдд `--preset all` рд╢рд╛рдпрдж рд╣реА рдХрднреА рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИ)ред
* рдпрджрд┐ рдХреЛрдИ typedef рдХрд┐рд╕реА рдЕрдиреНрдп рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╣реЗрдбрд░ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИ, рддреЛ рдЙрд╕реЗ `syscalls.h` рд╕реЗ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
## рд╢реНрд░реЗрдп
@Jackson_T рдФрд░ @modexpblog рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд, рд▓реЗрдХрд┐рди рдХрдИ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рдХрд╛рдо рдкрд░ рдЖрдзрд╛рд░рд┐рдд:
* @FoxHex0ne рдорд╢реАрди-рдкрдардиреАрдп рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдХрдИ рдлрд╝рдВрдХреНрд╢рди рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдФрд░ typedefs рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
* @PetrBenes, NTInternals.net team, рдФрд░ MSDN рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдФрд░ typedefs рдХреЗ рд▓рд┐рдПред
* @Cn33liz рдкреНрд░рд╛рд░рдВрднрд┐рдХ Dumpert POC рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдПред
## рд╕рдВрдмрдВрдзрд┐рдд рд▓реЗрдЦ рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдБ
* @modexpblog: Bypassing User-Mode Hooks and Direct Invocation of System Calls for Red Teams
* @hodg87: Malware Mitigation when Direct System Calls are Used
* @Cn33liz: Combining Direct System Calls and sRDI to bypass AV/EDR (Code)
* @0x00dtm: Userland API Monitoring and Code Injection Detection
* @0x00dtm: Defeating Userland Hooks (ft. Bitdefender) (Code)
* @mrgretzky: Defeating Antivirus Real-time Protection From The Inside
* @SpecialHoang: Bypass EDRтАЩs memory protection, introduction to hooking (Code)
* @xpn and @domchell: Silencing Cylance: A Case Study in Modern EDRs
* @mrjefftang: Universal Unhooking: Blinding Security Software ()
## SysWhispers рдХреЗ рд╕рдВрджрд░реНрдн
* @JFaust_: Process Injection Part 1, Part 2, and Alaris loader project (Code)
* @0xPat: Malware Development Part 2
* @brsn76945860: Implementing Syscalls In The CobaltStrike Artifact Kit
* @Cn33liz and @_DaWouw: Direct Syscalls in Beacon Object Files (Code)
## рд▓рд╛рдЗрд╕реЗрдВрд╕
рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ Apache License 2.0 рдХреЗ рддрд╣рдд рд▓рд╛рдЗрд╕реЗрдВрд╕ рдкреНрд░рд╛рдкреНрдд рд╣реИред