Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The objective of this pull request is to enhance the functionality of SysWhisper by introducing a new operating mode. The new feature, entitled "Vectored", is based on the concept of performing system calls by leveraging the VEH structure.
Some references:
https://cyberwarfare.live/bypassing-av-edr-hooks-via-vectored-syscall-poc/
https://redops.at/en/blog/syscalls-via-vectored-exception-handling
https://winslow1984.com/books/malware/page/mutationgate
Some Related Projects:
MutationGate by @senzee1984
HWSyscalls by Dec0ne
TamperingSyscalls by rad9800
VEH-PoC by RedTeamOperations
How it works
A new initialization function,
SW3_Init()
, takes care of registering a custom Exception Handler:ExceptionHandler
. Thus, every time an API is called:ntdll.dll
API that is to be invoked (which, in the case of inline hooking, also corresponds with the address of thejmp
instruction to the EDR DLL);ntdll.dll
is invoked;EAX
and settingRIP
to the address of thesyscall
instruction;The implementation was tested on 2 Windows 10 x64 systems. The first protected by Windows Defender and the second by BitDefender (free version). Both tests were successful.
Here are some screenshots illustrating what has just been described. The screenshots refer to a test binary whose code is also given at the bottom as an example of using the new feature.
Example Usage