Skip to content
KitploitKITPLOIT
ToolsBlog
Log in
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
IKEV2-POC — IKEv2, ikeext.dll, CVE-2026-33824, Doppel-Freigabe, Heap-Grooming, ROP, SKF-Fragmentierung, Windows-Exploit, Anti-Debug, Verschleierung, API-Hooking, Shellcode, Reverse-Shell | Kitploit
Tools/GitHubGitHub/epsilonpointori/ikev2-poc
Exploit-FrameworksReverse EngineeringShellcodeCommand and ControlPayload-EntwicklungBinary-Exploitation
GitHubepsilonpointori/ikev2-poc

IKEV2-POC

IKEv2, ikeext.dll, CVE-2026-33824, Doppel-Freigabe, Heap-Grooming, ROP, SKF-Fragmentierung, Windows-Exploit, Anti-Debug, Verschleierung, API-Hooking, Shellcode, Reverse-Shell

Repository anzeigen
4117vor 3 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

EpSiLoNPoInTIkEv2.cpp

⚠️ Projekt befindet sich in der Abschlussphase. Im aktuellen Zustand NICHT voll funktionsfähig.


Beschreibung

EpSiLoNPoInTIkEv2.cpp ist ein C/C++-Exploit-Prototyp für Windows, der auf einer Ausnutzung vom Typ double-free in ikeext.dll (IKEv2-Treiber von Windows) basiert, die in der laufenden Forschung als CVE-2026-33824 referenziert wird.

Das Projekt umfasst:

  • Eine vollständige Obfuskationsschicht (virtuelle Maschine, Kontrollflussverschleierung, Stringverstecken, falsche Binärsignaturen, Inline-ASM-Anti-Analyse).
  • Eine vollständige IKEv2-Exploit-Engine (Paketkonstruktion, SKF-Fragmentierung, Multi-Thread-Heap-Grooming, ROP-Chain, beliebige Lese-/Schreibprimitive).
  • Mechanismen zur Umgehung von Windows Defender, AMSI und ETW.
  • Einen integrierten Reverse-Shell-Listener auf Port 4444.
  • Eine teilweise GUI (ListView, ComboBox, Statusleiste) zur Inspektion verdächtiger Speicherbereiche.

Code-Architektur

1. Obfuskationsschicht (EpSi_OBF_ENDL / inspiriert von obfusheader)

Der Code verwendet eine schwere Obfuskationsschicht, die zur Kompilierzeit über #define EpSi_OBF_ENDL aktiviert wird. Basiert auf obfusheader.h, angepasst und erweitert.

Falsche Binärsignaturen (FAKE_SIGNS == 1)

Benutzerdefinierte PE-Abschnitte werden in die Binärdatei injiziert, um Scanner bekannter Schützer zu täuschen:

  • .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), etc.
  • Codierte Strings, die Enigma imitieren (0x45,0x6e,0x69,...), Denuvo (0x64,0x65,0x6E,...).
  • Array FAKE_DONGLE[], das Hardware-Dongles imitiert: skeydrv.dll, HASPDOSDRV, MARXDEV1.SYS, WIBUKEY, SNTNLUSB, RNBOspro, etc.

Arithmetische virtuelle Maschine (VIRT == 1)

Alle arithmetischen und logischen Operationen können in eine interne VM umgeleitet werden (Obfh_VirtualMachine):

  • Die Opcodes (OP__ADD, OP__SUB, ..., OP__NOP) werden zur Kompilierzeit zufällig über __COUNTER__ und RND() generiert.
  • Jeder Opcode ist verschlüsselt: _VM_ENCRYPT_INT(value) = (value - _VM_MUTATOR_KEY) * ~SALT_CMD.
  • Die Operanden werden gesalzen, invertiert (* -1) und mit Junk-Werten übergeben.
  • Die VM selbst ist übersät mit goto, falschen negativen cases, BREAK_STACK_* (Inline-ASM xor; jz; .byte 0xE8; cpuid), falschen JMPs (.byte 0xFF, 0x25) und Blöcken von falschem x86_64-Code, um Dekompilierer zu täuschen.
  • Verfügbare Makros: 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, etc.

Verschleierter Kontrollfluss (NO_CFLOW != 1)

  • #define if(cond): jedes if injiziert einen __s_rdtsc()-Aufruf und einen toten BAD_CALL.
  • #define else: injiziert ein totes else if (0) { BAD_CALL; } vor dem echten else.
  • #define while(...): konditioniert durch __s_rdtsc() != 0.1 und eine absurde Zeigerprüfung.
  • #define for(...): konditioniert durch OBFUS_CONDITION_BLOCK.
  • #define switch(...): konditioniert durch OBFUS_CONDITION_BLOCK.
  • #define break: injiziert if (OBFUS_CONDITION_BLOCK) BREAK_STACK_1 vor jedem break.

Stringverstecken (HIDE_STRING)

  • STACK_STRING(str): legt den String über ein Compound-Literal auf den Stack.
  • HIDE_STRING(str): kombiniert obfh_process_hidden_string() + __s_rdtsc() mit einem toten BAD_JMP, um den String in der Binärdatei zu verstecken.

API-Proxies (vollständige dynamische Auflösung)

Alle CRT- und Win32-Funktionen werden umgeleitet:

  • CRT über dynamisches 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 über Wrapper obfh_int_proxy() auf allen Parametern: 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 ersetzt durch GetProcAddress_custom: manuelle Durchlaufen des IMAGE_EXPORT_DIRECTORY (Parse PE: e_lfanew, IMAGE_NT_HEADERS, IMAGE_DIRECTORY_ENTRY_EXPORT, AddressOfFunctions, AddressOfNames, AddressOfNameOrdinals).
  • LoadLibraryA obfuskiert in einer Kette von 6 verschachtelten Wrappern (LoadLibraryA_0 bis LoadLibraryA_proxy), mit Rekonstruktion des DLL-Namens Zeichen für Zeichen über die volatilen Variablen _k, _e, _r, _n, _e, _l und sprintf.

Anti-Debug (ANTI_DEBUG_V2 == 1)

  • Dedizierter Thread (ThreadCompareDRs): SuspendThread auf dem Hauptthread, GetThreadContext mit CONTEXT_DEBUG_REGISTERS, Überprüfung von Dr0–Dr3, Dr7, Zeroing via ad_ZeroDRs.
  • IsDebuggerPresent_proxy lädt kernel32.dll dynamisch, rekonstruiert den Funktionsnamen IsDebuggerPresent Zeichen für Zeichen über die volatilen Variablen (_I, _s, _D, _e, _b, _u, _g, _g, _e, _r, _P, _r, _e, _s, _e, _n, _t), Aufruf über GetProcAddress.
  • Makro ANTI_DEBUG: doppelte Prüfung IsDebuggerPresent() || IsDebuggerPresent_proxy(), löst loop() (Endlosschleife) aus, .byte 0xED (privilegiertes IN), BREAK_STACK_1, ret-ASM, dann crash() (int $3 + .byte 0xED, 0x00).

BREAK_STACK-Makros (Stack-Analyse-Anti)

9 Varianten von Inline-ASM-Sequenzen, die in sensible Funktionen eingefügt werden: xor; jz; .byte 0xE8; cpuid (Variationen auf eax, ebx, edx), falsche Opcodes 0x50, 0x20, 0x00, 0xEB, 0xE1 (x86), 0xFF, 0x25, 0xF1, 0xF2, 0xF3, 0xF4 (x86_64).


2. IKEv2-Engine / Exploit

Abhängigkeiten

#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")

Exploit-Konstanten

  • Ziel: IKEEXT_BASE_ADDRESS = 0x180000000
  • Double-Free-Offset: g_IkeextDoubleFreeOffset = 0x12B960
  • Handler-Payload IKE: g_IkeextProcessIkePayload = 0x52220
  • PE-Verzeichnisse von ikeext: Export (0x1790A0), Import (0x179110), Exception (0x183000), Relocation (0x18C000), LoadConfig (0x12AE70), Debug (0x155CD0).
  • Offsets interner Strukturen: g_Offset_MMSA_SecurityRealmBlob = 0x208, g_Offset_PacketContext_Blob = 0xC8.
  • IKEv2-Port: 500 (UDP), Shell-Callback: 4444.

Definierte IKEv2-Strukturen

IKE_HEADER, IKE_SA_PAYLOAD, IKE_PROPOSAL_PAYLOAD, IKE_TRANSFORM_PAYLOAD, IKE_NONCE_PAYLOAD (32 Byte Nonce), IKE_KEY_EXCHANGE_PAYLOAD (DH 256 Byte), IKE_NOTIFY_PAYLOAD, IKE_VENDOR_ID_PAYLOAD, IKE_SKF_FRAGMENT_PAYLOAD.

Konfigurierte Transforms: AES-CBC-128 (12), PRF HMAC-SHA2-256 (5), INTEG HMAC-SHA2-256-128 (12), DH MODP-2048 (14).

Benutzerdefinierte DDoS-Strukturen

  • IKE_DDOS_AMPLIFIER_PAYLOAD: Verstärkungsfaktor + 64 Byte Trigger.
  • IKE_DDOS_LOOP_PAYLOAD: Schleifenzähler + 32 Byte Loop-Code.
  • IKE_DDOS_MEMORY_PAYLOAD: Größe/Anzahl Allokation + 64 Byte Heap-Spray-Daten.
Tool herunterladen