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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
Fault-Injection-Finder — البحث تلقائيًا وتنفيذ هجمات حقن الأخطاء | Kitploit
أدوات/GitHubGitHub/geeoon/fault-injection-finder
أمان الأنظمة المدمجةالاستغلالالاختبار العشوائياختراق الأجهزةاختبار الاختراقأمن الأجهزةأمان الأجهزة وإنترنت الأشياءتحليل الملفات الثنائية
GitHubgeeoon/fault-injection-finder

Fault-Injection-Finder

البحث تلقائيًا وتنفيذ هجمات حقن الأخطاء

عرض المستودع
1444منذ 8 أياملم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

مكتشف حقن الأخطاء

root@kitploit:~
▄�    ▜ ▗   ▄▖   ▘    ▗ ▘      ▄▖▘   ▌     
▙▖▀▌▌▌▐ ▜▘  ▐ ▛▌ ▌█▌▛▘▜▘▌▛▌▛▌  ▙▖▌▛▌▛▌█▌▛▘ 
▌ █▌▙▌▐▖▐▖  ▟▖▌▌ ▌▙▖▙▖▐▖▌▙▌▌▌  ▌ ▌▌▌▙▌▙▖▌  
                ▙▌                         

جيون تشونغ ونيت سنايدر

هذا المستودع هو الجانب البرمجي لمشروع هجوم حقن الأخطاء الخاص بنا. للجانب العتادي، راجع هذا المستودع.

المشروع الإجمالي

الهدف من هذا المشروع هو إيجاد تعليمات في تنفيذ برنامج عند تخطيها/تحويلها إلى NOP تسبب مشاكل أمنية.

  1. المعالجة المسبقة
    1. تحميل الثنائي
    2. تحديد التعليمات التي من المرجح أن تسبب مشاكل أمنية عند تحويلها إلى NOP.
  2. محاكاة Unicorn
    1. تشغيل البرنامج مع تحويل التعليمات رقم n إلى NOP.
    2. التحقق من مخرجات البرنامج لمعرفة ما إذا حدث خطأ أمني.
      1. إذا حدث جلب غير صالح، اقلب جميع بتات الإدخال للبرنامج.
      2. أعد تشغيل البرنامج.
      3. إذا حدث جلب غير صالح على عنوان مختلف، قم بتسجيل ذلك. هذا يعني أن إدخال البرنامج قادر على التأثير على عداد البرنامج (أي التحكم في PC).
  3. حل SMT باستخدام Angr
    1. إذا أشارت محاكاة Unicorn إلى التحكم في PC، قم بتشغيل البرنامج بمدخلات رمزية وتخطي التعليمات التي تمت محاكاتها في خطوة Unicorn.
    2. تحقق مما إذا وصلنا في النهاية إلى متغير رمزي في سجل PC.
    3. حل من أجل قيمة PC مخصصة لمعرفة المدخلات اللازمة لجعل PC يصل إلى عنوان محدد.
    4. إذا أمكن حلها، سجل المدخلات التي أدت إلى PC المحدد.
  4. تصدير التعليمات المثيرة للاهتمام
  5. اختبار التعليمات على الهدف باستخدام سكريبت targets/tooling.py وFPGA.

Flow chart for the software

A presentation we gave for this project

التفاصيل

نبحث عن المشاكل الأمنية عن طريق القيام بواحد أو أكثر مما يلي:

  1. فحص مخرجات الإدخال/الإخراج للبرنامج
  2. فحص رمز الخروج للبرنامج
  3. إضافة مشغلات الأخطاء يدويًا إلى الأجزاء "غير القابلة للوصول" من الكود
  4. إجراء فحص التلوث لمعرفة ما إذا كان عداد البرنامج (PC) قابلاً للتعديل
  5. استخدام angr (حل SMT) لحل المدخلات التي تؤدي إلى قيم PC يحددها المستخدم

الحقن (Glitching)

لحقن الأخطاء، اخترنا القيام بحقن الكروبار (crowbar glitching). تم ذلك باستخدام FPGA مع MOSFET قناة N من نوع SI 2302. هنا رابط لأدوات FPGA الخاصة بنا. يمكن العثور على مزيد من المعلومات في targets.

المشغلات

للمشغلات، اخترنا استخدام إدخال GPIO إلى FPGA. في كود الاختبار، نقوم بتبديل حالة LED، على الرغم من أنه يمكنك إجراء تحليل الطاقة لمشغلاتك.

الاستخدام

التبعيات

التبعيات مدرجة في requirements.txt. قم بتثبيتها باستخدام pip install -r requirements.txt.

root@kitploit:~
usage: main.py [-h] [-s INDEX] [-i MAX_ITERATIONS] [-o EXPECTED_OUTPUT] [-e EXPECTED_EXIT] [-d DESIRED_PC] [-v] [-n] [-t TYPES] [-b BINARY_ADDR]
               [-u OUTPUT_DIR] [-f BEGIN_ADDR] [-g END_ADDR]
               binary_path input_path

Automatically finds hardware security vulnerabilities in binaries. Only support ARM.

positional arguments:
  binary_path           The binary to examine
  input_path            The path to the input to the program

options:
  -h, --help            show this help message and exit
  -s, --simulate INDEX  Runs a Unicorn simulation with the fault at an nth instruction issue. Ignores all other flags besides --max_iterations and
                        --verbose.
  -i, --max-iterations MAX_ITERATIONS
                        The maximum number of instructions to run in the binary before ending early
  -o, --expected-output EXPECTED_OUTPUT
                        The expected output of the program on a successful security incident
  -e, --expected-exit EXPECTED_EXIT
                        The expected exit of the program on a successful security incident
  -d, --desired-pc DESIRED_PC
                        The program counter we desire to achieve if possible. In hex or decimal. Keep in mind that this is the absolute address,
                        not relative to the binary.
  -v, --verbose         Verbosity: warning, info, debug
  -n, --no-thumb        Whether or not to run in thumb mode
  -t, --types TYPES     Which types of instructions to focus on. 0) Brute force: every issue. 1) Recommended defaults. 2) Only conditional
                        branches. 3) Only compare/tests. 4) Only returns. 5) Only branches, calls, returns, and compares
  -b, --binary-addr BINARY_ADDR
                        The address to flash the binary to. Defaults to 0x1000000. Can be in hex or decimal.
  -u, --output-dir OUTPUT_DIR
                        The directory to store faults that were found.
  -f, --begin-addr BEGIN_ADDR
                        The starting address of the instructions that should be considered for skipping. (inclusive.) If set, -g must also be set.
  -g, --end-addr END_ADDR
                        The ending address of the instructions that should be considered for skipping. (inclusive.) If set, -f must also be set.

مثال على الاستخدام

فحص المخرجات

python3 main.py ./binaries/sha256.bin ./inputs/sha256.bin -o ./expecteds/sha256.bin -v

يتحقق من المخرجات لمعرفة ما إذا حققنا أهداف هجومنا.

التحكم في عداد البرنامج

python3 main.py ./binaries/aes_ecb.bin ./inputs/aes_ecb.bin -d 0x100045c -v -u outputs/aes_ecb

يختبر الثنائي aes_ecb للقفز إلى دالة "غير قابلة للوصول" مخصصة وتخزين المدخلات المدخلات في دليل.

اختبار حقن في المحاكاة

python3 main.py ./binaries/aes_ecb.bin ./outputs/aes_ecb/solved_pc_188.bin -s 188

تشغيل محاكاة Unicorn لدورة الحقن المحددة هذه والإدخال. في هذه الحالة، المخرجات من التحكم في عداد البرنامج.

القيود

  1. في الوقت الحالي، هذا البرنامج يدعم فقط مجموعة تعليمات ARM. يدعم كلا وضعي Thumb وnon-thumb.
  2. بعض الثنائيات تقوم بعمليات معقدة جدًا على الإدخال (مثل التجزئة)، مما يجعل حل SMT يبطئ.

ملاحظات

تشغيل الثنائيات

الكود المضمن في binaries/sources هو ببساطة للاختبار. لا يستهدف أي عتاد حقيقي وهو مخصص فقط لاختبار الأداة.

لتشغيل ثنائي معين يستهدف جهازًا، تحتاج إلى استخراج الجزء ذي الصلة من الثنائي بطريقة لا تقوم بأي استدعاءات للأطراف الخارجية خارج الإدخال/الإخراج البسيط. على سبيل المثال، إذا كان الثنائي الخاص بك يستخدم UART، يمكنك ترميم الثنائي عن طريق استبدال استدعاءات UART باستدعاءات الدوال المساعدة _read و _write الموجودة في binaries/stubs. بالإضافة إلى ذلك، يمكن استبدال GPIO باستدعاءات _trigger إذا رغبت. لتشغيل الكود الخاص بك عبر الأداة، ستقوم بإنشاء رمز main يحتوي على الثنائي المرمم، ثم ربطه بكود binaries/startup.s. بهذه الطريقة، ستتمكن الأداة من بدء تشغيل الثنائي الخاص بك.

للحصول على مثال محدد، راجع دليل targets حيث نعرض هذه العملية على TIMSPM0L2228.

الترجمة من المصدر

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

تنزيل الأداة