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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
IKEV2-POC — IKEv2، ikeext.dll، CVE-2026-33824، تحرير مزدوج، تهيئة الكومة، ROP، تجزئة SKF، استغلال ثغرات Windows، مكافحة التنقيح، التعتيم، خطاف API، شيل كود، قشرة عكسية | Kitploit
أدوات/GitHubGitHub/epsilonpointori/ikev2-poc
أطر الاستغلالالهندسة العكسيةشيل كودالقيادة والسيطرةتطوير الحمولاتاستغلال الملفات الثنائية
GitHubepsilonpointori/ikev2-poc

IKEV2-POC

IKEv2، ikeext.dll، CVE-2026-33824، تحرير مزدوج، تهيئة الكومة، ROP، تجزئة SKF، استغلال ثغرات Windows، مكافحة التنقيح، التعتيم، خطاف API، شيل كود، قشرة عكسية

عرض المستودع
41منذ شهر واحدلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

EpSiLoNPoInTIkEv2.cpp

⚠️ المشروع قيد الإكمال. غير كامل الوظائف في حالته الحالية.


الوصف

EpSiLoNPoInTIkEv2.cpp هو نموذج أولي لاستغلال (exploit) بلغة C/C++ يستهدف نظام Windows، طُوّر حول استغلال من نوع double-free في ikeext.dll (برنامج تشغيل IKEv2 في Windows)، وهو مُدرج قيد البحث تحت CVE-2026-33824.

يجمع المشروع ما يلي:

  • طبقة تشويش كاملة (آلة افتراضية، تشويش تدفق التحكم، إخفاء السلاسل، توقيعات ثنائية مزيفة، تعليمات ASM مضمّنة مضادة للتحليل).
  • محرك استغلال IKEv2 كامل (بناء الحزم، تجزئة SKF، تهيئة الكومة (heap grooming) متعددة الخيوط، سلسلة ROP، بدائيات قراءة/كتابة عشوائية).
  • آليات لتجاوز Windows Defender وAMSI وETW.
  • مستمع شل عكسي مدمج على المنفذ 4444.
  • واجهة رسومية جزئية (ListView, ComboBox, شريط حالة) لفحص مناطق الذاكرة المشبوهة.

بنية الكود

1. طبقة التشويش (EpSi_OBF_ENDL / obfusheader المستوحى)

يستخدم الكود طبقة تشويش ثقيلة تُفعَّل عند الترجمة عبر #define EpSi_OBF_ENDL. استنادًا إلى obfusheader.h، مع تعديله وتوسيعه.

توقيعات ثنائية مزيفة (FAKE_SIGNS == 1)

يتم حقن أقسام PE مخصصة في الملف الثنائي لخداع ماسحات أدوات الحماية المعروفة:

  • .vmp0, .vmp1, .vmp2 → VMProtect
  • UPX0 → UPX
  • .enigma1, .enigma2 → Enigma Protector
  • .winlice → Themida
  • .petite, .aspack, .adata, .rlp, .vlizer, .arch, .alien, .pwdprot, .dsstext, , , , , , (Nuitka)، (Screen2Exe)، إلخ.

آلة حسابية افتراضية (VIRT == 1)

يمكن توجيه جميع العمليات الحسابية والمنطقية إلى آلة افتراضية داخلية (Obfh_VirtualMachine):

  • تُولَّد رموز العمليات (opcodes) (OP__ADD, OP__SUB, ..., OP__NOP) عشوائيًا وقت الترجمة عبر __COUNTER__ وRND().
  • كل رمز عملية مشفَّر: _VM_ENCRYPT_INT(value) = (value - _VM_MUTATOR_KEY) * ~SALT_CMD.
  • المُعامَلات (operands) تُملَّح، وتُعكَس (* -1)، وتُمرَّر مع قيم غير ذات معنى (junk values).
  • الآلة الافتراضية نفسها محشوة بـgoto، وحالات case سالبة مزيفة، وBREAK_STACK_* (تعليمات ASM مضمّنة xor; jz; .byte 0xE8; cpuid)، وقفزات JMP مزيفة (.byte 0xFF, 0x25) وكتل من كود x86_64 مزيف لخداع مفككات الكود (decompilers).
  • وحدات ماكرو مكشوفة: VM_ADD, , , , , , , , , , , , , ، إلخ.

تدفق تحكم مشوَّش (NO_CFLOW != 1)

  • #define if(cond): كل if يحقن استدعاءً لـ__s_rdtsc() وBAD_CALL ميتًا.
  • #define else: يحقن else if (0) { BAD_CALL; } ميتًا قبل else الحقيقي.
  • #define while(...): مقيَّد بـ__s_rdtsc() != 0.1 وفحص مؤشر عبثي.
  • #define for(...): مقيَّد بـOBFUS_CONDITION_BLOCK.
  • #define switch(...): مقيَّد بـOBFUS_CONDITION_BLOCK.
  • #define break: يحقن قبل كل .

إخفاء السلاسل (HIDE_STRING)

  • STACK_STRING(str): يدفع السلسلة إلى المكدس عبر compound literal.
  • HIDE_STRING(str): يجمع بين obfh_process_hidden_string() و__s_rdtsc() مع BAD_JMP ميت لإخفاء السلسلة داخل الملف الثنائي.

وسطاء API (حل ديناميكي كامل)

جميع دوال CRT وWin32 معاد توجيهها:

  • CRT عبر GetProcAddress(LoadLibraryA("msvcrt"), ...) ديناميكي: printf, scanf, sprintf, strlen, strcmp, strcpy, strtok, memset, memcpy, strchr, strrchr, rand, realloc, calloc, , , , , , , , , , , , , , , .

مضاد التصحيح (ANTI_DEBUG_V2 == 1)

  • خيط مخصص (ThreadCompareDRs): SuspendThread على الخيط الرئيسي، وGetThreadContext مع CONTEXT_DEBUG_REGISTERS، والتحقق من Dr0–Dr3 وDr7، وتصفيرها عبر ad_ZeroDRs.
  • IsDebuggerPresent_proxy: يُحمِّل kernel32.dll ديناميكيًا، ويعيد بناء اسم الدالة IsDebuggerPresent حرفًا بحرف عبر المتغيرات المتطايرة (_I, _s, _D, _e, _b, _u, _g, _g, _e, _r, _P, _r, _e, _s, _e, _n, _t)، ويستدعيها عبر GetProcAddress.
  • ماكرو ANTI_DEBUG: فحص مزدوج ، يطلق (حلقة لا نهائية)، و (تعليمة IN ذات الامتياز)، و، و بلغة ASM، ثم ( + ).

وحدات ماكرو BREAK_STACK (مضادة لتحليل المكدس)

9 متغيرات من تسلسلات ASM المضمّنة تُدرج في الدوال الحساسة: xor; jz; .byte 0xE8; cpuid (تنويعات على eax, ebx, edx)، وأكواد عمليات مزيفة 0x50, 0x20, 0x00, 0xEB, 0xE1 (x86)، و0xFF, 0x25, 0xF1, 0xF2, 0xF3, 0xF4 (x86_64).


2. محرك IKEv2 / الاستغلال

التبعيات

root@kitploit:~
#include "runassys/ntnative.h"
#include "runassys/runassys.h"
#include "runassys/ntdll-stubs/ntdll-stubs.c"
#include "runassys/ntdll-stubs/ntdll.def.c"
#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "iphlpapi.lib")
#pragma comment(lib, "bcrypt.lib")
#pragma comment(lib, "Version.lib")

ثوابت الاستغلال

  • الهدف: IKEEXT_BASE_ADDRESS = 0x180000000
  • إزاحة double free: g_IkeextDoubleFreeOffset = 0x12B960
  • معالج حمولة IKE: g_IkeextProcessIkePayload = 0x52220
  • أدلة PE في ikeext: Export (0x1790A0)، Import (0x179110)، Exception (0x183000), Reloc (0x18C000)، LoadConfig (0x12AE70)، Debug (0x155CD0).
  • إزاحات البنى الداخلية: g_Offset_MMSA_SecurityRealmBlob = 0x208, g_Offset_PacketContext_Blob = 0xC8.
  • منفذ IKEv2: 500 (UDP)، استدعاء الشل: 4444.

بنى IKEv2 المعرَّفة

IKE_HEADER, IKE_SA_PAYLOAD, IKE_PROPOSAL_PAYLOAD, IKE_TRANSFORM_PAYLOAD, IKE_NONCE_PAYLOAD (nonce من 32 بايت)، IKE_KEY_EXCHANGE_PAYLOAD (DH من 256 بايت)، IKE_NOTIFY_PAYLOAD, IKE_VENDOR_ID_PAYLOAD, IKE_SKF_FRAGMENT_PAYLOAD.

التحويلات المكوَّنة (Transforms): AES-CBC-128 (12)، PRF HMAC-SHA2-256 (5)، INTEG HMAC-SHA2-256-128 (12)، DH MODP-2048 (14).

بنى DDoS مخصصة

  • IKE_DDOS_AMPLIFIER_PAYLOAD: عامل تضخيم + 64 بايت trigger.
  • IKE_DDOS_LOOP_PAYLOAD: عدّاد حلقات + 32 بايت loop_code.
  • IKE_DDOS_MEMORY_PAYLOAD: حجم/عدد عمليات التخصيص + 64 بايت من بيانات heap spray.

تهيئة الكومة (Heap grooming)

  • HEAP_GROOM_CONTEXT: مقبض الكومة، العنوان المستهدف، الخيوط، stop_flag، allocated_chunks.
  • HEAP_GROOM_THREAD_PARAMS: حجم الكتلة، عدد التكرارات، thread_id، SRWLOCK، use_nt_allocate.
  • GROOM_CONFIG: thread_count، التكرارات، delay، chunk_size، الحد الأدنى/الأقصى للنسبة المئوية الحرة.
  • المعاملات: 4 خيوط، كتل بحجم 0x1000، 1000 تكرار، تجزئة بين 30–70%.

سلسلة ROP

بنية ROP_CHAIN كاملة مع جميع الأدوات (gadgets) اللازمة: pop_rax/rcx/rdx/r8/r9/rsp, mov_rax_rsp, mov_rcx_rsp, mov_rcx_rax, mov_rax_rcx, mov_rcx_rdx, xor_rax/rcx/rdx, jmp_rsp, call_rax, ret, virtual_protect, disable_cfg, disable_cet, add_rsp, , . مصفوفة من 512 أداة ().

ماسح أدوات ROP

جدول g_rop_patterns[] يضم ~50+ نمط توقيع بايت لتحديد موقع الأدوات داخل الوحدات: pop rax; ret, pop rcx; ret, pop rdx; ret, ..., mov [rcx], rax; ret, mov rax, [rcx]; ret, jmp rsp, VirtualProtect prologue, mov [gs:0x60], rax; ret, jmp [rax+0x58]; ret, lea rax, [rip+0x0]; jmp rax, add rsp, 0x28; ret, cmp rdx/r8/r9, 0x0; je/jne; ret، إلخ.

متغيرات الاستغلال العامة

root@kitploit:~
uint64_t g_KernelBase, g_IkeextBase, g_SystemEprocess;
uint64_t g_IkeextDoubleFreeOffset = 0x12B960;
uint64_t g_IkeextProcessIkePayload = 0x52220;
uint64_t g_PopRax, g_PopRcx, g_PopRdx, g_PopR8, g_PopR9, g_PopRsp;
uint64_t g_MovRaxRsp, g_JmpRsp, g_VirtualProtect, g_DisableCFG, g_StackPivot;
uint64_t g_NtoskrnlBase, g_Kernel32Base, g_NtdllBase, g_HeapBase, g_ShellcodeAddr;
SOCKET g_Socket; struct sockaddr_in g_Target;
EXPLOIT_CONTEXT g_ExploitCtx; ROP_CHAIN g_RopChain;
HEAP_GROOM_CONTEXT g_GroomContext;
MODULE_DATA g_Modules; ROP_GADGET g_Gadgets;
std::vector<SUSPICIOUS_REGION> g_Regions;

التدفق الرئيسي (main)

  1. InitializeCriticalSection, init_debug_info.
  2. is_hostile_environment() → الخروج إذا تم اكتشاف بيئة معزولة/آلة افتراضية.
  3. disable_amsi(), disable_defender(), disable_etw(), patch_etw().
  4. start_shell_listener() → مستمع شل عكسي على المنفذ 4444.
  5. تحليل argv[1] (عنوان IP الهدف) + argv[2] (المنفذ، الافتراضي 500).
  6. init_udp_socket() + inet_pton + test_target_reachability().
  7. بناء وإرسال حزم IKEv2 المجزأة (SKF، حتى حزمة).

الحالة الحالية

المشروع قيد الإكمال وغير كامل الوظائف.

  • بعض الدوال المشار إليها (disable_amsi, disable_defender, disable_etw, patch_etw, is_hostile_environment, test_target_reachability, start_shell_listener, stop_shell_listener, print_usage, init_debug_info) مُصرَّح عنها لكنها قد تكون غير مكتملة أو غائبة حسب حالة البناء.
  • إزاحات ikeext ثابتة ومخصصة لبناء Windows محدد بدقة. لا توجد آلية حل ديناميكي للإزاحات مكتملة بعد.
  • سلسلة ROP مبنية لكن وضع الشيلكود وتفعيله غير مدمجين بالكامل في الحالة الحالية.
  • بعض أجزاء الواجهة الرسومية (ListView, ComboBox, فحص المناطق) مدمجة جزئيًا.
  • قد لا يُترجَم المشروع بنجاح دون تعديلات على نظام البناء (build system)، وتبعيات runassys/ والمكتبات المرتبطة.

إخلاء المسؤولية

يحتوي هذا المستودع على نموذج أولي لأبحاث الأمن الهجومي يستهدف متجه استغلال شبكي منخفض المستوى (IKEv2/ikeext.dll، Windows).

استخدام هذا الكود مقيَّد تمامًا ببيئات الاختبار والبحث أو المختبرات حيث لديك إذن صريح.

يتنصل المؤلف من أي مسؤولية عن أي استخدام غير قانوني أو غير مصرح به أو ضار لهذا الكود. يُقدَّم الكود كما هو، دون أي ضمان للتشغيل أو الاستقرار أو خلوّه من التأثيرات غير المرغوبة.

المشروع لا يزال قيد الإكمال وغير كامل الوظائف في حالته الحالية.

تنزيل الأداة
logicoma
__wibu00
__wibu01
PETETRIS
.tw
.rdata
.text
  • سلاسل مشفرة تحاكي Enigma (0x45,0x6e,0x69,...)، وDenuvo (0x64,0x65,0x6E,...).
  • مصفوفة FAKE_DONGLE[] تحاكي وحدات حماية مادية (dongles): skeydrv.dll, HASPDOSDRV, MARXDEV1.SYS, WIBUKEY, SNTNLUSB, RNBOspro، إلخ.
  • VM_SUB
    VM_MUL
    VM_DIV
    VM_MOD
    VM_EQU
    VM_NEQ
    VM_LSS
    VM_GTR
    VM_LEQ
    VM_GEQ
    VM_OBF_INT
    VM_ADD_DBL
    VM_MUL_DBL
    if (OBFUS_CONDITION_BLOCK) BREAK_STACK_1
    break
    fopen
    fclose
    fread
    fwrite
    exit
    snprintf
    vsprintf
    vsnprintf
    getenv
    system
    abort
    atexit
    getcwd
    tolower
    toupper
  • Win32 عبر أغلفة obfh_int_proxy() على جميع المعاملات: CreateFile, ReadFile, WriteFile, CloseHandle, VirtualAlloc, VirtualFree, CreateThread, WaitForSingleObject, WaitForMultipleObjects, ExitProcess, GetModuleHandle, GetModuleFileName, HeapCreate, HeapAlloc, HeapFree, GlobalAlloc, GlobalFree, GetTempPath, SetEvent, ResetEvent, Sleep, memmove, GetParent, GetWindowRect, GetClientRect, SetWindowPos, SetConsoleTextAttribute, GetDesktopWindow, GetStockObject.
  • GetProcAddress مستبدل بـGetProcAddress_custom: اجتياز يدوي لـIMAGE_EXPORT_DIRECTORY (تحليل PE: e_lfanew, IMAGE_NT_HEADERS, IMAGE_DIRECTORY_ENTRY_EXPORT, AddressOfFunctions, AddressOfNames, AddressOfNameOrdinals).
  • LoadLibraryA مشوَّش في سلسلة من 6 أغلفة متداخلة (LoadLibraryA_0 إلى LoadLibraryA_proxy)، مع إعادة بناء اسم DLL حرفًا بحرف عبر المتغيرات المتطايرة _k, _e, _r, _n, _e, _l وsprintf.
  • IsDebuggerPresent() || IsDebuggerPresent_proxy()
    loop()
    .byte 0xED
    BREAK_STACK_1
    ret
    crash()
    int $3
    .byte 0xED, 0x00
    sub_rsp
    stack_pivot
    rop_chain[MAX_ROP_CHAIN_SIZE]
    SKF_FRAGMENTS + 1
  • إطلاق double free، تهيئة الكومة (heap grooming)، وضع الشيلكود، وتنفيذ سلسلة ROP.