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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2024-30051 — بحث رسالة الماجستير حول CVE-2024-30051 (Windows DWM Heap Overflow). يتميز باستغلال عالي الموثوقية مع تحسين تلقائي لرش الكومة، وتسجيل فوري، وتحليل تجريبي لمعدل النجاح. قطعة محفظة توضح استغلال ثنائي متقدم لنظام Windows، والتلاعب بتخطيط الكومة، و LPE عبر Desktop Window Manager. | Kitploit
أدوات/GitHubGitHub/devianntsec/cve-2024-30051
تصعيد الامتيازاتتحليل الذاكرة الجنائيتحليل الثغرات الأمنيةالاستغلالالهندسة العكسيةالأوراق والأبحاثالتعلم والتعليمتطوير الحمولاتاستغلال الملفات الثنائية

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة
GitHubdevianntsec/cve-2024-30051

CVE-2024-30051

بحث رسالة الماجستير حول CVE-2024-30051 (Windows DWM Heap Overflow). يتميز باستغلال عالي الموثوقية مع تحسين تلقائي لرش الكومة، وتسجيل فوري، وتحليل تجريبي لمعدل النجاح. قطعة محفظة توضح استغلال ثنائي متقدم لنظام Windows، والتلاعب بتخطيط الكومة، و LPE عبر Desktop Window Manager.

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

CVE-2024-30051 — تجاوز سعة الكومة في DWM لنظام Windows لرفع الامتيازات · بحث رسالة الماجستير

Platform Language License: MIT Research CVSS

تجاوز سعة المخزن المؤقت على الكومة في مدير نوافذ سطح المكتب لنظام Windows (dwmcore.dll)
رفع الامتيازات المحلية → مستوى سلامة SYSTEM عبر عملية DWM
هدف البناء: Windows 11 22H2 (10.0.22621.3447) · التصحيح: KB5037771


الوصف

يحتوي هذا المستودع على بحث رسالة الماجستير الخاص بي حول CVE-2024-30051، وهي ثغرة رفع امتيازات عالية الخطورة (CVSS 7.8) في مكتبة مدير نوافذ سطح المكتب الأساسية (dwmcore.dll).

تنشأ الثغرة من خطأ في حساب حجم القسمة الصحيحة في CCommandBuffer::Initialize. يختلف الحجم المستخدم لـ new() عن الحجم المستخدم لـ memcpy() بسبب هذا الخطأ، مما ينتج تجاوز سعة الكومة بمقدار 0x8F بايت. يؤدي الاستغلال الناجح إلى تحميل dwm.exe لمكتبة DLL يتحكم بها المهاجم، وتنفيذ كود عشوائي تحت حساب window manager\dwm-1 بمستوى سلامة SYSTEM.

مساهمتي


هيكل المستودع

root@kitploit:~
CVE-2024-30051-Masters-Thesis/
├── README.md
├── LICENSE
├── setup.bat                        # Copies s11.dll to required location
│
├── exploit/
│   ├── C21.sln                      # Visual Studio 2022 solution
│   ├── exploit_src/
│   │   ├── c26f.vcxproj
│   │   ├── c26f.filters
│   │   └── main.cpp                 # Exploit — heap spray + hooking + overflow
│   └── payload/
│       ├── payload.vcxproj
│       ├── payload.vcxproj.filters
│       ├── dllmain.cpp              # Payload DLL — spawns SYSTEM shell + cleanup
│       ├── framework.h
│       ├── pch.h
│       └── pch.cpp
│
└── docs/
    ├── screenshots/                 # Patch diffing, WinDbg, and forensic captures
    └── analysis/
        ├── 01-root-cause.md         # Integer division bug in CCommandBuffer::Initialize
        ├── 02-heap-spray.md         # 50-session empirical data and statistical findings
        └── 03-timeline.md           # Discovery, disclosure, and patch chronology

بداية سريعة

المتطلبات الأساسية

  • Windows 11 22H2 (build 22621.3447، غير مُصحّح — لا يوجد KB5037771)
  • Visual Studio 2022 مع حمل عمل سطح المكتب لـ C++
  • يُوصى باستخدام جهاز افتراضي مع لقطة (مطلوب لحالة كومة قابلة للتكرار)

الخطوة 1 — بناء DLL الحمولة

افتح C21.sln في Visual Studio 2022. قم ببناء مشروع payload في Release x64.

الخطوة 2 — وضع DLL

قم بتشغيل setup.bat من جذر المستودع. يقوم بنسخ s11.dll إلى C:\Users\Public\Documents\s11.dll (المسار المحدد بواسطة PAYLOAD_DLL_PATH).

⚠️ يجب أن تكون DLL في هذا المسار المحدد قبل تشغيل C26f.exe. لن يعمل وضعها بجانب الملف التنفيذي.

الخطوة 3 — بناء الاستغلال

قم ببناء مشروع C26f في Release x64.

الخطوة 4 — التشغيل

root@kitploit:~
x64\Release\C26f.exe

قم بتشغيله من CMD قياسي (غير مرتفع). يقوم الاستغلال بإعادة المحاولة تلقائيًا حتى 10 مرات. عند النجاح، يقوم dwm.exe بتحميل s11.dll ويُفتح CMD بمستوى سلامة SYSTEM. يتم كتابة سجل الجلسة إلى %TEMP%\cve_30051_log.txt.


تكوين الاستغلال

root@kitploit:~
#define MAX_ATTEMPTS        10      // Max auto-retry attempts per session
#define SPRAY_STEP          0x10    // Hole spacing index (1024 holes)
#define SPRAY_RANGE_START   0x3000  // Spray range start index
#define SPRAY_RANGE_END     0x7000  // Spray range end index
#define SLEEP_POST_SPRAY    0xC8    // ms wait after spray (200ms)
#define SLEEP_POST_HOLES    0xC8    // ms wait after freeing holes (200ms)
#define PAYLOAD_DLL_PATH    "C:\\Users\\Public\\Documents\\s11.dll"

نظرة عامة تقنية

السبب الجذري للثغرة

في CCommandBuffer::Initialize (dwmcore.dll 10.0.22621.3447)، يتم استدعاء CD2DSharedBuffer::GetBufferSize مرتين. يخضع الحجم الممرر إلى new() للقسمة الصحيحة على 0x90 قبل الضرب، بينما يستخدم memcpy() القيمة الخام:

root@kitploit:~
buffer_size = GetBufferSize()   → e.g. 0x23F

size_new    = (0x23F / 0x90) * 0x90  = 0x1B0   ← allocated
size_memcpy = 0x23F                             ← copied

overflow    = 0x23F - 0x1B0 = 0x8F bytes

نتائج تحليل الفروق في التصحيح

BinDiff comparison between build 10.0.22621.3447 (vulnerable) and 10.0.22621.3593 (patched):

الدرجة الشاذة 0.32 مقابل تشابه عالمي 0.98 هي التوقيع المباشر لموقع الثغرة.

سلسلة الاستغلال

root@kitploit:~
1. خطاف RtlCreateHeap               → التقاط مقبض كومة dwmcore
2. خطاف RtlAllocateHeap             → التقاط عنوان القطعة الأساسية
3. خطاف NtDCompositionCreateChannel → التقاط MappedAddress (منطقة الذاكرة المشتركة)
4. خطاف NtDCompositionCommitChannel → الكتابة فوق حقل الحجم (0x120 → 0x23F)
                                       حقن أوامر دفعة إضافية
5. رش الكومة بـ 0x10000 كائن CHolographicInteropTexture (الحجم=0x1B0)
6. تحرير الفجوات كل 0x10 مؤشر    → إنشاء ثغرات لهبوط التجاوز
7. كتابة الحمولة في مخزن التجاوز → KCBTable+0x388 + LoadLibraryA + مسار DLL
8. تحرير جميع كائنات الرش         → تشغيل التجاوز → LoadLibraryA("s11.dll")
9. يقوم dwm.exe بتحميل DLL الحمولة         → يفتح CMD كسلامة SYSTEM

تحليل تجريبي لرش الكومة (50 جلسة)

سؤال البحث

هل تؤثر الذاكرة المتاحة على عدد المحاولات المطلوبة لرش الكومة بنجاح؟

التصميم التجريبي

كتلتان كل منهما 25 جلسة. البروتوكول لكل جلسة: استعادة لقطة نظيفة بعد الإقلاع → انتظار 100 ثانية للاستقرار → تشغيل الاستغلال → تسجيل محاولة النجاح.

الكتلةالذاكرةالجلساتالنجاحاتالإخفاقات
A8,192 MB25

النتائج

الاختبارات الإحصائية

الاختبارالإحصائيةالقيمة pالاستنتاج
Mann-Whitney UU = 184.0p = 0.031يرفض H₀
Welch's t-testt(23) = −2.695p = 0.011يرفض H₀

الاستنتاجات الرئيسية

  • C1: كومة DWM بعد الإقلاع أكثر تحديدًا بـ 12.9–19 مرة من التوقع النظري.
  • C2: توفر الذاكرة له تأثير ذو دلالة إحصائية على موثوقية الرش (p = 0.031).
  • C3: تقليل الذاكرة إلى النصف يضاعف الانحراف المعياري (1.135 → 2.645).
  • C4: معدل الفشل متجانس عند 4% عبر كلا التكوينين.
  • C5: الثابت base = heap_base + 0x720 يؤكد أن تخطيط الكومة القابل للتكرار بعد الإقلاع هو المحرك الأساسي للتحديد — وليس كثافة الفجوات.
  • C6: مع ذاكرة ≥ 8 جيجابايت، يمكن للمهاجم توقع النجاح خلال أول 5 محاولات.

البيانات الأولية الكاملة، تنسيق سجل الجلسة، وملاحظات الكومة المحددة موثقة في docs/analysis/02-heap-spray.md.


مخرجات ما بعد الاستغلال

عند النجاح، تفتح نافذة CMD تحت window manager\dwm-1:

root@kitploit:~
=====================================================
  CVE-2024-30051 - تجاوز سعة الكومة في DWM لنظام Windows لرفع الامتيازات
  CWE-122  |  CVSS 7.8  |  رفع الامتيازات
=====================================================

  بحث وأعاد إنتاجه : devianntsec
  إثبات المفهوم الأصلي بواسطة              : Ricardo Narvaja (Fortra)
  الهدف                       : Windows 11 22H2 (22621.3447)

=====================================================

  [*] المستخدم الحالي:
  window manager\dwm-1

  [*] مستوى السلامة الإلزامي:
  Mandatory Label\System Mandatory Level   S-1-16-16384

  [*] الامتيازات المُمكّنة:
  SeImpersonatePrivilege    مُمكّن

=====================================================
  شل قيد التشغيل تحت عملية DWM - مستوى SYSTEM
=====================================================

يتم حذف القطع الأثرية (s11.dll و البرنامج النصي .bat) تلقائيًا بعد 5 ثوانٍ عبر عملية تنظيف مؤجلة.


القطع الأثرية الجنائية


التوثيق التقني

الوثيقةالوصف
تحليل السبب الجذري

السياق الأكاديمي

هذا البحث جزء من رسالة الماجستير في الأمن السيبراني (UCAM — Campus Internacional de Ciberseguridad)، تحليل ثغرات N-Day عبر بيئات متعددة.

تمثل هذه CVE ناقل تطبيق سطح المكتب لنظام Windows ضمن الرسالة، موضحة:

  • استغلال تجاوز سعة المخزن المؤقت على الكومة عبر قناة DirectComposition ALPC
  • تحليل الفروق الثنائية (BinDiff) كطريقة منهجية لتحديد موقع ثغرات N-Day
  • خطف واجهات برمجة التطبيقات داخل العملية بدون أدوات خارجية
  • القياس التجريبي لتحديدية رش الكومة عبر تكوينات الذاكرة

الكلمات المفتاحية: EoP · Heap Overflow · DirectComposition · DWM · Patch Diffing · BinDiff · WinDbg · Heap Spray · Empirical Analysis · CVE-2024-30051


المؤلف

Annais Molina (devianntsec) — طالبة ماجستير في الأمن السيبراني

GitHub LinkedIn Email


شكر وتقدير

  • Ricardo Narvaja (Fortra/CoreSecurity) — إثبات المفهوم الأصلي وكتابة الهندسة العكسية
  • Kaspersky GReAT — الاكتشاف الأصلي للثغرة والإفصاح المسؤول
  • Microsoft MSRC — التصحيح KB5037771 (مايو 2024)

الرخصة

رخصة MIT — انظر LICENSE


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

هذا المستودع مُقدم لأغراض التعليم والبحث الأمني فقط، كجزء من رسالة ماجستير أكاديمية. تم إجراء جميع الاختبارات على أجهزة افتراضية معزولة دون تعرض للشبكة. استخدم فقط على الأنظمة التي تمتلكها أو لديك تصريح كتابي صريح لاختبارها. الاستخدام غير المصرح به ضد الأنظمة غير قانوني وقد يؤدي إلى ملاحقة جنائية.

© 2026 Annais Molina · رسالة ماجستير في الأمن السيبراني
UCAM Universidad Católica San Antonio de Murcia · Campus Internacional de Ciberseguridad
تنزيل الأداة
الجانبالوصف
تحليل الفروق في التصحيحتحليل كامل باستخدام BinDiff يحدد CCommandBuffer::Initialize كموقع الثغرة الدقيق (درجة التشابه 0.32 مقابل 0.98 عالميًا عبر 14,062 دالة متطابقة)
التحليل الديناميكي باستخدام WinDbgالتحقق خطوة بخطوة من جميع الخطافات الأربعة، الكتابة فوق حقل الحجم، وبناء الحمولة
التحليل التجريبي لرش الكومة50 جلسة مضبوطة عبر تكوينين للذاكرة (8,192 MB و 4,096 MB) مع اختبارات إحصائية رسمية
النتائج الإحصائيةاختبار Mann-Whitney U (p = 0.031) واختبار t لـ Welch (p = 0.011) يؤكدان تأثير الذاكرة؛ المتوسطات المرصودة أفضل بـ 12.9–19 مرة من التوقع النظري البالغ ~64 محاولة
مركزية مسار DLL الحمولةاستخراج المسار الثابت إلى ثابت المعالج المسبق #define PAYLOAD_DLL_PATH
تسجيل الجلساتسجل كامل مع طابع زمني لكل جلسة يُكتب إلى %TEMP%\cve_30051_log.txt
التوثيق الأكاديميالسبب الجذري، تحليل رش الكومة من 50 جلسة، والتسلسل الزمني لـ CVE
المقياسالقيمة
التشابه العالمي0.98
الثقة0.99
الدوال المتطابقة14,062 (99.1%)
تشابه CCommandBuffer::Initialize0.32
الكتل الأساسية — النسخة الضعيفة4
الكتل الأساسية — النسخة المُصحّحة20 (16 validation blocks added)
24
1
B4,096 MB25241
الكتلةالذاكرةمتوسط المحاولاتالانحراف المعياريفاصل الثقة 95%العامل مقابل النظرية (64)
A8,192 MB3.3751.135[2.896; 3.854]≈ 19× أسرع
B4,096 MB4.9582.645[3.841; 6.076]≈ 12.9× أسرع
القطعة الأثريةالموقعالاستمراريةأداة الكشف
cmd.exe كعملية فرعية لـ dwm.exeسجل أحداث الأماننعم (إذا كان تدقيق العملية نشطًا)Event ID 4688
عملية خارجية تصل إلى dwm.exeSysmonنعمSysmon Event ID 10
تعطل dwm.exe عند المحاولات الفاشلةسجل أحداث التطبيقنعمEvent ID 1000
DLL الحمولة s11.dll على القرصC:\Users\Public\Documents\فقط أول ~5 ثوانٍمراقبة SHA-256
خطأ القسمة الصحيحة في CCommandBuffer::Initialize، منهجية تحليل الفروق في التصحيح
تحليل رش الكومةبيانات تجريبية من 50 جلسة، بيانات الجلسات الأولية، اختبارات إحصائية
التسلسل الزمني لـ CVEالاكتشاف، الإفصاح، والتسلسل الزمني للتصحيح