
SysWhispers on Steroids - प्रत्यक्ष सिस्टम कॉल के माध्यम से AV/EDR चोरी।
SysWhispers हेडर/ASM फ़ाइलें उत्पन्न करके एवेज़न में मदद करता है जिसका उपयोग इम्प्लांट सीधे सिस्टम कॉल करने के लिए कर सकते हैं।
Discord पर आएं और जुड़ें!
SysWhispers3 के एक स्वतंत्र संस्करण होने के कई कारण हैं, लेकिन सबसे महत्वपूर्ण ये हैं:
उपयोग SysWhispers2 के समान है, निम्नलिखित अपवादों के साथ:
इन सुविधाओं की बेहतर व्याख्या ब्लॉग पोस्ट SysWhispers is dead, long live SysWhispers! में दी गई है।
सुरक्षा उत्पाद, जैसे AV और EDR, आमतौर पर उपयोगकर्ता-मोड API फ़ंक्शन में हुक लगाते हैं ताकि प्रोग्राम के निष्पादन प्रवाह का विश्लेषण कर संभावित दुर्भावनापूर्ण गतिविधियों का पता लगा सकें।
SysWhispers2 एक ऐसा उपकरण है जो कोर कर्नेल इमेज (ntoskrnl.exe) में किसी भी सिस्टम कॉल के लिए हेडर/ASM जोड़े उत्पन्न करने के लिए डिज़ाइन किया गया है, जिसे सीधे C/C++ कोड से एकीकृत और कॉल किया जा सकता है, जिससे उपयोगकर्ता-लैंड हुक को दरकिनार किया जा सकता है।
हालाँकि, उपकरण कुछ ऐसे पैटर्न उत्पन्न करता है जिन्हें सिग्नेचर में शामिल किया जा सकता है, या ऐसा व्यवहार जो रनटाइम पर पता लगाया जा सकता है।
SysWhispers3, SysWhispers2 के ऊपर बनाया गया है, और इसमें पता लगाने के इन रूपों को बायपास करने के लिए कुछ उपयोगी सुविधाएँ एकीकृत की गई हैं।
C:\> git clone https://github.com/klezVirus/SysWhispers3.git
C:\> cd SysWhispers3
C:\> python .\syswhispers.py --help
सहायता उपकरण के सभी उपलब्ध कमांड और सुविधाओं को दर्शाती है:
C:\>python syswhispers.py -h
usage: syswhispers.py [-h] [-p PRESET] [-a {x86,x64}] [-m {embedded,egg_hunter,jumper,jumper_randomized}] [-f FUNCTIONS] -o OUT_FILE [--int2eh] [--wow64] [-v] [-d]
SysWhispers3 - SysWhispers on steroids
optional arguments:
-h, --help show this help message and exit
-p PRESET, --preset PRESET
Preset ("all", "common")
-a {x86,x64}, --arch {x86,x64}
Architecture
-c {msvc,mingw,all}, --compiler {msvc,mingw,all}
Compiler
-m {embedded,egg_hunter,jumper,jumper_randomized}, --method {embedded,egg_hunter,jumper,jumper_randomized}
Syscall recovery method
-f FUNCTIONS, --functions FUNCTIONS
Comma-separated functions
-o OUT_FILE, --out-file OUT_FILE
Output basename (w/o extension)
--int2eh Use the old `int 2eh` instruction in place of `syscall`
--wow64 Use Wow64 to run x86 on x64 (only usable with x86 architecture)
-v, --verbose Enable debug output
-d, --debug Enable syscall debug (insert software breakpoint)
# 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
# Normal SysWhispers, 32-bits mode
py .\syswhispers.py --preset all -o syscalls_all -m jumper --arch x86
# Normal SysWhispers, using WOW64 in 32-bits mode (only specific functions)
py .\syswhispers.py --functions NtProtectVirtualMemory,NtWriteVirtualMemory -o syscalls_mem --arch x86 --wow64
# Egg-Hunting SysWhispers, to bypass the "mark of the sycall" (common function)
py .\syswhispers.py --preset common -o syscalls_common -m egg_hunter
# Jumping/Jumping Randomized SysWhispers, to bypass dynamic RIP validation (all functions) using MinGW as the compiler
py .\syswhispers.py --preset all -o syscalls_all -m jumper -c mingw
PS C:\Projects\SysWhispers2> py .\syswhispers.py --preset common --out-file temp\syscalls_common -v
. ,--.
,-. . . ,-. . , , |-. o ,-. ,-. ,-. ,-. ,-. __/
`-. | | `-. |/|/ | | | `-. | | |-' | `-. . \
`-' `-| `-' ' ' ' ' ' `-' |-' `-' ' `-' '''
/| | @Jackson_T
`-' ' @modexpblog, 2021
Edits by @klezVirus, 2022
SysWhispers3: Why call the kernel when you can whisper?
Common functions selected.
Complete! Files written to:
temp\syscalls_common.h
temp\syscalls_common.c
temp\syscalls_common_.asm
Press a key to continue...
64 बिट के लिए Makefile:
Makefile.msvc
OPTIONS = -Zp8 -c -nologo -Gy -Os -O1 -GR- -EHa -Oi -GS-
LIBS = libvcruntime.lib libcmt.lib ucrt.lib kernel32.lib
program:
ML64 /c syscalls-asm.x64.asm /link /NODEFAULTLIB /RELEASE /MACHINE:X64
cl.exe $(OPTIONS) syscalls.c program.c
link.exe /OUT:program.x64.exe -nologo $(LIBS) /MACHINE:X64 -subsystem:console -nodefaultlib syscalls-asm.x64.obj syscalls.obj program.obj
32 बिट के लिए Makefile:
Makefile.msvc
OPTIONS = -Zp8 -c -nologo -Gy -Os -O1 -GR- -EHa -Oi -GS-
LIBS = libvcruntime.lib libcmt.lib ucrt.lib kernel32.lib
program:
ML /c syscalls-asm.x86.asm /link /NODEFAULTLIB /RELEASE /MACHINE:X86
cl.exe $(OPTIONS) syscalls.c program.c
link.exe /OUT:program.x86.exe -nologo $(LIBS) /MACHINE:X86 -subsystem:console -nodefaultlib syscalls-asm.x86.obj syscalls.obj program.obj
nmake से संकलित करें:
nmake -f Makefile.msvc
64 और 32 बिट दोनों के लिए Makefile:
Makefile.mingw
CC_x64 := x86_64-w64-mingw32-gcc
CC_x86 := i686-w64-mingw32-gcc
OPTIONS := -masm=intel -Wall
program:
$(CC_x64) syscalls.c program.c -o program.x64.exe $(OPTIONS)
$(CC_x86) syscalls.c program.c -o program.x86.exe $(OPTIONS)
make से संकलित करें:
make -f Makefile.mingw
win32k.sys) से सिस्टम कॉल समर्थित नहीं हैं।syscalls.h में typedefs पहले ही परिभाषित हो चुके हैं तो प्रोजेक्ट संकलित नहीं हो सकता।
--preset all शायद ही कभी आवश्यक हो)।syscalls.h से हटाया जा सकता है।--verbose के साथ, कोड जनरेशन के दौरान समस्या निवारण आउटपुट सक्षम किया जा सकता है।--debug के साथ, उपकरण syscall स्टब में एक सॉफ्टवेयर ब्रेकपॉइंट सम्मिलित करेगा, ताकि WinDbg में डीबग करना आसान हो।error A2084:constant value too large मिलता है, तो स्टब्स को पुनः जनरेट करें।@Jackson_T और @modexpblog द्वारा विकसित, लेकिन कई अन्य लोगों के काम पर आधारित है:
मूल की तरह, यह प्रोजेक्ट भी Apache License 2.0 के तहत लाइसेंस प्राप्त है।