Triton هي مكتبة تحليل ثنائية ديناميكية. إنه يوفر مكونات داخلية تتيح لك إنشاء أدوات تحليل البرنامج الخاصة بك ، أو أتمتة الهندسة العكسية ، أو إجراء التحقق من البرامج أو مجرد محاكاة التعليمات البرمجية.
- التنفيذ الرمزي الديناميكي
- تحليل تلوث ديناميكي
- تمثيل AST لـ X86 و X86-64 و ARM32 و AARCH64 و RISC-V 32/64 ISA الدلالي
- توليف التعبيرات
- SMT تبسيط يمر
- الرفع إلى LLVM وكذلك Z3 والعودة
- واجهة SMT Solver إلى Z3 و Bitwuzla
- C ++ و Python API
نظرًا لأن Triton هو نوع من المشروع بدوام جزئي ، من فضلك ، لا تلومنا إذا لم يكن موثوقًا به تمامًا. المشكلات المفتوحة أو طلبات السحب دائمًا أفضل من التصيد =). ومع ذلك ، يمكنك متابعة التطوير على TwitterQB_Triton.
بداية سريعة
- تثبيت
- بيثون API
- C ++ API
- أمثلة بيثون
- لقد استخدموا بالفعل تريتون
ابدء
from triton import *
> >> # Create the Triton context with a defined architecture
>> > ctx = TritonContext ( ARCH . X86_64 )
> >> # Define concrete values (optional)
>> > ctx . setConcreteRegisterValue ( ctx . registers . rip , 0x40000 )
> >> # Symbolize data (optional)
>> > ctx . symbolizeRegister ( ctx . registers . rax , 'my_rax' )
> >> # Execute instructions
>> > ctx . processing ( Instruction ( b" x48 x35 x34 x12 x00 x00 " )) # xor rax, 0x1234
> >> ctx . processing ( Instruction ( b" x48 x89 xc1 " )) # mov rcx, rax
> >> # Get the symbolic expression
>> > rcx_expr = ctx . getSymbolicRegister ( ctx . registers . rcx )
> >> print ( rcx_expr )
( define - fun ref ! 8 () ( _ BitVec 64 ) ref ! 1 ) ; MOV operation - 0x40006 : mov rcx , rax
>> > # Solve constraint
>> > ctx . getModel ( rcx_expr . getAst () == 0xdead )
{ 0 : my_rax : 64 = 0xcc99 }
>> > # 0xcc99 XOR 0x1234 is indeed equal to 0xdead
>> > hex ( 0xcc99 ^ 0x1234 )
'0xdead' ثَبَّتَ
يعتمد تريتون على التبعيات التالية:
* libcapstone >= 5.0.x https://github.com/capstone-engine/capstone
* libboost (optional) >= 1.68
* libpython (optional) >= 3.6
* libz3 (optional) >= 4.6.0 https://github.com/Z3Prover/z3
* libbitwuzla (optional) >= 0.4.x https://github.com/bitwuzla/bitwuzla
* llvm (optional) >= 12
Linux و Macos
$ git clone https://github.com/JonathanSalwan/Triton
$ cd Triton
$ mkdir build ; cd build
$ cmake ..
$ make -j3
$ sudo make install
بشكل افتراضي ، لم يتم تجميع LLVM و Bitwuzla. إذا كنت ترغب في الاستمتاع بالقوة الكاملة لـ Triton ، فإن مجموعة Cmake هي:
$ cmake -DLLVM_INTERFACE=ON -DCMAKE_PREFIX_PATH= $( llvm-config --prefix ) -DBITWUZLA_INTERFACE=ON ..
MacOS M1 ملاحظة:
في حالة حصولك على أخطاء تجميع مثل:
Could NOT find PythonLibs (missing: PYTHON_LIBRARIES PYTHON_INCLUDE_DIRS)
حاول تحديد PYTHON_EXECUTABLE و PYTHON_LIBRARIES و PYTHON_INCLUDE_DIRS لإصدار python الخاص بك:
cmake -DCMAKE_INSTALL_PREFIX=/opt/homebrew/
-DPYTHON_EXECUTABLE=/opt/homebrew/bin/python3
-DPYTHON_LIBRARIES=/opt/homebrew/Cellar/[email protected]/3.10.8/Frameworks/Python.framework/Versions/3.10/lib/libpython3.10.dylib
-DPYTHON_INCLUDE_DIRS=/opt/homebrew/opt/[email protected]/Frameworks/Python.framework/Versions/3.10/include/python3.10/
.. هذه المعلومات التي يمكنك الخروج من هذا المقتطف:
from sysconfig import get_paths
info = get_paths ()
print ( info )
النوافذ
يمكنك استخدام Cmake لإنشاء ملف .sln من Libtriton.
> git clone https://github.com/JonathanSalwan/Triton.git
> cd Triton
> mkdir build
> cd build
> cmake -G " Visual Studio 14 2015 Win64 "
-DBOOST_ROOT="C:/Users/jonathan/Works/Tools/boost_1_61_0"
-DPYTHON_INCLUDE_DIRS="C:/Python36/include"
-DPYTHON_LIBRARIES="C:/Python36/libs/python36.lib"
-DZ3_INCLUDE_DIRS="C:/Users/jonathan/Works/Tools/z3-4.6.0-x64-win/include"
-DZ3_LIBRARIES="C:/Users/jonathan/Works/Tools/z3-4.6.0-x64-win/bin/libz3.lib"
-DCAPSTONE_INCLUDE_DIRS="C:/Users/jonathan/Works/Tools/capstone-5.0.1-win64/include"
-DCAPSTONE_LIBRARIES="C:/Users/jonathan/Works/Tools/capstone-5.0.1-win64/capstone.lib" ..
ومع ذلك ، إذا كنت تفضل تنزيل المكتبة المسبقة مباشرةً ، تحقق من مصنوعات Aptevveor الخاصة بنا. لاحظ أنه إذا كنت تستخدم مصنوعات Appveyor's Artefact ، فربما يتعين عليك تثبيت حزم Visual C ++ القابلة لإعادة التوزيع لـ Visual Studio 2012.
التثبيت من VCPKG
يتم الاحتفاظ بمنفذ Triton في VCPKG من قبل أعضاء فريق Microsoft والمساهمين في المجتمع. عنوان URL لـ VCPKG هو: https://github.com/microsoft/vcpkg. يمكنك تنزيل وتثبيت Triton باستخدام مدير التبعية VCPKG:
$ git clone https://github.com/Microsoft/vcpkg.git
$ cd vcpkg
$ ./bootstrap-vcpkg.sh # ./bootstrap-vcpkg.bat for Windows
$ ./vcpkg integrate install
$ ./vcpkg install triton
إذا كان الإصدار قديمًا ، فيرجى إنشاء مشكلة أو سحب طلب على مستودع VCPKG.
المساهمين
- ألبرتو غارسيا إيليرا - أتمتة الرحلات البحرية
- Alexey Vishnyakov - ISP Ras
- الأسود الثنائي - ن/أ
- كريستيان هايتمان - arcerslab
- دانييل كوتس - ISP RAS
- جيسي كامبوس - ن/أ
- Matteo F. - N/A
- Pierrick Brunet - Quarkslab
- Pixelrick - N/A.
- رومان توماس - agurkslab
- وغيرها الكثير
لقد استخدموا بالفعل تريتون
أدوات
- exrop: توليد Ropchain التلقائي.
- PIMP: البرنامج المساعد R2 القائم على Triton للتنفيذ الوسيط والتحكم الكلي.
- بونس: فائز مسابقة IDA 2016 المكون الإضافي! التنفيذ الرمزي بنقرة واحدة فقط!
- QSYNTHESS: مزج صناديق الرمادي الموجهة لتخليص تعليمات التجميع.
- Tritondse: مكتبة DSE المستندة إلى Triton مع قدرات التحميل والاستكشاف.
- Titan: Titan هو devirtualizer vmprotect باستخدام Triton.
الأوراق والمؤتمر
- Sydr-Fuzz: التحليل الهجين المستمر والتحليل الديناميكي لدورة حياة تطوير الأمان
الحديث في : مؤتمر إيفانيكوف ISP RAS المفتوح ، موسكو ، روسيا ، 2022. [ورقة] [شريحة]
المؤلفون : Vishnyakov A. ، Kuts D. ، Logunova V. ، Parygina D. ، Kobrin E. ، Savidov G. ، Fedotov A.
الخلاصة : في الوقت الحاضر ، تكون أطر التحليل الديناميكي الآلي للاختبار المستمر في ارتفاع الطلب لضمان سلامة البرمجيات وتلبية متطلبات دورة حياة تطوير الأمان (SDL). تتفوق كفاءة صيد الأخطاء الأمنية لتقنيات الغموض الهجينة المتطورة على الأداء الذي تم استخدامه على نطاق واسع. نقترح خط أنابيب تحليل ديناميكي معزز للاستفادة من إنتاجية الكشف الآلي للأخطاء القائمة على التغذية الهجينة. نقوم بتنفيذ خط الأنابيب المقترح في مجموعة الأدوات المستمرة Sydr-Fuzz التي يتم تشغيلها بواسطة Orchestrator المختلط ، ودمج SYDR Tool DSE مع libfuzzer و AFL ++. يشتمل Sydr-Fuzz أيضًا على لعبة Security Sected Scheders ، وأداة TriAging CASR ، والمرافق لتقليل الجسم وجمع التغطية. يوضح قياس علاماتنا الهجينة ضد الحلول البديلة الحديثة تفوقها على الزواحف الموجهة التغطية مع البقاء على نفس المستوى مع زوارق هجينة متقدمة. علاوة على ذلك ، نوافق على أهمية نهجنا من خلال اكتشاف 85 عيوب برمجيات في العالم الحقيقي في مشروع OSS-SYDR-Fuzz. أخيرًا ، نفتح كود مصدر CASR للمجتمع لتسهيل فحص الحوادث الحالية.
- حل متفائل قوي للتنفيذ الرمزي الديناميكي
تحدث في : ورشة عمل إيفانيكوف التذكارية ، كازان ، روسيا ، 2022. [ورقة] [شريحة]
المؤلفون : Parygina D. ، Vishnyakov A. ، Fedotov A.
الخلاصة : التنفيذ الرمزي الديناميكي (DSE) هو طريقة فعالة لاختبار البرنامج الآلي والكشف عن الأخطاء. إنها تزيد من تغطية الكود من خلال استكشاف الفروع المعقدة أثناء الغموض الهجين. تقوم أدوات DSE بتقسيم الفروع على طول بعض مسار التنفيذ ومساعدة Fuzzer على فحص أجزاء البرنامج غير المتوفرة سابقًا. غالبًا ما تواجه DSE مشاكل أكثر من ذلك. الأول يؤدي إلى مضاعفات تحليل كبيرة في حين أن الثانية تسبب تنفيذًا رمزيًا غير دقيق. نقترح طريقة حل متفائلة قوية تلغي قيود المسار غير ذي صلة بالقيود على انعكاس الفرع المستهدف. نحن نزيل هذه القيود الرمزية التي لا يعتمد الفرع المستهدف على. علاوة على ذلك ، فإننا نتعامل بشكل منفصل عن الفروع الرمزية التي لديها تعليمات نقل تحكم متداخلة تمر التحكم إلى ما وراء نطاق الفرع الأصل ، مثل الإرجاع ، GOTO ، الكسر ، وما إلى ذلك. نحن ننفذ الطريقة المقترحة في أداة التنفيذ الرمزية الديناميكية الخاصة بنا. نقوم بتقييم الاستراتيجية المتفائلة القوية ، والاستراتيجية المتفائلة التي تحتوي فقط على نفي القيد الأخير ، ومجموعها. تظهر النتائج أن مجموعة الاستراتيجيات تساعد على زيادة تغطية الكود أو متوسط عدد الفروع المقلوبة بشكل صحيح لكل دقيقة. من الأمثل تطبيق كلا الاستراتيجيتين معًا على عكس التكوينات الأخرى.
- تخليق برنامج Greybox: نهج جديد لمهاجمة عمليات تدفق البيانات
تحدث في : Blackhat USA ، لاس فيجاس ، نيفادا ، 2021. [شريحة]
المؤلفون : روبن ديفيد
الخلاصة : يعرض هذا الحديث أحدث التطورات في تخليق البرنامج المطبق على deobfuscation. إنه يهدف إلى إزالة الغموض عن تقنية التحليل هذه من خلال إظهار كيف يمكن وضعه موضع التنفيذ على التشويش. لا سيما التنفيذ Qsynthesis الذي تم إصداره لهذا الحوالي يوضح سير عمل كامل من طرف إلى طرف لإلغاء تعليمات التجميع في تعليمات محسّنة (deobfusced) التي تم إعادة تجميعها مرة أخرى في الثنائي.
- من رمز المصدر إلى حالة اختبار التصادم من خلال أتمتة اختبار البرمجيات
تحدث في : C & Esar ، رين ، فرنسا ، 2021. [ورقة] [شريحة]
المؤلفون : روبن ديفيد ، جوناثان سلوان ، جوستين بوروكس
الخلاصة : تقدم هذه الورقة نهجًا أتمتة عملية اختبار البرامج من رمز مصدر إلى الاختبار الديناميكي للبرنامج المترجم. وبشكل أكثر تحديداً ، من تقرير تحليل ثابت يشير إلى تنبيهات على خطوط المصدر ، فإنه يتيح الاختبار لتغطية هذه الخطوط ديناميكيًا وانتهازيًا ما إذا كان بإمكانهم تشغيل حادث تحطم أم لا. والنتيجة هي مجموعة اختبار تسمح بتغطية التنبيهات وإطلاقها إذا كانت إيجابيات حقيقية. تناقش هذه الورقة المنهجية المستخدمة لتتبع التنبيهات في الثنائي المترجمة ، وعملية اختيار محركات الاختبار والنتائج التي تم الحصول عليها على تطبيق مكدس TCP/IP لأنظمة IOT المدمجة.
- تنبؤ الأمن الرمزي: نقاط الضعف في برنامج الصيد
الحديث في : مؤتمر إيفانيكوف ISP RAS المفتوح ، موسكو ، روسيا ، 2021. [ورقة] [شريحة]
المؤلفون : A.Vishnyakov ، V.Logunova ، E.Kobrin ، D.Kuts ، D.Parygina ، A.Fedotov
الخلاصة : التنفيذ الرمزي الديناميكي (DSE) هو طريقة قوية لاستكشاف المسار أثناء الكشف عن الأخطاء التلقائية والكشف التلقائي. نقترح المتوقعات الأمنية للكشف عن أخطاء انتهاك الوصول غير المحددة وذاكرة الوصول إلى الذاكرة بشكل فعال. في البداية ، نقوم بتنفيذ برنامج رمزيًا على المسارات التي لا تؤدي إلى أي أخطاء (قد يستكشف الهجين الهجين هذه المسارات). ثم نقوم ببناء مسند أمان رمزي للتحقق من بعض حالات الخطأ. وبالتالي ، قد نقوم بتغيير تدفق بيانات البرنامج لاستلاقتها في إشراف مؤشر NULL ، أو الانقسام عن طريق الصفر ، أو الوصول خارج الحدود ، أو نقاط الضعف في التدفق الصحيح. على عكس التحليل الثابت ، لا يقوم التنفيذ الرمزي الديناميكي بالإبلاغ عن الأخطاء فحسب ، بل يولد أيضًا بيانات إدخال جديدة لإعادة إنتاجها. علاوة على ذلك ، نقدم نمذجة دلالات الوظائف لوظائف المكتبة القياسية C/C ++ المشتركة. نهدف إلى تصميم تدفق التحكم داخل وظيفة ذات صيغة رمزية واحدة. هذا يساعد في اكتشاف الأخطاء ، ويسرع استكشاف المسار ، والتغلب على المبالغة في المسار. نقوم بتنفيذ التقنيات المقترحة في أداة التنفيذ الرمزية الديناميكية الخاصة بنا SYDR. وبالتالي ، فإننا نستخدم طرقًا قوية من SYDR مثل تقطيع المسار الذي يزيل القيود غير ذات الصلة. نقدم Juliet Dynamic لقياس دقة أدوات اكتشاف الأخطاء الديناميكية. يتحقق نظام الاختبار أيضًا من أن المدخلات التي تم إنشاؤها تؤدي إلى المطهرات. نقوم بتقييم دقة SYDR لـ 11 CWES من Juliet Test Suite. SYDR يظهر 95.59 ٪ دقة إجمالية. نجعل القطع الأثرية لتقييم SYDR متاحة للجمهور لتسهيل استنساخ النتائج.
- نحو تفكير مؤشرات رمزية في التنفيذ الرمزي الديناميكي
تحدث في : ورشة عمل إيفانيكوف التذكارية ، نيزني نوفغورود ، روسيا ، 2021. [ورقة] [شريحة]
المؤلفون : دانييل كوتس
الخلاصة : التنفيذ الرمزي الديناميكي هو تقنية على نطاق واسع لاختبار البرمجيات الآلي ، المصممة لاكتشاف أخطاء البرنامج واكتشاف أخطاء البرنامج. لقد أصبح النهج الهجين على نطاق واسع في الآونة الأخيرة ، عندما يساعد الهدف الرئيسي للتنفيذ الرمزي على زيادة تغطية البرنامج. كلما زاد عدد الفروع الرمزية ، يمكن أن ينقلب ، كلما كان الأمر أكثر فائدة بالنسبة لـ Fuzzer. يعتمد تدفق التحكم في البرنامج غالبًا على قيم الذاكرة ، والتي يتم الحصول عليها عن طريق حساب فهارس عناوين من إدخال المستخدم. ومع ذلك ، فإن معظم أدوات DSE لا تدعم هذه التبعيات ، لذلك فهي تفوت بعض فروع البرامج المطلوبة. نقوم بتنفيذ العناوين الرمزية للتفكير في قراءة الذاكرة في أداة التنفيذ الرمزية الديناميكية الخاصة بنا SYDR. يتم تحديد مناطق الوصول المحتملة للذاكرة إما عن طريق تحليل تعبيرات عنوان الذاكرة ، أو البحث الثنائي باستخدام SMT-solver. نقترح تقنية خطية محسّنة لنمذجة الوصول إلى الذاكرة. تتم مقارنة طرق نمذجة الذاكرة المختلفة على مجموعة البرامج. يوضح تقييمنا أن معالجة العناوين الرمزية تسمح باكتشاف فروع رمزية جديدة وزيادة تغطية البرنامج.
- Qsynth: نهج قائم على توليف البرنامج ل deobfuscation الكود الثنائي
تحدث في : بار ، سان دييغو ، كاليفورنيا ، 2020. [ورقة]
المؤلفون : روبن ديفيد ، لويجي كونيجليو ، ماريانو سيكاتو
الخلاصة : نقدم نهجًا عامًا يستفيد من كل من توليف DSE والبرنامج لتوليف البرامج بنجاح مع المختلط بين البوليان المختلط ، أو ترميز البيانات أو المحاكاة الافتراضية. خوارزمية التوليف المقترحة هي عبارة عن توليف متصل للإنترنت بدائية تسترشد بالبحث من أعلى إلى أسفل. نوضح فعاليته ضد حدوث حدوث حديد وقابلية التوسع لأنه يحل محل الأساليب الأخرى المماثلة القائمة على التوليف. نظهر أيضًا فعاليتها في وجود تشويش مركب (مزيج من التقنيات المختلفة). هذا العمل المستمر ينير فعالية التوليف لاستهداف أنواع معينة من التغذية ويفتح الطريق إلى خوارزميات أكثر قوة واستراتيجيات التبسيط.
- SYDR: تنفيذ رمزي ديناميكي متطور
تحدث في : مؤتمر Ivannikov ISP Ras Open ، موسكو ، روسيا ، 2020. [ورقة] [شريحة] [فيديو]
المؤلفون : A.Vishnyakov ، A.Fedotov ، D.Kuts ، A.Novikov ، D.Parygina ، E.Kobrin ، V.Logunova ، P.Belecky ، S.Kurmangaleev
الخلاصة : التنفيذ الرمزي الديناميكي (DSE) لديه كمية هائلة من التطبيقات في أمان الكمبيوتر (الغموض ، اكتشاف الضعف ، الهندسة العكسية ، إلخ). نقترح العديد من تحسينات الأداء والدقة للتنفيذ الرمزي الديناميكي. يسمح تخطي التعليمات غير المخلوطة ببناء مسار أسرع 1.2-3.5 مرات. المحرك الرمزي يبسط الصيغ أثناء التنفيذ الرمزي. تم التقطيع المسار المسار يزيل النقل غير ذي صلة من استعلامات المحاليل. نتعامل مع كل جدول قفزة (عبارة التبديل) كفروع متعددة ونصف طريقة التنفيذ الرمزي للبرامج متعددة الخيوط. تم تنفيذ الحلول المقترحة في أداة SYDR. SYDR يؤدي انعكاس الفروع في المسار المسار. SYDR يجمع بين أداة الأجهزة الثنائية الديناميكية Dynamorio مع المحرك الرمزي Triton.
- deobfuscation الرمزي: من الكود الظاهري مرة أخرى إلى الأصل
تحدث في : Dimva ، Paris-Saclay ، France ، 2018. [Paper] [Slide]
المؤلفون : جوناثان سلوان ، سيباستيان باردين ، ماري لوري بوتيت
الخلاصة : اتخذت حماية البرمجيات مكانًا مهمًا خلال العقد الماضي من أجل حماية البرامج الشرعية من الهندسة العكسية أو العبث. تعتبر المحاكاة الافتراضية واحدة من أفضل الدفاعات ضد هذه الهجمات. نقدم نهجًا عامًا يعتمد على استكشاف المسار الرمزي ، و entaint وإعادة التجميع ، مما يسمح بالتعافي ، من رمز افتراضي ، رمز devirtualited متطابق بشكل دلالي مع الحجم الأصلي وقرب في الحجم. نحدد المعايير والمقاييس لتقييم أهمية النتائج المقلدة من حيث الصواب والدقة. أخيرًا ، نقترح إعدادًا مفتوح المصدر يسمح بتقييم النهج المقترح مقابل عدة أشكال من المحاكاة الافتراضية.
- deobfuscation لحماية البرمجيات المستندة إلى VM
تحدث في : Sstic ، رين ، فرنسا ، 2017. [ورقة فرنسية] [شريحة إنجليزية] [فيديو فرنسي]
المؤلفون : جوناثان سلوان ، سيباستيان باردين ، ماري لوري بوتيت
الخلاصة : في هذا العرض التقديمي ، وصفنا نهجًا يتكون من تحليل حماية البرامج القائمة على الجهاز الظاهري تلقائيًا والذي يعيد ترجمة إصدار جديد من الثنائي دون مثل هذه الحماية. يعتمد هذا النهج الآلي على دليل التنفيذ الرمزي من خلال تحليل taint وبعض سياسات التزامن ، ثم على إعادة كتابة ثنائية باستخدام انتقال LLVM.
- كيف يمكن لـ Triton المساعدة في عكس حماية البرامج القائمة على الجهاز الظاهري
تحدث في : CSAW SOS ، NYC ، نيويورك ، 2016. [SLIDE]
المؤلفون : جوناثان سلوان ، رومان توماس
الخلاصة : سيكون الجزء الأول من الحديث مقدمة لإطار Triton لفضح مكوناته وشرح كيفية عملها معًا. بعد ذلك ، سيتضمن الجزء الثاني عروضًا حول كيفية إمكانية عكس الحماية القائمة على الجهاز الظاهري باستخدام تحليل taint والتنفيذ الرمزي وتبسيط SMT وتحسينات LLVM-IR.
- التحليل الثنائي الديناميكي والرموز المفرطة
تحدث في : St'Hack ، بوردو ، فرنسا ، 2016. [شريحة]
المؤلفون : جوناثان سلوان ، رومان توماس
الخلاصة : في هذا العرض التقديمي ، سوف نتحدث عن كيفية مساعدة DBA (تحليل ثنائي ديناميكي) في مهندس عكسي على عكس الشفرة المملوءة. سنقدم أولاً بعض تقنيات التشويش الأساسية ثم كشف كيف يمكن كسر بعض الأشياء (باستخدام إطار DBA مفتوح المصدر - Triton) مثل اكتشاف المسندات غير المعتادة ، وإعادة بناء CFG ، وإيجاد الخوارزمية الأصلية ، وعزل البيانات المعقولة والكثير ... ثم ، سنختتم مع DEMO و TOP LORT حول عملنا في المستقبل.
- كيف يمكن أن تساعد تريتون في تحليل الثنائيات المفرطة
النشر في : Misc Magazine 82 ، 2015. [المقالة الفرنسية]
المؤلفون : جوناثان سلوان ، رومان توماس
الخلاصة : يتم استخدام التشويش الثنائي لحماية الملكية الفكرية للبرامج. توجد أنواع مختلفة من التفتيش ولكن تقريبًا ، يحول بنية ثنائية إلى بنية ثنائية أخرى من خلال الحفاظ على نفس الدلالي. الهدف من التشويش هو التأكد من أن المعلومات الأصلية "تغرق" في معلومات عديمة الفائدة تجعل الهندسة العكسية أكثر صعوبة. في هذه المقالة ، سوف نوضح كيف يمكننا تحليل برنامج Ofbusced وكسر بعض عمليات التغذية باستخدام إطار Triton.
- تريتون: إطار تنفيذ concolic
تحدث في : Sstic ، رين ، فرنسا ، 2015. [ورقة فرنسية] [شريحة إنجليزية مفصلة]
المؤلفون : جوناثان سالوان ، فلورنت سوديل
الخلاصة : هذا الحديث يدور حول إصدار Triton ، وهو إطار تنفيذ concolic يعتمد على PIN. يوفر مكونات مثل محرك taint ، ومحرك تنفيذ رمزي ديناميكي ، ومحرك لقطة ، وترجمة تعليمات X64 إلى SMT2 ، وواجهة Z3 لحل القيود وربط الثعبان. استنادًا إلى هذه المكونات ، يوفر Triton إمكانية إنشاء أدوات لأبحاث نقاط الضعف أو مساعدة الهندسة العكسية.
- تحليل السلوك الديناميكي باستخدام الأجهزة الثنائية
تحدث في : St'Hack ، بوردو ، فرنسا ، 2015. [شريحة]
المؤلفون : جوناثان سلوان
الخلاصة : يمكن اعتبار هذا الحديث مثل الجزء 2 من حديثنا في يوم الأمن. في الجزء السابق ، تحدثنا عن كيفية تغطية وظيفة مستهدفة في الذاكرة باستخدام نهج DSE (التنفيذ الرمزي الديناميكي). لا يعني تغطية وظيفة (أو حالاتها) العثور على جميع نقاط الضعف ، وبعض الضعف لا يعطل البرنامج. لهذا السبب يجب علينا تنفيذ تحليل محدد للعثور على أخطاء محددة. يعتمد هذا التحليل على الأجهزة الثنائية وتحليل سلوك وقت التشغيل للبرنامج. في هذا الحديث ، سنرى كيف يمكن العثور على هذا النوع التالي من الأخطاء: خارج واحد ، ومكدس / كومة فيضان ، وسلسلة الاستخدام الخالية من التنسيق ، و {كتابة ، اقرأ}-ماذا.
- تغطية وظيفة باستخدام نهج تنفيذ رمزي ديناميكي
تحدث في : يوم الأمن ، ليل ، فرنسا ، 2015. [شريحة]
المؤلفون : جوناثان سلوان
الخلاصة : هذا الحديث عن التحليل الثنائي والأجهزة. سنرى كيف من الممكن استهداف وظيفة محددة ، لقطة في السياق/السجلات قبل الوظيفة ، وترجمة الأجهزة إلى تمثيل وسيط ، وتطبيق تحليل taint بناءً على هذا الأشعة تحت الحمراء ، وإنشاء/الاحتفاظ الصيغ بالتنفيذ الرمزي الديناميكي (DSE) ، وتوليد قيمة ملموسة للذهاب إلى مسار محدد ، واستعادة ذاكرة السياق هذه المتمثلة في التكرار حتى يتم تكرارها إلى المسار الآخر.
استشهد تريتون
@inproceedings{SSTIC2015-Saudel-Salwan,
author = {Saudel, Florent and Salwan, Jonathan},
title = {Triton: A Dynamic Symbolic Execution Framework},
booktitle = {Symposium sur la s{ ' {e}}curit{ ' {e}} des technologies de l'information
et des communications},
series = {SSTIC},
pages = {31--54},
address = {Rennes, France},
month = jun,
year = {2015},
}