Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
SysWhispers4 — التهرب من AV/EDR عبر استدعاءات النظام المباشرة وغير المباشرة من Windows NT 3.1 حتى Windows 11 24H2 · x64 · x86 · WoW64 · ARM64 | Kitploit
أدوات/GitHubGitHub/joasasantos/syswhispers4
التهرب من IDS/IPSما بعد الاستغلالالفريق الأحمرتطوير الحمولاتالهجوم العدائي
GitHubjoasasantos/syswhispers4

SysWhispers4

التهرب من AV/EDR عبر استدعاءات النظام المباشرة وغير المباشرة من Windows NT 3.1 حتى Windows 11 24H2 · x64 · x86 · WoW64 · ARM64

عرض المستودع
54670منذ 5 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

SysWhispers4

التهرب من AV/EDR عبر استدعاءات النظام المباشرة وغير المباشرة Windows NT 3.1 حتى Windows 11 24H2 · x64 · x86 · WoW64 · ARM64

SysWhispers4 هو مولّد أكواد استدعاءات نظام (syscall stubs) مبني على Python، ينتج كود C/ASM لاستدعاء دوال نواة NT مباشرةً، متجاوزًا خطافات وضع المستخدم التي تضعها منتجات AV/EDR على ntdll.dll.

مبني على سلسلة SysWhispers ← SysWhispers2 ← SysWhispers3، يضيف هذا الإصدار المجموعة الأكثر شمولًا حتى الآن من استراتيجيات تحديد أرقام SSN، وطرق الاستدعاء، وقدرات التهرب.


التطوّر: SysWhispers 1 ← 4

مصفوفة مقارنة الميزات

الميزةSW1SW2SW3SW4
تحديد SSN
جدول ثابت مضمّن✅✅✅✅
Hell's Gate (تحليل ntdll وقت التشغيل)❌✅✅✅
Halo's Gate (مسح جيران الخطافات)❌❌✅✅
Tartarus' Gate (قفزة قريبة + بعيدة JMP)❌❌جزئي✅
FreshyCalls (فرز حسب VA)❌❌❌✅ جديد
SyscallsFromDisk (نسخة نظيفة من ntdll من KnownDlls)❌❌❌✅ جديد
RecycledGate (FreshyCalls + التحقق من الأوبكود)❌❌❌✅ جديد
نقطة توقف الأجهزة HW Breakpoint (سجلات DR + VEH)❌❌❌✅ جديد
احتياط ثابت + ديناميكي❌❌❌✅ جديد
طرق الاستدعاء
مضمّن (syscall مباشر)✅✅✅✅
غير مباشر (قفزة jmp إلى gadget في ntdll)❌❌✅✅
غير مباشر عشوائي (إنتروبيا لكل استدعاء)

† تضمّنت طريقة SW3 العشوائية خللًا في إتلاف السجلات — RDTSC يكتب فوق edx (الوسيط 2). يحفظ SW4 بشكل صحيح rdx ← r11 قبل rdtsc ويعيده دون لمس المكدس.


الجديد في الإصدار v4.1

طرق جديدة لتحديد أرقام SSN

SyscallsFromDisk (--resolve from_disk)

يعيّن (maps) نسخة نظيفة من ntdll من \KnownDlls\ntdll.dll ويقرأ أرقام SSN من قسم .text غير المُخطَّف. يتجاوز تمامًا جميع الخطافات المضمّنة — لا يرى EDR القراءة أبدًا.```c // Flow: NtOpenSection → NtMapViewOfSection → read clean SSNs → NtUnmapViewOfSection // SSNs come from the on-disk image, guaranteed hook-free SW4_SyscallsFromDisk(pNtdll);

root@kitploit:~
#### RecycledGate (`--resolve recycled`)
يجمع بين موثوقية FreshyCalls (الفرز حسب VA) والتحقق من opcode من Hell's Gate. لكل دالة:
1. الحصول على SSN المرشح من الموضع المفرز (FreshyCalls)
2. إذا كان الـ stub نظيفًا، تحقق من تطابق SSN مع opcode (فحص مزدوج)
3. إذا كان الـ stub مربوطًا (hooked)، فثق بـ SSN من الفهرس المفرز (مقاوم للربط)

**الطريقة الأكثر مرونة المتاحة** — حتى إذا أعادت hooks ترتيب الـ stubs أو عدّلت opcodes، فإن الفرز حسب VA يعطي SSN الصحيح.

#### HW Breakpoint (`--resolve hw_breakpoint`)
يستخدم **سجلات التصحيح** (DR0–DR3) ومعالج استثناءات متجه (VEH) لاستخراج SSNs دون قراءة بايتات الدالة (التي قد تكون موصولة):
1. تعيين DR0 = عنوان تعليمة `syscall` في stub الخاص بـ ntdll
2. تسجيل معالج VEH
3. الاستدعاء إلى الـ stub — يلتقط VEH الاستثناء `EXCEPTION_SINGLE_STEP`
4. عند نقطة الإيقاف، يحتوي EAX على SSN — التقطه
5. مسح DR0، تخطي syscall، والمتابعة

يعمل حتى عندما تعيد hooks توجيه التنفيذ، لأن نقطة الإيقاف تنطلق بعد `mov eax, <SSN>`.

### تقنيات evasion الجديدة

#### AMSI Bypass (`--amsi-bypass`)
يرقّع `amsi.dll!AmsiScanBuffer` لإرجاع `E_INVALIDARG`، مما يجعل AMSI يعتقد أن وسائط الفحص غير صالحة. إذا لم يكن `amsi.dll` محمّلًا، يُرجع نجاحًا (لا شيء لترقيعه).```c
SW4_PatchAmsi();  // Call early, before any suspicious operations

إلغاء ربط ntdll (--unhook-ntdll)

يُعيّن نسخة نظيفة من ntdll من \KnownDlls\ ويكتب فوق قسم .text المُخطَّف بالبايتات النظيفة:```c // Call BEFORE SW4_Initialize() for best results SW4_UnhookNtdll(); // Remove ALL inline hooks from ntdll SW4_Initialize(); // Now FreshyCalls/Hell's Gate reads clean stubs

root@kitploit:~
يؤدي هذا إلى إزالة جميع الخطافات المضمنة من ntdll تمامًا، مما يجعل استدعاءات NT API اللاحقة تمر عبر مسارات الكود الأصلية.

#### مكافحة التصحيح (`--anti-debug`)
يقوم بإجراء 6 فحوصات لاكتشاف وجود مصحح الأخطاء/أداة التحليل:

| الفحص | التقنية | يكشف |
|-------|-----------|---------|
| 1 | `PEB.BeingDebugged` | التعلق القياسي بمصحح الأخطاء |
| 2 | `NtGlobalFlag` (0x70) | أعلام تصحيح الكومة المحددة من قبل مصححات الأخطاء |
| 3 | دلتا توقيت `RDTSC` | التنفيذ خطوة بخطوة / التتبع |
| 4 | `NtQueryInformationProcess(ProcessDebugPort)` | منفذ تصحيح النواة |
| 5 | تحليل أعلام الكومة | مؤشرات كومة التصحيح |
| 6 | كشف استدعاءات الأدوات | خطافات أدوات EDR |```c
if (!SW4_AntiDebugCheck()) {
    // Debugger detected — bail out or take evasive action
    ExitProcess(0);
}

تشفير أثناء السكون (--sleep-encrypt)

على غرار Ekko تشفير الذاكرة أثناء السكون لتجنب فحوصات الذاكرة الدورية:

  1. ولّد مفتاح XOR عشوائيًا عبر RDTSC
  2. شفّر قسم .text الخاص بك باستخدام XOR
  3. اضبط مؤقتًا قابلًا للانتظار وضع APC في قائمة الانتظار لفك التشفير
  4. نم في حالة قابلة للتنبيه
  5. ينطلق المؤقت → يفكّك APC تشفير .text → يستأنف التنفيذ```c // Instead of Sleep(5000), use: SW4_SleepEncrypt(5000); // .text is encrypted during the entire sleep
root@kitploit:~
Defeats:
- ماسحات الذاكرة أثناء السكون (الكود مشفّر وغير مفهوم)
- الفحوصات الدورية للوحدات (التوقيعات لن تتطابق)
- فحوصات YARA/التوقيعات على PE في الذاكرة

---

## جميع الميزات (الحالية + الجديدة)

### طرق حلّ SSN (8 إجمالاً)

| الطريقة | الخيار | مقاومة الربط | السرعة | ملاحظات |
|--------|------|:-:|:-:|-------|
| Static | `--resolve static` | لا شيء | الأسرع | جدول j00ru مضمّن، بدون تحليل في وقت التشغيل |
| Hell's Gate | `--resolve hells_gate` | منخفضة | سريع | يقرأ بايتات الأوبكود — يفشل إذا كان مربوطًا |
| Halo's Gate | `--resolve halos_gate` | متوسطة | سريع | مسح الجيران (±8 stubs) |
| Tartarus' Gate | `--resolve tartarus` | عالية | سريع | يكتشف خطافات E9/FF25/EB/CC، ±16 جيرانًا |
| FreshyCalls | `--resolve freshycalls` | **عالية جدًا** | متوسطة | الترتيب حسب VA — لا يقرأ بايتات الدالة |
| SyscallsFromDisk | `--resolve from_disk` | **قصوى** | بطيء | يعيّن ntdll نظيفًا من القرص |
| RecycledGate | `--resolve recycled` | **قصوى** | متوسطة | FreshyCalls + تحقق متقاطع من الأوبكود |
| HW Breakpoint | `--resolve hw_breakpoint` | **قصوى** | بطيء | سجلات DR + VEH |

### طرق الاستدعاء (4 إجمالاً)

| الطريقة | الخيار | RIP في ntdll | استدعاء النظام على القرص | عشوائي لكل استدعاء |
|--------|------|:-:|:-:|:-:|
| Embedded | `--method embedded` | ❌ | ✅ | ❌ |
| Indirect | `--method indirect` | ✅ | ❌ | ❌ |
| Randomized | `--method randomized` | ✅ | ❌ | ✅ (64 gadgets) |
| Egg Hunt | `--method egg` | ❌ | ❌ | ❌ |

### خيارات التهرب (8 إجمالاً)

| الميزة | الخيار | الوصف |
|---------|------|-------------|
| Obfuscation | `--obfuscate` | إعادة ترتيب الـ stubs + 14 نوعًا من تعليمات الحشو |
| SSN Encryption | `--encrypt-ssn` | XOR بمفتاح عشوائي في وقت الترجمة |
| Stack Spoofing | `--stack-spoof` | عنوان إرجاع اصطناعي من ntdll |
| ETW Bypass | `--etw-bypass` | ترقيع `EtwEventWrite` لإرجاع ACCESS_DENIED |
| AMSI Bypass | `--amsi-bypass` | ترقيع `AmsiScanBuffer` لإرجاع E_INVALIDARG |
| ntdll Unhooking | `--unhook-ntdll` | إعادة تعيين `.text` نظيف من `\KnownDlls\` |
| Anti-Debug | `--anti-debug` | 6 فحوصات كشف (PEB، التوقيت، الكومة، إلخ.) |
| Sleep Encryption | `--sleep-encrypt` | XOR على نمط Ekko لـ `.text` أثناء السكون |

---

## بدء سريع```bash
git clone https://github.com/CyberSecurityUP/SysWhispers4
cd SysWhispers4

# Optional: update syscall table from j00ru (for --resolve static)
python scripts/update_syscall_table.py

# Common preset — FreshyCalls + direct syscall (recommended start)
python syswhispers.py --preset common

# Injection preset — indirect via Tartarus' Gate
python syswhispers.py --preset injection --method indirect --resolve tartarus

# Maximum evasion: all techniques combined
python syswhispers.py --preset stealth \
    --method randomized --resolve recycled \
    --obfuscate --encrypt-ssn --stack-spoof \
    --etw-bypass --amsi-bypass --unhook-ntdll \
    --anti-debug --sleep-encrypt

# Clean ntdll from disk — bypasses ALL hooks
python syswhispers.py --preset injection \
    --method indirect --resolve from_disk \
    --unhook-ntdll

# Hardware breakpoint SSN extraction
python syswhispers.py --functions NtAllocateVirtualMemory,NtCreateThreadEx \
    --resolve hw_breakpoint

# Egg hunt (no syscall opcode on disk)
python syswhispers.py \
    --functions NtAllocateVirtualMemory,NtWriteVirtualMemory,NtCreateThreadEx \
    --method egg --resolve halos_gate

# ARM64 (Windows on ARM)
python syswhispers.py --preset common --arch arm64

# x86 / WoW64
python syswhispers.py --preset injection --arch x86

# MinGW / Clang (GAS inline assembly)
python syswhispers.py --preset common --compiler mingw

مرجع سطر الأوامر```

python syswhispers.py [OPTIONS]

Function selection (at least one required): -p, --preset PRESET common | injection | evasion | token | stealth | file_ops | transaction | all -f, --functions FUNCS NtAllocateVirtualMemory,NtCreateThreadEx,...

Target: -a, --arch ARCH x64 (default) | x86 | wow64 | arm64 -c, --compiler COMPILER msvc (default) | mingw | clang

Techniques: -m, --method METHOD embedded (default) | indirect | randomized | egg -r, --resolve RESOLVE freshycalls (default) | static | hells_gate | halos_gate | tartarus | from_disk | recycled | hw_breakpoint

Evasion / Obfuscation: --obfuscate Randomize stub order + inject junk instructions --encrypt-ssn XOR-encrypt SSN table at rest --stack-spoof Include synthetic call stack frame helper --etw-bypass Include user-mode ETW patch function --amsi-bypass Include AMSI bypass (AmsiScanBuffer patch) --unhook-ntdll Include ntdll unhooking (remap from KnownDlls) --anti-debug Include anti-debugging checks (6 techniques) --sleep-encrypt Include Ekko-style sleep encryption

Output: --prefix PREFIX Symbol prefix (default: SW4) -o, --out-file OUTFILE Output filename base (default: SW4Syscalls) --out-dir OUTDIR Output directory (default: .)

Info: --list-functions Print all 64 supported NT functions and exit --list-presets Print all preset definitions and exit -v, --verbose Verbose output / traceback on error

root@kitploit:~
---

## الملفات المُولَّدة

| الملف | الغرض |
|---|---|
| `SW4Syscalls_Types.h` | تعريفات أنواع NT — الهياكل، التعدادات، typedefs |
| `SW4Syscalls.h` | النماذج الأولية للدوال + `SW4_Initialize()` + تصريحات API للتهرب |
| `SW4Syscalls.c` | حلّ SSN في وقت التشغيل + دوال مساعدة + تطبيقات التهرب |
| `SW4Syscalls.asm` | كعوب استدعاءات النظام بلغة MASM (MSVC) |
| `SW4Syscalls_stubs.c` | كعوب التجميع المضمّن بلغة GAS (MinGW / Clang) |

---

## التكامل (MSVC)

1. أضف الملفات الأربعة جميعها إلى مشروع Visual Studio
2. فعّل MASM: **Project → Build Customizations → masm (.targets)**
3. استدعِ دوال التهيئة عند بدء التشغيل```c
#include "SW4Syscalls.h"

int main(void) {
    // Step 1 (optional): Remove ALL hooks from ntdll
    // Call BEFORE Initialize for best results
    SW4_UnhookNtdll();

    // Step 2: Resolve SSNs (required for all dynamic methods)
    if (!SW4_Initialize()) return 1;

    // Step 3 (optional): Evasion patches
    SW4_PatchEtw();    // Suppress user-mode ETW events
    SW4_PatchAmsi();   // Bypass AMSI scanning

    // Step 4 (optional): Verify clean environment
    if (!SW4_AntiDebugCheck()) {
        // Debugger detected — take evasive action
        return 0;
    }

    // Use NT functions directly — all via syscall, no API hooks
    PVOID base = NULL;
    SIZE_T size = 0x1000;
    NTSTATUS st = SW4_NtAllocateVirtualMemory(
        GetCurrentProcess(), &base, 0, &size,
        MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE
    );

    // Use encrypted sleep instead of Sleep()
    // SW4_SleepEncrypt(5000);  // .text encrypted during sleep

    return NT_SUCCESS(st) ? 0 : 1;
}

التكامل (MinGW/Clang)```bash

x86_64-w64-mingw32-gcc -masm=intel
example.c SW4Syscalls.c SW4Syscalls_stubs.c
-o example.exe -lntdll

root@kitploit:~
---

## تقنيات حل SSN

### ثابت
يضمّن أرقام استدعاءات النظام من جدول j00ru المرفق وقت التوليد. لا يحتاج إلى تحليل ntdll في وقت التشغيل — الأسرع والأبسط. الجدول المضمّن هو إشارة كشف؛ استخدم الطرق الديناميكية للتمويه.

### FreshyCalls *(الافتراضي — موصى به)*
يفرز جميع تصديرات `Nt*` من ntdll حسب العنوان الافتراضي. الفهرس بعد الفرز = SSN. يعمل حتى إذا كان **كل** `Nt*` stub مُعترضًا — يقرأ VAs فقط، وليس بايتات الدوال.

### Hell's Gate
يقرأ كود التشغيل `mov eax, <SSN>` مباشرة من كل stub في ntdll:```
4C 8B D1 B8 [SSN_lo] [SSN_hi] 00 00

يفشل عندما تُستبدل البايتات الأولى من الـ stub بواسطة خطاف EDR.

Halo's Gate

يوسّع Hell's Gate: عندما يكون الـ stub مربوطًا (hooked)، يفحص الـ stubs المجاورة (±8) في قائمة التصدير المرتبة ويستنتج الـ SSN عبر حساب الإزاحة ±.

Tartarus' Gate

يوسّع Halo's Gate ليكتشف جميع أنماط خطافات EDR:

  • E9 xx xx xx xx — قفزة نسبية قريبة
  • FF 25 xx xx xx xx — قفزة مطلقة بعيدة عبر الذاكرة
  • EB xx — قفزة قصيرة
  • CC — نقطة توقف int3
  • E8 xx xx xx xx — استدعاء (نادر)

يفحص حتى 16 جارًا في الاتجاهين.

SyscallsFromDisk (يتجاوز جميع الخطافات)

يعيّن نسخة نظيفة تمامًا من ntdll من \KnownDlls\ntdll.dll ويقرأ SSNs من قسم .text النقي. خطافات EDR غير ذات صلة — لا نقرأ أبدًا من النسخة المربوطة.

RecycledGate (الأكثر مرونة)

يجمع بين FreshyCalls و Hell's Gate لتحقيق أقصى ثقة:

  • الأساسي: فهرس مرتب حسب VA (FreshyCalls)
  • التحقق: فحص مشترك للـ opcode إذا كان الـ stub نظيفًا
  • الاحتياط: الثقة بترتيب VA إذا كان الـ stub مربوطًا

حتى إذا عدّل EDR كلاً من الخطافات ومدخلات جدول التصدير، فإن ترتيب VA لا يزال يوفر SSN الصحيح.

HW Breakpoint (متقدم)

يستخدم سجلات تصحيح أخطاء وحدة المعالجة المركزية (DR0–DR3) لتعيين نقاط توقف أجهزة على تعليمات syscall داخل ntdll. يلتقط معالج الاستثناءات المتجهة (VEH) نقطة التوقف ويقرأ SSN من EAX عند تلك النقطة. لا يقرأ أي بايتات يحتمل أن يكون قد عبث بها.


طرق الاستدعاء

المضمّنة — استدعاء مباشر

يعيش syscall داخل الـ stub الخاص بك. عند دخول النواة، تشير RIP إلى داخل PE الخاص بك — وهو أمر يمكن اكتشافه بواسطة EDRs التي تتحقق من RIP غير القادم من ntdll.

غير مباشرة

يقفز إلى أداة (gadget) syscall;ret موجودة مسبقًا داخل ntdll.dll. عند دخول النواة، يظهر RIP كما لو كان داخل ntdll — مطابقًا لاستدعاء API شرعي.

غير مباشرة عشوائية

مثل غير المباشرة، لكنها تختار أداة عشوائية من مجموعة تصل إلى 64 في كل استدعاء. تهزم استدلالات EDR التي تضع قائمة بيضاء لعناوين أدوات ntdll محددة. تستخدم RDTSC للإنتروبيا — لا حاجة لاستدعاء API.```asm SW4_NtAllocateVirtualMemory PROC mov r10, rcx ; arg1 → r10 (syscall ABI) mov r11, rdx ; SAVE rdx — rdtsc trashes edx! rdtsc ; eax:edx = TSC (clobbers edx) xor eax, edx ; mix and eax, 63 ; pool index (0..63) lea rcx, [SW4_GadgetPool] mov rcx, QWORD PTR [rcx + rax8] ; random gadget mov rdx, r11 ; RESTORE rdx mov eax, DWORD PTR [SW4_SsnTable + N4] jmp rcx ; → random ntdll syscall;ret SW4_NtAllocateVirtualMemory ENDP

root@kitploit:~
### البحث عن البيضة
تحتوي الـ Stubs على علامة بيضة عشوائية من 8 بايت بدلاً من `syscall`. تقوم الدالة `SW4_HatchEggs()` بفحص مقطع `.text` عند بدء التشغيل واستبدال كل بيضة بـ `0F 05 90 90 90 90 90 90`. **لا يظهر أي opcode خاص بـ `syscall` في الملف الثنائي على القرص.**

---

## مشهد كشف EDR

| ناقل الكشف | المدمج | غير المباشر | العشوائي | البيضة |
|---|:-:|:-:|:-:|:-:|
| تجاوز خطافات وضع المستخدم | ✅ | ✅ | ✅ | ✅ |
| RIP داخل ntdll عند syscall | ❌ | ✅ | ✅ | ❌ |
| لا يوجد `0F 05` في الملف الثنائي على القرص | ✅¹ | ✅ | ✅ | **✅** |
| gadget عشوائي لكل استدعاء | ❌ | ❌ | **✅** | ❌ |
| مكدس استدعاء نظيف | with `--stack-spoof` | with `--stack-spoof` | with `--stack-spoof` | with `--stack-spoof` |
| تجنّب فحص الذاكرة أثناء السكون | with `--sleep-encrypt` | with `--sleep-encrypt` | with `--sleep-encrypt` | with `--sleep-encrypt` |
| تجاوز ETW-Ti على مستوى النواة | ❌ | ❌ | ❌ | ❌ |

¹ الأوبكود `syscall` موجود في مقطع `.text` الخاص بـ PE الخاص بك — على عنوان الكود الخاص بك، وليس ntdll.

> **ETW-Ti** (`Microsoft-Windows-Threat-Intelligence`) يشتعل داخل النواة بغض النظر عن طريقة الاستدعاء. لا يمكن لأي تقنية في وضع المستخدم تجاوزه دون الوصول إلى النواة.

---

## غوص عميق في تقنيات التهرب

### جدول SSN المشفّر بـ XOR (`--encrypt-ssn`)
يتم تخزين قيم SSN بشكل XOR مع مفتاح عشوائي وقت الترجمة. يتم فك تشفيرها في كعب ASM مباشرة قبل syscall — لا يظهر أي SSN نصي صريح في الملف الثنائي عند التخزين.```c
#define SW4_XOR_KEY  0xDEADF00DU
// In SSN table: encrypted value
SW4_SsnTable[fi] = sortedIndex ^ SW4_XOR_KEY;
root@kitploit:~
; In stub: decrypt before syscall
mov eax, DWORD PTR [SW4_SsnTable + N*4]  ; encrypted
xor eax, SW4_XOR_KEY                      ; decrypt
syscall

انتحال مكدس الاستدعاءات (--stack-spoof)

ترامبولين يستبدل عنوان الإرجاع الظاهر على المكدس بمؤشر إلى ntdll، مما يجعل سلسلة الاستدعاءات تبدو مشروعة لأدوات EDR التي تتنقل عبر المكدس.```asm SW4_CallWithSpoofedStack PROC pop r11 ; save real return address push [SW4_SpoofReturnAddr] ; push ntdll address instead push r11 ; real address below (unreachable by walker) jmp rax ; execute target SW4_CallWithSpoofedStack ENDP

root@kitploit:~
### تجاوز ETW (`--etw-bypass`)
يقوم بتصحيح `ntdll!EtwEventWrite` لإرجاع `STATUS_ACCESS_DENIED` فورًا، مما يمنع تسليم أحداث ETW في وضع المستخدم.

> هذا **لا** يتجاوز استدعاءات ETW-Ti في وضع النواة. استخدمه فقط في الاختبارات المصرح بها.

### إزالة خطاف ntdll (`--unhook-ntdll`)
يقوم بتعيين نسخة نظيفة من ntdll من `\KnownDlls\` وينسخ عبر `memcpy` قسم `.text` النظيف فوق القسم المُخطَّف:```
Flow: NtOpenSection → NtMapViewOfSection → FindSection(".text") →
      VirtualProtect(RWX) → memcpy(clean→hooked) → VirtualProtect(RX) → cleanup

استدعِ قبل SW4_Initialize() لضمان أن حلّ SSN يقرأ stubs نظيفة.

تعليمات الحشو (--obfuscate)

14 متغيرًا مختلفًا من تعليمات x64 غير الضارة تُحقن بين تعليمات stubs:```asm nop ; classic NOP xchg ax, ax ; 2-byte NOP lea r11, [r11] ; no-op LEA nop DWORD PTR [rax] ; multi-byte NOP xchg r11, r11 ; register swap (no-op) test r11d, 0ABh ; flags-only, result discarded push 042h / pop r11 ; push-pop noise fnop ; FPU no-op lea rsp, [rsp + 00h] ; stack identity LEA ; ... and more

root@kitploit:~
---

## الوظائف المدعومة (64)```bash
python syswhispers.py --list-functions

الإعدادات المسبقة


الإعدادات الموصى بها

أقل بصمة اكتشاف (الفريق الأحمر)```bash

python syswhispers.py --preset stealth
--method randomized --resolve recycled
--obfuscate --encrypt-ssn --stack-spoof
--unhook-ntdll --etw-bypass --amsi-bypass
--anti-debug --sleep-encrypt

root@kitploit:~
### سريع وبسيط (CTF / اختبار سريع)```bash
python syswhispers.py --preset common

تجاوز أنظمة EDR شديدة الربط```bash

python syswhispers.py --preset injection
--method indirect --resolve from_disk
--unhook-ntdll --encrypt-ssn

root@kitploit:~
### Process Doppelganging```bash
python syswhispers.py --preset transaction \
    --method indirect --resolve freshycalls

تغطية جدول استدعاءات النظام

تم التحديث عبر scripts/update_syscall_table.py من j00ru/windows-syscalls:

نظام التشغيلالإصدارات المغطاة
Windows 7SP1 (7601)
Windows 8 / 8.1RTM (9200, 9600)

دعم البنى


هيكل المشروع```

SysWhispers4/ ├── syswhispers.py # CLI entry point ├── core/ │ ├── models.py # Enums, dataclasses (8 resolution, 4 invocation methods) │ ├── generator.py # Code generation engine (~1900 lines) │ ├── obfuscator.py # Obfuscation: junk, eggs, XOR, string encryption │ └── utils.py # Hashes (DJB2, CRC32, FNV-1a), data loading ├── data/ │ ├── prototypes.json # 64 NT function signatures │ ├── presets.json # 8 function presets │ ├── syscalls_nt_x64.json # x64 SSN table (Win7–Win11 24H2) │ └── syscalls_nt_x86.json # x86 SSN table ├── scripts/ │ └── update_syscall_table.py # Auto-fetch latest j00ru table └── examples/ └── example_injection.c # Reference integration example

root@kitploit:~
---

## إشعار أمني

SysWhispers4 هو أداة أبحاث أمنية واختبار اختراق مصرح به. استخدمها فقط:

- على الأنظمة التي تملكها أو لديك إذن كتابي صريح لاختبارها
- في مسابقات CTF
- للبحث الدفاعي (فهم التقنيات الهجومية لتحسين الاكتشاف)
- لتطوير توقيعات منتجات الأمن

الاستخدام غير المصرح به ضد أنظمة لا تملكها غير قانوني في معظم البلدان.

---

## المراجع والإسناد

| المورد | المؤلف(ون) |
|---|---|
| [SysWhispers](https://github.com/jthuraisamy/SysWhispers) | Jackson T. (jthuraisamy) |
| [SysWhispers2](https://github.com/jthuraisamy/SysWhispers2) | Jackson T. (jthuraisamy) |
| [SysWhispers3](https://github.com/klezVirus/SysWhispers3) | klezVirus |
| [SysWhispers3 fork](https://github.com/RWXstoned/SysWhispers3) | RWXstoned |
| [Windows Syscall Tables](https://github.com/j00ru/windows-syscalls) | j00ru |
| [Hell's Gate](https://github.com/am0nsec/HellsGate) | am0nsec, RtlMclovin |
| [Halo's Gate](https://sektor7.net) | SEKTOR7 |
| [Tartarus' Gate](https://github.com/trickster0/TartarusGate) | trickster0 |
| [FreshyCalls](https://github.com/crummie5/FreshyCalls) | crummie5 |
| [RecycledGate](https://github.com/thefLink/RecycledGate) | thefLink |
| [Ekko Sleep Obfuscation](https://github.com/Cracked5pider/Ekko) | C5pider |
| [LayeredSyscall](https://whiteknightlabs.com/2024/07/31/layeredsyscall-abusing-veh-to-bypass-edrs/) | White Knight Labs |
| [Call Stack Spoofing](https://labs.withsecure.com/publications/spoofing-call-stacks-to-confuse-edrs) | WithSecure Labs |
| [SysWhispers Evolution Analysis](https://sudosiddharths.medium.com/analyzing-the-evolution-and-execution-of-syswhispers-1-3-74cbbcdaf397) | Siddharth S. |

---

## الترخيص

تم إصدار هذا المشروع لأغراض تعليمية واختبارات أمنية مصرح بها.
تنزيل الأداة
❌
❌
جزئي†
✅ مُصحَّح
Egg hunt (لا يوجد 0F 05 ثابت على القرص)❌❌✅✅
البنية
x64✅✅✅✅
x86 (sysenter 32-بت)❌❌✅✅
WoW64 (Heaven's Gate)❌❌✅✅
ARM64 (SVC #0, w8)❌❌❌✅ جديد
دعم المترجمات
MSVC (MASM)✅✅✅✅
MinGW / GCC (GAS inline)❌❌✅✅
Clang (GAS inline)❌❌✅✅
التهرب / التعتيم
تجزئة أسماء الدوال❌✅✅✅ (DJB2)
عشوائية ترتيب الـ stubs❌❌❌✅ جديد
حقن تعليمات الحشو (14 صيغة)❌❌❌✅ جديد
رقم SSN مشفّر بـ XOR عند التخزين❌❌❌✅ جديد
مجمع gadgets (حتى 64 gadget)❌❌❌✅ جديد
مساعد انتحال مكدس الاستدعاءات❌❌❌✅ جديد
تجاوز ETW في وضع المستخدم❌❌❌✅ جديد
تجاوز AMSI❌❌❌✅ جديد
إزالة خطافات ntdll (إعادة تخطيط من KnownDlls)❌❌❌✅ جديد
مكافحة التصحيح (6 فحوصات)❌❌❌✅ جديد
تشفير النوم (نمط Ekko)❌❌❌✅ جديد
جدول استدعاءات النظام
Windows XP ← Win10 20H2✅✅✅✅
Windows 11 21H2–24H2❌❌جزئي✅ كامل
Windows Server 2022/2025❌❌❌✅ جديد
تحديث تلقائي من j00ru❌❌❌✅ جديد
الأداة
دوال NT المدعومة~12~12~3564
إصدار Python2/3333.10+
تلميحات الأنواع❌❌جزئي✅ كامل
الفئةالوظائف
الذاكرةNtAllocateVirtualMemory · NtAllocateVirtualMemoryEx · NtFreeVirtualMemory · NtWriteVirtualMemory · NtReadVirtualMemory · NtProtectVirtualMemory · NtQueryVirtualMemory · NtSetInformationVirtualMemory
القسم/التعيينNtCreateSection · NtOpenSection · NtMapViewOfSection · NtUnmapViewOfSection
العمليةNtOpenProcess · NtCreateProcess · NtCreateProcessEx · NtCreateUserProcess · NtTerminateProcess · NtSuspendProcess · NtResumeProcess · NtQueryInformationProcess · NtSetInformationProcess
الخيطNtCreateThreadEx · NtOpenThread · NtTerminateThread · NtSuspendThread · NtResumeThread · NtGetContextThread · NtSetContextThread · NtQueueApcThread · NtQueueApcThreadEx · NtQueryInformationThread · NtSetInformationThread · NtAlertThread · NtAlertResumeThread · NtTestAlert
المقبض/المزامنةNtClose · NtDuplicateObject · NtWaitForSingleObject · NtWaitForMultipleObjects · NtSignalAndWaitForSingleObject · NtCreateEvent · NtSetEvent · NtResetEvent · NtCreateTimer · NtSetTimer
الملفNtCreateFile · NtOpenFile · NtWriteFile · NtReadFile · NtDeleteFile
التوكنNtOpenProcessToken · NtOpenThreadToken · NtQueryInformationToken · NtAdjustPrivilegesToken · NtDuplicateToken · NtImpersonateThread
المعاملةNtCreateTransaction · NtRollbackTransaction · NtCommitTransaction
متنوعNtDelayExecution · NtQuerySystemInformation · NtQueryObject · NtFlushInstructionCache · NtContinue
الإعداد المسبقالوظائفحالة الاستخدام
common25عمليات عامة للعملية/الخيط/الذاكرة
injection20حقن شيل كود، حقن APC، تعيين الأقسام
evasion15التهرب من AV/EDR، استعلام العمليات، التلاعب بالذاكرة
token6التلاعب بالتوكن، الانتحال، تصعيد الامتيازات
stealth32أقصى تهرب: حقن + تهرب + دعم إزالة الخطافات
file_ops7إدخال/إخراج الملفات عبر استدعاءات نظام NT
transaction7انتحال العملية / تراجع المعاملة
all64جميع الوظائف المدعومة
Windows 10
1507 → 22H2 (10240 → 19045، 14 إصدارًا)
Windows 1121H2 → 24H2 (22000 → 26100، 4 إصدارات)
Windows Server2022 (20348)، 2025 (26100)
البنيةتعليمة استدعاء النظامسجل SSNالطرق المدعومة
x64syscalleaxالكل (مضمّن، غير مباشر، عشوائي، egg)
x86sysentereaxمضمّن + Egg
WoW64syscall (64-بت)eaxالكل (كعوب x64 من PE 32-بت)
ARM64svc #0w8مضمّن