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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
HWSyscalls — HWSyscalls is a new method to execute indirect syscalls using HWBP, HalosGate and a synthetic trampoline on kernel32 with HWBP. | Kitploit
أدوات/GitHubGitHub/dec0ne/hwsyscalls
IDS/IPS EvasionPost-ExploitationPenetration TestingRed TeamingPayload Development
GitHubdec0ne/hwsyscalls

HWSyscalls

HWSyscalls is a new method to execute indirect syscalls using HWBP, HalosGate and a synthetic trampoline on kernel32 with HWBP.

عرض المستودع
735107منذ 3 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

HWSyscalls

image image

المساهمون الرئيسيون

Dec0ne idov31

الوصف

HWSyscalls هي طريقة جديدة لتنفيذ استدعاءات النظام غير المباشرة (Indirect Syscalls) باستخدام 3 مكوّنات رئيسية:

  • نقاط توقف الأجهزة (Hardware Breakpoints) ومعالج الاستثناءات المتجه (Vectored Exception Handler) للتحكم في تدفق التنفيذ.

  • يُستخدم HalosGate للعثور على أرقام وعناوين استدعاءات النظام (Syscall Numbers).

  • إنشاء ترامبولين اصطناعي (Synthetic Trampoline) في kernel32 باستخدام نقاط توقف الأجهزة.

HWSyscalls مُقدَّمة كمكتبة سهلة التضمين يمكن إضافتها إلى أي مشروع يرغب في استخدام استدعاءات النظام غير المباشرة دون تفعيل اكتشافات EDRs أو مضادات الفيروسات القائمة على تقنيات كشف استدعاءات النظام غير المباشرة الحالية.

تُعد استدعاءات النظام غير المباشرة طريقة شائعة تُستخدم في أشكال مختلفة لاستدعاء دوال النظام من ntdll، ومع ذلك، فإن المشكلة الأساسية في استدعاء الدوال من ntdll تكمن في جوهرها: وصول غير طبيعي من البرنامج مباشرة إلى ntdll، دون المرور عبر أي dll سابق. تم بناء HWSyscalls على الفكرة الأساسية لاستدعاءات النظام غير المباشرة ولكن مع حل لهذه المشكلة من خلال الجمع بين وظيفة نقاط توقف الأجهزة لإنشاء الترامبولين الاصطناعي في kernel32 و HalosGate للحصول على أرقام SSNs.

للتسهيل، يبدو التدفق الطبيعي لاستدعاءات النظام غير المباشرة هكذا:

indirect_syscalls

بينما يبدو تدفقنا هكذا:

hwsyscalls_flow

تحديث

قمنا بتحديث منطق دالة HWSyscallExceptionHandler مع بعض الخدع المتعلقة بتلاعب المكدس (Stack Manipulation) لجعل المكدس قابلاً للتفكيك (Unwindable). فعلنا ذلك عن طريق استدعاء دالة NTAPI مباشرة (يتم الآن إرجاع عنوانها في دالة PrepareSyscall)، ثم الوصول إلى HWBP في دالة NTAPI، وإنشاء إطار مكدس جديد وتعيين عنوان الإرجاع لإطار المكدس الجديد إلى "ADD RSP, 68; RET" gadget موجود في kernel32 (أو kernelbase) مع نسخ وسائط المكدس أيضًا.

المكدس الآن قابل للتفكيك بالكامل ويعود فعليًا عبر kernel32 في طريقه من ntdll دون الحاجة إلى نقاط توقف أو تلاعب في تدفق التنفيذ من جانبنا:

hwsyscalls_stack

لمزيد من المعلومات، اطّلع على مقالنا في المدونة (قريبًا).

الاستخدام

لاستخدام المشروع، ستحتاج إلى تضمين HWSyscalls.h واستدعاء InitHWSyscalls للعثور على الـ gadgets المطلوبة وتهيئة معالج الاستثناءات. في نهاية تنفيذ برنامجك، قم باستدعاء DeinitHWSyscalls لإزالة معالج الاستثناءات.

root@kitploit:~
#include "HWSyscalls.h"

typedef NTSTATUS(WINAPI* NtOpenProcess_t)(
	OUT          PHANDLE            ProcessHandle,
	IN           ACCESS_MASK        DesiredAccess,
	IN           POBJECT_ATTRIBUTES ObjectAttributes,
	IN OPTIONAL  PCLIENT_ID         ClientId);

void main() {

    // Initialize the exception handler and find the required gadgets.
    if (!InitHWSyscalls())
        return;
    
    // ...

    // Execute your function!
    NtOpenProcess_t pNtOpenProcess = (NtOpenProcess_t)PrepareSyscall((char*)("NtOpenProcess"));
    NTSTATUS status = pNtOpenProcess(&targetHandle, PROCESS_ALL_ACCESS, &object, &clientID);

    // ...

    // Removing the exception handler.
    DeinitHWSyscalls();

}

يمكن تشغيل أو إيقاف مستوى تفصيل التصحيح (Debug Verbosity) عن طريق تغيير تعريف HWSYSCALLS_DEBUG في HWSyscalls.h

root@kitploit:~
#pragma once
#include <windows.h>
#include <inttypes.h>
#include <stdio.h>

#pragma region Defines

#define HWSYSCALLS_DEBUG 0 // 0 disable, 1 enable
#define UP -32
//...

الإعداد

لتجميع هذا المشروع، ستحتاج إلى Visual Studio 2019 أو أحدث. من المهم ملاحظة أن هذا المشروع أُنشئ فقط لبيئات x64 ويجب تجميعه بدون تحسينات (Optimization). يمكنك تعطيل ذلك من Project Settings -> C/C++ -> Optimization -> Optimization (Disabled /Od).

مثال

example

شكر وتقدير

  • Sektor7 لـ Halosgate ولتنفيذ HWBP الذي يُدرَّس في دورتهم الرائعة Malware Development Advanced Vol 1.

  • @Am0nsec و @RtlMateusz لـ التنفيذ الأصلي لـ Hellsgate.

  • Rad9800 للإلهام الذي حصلنا عليه من TamperingSyscalls.

  • Yxel لكود مطابقة الأنماط الثنائية (Binary Pattern Matching) الذي استخدمناه من Cronos.

تنزيل الأداة