Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/epsilonpointori/ikev2-poc
أطر الاستغلالالهندسة العكسيةشيل كودالقيادة والسيطرةتطوير الحمولاتاستغلال الملفات الثنائية
GitHubepsilonpointori/ikev2-poc

IKEV2-POC

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

عرض المستودع
4117منذ 3 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

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, logicoma, __wibu00, __wibu01, PETETRIS, .tw, .rdata (Nuitka)، .text (Screen2Exe)، إلخ.
  • سلاسل مشفرة تحاكي Enigma (0x45,0x6e,0x69,...)، وDenuvo (0x64,0x65,0x6E,...).
  • مصفوفة FAKE_DONGLE[] تحاكي وحدات حماية مادية (dongles): skeydrv.dll, HASPDOSDRV, MARXDEV1.SYS, WIBUKEY, SNTNLUSB, RNBOspro، إلخ.

آلة حسابية افتراضية (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, 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، إلخ.

تدفق تحكم مشوَّش (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: يحقن if (OBFUS_CONDITION_BLOCK) BREAK_STACK_1 قبل كل 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, 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.

مضاد التصحيح (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: فحص مزدوج IsDebuggerPresent() || IsDebuggerPresent_proxy()، يطلق loop() (حلقة لا نهائية)، و.byte 0xED (تعليمة IN ذات الامتياز)، وBREAK_STACK_1، وret بلغة ASM، ثم crash() (int $3 + .byte 0xED, 0x00).

وحدات ماكرو 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 / الاستغلال

التبعيات

#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, sub_rsp, stack_pivot. مصفوفة من 512 أداة (rop_chain[MAX_ROP_CHAIN_SIZE]).

تنزيل الأداة