Sploitus

Exploit for SysWhispers2

kitploit ┬╖ 2026-09-06

Exploit Code

MARKDOWN384 lines
## 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 рдХреЗ рддрд╣рдд рд▓рд╛рдЗрд╕реЗрдВрд╕ рдкреНрд░рд╛рдкреНрдд рд╣реИред