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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
r0ak — أداة سطر أوامر لنظام ويندوز لقراءة وكتابة وتنفيذ كود في وضع النواة (Kernel-mode) من سياق المسؤول (Administrator) باستخدام تقنية إعادة توجيه تنفيذ التحقق من الخط (Font Validation Execution Redirection)، مما يتيح تصحيح أخطاء النواة المتقدم واستكشاف مشاكل النظام. | Kitploit
أدوات/GitHubGitHub/harryanon/r0ak
تصعيد الامتيازاتتحليل الذاكرة الجنائيتحليل الثغرات الأمنيةالاستغلالمصممي الأخطاءما بعد الاستغلالاختبار الاختراقاستغلال الملفات الثنائية
GitHubharryanon/r0ak

r0ak

أداة سطر أوامر لنظام ويندوز لقراءة وكتابة وتنفيذ كود في وضع النواة (Kernel-mode) من سياق المسؤول (Administrator) باستخدام تقنية إعادة توجيه تنفيذ التحقق من الخط (Font Validation Execution Redirection)، مما يتيح تصحيح أخطاء النواة المتقدم واستكشاف مشاكل النظام.

10873منذ 8 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

r0akDownloads

r0ak هي أداة سطر أوامر لنظام Windows تتيح لك قراءة وكتابة وتنفيذ كود في وضع kernel (مع بعض القيود) بسهولة من موجه الأوامر، دون الحاجة إلى أي شيء آخر غير صلاحيات المسؤول.

نظرة سريعة

root@kitploit:~
r0ak v1.0.0 -- Ring 0 Army Knife
http://www.github.com/ionescu007/r0ak
Copyright (c) 2018 Alex Ionescu [@aionescu]
http://www.windows-internals.com

الاستخدام: r0ak.exe
       [--execute <Address | module.ext!function> <Argument>]
       [--write   <Address | module.ext!function> <Value>]
       [--read    <Address | module.ext!function> <Size>]

لقطة شاشة

مقدمة

الدافع

نواة Windows بيئة غنية حيث تعمل مئات البرامج التشغيلية على نظام نموذجي، وحيث توجد آلاف المتغيرات التي تحتوي على حالة عامة. لاستكشاف الأخطاء وإصلاحها المتقدم، يستخدم خبراء تكنولوجيا المعلومات عادةً أدوات مثل مصحح أخطاء Windows (WinDbg)، أدوات SysInternals، أو يكتبون أدواتهم الخاصة. لسوء الحظ، أصبح استخدام هذه الأدوات أصعب بشكل متزايد، وهي نفسها محدودة بإمكانية وصولها إلى واجهات برمجة تطبيقات Windows والميزات المكشوفة.

تشمل بعض التحديات الحالية:

  • يدعم Windows 8 والإصدارات الأحدث التمهيد الآمن (Secure Boot)، الذي يمنع تصحيح أخطاء kernel (بما في ذلك التصحيح المحلي) وتحميل كود تشغيل موقع بتوقيع اختباري. وهذا يحد من أدوات استكشاف الأخطاء إلى تلك التي تحتوي على برنامج تشغيل وضع kernel موقع.
  • حتى على الأنظمة التي لا يتم فيها تمكين التمهيد الآمن، فإن تمكين التصحيح المحلي أو تغيير خيارات التمهيد التي تسهل قدرات التصحيح غالبًا ما تؤدي إلى تشغيل وضع الاسترداد الخاص بـ BitLocker.
  • يتضمن تحديث Windows 10 Anniversary والإصدارات الأحدث متطلبات توقيع تشغيل أكثر صرامة، والتي تفرض الآن توقيع إثبات Microsoft EV. وهذا يحد من حرية مطوري البرامج حيث أن برامج التشغيل العامة "للقراءة-الكتابة-كل شيء" غير مرحب بها.
  • يتضمن تحديث Windows 10 Spring الآن خيارات موجهة للعملاء لتمكين تكامل كود HyperVisor (HVCI) الذي يزيد من تقييد برامج التشغيل المسموح بها ويضع قائمة سوداء لبرامج تشغيل متعددة من طرف ثالث كانت لديها قدرات "القراءة-الكتابة-كل شيء" بسبب واجهات مكتوبة بشكل ضعيف ومخاطر أمنية.
  • تقنيات مثل منع تنفيذ وضع المشرف (SMEP)، ومراقبة تدفق التحكم لـ Kernel (KCFG) و HVCI مع ترجمة العناوين من المستوى الثاني (SLAT) تجعل 'حيل' تنفيذ Ring 0 التقليدية قديمة، لذا هناك حاجة إلى نهج جديد.

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

كيف تعمل

البنية الأساسية

مخطط

تعمل r0ak عن طريق إعادة توجيه تدفق تنفيذ فحوصات التحقق من صحة الخطوط الموثوقة لمدير النوافذ عند محاولة تحميل خط جديد، عن طريق استبدال روتين المقارنة لجدول الخطوط الموثوقة بوظيفة بديلة تقوم بجدولة عنصر عمل تنفيذي (WORK_QUEUE_ITEM) مخزن في عقدة الإدخال. بعد ذلك، يتم الكتابة فوق الطفل الأيمن لجدول الخطوط الموثوقة (الذي يعمل كعقدة جذر) بمخزن كتابة خط أنابيب مسمى (NP_DATA_ENTRY) حيث يتم تخزين عنصر عمل مخصص. يتم تنفيذ وظيفة العامل الأساسي لهذا العنصر ومعلماته في النهاية بواسطة ExpWorkerThread مخصص على مستوى PASSIVE_LEVEL بمجرد محاولة تحميل خط وتنفيذ روتين المقارنة، مع استلام العقدة الأم المدعومة بخط الأنابيب المسمى كمدخلاتها. يتم استخدام حدث تتبع أحداث Windows (ETW) في الوقت الفعلي لتلقي إشعار غير متزامن بأن عنصر العمل قد انتهى من التنفيذ، مما يجعله آمنًا لتفكيك الهياكل، وتحرير المخازن المؤقتة لوضع kernel، واستعادة التشغيل العادي.

الأوامر المدعومة

عند استخدام الخيار --execute، يتم توفير هذه الوظيفة والمعلمة من قبل المستخدم.

عند استخدام --write، يتم استخدام أداة مخصصة لتعديل قيم 32 بت عشوائية في أي مكان في ذاكرة kernel.

عند استخدام --read، يتم استخدام أداة الكتابة لتعديل مؤشر وحجم مخزن HSTI الخاص بالنظام (ملاحظة: هذا سلوك مدمر من حيث أي تطبيقات أخرى ستطلب بيانات HSTI. نظرًا لأن هذا سلوك Windows اختياري، وهذه الأداة مخصصة لتصحيح الأخطاء / التجارب الطارئة، فقد تم اعتبار فقدان البيانات هذا مقبولاً). بعد ذلك، يتم استخدام واجهة برمجة تطبيقات استعلام HSTI للنسخ مرة أخرى إلى مساحة عنوان وضع المستخدم للأداة، ويتم عرض إخراج سداسي عشري.

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

الأسئلة الشائعة

هل هذا خطأ / ثغرة أمنية في Windows؟

لا. نظرًا لأن هذه الأداة - والتقنية الأساسية - تتطلب رمزًا مميزًا متميزًا على مستوى SYSTEM، والذي لا يمكن الحصول عليه إلا من قبل مستخدم يعمل تحت حساب المسؤول، فلا يتم تجاوز أي حدود أمنية لتحقيق التأثير. سلوك الأداة وفائدتها ممكنان فقط بسبب السياق الأمني المرتفع / المتميز لحساب المسؤول على Windows، ومن المفهوم أنه سلوك حسب التصميم.

هل تم إخطار Microsoft بهذا السلوك؟

بالطبع! من المهم دائمًا تقديم مشكلات أمنية إلى Microsoft حتى عندما لا يبدو أنه حدث انتهاك للحدود المتميزة - فقد تجد فرق الباحثين والمطورين لديهم نواقل وطرق جديدة للوصول إلى مسارات كود معينة قد لا يفكر فيها باحث خارجي.

على هذا النحو، في نوفمبر 2014، تم تقديم حالة أمنية إلى مركز أبحاث الأمن التابع لـ Microsoft (MSRC) والتي ردت: "[…] لا يقع ضمن نطاق مشكلة أمنية سنتعامل معها عبر وسيلة النشرة الأمنية التقليدية لدينا. فهو […] يفترض مسبقًا صلاحيات المسؤول - وهو مكان لا نحدد فيه حاليًا من الناحية الهيكلية حدًا أمنيًا قابلاً للدفاع. وعلى هذا النحو، لن نتابع إصلاحه."

علاوة على ذلك، في أبريل 2015 في مؤتمر Infiltrate، تم تقديم محاضرة بعنوان Insection : AWEsomely Exploiting Shared Memory Objects تفصل هذه المشكلة، بما في ذلك لمطوري Microsoft الحاضرين، الذين وافقوا على أن هذا خارج نطاق الحدود الأمنية الهيكلية لـ Windows حاليًا. وذلك لأن هناك العشرات - إن لم يكن أكثر - من الطرق الأخرى التي يمكن للمسؤول من خلالها قراءة / كتابة / تنفيذ ذاكرة Ring 0. تسمح هذه الأداة ببساطة بتحويل أحد هذه النواقل بسهولة إلى سلعة، لأغراض تصحيح الأخطاء واستكشاف مشاكل النظام.

ألا يمكن حزم هذا كجزء من مجموعة هجوم / استغلال شاملة؟

تتضمن حزم هذا الكود كمكتبة إزالة جميع تحليلات سطر الأوامر التفاعلية والإخراج القياسي بعناية، وعندها، بدون إعادة كتابة كبيرة، ستتطلب 'المجموعة' ما يلي:

  • أن يكون الجهاز المستهدف يعمل بنظام Windows 10 Anniversary Update x64 أو إصدار أحدث
  • أن يكون لديه صلاحيات مرتفعة بالفعل إلى SYSTEM
  • أن يكون لديه اتصال إنترنت نشط مع وكيل / جدار حماية يسمح بالوصول إلى خادم رموز Microsoft
  • أن يكون Windows SDK/WDK مثبتًا على الجهاز المستهدف
  • أن يكون متغير البيئة _NT_SYMBOL_PATH المناسب قد تم تكوينه على الجهاز المستهدف، وأن يتم تنزيل حوالي 15 ميجابايت من بيانات الرموز وتخزينها مؤقتًا كملفات PDB في مكان ما على القرص

من المحتمل أن المهاجمين المهتمين باستخدام هذا النهج الخاص - مقابل العديد من التقنيات الأخرى الأكثر توافقًا عبر المنصات والتي لا تتطلب حقوق SYSTEM - قاموا بالفعل بتكييف كودهم الخاص بناءً على إثبات المفهوم من أبريل 2015 - منذ أكثر من 3 سنوات.

الاستخدام

المتطلبات

نظرًا لاستخدام محرك رموز Windows، يجب أن يكون لديك إما مجموعة تطوير برامج Windows (SDK) أو مجموعة برامج تشغيل Windows (WDK) مثبتة مع أدوات تصحيح أخطاء Windows. ستبحث الأداة عن مسار التثبيت الخاص بك تلقائيًا، وتستفيد من DbgHelp.dll و SymSrv.dll الموجودتين في هذا الدليل. نظرًا لأن هذه الملفات غير قابلة لإعادة التوزيع، فلا يمكن تضمينها مع إصدار الأداة.

بدلاً من ذلك، إذا حصلت على هذه المكتبات بنفسك، يمكنك تعديل الكود المصدري لاستخدامها.

يتطلب استخدام الرموز اتصالاً بالإنترنت، إلا إذا كنت قد قمت بتخزينها مؤقتًا محليًا. بالإضافة إلى ذلك، يجب عليك إعداد متغير _NT_SYMBOL_PATH pointing إلى خادم رموز مناسب وموقع مخبأ مناسب.

من المفترض أن خبير تكنولوجيا المعلومات أو مستكشف الأخطاء الآخر الذي لديه حاجة واضحة لقراءة / كتابة / تنفيذ ذاكرة kernel (ولديه معرفة بمتغيرات kernel المناسبة للوصول) هو بالفعل على دراية تامة بمتطلبات الإعداد المذكورة أعلاه. يرجى عدم تقديم مشكلات تسأل عن ماهية SDK أو كيفية تعيين متغير بيئة.

حالات الاستخدام

  • هل قام أحد برامج التشغيل بتسريب تجمع kernel؟ لماذا لا تستدعي ntoskrnl.exe!ExFreePool وتمرر عنوان kernel الذي يتسرب؟ ماذا عن مرجع كائن؟ اذهب واستدعي ntoskrnl.exe!ObfDereferenceObject لتنظيف ذلك.

  • هل تريد تفريغ سجل DbgPrint للنواة؟ لماذا لا تقم بتفريغ المخزن المؤقت الدائري الداخلي في ntoskrnl.exe!KdPrintCircularBuffer

  • هل تتساءل عن حجم أكوام kernel على جهازك؟ حاول النظر إلى ntoskrnl.exe!KeKernelStackSize

  • هل تريد تفريغ جدول استدعاءات النظام للبحث عن خطافات؟ اذهب واطبع ntoskrnl.exe!KiServiceTable

هذه مجرد أمثلة قليلة - جميع عناوين Ring 0 مقبولة، إما عن طريق صيغة module!symbol أو بتمرير مؤشر kernel مباشرة إذا كان معروفًا. يتم استخدام محرك رموز Windows للبحث عنها.

القيود

تتطلب الأداة متغيرات ووظائف kernel معينة معروفة بوجودها فقط في الإصدارات الحديثة من Windows 10، وهي مصممة للعمل فقط على أنظمة 64 بت. ترجع هذه القيود إلى حقيقة أنه على الأنظمة القديمة (أو أنظمة x86)، لا توجد متطلبات أمان صارمة هذه، وبالتالي، يمكن استخدام طرق تقليدية بدلاً من ذلك. هذه أداة شخصية أتيحها للجمهور، ولم تكن لدي حاجة لهذه الأنظمة القديمة، حيث يمكنني استخدام برنامج تشغيل بسيط بدلاً من ذلك. ومع ذلك، يقبل هذا المستودع طلبات السحب (pull requests)، إذا كان أي شخص مهتمًا بنقلها.

ثانيًا، نظرًا لحالات الاستخدام واحتياجاتي الخاصة، تنطبق القيود التالية:

  • القراءة - محدودة بـ 4 جيجابايت من البيانات في المرة الواحدة
  • الكتابة - محدودة بـ 32 بت من البيانات في المرة الواحدة
  • التنفيذ - محدود بالوظائف التي تأخذ معلمة عددية واحدة فقط

من الواضح أنه يمكن إصلاح هذه القيود عن طريق اختيار نهج مختلف برمجيًا، لكنها تناسب احتياجات أداة سطر الأوامر وحالات الاستخدام الخاصة بي. مرة أخرى، يتم قبول طلبات السحب إذا أراد الآخرون المساهمة بإضافاتهم الخاصة.

لاحظ أن جميع عمليات التنفيذ (بما في ذلك تنفيذ أوامر --read و --write) تحدث في سياق سلسلة رسائل عامل النظام على مستوى PASSIVE_LEVEL. لذلك، لا ينبغي تمرير عناوين وضع المستخدم كمعاملات / وسيطات.

المساهمة

طلبات السحب مرحب بها. بالنسبة للتغييرات الكبيرة، يرجى فتح مشكلة أولاً لمناقشة ما ترغب في تغييره.

الترخيص

root@kitploit:~
Copyright 2018 Alex Ionescu. All rights reserved. 

Redistribution and use in source and binary forms, with or without modification, are permitted provided
that the following conditions are met: 
1. Redistributions of source code must retain the above copyright notice, this list of conditions and
   the following disclaimer. 
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions
   and the following disclaimer in the documentation and/or other materials provided with the 
   distribution. 

THIS SOFTWARE IS PROVIDED BY ALEX IONESCU ``AS IS'' AND ANY EXPRESS OR IMPLIED
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ALEX IONESCU
OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

The views and conclusions contained in the software and documentation are those of the authors and
should not be interpreted as representing official policies, either expressed or implied, of Alex Ionescu.
تنزيل الأداة