
الفائز في مسابقة إضافات IDA 2016! Symbolic Execution بنقرة واحدة فقط!
Ponce (تُنطق [ 'poN θe ] بون-ثي) هو إضافة لـ IDA Pro تتيح للمستخدمين إمكانية إجراء تحليل التلوث والتنفيذ الرمزي على الثنائيات بطريقة سهلة وبديهية. مع Ponce أنت على بُعد نقرة واحدة من الحصول على كل قوة التنفيذ الرمزي المتطور. كُتب بالكامل بلغة C/C++.
التنفيذ الرمزي ليس مفهومًا جديدًا في مجتمع الأمن السيبراني. لقد كان موجودًا لسنوات عديدة، ولكن لم يتم إنشاء مشاريع مفتوحة المصدر مثل [Triton] (https://github.com/JonathanSalwan/Triton) و [Angr] (http://angr.io/) لمعالجة هذه الحاجة إلا حوالي عام 2015. على الرغم من توفر هذه المشاريع، غالبًا ما يُترك المستخدمون النهائيون لتنفيذ حالات استخدام محددة بأنفسهم.
لقد عالجنا هذه الاحتياجات بإنشاء Ponce، وهي إضافة لـ IDA تنفذ التنفيذ الرمزي وتحليل التلوث داخل أقوى مفكك/مصحح أخطاء لمهندسي الهندسة العكسية.
يعمل Ponce مع الثنائيات x86 و x64 في أي إصدار IDA >= 7.0. تثبيت الإضافة بسيط مثل نسخ الملفات المناسبة من [أحدث الإصدارات] (https://github.com/illera88/Ponce/releases/latest) إلى مجلد plugins\ في دليل تثبيت IDA الخاص بك.
تأكد من استخدام ثنائي Ponce المُجمَّع لإصدار IDA الخاص بك لتجنب أي تعارضات.
يعمل Ponce على ويندوز ولينكس و macOS بشكل أصلي!
سيتم تشغيل الإضافة تلقائيًا، وسيرشدك خلال التكوين الأولي عند تشغيلها لأول مرة. سيتم حفظ التكوين في ملف تهيئة حتى لا تضطر إلى القلق بشأن نافذة التهيئة مرة أخرى.
في الصورة المتحركة التالية نرى استخدام التلوث التلقائي وكيف يمكننا نفي شرط وحقنه في الذاكرة أثناء التصحيح:
argv.elite الذي تم حقنه في الذاكرة وبالتالي نصل إلى كود Win.يمكن العثور على الكود المصدري للـ crackme [هنا] (https://github.com/illera88/Ponce/blob/master/examples/crackme_xor.cpp)
![crackmexor_negate_and_inject] (https://cloud.githubusercontent.com/assets/5193128/18558282/5dd1cbca-7b27-11e6-81d7-13044bfc0b59.gif)
في هذا المثال نرى استخدام محرك التلوث مع cmake. نقوم بما يلي:
fread() من الملف.![cmake_tainting_fread] (https://cloud.githubusercontent.com/assets/5193128/18558313/7aaa6d88-7b27-11e6-9c63-9870720d14e3.gif)
في المثال التالي نستخدم محرك اللقطات:
fread() من الملف.![fread_test_negate_restore_inject] (https://github.com/illera88/Ponce/tree/780e1992a935d310f5a956e6ece6b8f630a853a7/media/x64_fread_test_negate_restore_inject.gif?raw=true) يمكن العثور على الكود المصدري للمثال [هنا] (https://github.com/illera88/Ponce/blob/master/examples/fread_SAGE.cpp)
في هذا القسم سنقوم بإدراج خيارات Ponce المختلفة بالإضافة إلى اختصارات لوحة المفاتيح:
![2016-09-15 11_39_08-configuracion] (https://cloud.githubusercontent.com/assets/5193128/18563366/44a8c698-7b3c-11e6-8802-efb3fe4a5a2d.png)
![2016-09-15 11_31_34-] (https://cloud.githubusercontent.com/assets/5193128/18563294/fd2cf992-7b3b-11e6-911f-c91c76804b5a.png)
![2016-09-15 11_32_32-] (https://cloud.githubusercontent.com/assets/5193128/18563447/7e4db840-7b3c-11e6-813b-868bdae515bc.png)
![2016-09-15 11_32_52-ida - testproject idb testproject exe c__users_default default-pc_documents_vi] (https://cloud.githubusercontent.com/assets/5193128/18563458/88c5bb7e-7b3c-11e6-8b4e-f4a694cad5a8.png) ![2016-09-15 11_33_10-taint _ symbolize memory range] (https://cloud.githubusercontent.com/assets/5193128/18563460/8adbb8f0-7b3c-11e6-886f-02441bff63a4.png)
![2016-09-15 12_09_11-inicio] (https://cloud.githubusercontent.com/assets/5193128/18563642/45860a7a-7b3d-11e6-9f95-e7aed529cc85.png)
![2016-09-15 11_35_11-] (https://cloud.githubusercontent.com/assets/5193128/18563556/e093f0c8-7b3c-11e6-9b37-b3b2c7111d57.png)
![2016-09-15 11_34_44-] (https://cloud.githubusercontent.com/assets/5193128/18563423/6db81160-7b3c-11e6-94a2-698ff334c024.png)
![2016-09-15 11_47_19-] (https://cloud.githubusercontent.com/assets/5193128/18563350/34e0fd20-7b3c-11e6-8040-7e5899fc200f.png)
![2016-09-15 11_37_40-] (https://cloud.githubusercontent.com/assets/5193128/18563529/cfc599c2-7b3c-11e6-84e1-5dd5c7b27537.png)
![2016-09-15 11_38_10-] (https://cloud.githubusercontent.com/assets/5193128/18563411/63cfeb50-7b3c-11e6-8f56-255bb27bc8f2.png)
![2016-09-15 11_38_23-] (https://cloud.githubusercontent.com/assets/5193128/18563385/53df1d42-7b3c-11e6-8c2f-f1bd16369f79.png)
![2016-09-15 12_07_10-] (https://cloud.githubusercontent.com/assets/5193128/18563579/fc95339a-7b3c-11e6-9947-971e0510eba4.png)
يعتمد Ponce على [إطار عمل Triton] (https://github.com/JonathanSalwan/Triton) لتوفير الدلالات وتحليل التلوث والتنفيذ الرمزي. Triton هو مشروع مفتوح المصدر رائع برعاية Quarkslab ويتم صيانته بشكل أساسي بواسطة [Jonathan Salwan] (http://shell-storm.org/) بمكتبة غنية. نود أن نشكر ونثني على عمل Jonathan مع Triton. أنت رائع! :)