
صندوق رمل هندسة عكسية قابل للبرمجة بلغة بايثون، إطار عمل لأجهزة الافتراضية للتجهيز والفحص يعتمد على QEMU
تم أرشفة هذا المشروع وقفل قائمة المشكلات الخاصة به. سيتم إبقاء المشروع عامًا لأغراض المرجعية فقط.
.. image:: docs/media/pyrebox_logo_light_bg.png
.. _QEMU: http://qemu.org/ .. _DECAF: https://github.com/sycurelab/DECAF .. _S2E: https://github.com/dslab-epfl/s2e .. _AVATAR: https://github.com/avatartwo .. _PANDA: https://github.com/panda-re/panda .. _Volatility: http://www.volatilityfoundation.org/ .. _BUILD: BUILD.rst .. _here: https://github.com/Cisco-Talos/pyrebox/issues .. _slides: https://github.com/Cisco-Talos/pyrebox/tree/master/docs/pyrebox_hitb_ams.pdf .. _available: https://github.com/Cisco-Talos/pyrebox/tree/master/docs/pyrebox_euskalhack.pdf .. _scripts: https://github.com/Cisco-Talos/pyrebox/tree/master/scripts .. _readthedocs.io: https://pyrebox.readthedocs.io/en/latest/ .. _questions: https://github.com/Cisco-Talos/pyrebox/issues?utf8=%E2%9C%93&q=is%3Aissue%20label%3Aquestion%20 .. _presentation: https://www.youtube.com/watch?v=F2voG87obzM .. _Contest: https://volatility-labs.blogspot.com/2017/11/results-from-5th-annual-2017-volatility.html
PyREBox هو صندوق رمل قابل للبرمجة بلغة Python للهندسة العكسية. يعتمد على QEMU، ويهدف إلى المساعدة في الهندسة العكسية من خلال توفير قدرات التحليل الديناميكي وتصحيح الأخطاء من منظور مختلف. يتيح PyREBox فحص آلة افتراضية تعمل على QEMU، وتعديل ذاكرتها أو سجلاتها، وتوجيه تنفيذها، عن طريق إنشاء نصوص برمجية بسيطة بلغة Python لأتمتة أي نوع من التحليل. يقوم QEMU (عند العمل كمحاكي نظام كامل) بمحاكاة نظام كامل (وحدة المعالجة المركزية، الذاكرة، الأجهزة...). باستخدام تقنيات فحص الآلة الافتراضية (VMI)، لا يتطلب إجراء أي تعديل على نظام التشغيل الضيف، حيث يسترجع المعلومات من ذاكرته بشفافية في وقت التشغيل.
العديد من المشاريع الأكاديمية مثل DECAF_، PANDA_، S2E_، أو AVATAR_، استفادت سابقًا من التوجيه المستند إلى QEMU للتغلب على مهام الهندسة العكسية. تسمح هذه المشاريع بكتابة إضافات بلغة C/C++، وتنفذ عدة ميزات متقدمة مثل تحليل التلوث الديناميكي، التنفيذ الرمزي، أو حتى تسجيل وإعادة تشغيل آثار التنفيذ. مع PyREBox، نهدف إلى تطبيق هذه التقنية مع التركيز على إبقاء التصميم بسيطًا، وعلى سهولة استخدام النظام لمحللي التهديدات.
فاز PyREBox بمسابقة إضافات Volatility_ في عام 2017!
تم تقديم هذه الأداة في HITB Amsterdam 2018. يمكنك الاطلاع على الشرائح_، أو مشاهدة العرض التقديمي_. تم تقديمها أيضًا في النسخة الثالثة من مؤتمر EuskalHack للأمن (الشرائح متاحة_).
تذكر سحب أحدث إصدار من PyREBox للاستمتاع بأحدث ميزاته. PyREBox قيد التطوير النشط ولا تزال الميزات الجديدة الرائعة في الطريق! يجب أن يحتوي الفرع الرئيسي دائمًا على إصدار مستقر، بينما تحتوي فروع التطوير على أحدث الميزات قيد العمل. تشير قائمة الإعلانات التالية إلى الفرع الرئيسي، وتاريخ دمج تغييرات التطوير في الفرع الرئيسي.
يتم توفير نص برمجي للبناء. للحصول على تفاصيل محددة حول التبعيات، يرجى الاطلاع على BUILD_. كما نقدم ملف Dockerfile.
يتم استضافة توثيق هذا المشروع على readthedocs.io_.
إذا كنت تعتقد أنك عثرت على خطأ، فيرجى الإبلاغ عنه هنا_.
قبل إنشاء مشكلة جديدة، يرجى الاطلاع على الأسئلة_ التي فتحها مستخدمون آخرون من قبل.
يتم توفير هذا البرنامج "كما هو"، ولا يُضمن أي دعم. ومع ذلك، لمساعدتنا في حل مشكلاتك، يرجى تضمين أكبر قدر ممكن من المعلومات لإعادة إنتاج الخطأ:
يعتمد PyREBox على QEMU، لذا لبدء تشغيل آلة افتراضية داخل PyREBox، تحتاج إلى تشغيلها تمامًا كما لو كنت تقوم بتشغيل آلة QEMU افتراضية. يتم توفير نصين برمجيين نموذجيين: start_i386.sh، start_x86_64.sh، يمكنك استخدامهما كمثال.
خيار مراقب QEMU الوحيد المدعوم حالياً هو stdio (-monitor stdio).
توفير منصة محاكاة نظام كامل بواجهة بسيطة لفحص النظام الضيف المُحاكى.
الحصول على تصميم نظيف، منفصل عن QEMU. العديد من المشاريع التي تُبنى على QEMU لا تتطور عند ترقية QEMU، مما يفوتها الميزات الجديدة والتحسينات، بالإضافة إلى التحديثات الأمنية. لتحقيق ذلك، يتم تنفيذ PyREBox كوحدة مستقلة يمكن تجميعها مع QEMU مع الحد الأدنى من التعديلات.
دعم للهندسات المعمارية المختلفة. حالياً، يدعم PyREBox أنظمة Windows فقط لمعماريات x86 و x86-64 بت، ولكن تصميمه يسمح بدعم معماريات أخرى مثل ARM، MIPS، أو PowerPC، وأنظمة تشغيل أخرى أيضاً.
بدء تشغيل صدفة PyREBox سهل مثل كتابة الأمر sh على مراقب QEMU. سيبدأ فورًا صدفة IPython. تسجل هذه الصدفة تاريخ الأوامر بالإضافة إلى المتغيرات المحددة. على سبيل المثال، يمكنك حفظ قيمة واستعادتها لاحقًا في نقطة مختلفة من التنفيذ، عندما تبدأ الصدفة مرة أخرى. يستفيد PyREBox من جميع الميزات المتاحة في IPython مثل الإكمال التلقائي، تاريخ الأوامر، تحرير متعدد الأسطر، وتوليد المساعدة التلقائي للأوامر.
سيسمح لك PyREBox بتصحيح أخطاء النظام (أو عملية) بطريقة سرية إلى حد ما. على عكس المصححات التقليدية التي تبقى داخل النظام الذي يتم تصحيحه (حتى تعديل ذاكرة العملية المصححة لإدراج نقاط التوقف)، يبقى PyREBox خارج النظام الذي يتم فحصه تمامًا، ولا يتطلب تثبيت أي برنامج تشغيل أو مكون في الضيف.
.. image:: docs/media/breakpoint.gif
يقدم PyREBox مجموعة كاملة من الأوامر لفحص وتعديل حالة الآلة الافتراضية قيد التشغيل. اكتب list_commands للحصول على قائمة كاملة. يمكنك تشغيل أي إضافة من إضافات volatility بمجرد كتابة vol وأمر volatility المناسب. للحصول على قائمة كاملة بإضافات volatility المتاحة، يمكنك كتابة list_vol_commands. يتم إنشاء هذه القائمة تلقائيًا، لذا ستظهر أيضًا أي إضافة volatility تقوم بتثبيتها في مسار volatility/ الخاص بـ PyREBox.
يمكنك أيضًا تعريف أوامرك الخاصة! الأمر بسيط مثل تعريف دالة في نص برمجي، وتحميلها.
إذا كنت بحاجة إلى شيء أكثر تعبيراً من أمر، يمكنك كتابة مقتطف Python يستفيد من API. للحصول على وصف تفصيلي لـ API، راجع التوثيق_ أو اكتب help(api) في الصدفة.
.. image:: docs/media/stack.gif
يتيح PyREBox تحميل نصوص برمجية ديناميكيًا يمكنها تسجيل دوال رد الاتصال التي يتم استدعاؤها عند حدوث أحداث معينة، مثل تنفيذ تعليمات، قراءة/كتابة الذاكرة، إنشاء/تدمير العمليات، وما إلى ذلك.
نظرًا لأن PyREBox متكامل مع Volatility، سيتيح لك الاستفادة من جميع إضافات volatility للطب الشرعي للذاكرة في نصوص Python الخاصة بك. العديد من أدوات الهندسة العكسية الأكثر شهرة مبنية بلغة Python أو على الأقل لها روابط Python. يسمح نهجنا بتكامل أي من هذه الأدوات في نص برمجي.
أخيرًا، نظرًا لأن استدعاءات Python قد تسبب عقوبة أداء على الأحداث المتكررة مثل تنفيذ التعليمات، فمن الممكن أيضًا إنشاء مشغلات. المشغلات هي إضافات كود أصلي (مطورة في C/C++) يمكن إدراجها ديناميكيًا في وقت التشغيل على أي حدث قبل تنفيذ رد اتصال Python مباشرة. يتيح ذلك الحد من عدد الأحداث التي تصل إلى كود Python، بالإضافة إلى إمكانية حساب القيم مسبقًا في الكود الأصلي.
في هذا المستودع ستجد نصوصًا برمجية_ نموذجية يمكن أن تساعدك في كتابة الكود الخاص بك. المساهمات مرحب بها!
أولاً وقبل كل شيء، لم يكن PyREBox ممكنًا بدون QEMU_ و Volatility_. نشكر مطوريهم ومشرفيهم على هذا العمل الرائع.
PyREBox مستوحى من عدة مشاريع أكاديمية، مثل DECAF_، أو PANDA_. في الواقع، العديد من استدعاءات رد الاتصال التي يدعمها PyREBox تعادل تلك الموجودة في DECAF_، والمفاهيم الكامنة وراء التوجيه تستند إلى هذه الأعمال.
يستفيد PyREBox من كود طرف ثالث، والذي يمكن العثور عليه تحت الدليل pyrebox/third_party. لكل مشروع طرف ثالث، نضمن إشارة إلى ترخيصه الأصلي، وملفات الكود المصدري الأصلية المأخوذة من المشروع، بالإضافة إلى الإصدارات المعدلة من ملفات الكود المصدري (إن وجدت)، المستخدمة من قبل PyREBox.