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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
dr_checker — DR.CHECKER : أداة كشف ثغرات أمنية Soundy لبرامج تشغيل نواة لينكس | Kitploit
أدوات/GitHubGitHub/ucsb-seclab/dr_checker
التحليل الثابتماسحات الثغرات الأمنيةتحليل الثغرات الأمنيةالاختبار العشوائيتحليل الملفات الثنائية
GitHubucsb-seclab/dr_checker

dr_checker

DR.CHECKER : أداة كشف ثغرات أمنية Soundy لبرامج تشغيل نواة لينكس

عرض المستودع
33972منذ 4 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

DR.CHECKER: أداة كشف الثغرات الأمنية (Soundy) لسائقي نواة لينكس

License

warning

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

تم الاختبار على

Ubuntu >= 14.04.5 LTS

الإعلانات

16 فبراير 2018:

  • تم وضع DR.CHECKER في حاوية دوكر. راجع استخدام دوكر لمعرفة كيفية استخدامه.

أسئلة متكررة

0. استخدام الإعداد المحول إلى حاوية دوكر (موصى به)

راجع وثيقة استخدام دوكر للحصول على تفاصيل حول كيفية استخدام DR.CHECKER في حاوية دوكر مبنية مسبقًا.

1. الإعداد

يعتمد تنفيذنا على LLVM، وتحديداً LLVM 3.8. نحتاج أيضًا إلى أدوات مثل c2xml لتحليل ملفات الرأس.

أولاً، تأكد من أن لديك cmake (المستخدم في نصوص الإعداد/البناء) و libxml (المطلوب لـ c2xml):

root@kitploit:~
sudo apt-get install cmake libxml2-dev

بعد ذلك، قمنا بإنشاء نص برمجي واحد يقوم بتنزيل وبناء جميع الأدوات المطلوبة.

root@kitploit:~
cd helper_scripts
python setup_drchecker.py --help
usage: setup_drchecker.py [-h] [-b TARGET_BRANCH] [-o OUTPUT_FOLDER]

optional arguments:
  -h, --help        show this help message and exit
  -b TARGET_BRANCH  Branch (i.e. version) of the LLVM to setup. Default:
                    release_38 e.g., release_38
  -o OUTPUT_FOLDER  Folder where everything needs to be setup.

مثال:

root@kitploit:~
python setup_drchecker.py -o drchecker_deps

لإكمال الإعداد، تحتاج أيضًا إلى تعديلات في متغير البيئة PATH المحلي. سيعطيك نص الإعداد التغييرات الدقيقة التي تحتاج إلى القيام بها.

2. البناء

يعتمد هذا على إكمال الإعداد بنجاح. لدينا نص برمجي واحد يبني كل شيء، مرحبًا بك.

root@kitploit:~
cd llvm_analysis
./build.sh

3. التشغيل

يعتمد هذا على إكمال البناء بنجاح. لتشغيل DR.CHECKER على سائقي النواة، نحتاج أولاً إلى تحويلهم إلى كود بت LLVM.

3.1 بناء النواة

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

3.1.1 توليد مخرجات make (أو makeout.txt)

ما عليك سوى تمرير V=1 وإعادة توجيه المخرجات إلى الملف. مثال:

root@kitploit:~
make V=1 O=out ARCH=arm64 > makeout.txt 2>&1

ملاحظة: لا تستخدم معالجات متعددة أي -j. تشغيل وضع المعالجة المتعددة سيعبث بملف المخرجات لأن عمليات متعددة تحاول الكتابة إلى ملف المخرجات.

هذا كل شيء. سيتولى DR.CHECKER الباقي من هنا.

3.2 تشغيل تحليل DR.CHECKER

هناك عدة خطوات لتشغيل تحليل DR.CHECKER، كل هذه الخطوات مغلفة في نص برمجي واحد helper_scripts/runner_scripts/run_all.py كيفية التشغيل:

root@kitploit:~
python run_all.py --help
usage: run_all.py [-h] [-l LLVM_BC_OUT] [-a CHIPSET_NUM] [-m MAKEOUT] [-g COMPILER_NAME] [-n ARCH_NUM] [-o OUT] [-k KERNEL_SRC_DIR] [-skb] [-skl] [-skp] [-ske] [-ski] [-f SOUNDY_ANALYSIS_OUT]

optional arguments:
  -h, --help            show this help message and exit
  -l LLVM_BC_OUT        Destination directory where all the generated bitcode files should be stored.
  -a CHIPSET_NUM        Chipset number. Valid chipset numbers are:
                        1(mediatek)|2(qualcomm)|3(huawei)|4(samsung)
  -m MAKEOUT            Path to the makeout.txt file.
  -g COMPILER_NAME      Name of the compiler used in the makeout.txt, This is
                        needed to filter out compilation commands. Ex: aarch64-linux-android-gcc
  -n ARCH_NUM           Destination architecture, 32 bit (1) or 64 bit (2).
  -o OUT                Path to the out folder. This is the folder, which
                        could be used as output directory during compiling
                        some kernels. (Note: Not all kernels needs a separate out folder)
  -k KERNEL_SRC_DIR     Base directory of the kernel sources.
  -skb                  Skip LLVM Build (default: not skipped).
  -skl                  Skip Dr Linker (default: not skipped).
  -skp                  Skip Parsing Headers (default: not skipped).
  -ske                  Skip Entry point identification (default: not
                        skipped).
  -ski                  Skip Soundy Analysis (default: not skipped).
  -f SOUNDY_ANALYSIS_OUT    Path to the output folder where the soundy analysis output should be stored.

يقوم النص البرمجي ببناء وربط وتشغيل DR.CHECKER على جميع السائقين، وبالتالي قد يستغرق وقتًا كبيرًا (45-90 دقيقة). إذا كنت تريد تشغيل DR.CHECKER يدويًا على سائقين فرديين، راجع تشغيل مستقل

يقوم النص البرمجي أعلاه بالمهام التالية في وضع متعدد المعالجات للاستفادة من جميع أنوية وحدة المعالجة المركزية:

3.2.1. بناء LLVM

  • مفعل افتراضيًا.

سيتم وضع جميع ملفات البت كود المنشأة في المجلد المقدم للوسيطة -l. تستغرق هذه الخطوة وقتًا كبيرًا، اعتمادًا على عدد الأنوية لديك. لذا، إذا كنت قد أجريت هذه الخطوة بالفعل، يمكنك تخطيها بتمرير -skb.

3.2.2. ربط جميع ملفات بت كود السائق في ملف بت كود موحد.

  • مفعل افتراضيًا

يقوم هذا بربط جميع ملفات البت كود وتحديد ملفات البت كود ذات الصلة التي تحتاج إلى ربط وربطها (باستخدام llvm-link) في ملف بت كود موحد (سيتم تخزينه بجانب ملف البت كود المقابل).

على غرار الخطوة أعلاه، يمكنك تخطي هذه الخطوة بتمرير -skl.

3.2.3. تحليل ملفات الرأس لتحديد حقول وظائف الدخول.

  • مفعل افتراضيًا.

تبحث هذه الخطوة عن إعلانات نقاط الدخول في ملفات الرأس وتخزن تكوينها في الملف: hdr_file_config.txt تحت دليل بناء LLVM.

لتخطي: -skp

3.2.4. تحديد نقاط الدخول في جميع ملفات البت كود الموحدة.

  • مفعل افتراضيًا

تحدد هذه الخطوة جميع نقاط الدخول عبر جميع ملفات البت كود الموحدة للسائق. سيتم تخزين المخرجات في الملف: entry_point_out.txt تحت دليل بناء LLVM.

مثال على محتويات الملف entry_point_out.txt:

root@kitploit:~
FileRead:hidraw_read:/home/drchecker/33.2.A.3.123/llvm_bc_out/drivers/hid/llvm_link_final/final_to_check.bc
FileWrite:hidraw_write:/home/drchecker/33.2.A.3.123/llvm_bc_out/drivers/hid/llvm_link_final/final_to_check.bc
IOCTL:hidraw_ioctl:/home/drchecker/33.2.A.3.123/llvm_bc_out/drivers/hid/llvm_link_final/final_to_check.bc

لتخطي: -ske

3.2.5. تشغيل تحليل Soundy على جميع نقاط الدخول المحددة.

  • مفعل افتراضيًا.

ستقوم هذه الخطوة بتشغيل DR.CHECKER على جميع نقاط الدخول في الملف entry_point_out.txt. سيتم تخزين المخرجات لكل نقطة دخول في المجلد المقدم للخيار -f.

لتخطي: -ski

3.2.6 مثال:

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

لقد قمنا برفع نواة mediatek 33.2.A.3.123.tar.bz2. أولاً قم بتنزيل واستخراج الملف أعلاه.

لنفترض أنك استخرجت الملف أعلاه في مجلد يسمى: ~/mediatek_kernel

3.2.6.1 البناء
root@kitploit:~
cd ~/mediatek_kernel
source ./env.sh
cd kernel-3.18
# the following step may not be needed depending on the kernel
mkdir out
make O=out ARCH=arm64 tubads_defconfig
# this following command copies all the compilation commands to makeout.txt
make V=1 -j8 O=out ARCH=arm64 > makeout.txt 2>&1
3.2.6.2 تشغيل DR.CHECKER
root@kitploit:~
cd <repo_path>/helper_scripts/runner_scripts

python run_all.py -l ~/mediatek_kernel/llvm_bitcode_out -a 1 -m ~/mediatek_kernel/kernel-3.18/makeout.txt -g aarch64-linux-android-gcc -n 2 -o ~/mediatek_kernel/kernel-3.18/out -k ~/mediatek_kernel/kernel-3.18 -f ~/mediatek_kernel/dr_checker_out

يستغرق الأمر أعلاه بعض الوقت (30 دقيقة - 1 ساعة).

3.2.6.3 فهم المخرجات

أولاً، ستكون جميع نتائج التحليل في المجلد: ~/mediatek_kernel/dr_checker_out (الوسيطة المعطاة للخيار -f)، لكل نقطة دخول سيتم إنشاء ملف .json يحتوي على جميع التحذيرات بتنسيق JSON. تحتوي ملفات json هذه على تحذيرات منظمة حسب السياقات.

ثانيًا، يحتوي المجلد ~/mediatek_kernel/dr_checker_out/instr_warnings (بالنسبة للوسيطة المعطاة للخيار -f) على تحذيرات منظمة حسب موقع التعليمات.

يمكن تحليل هذه التحذيرات باستخدام المصور.

أخيرًا، سيتم كتابة ملخص لجميع التحذيرات لكل نقطة دخول منظمة حسب النوع إلى ملف CSV المخرجات: ~/mediatek_kernel/dr_checker_out/warnings_stats.csv (بالنسبة للوسيطة المعطاة للخيار -f).

3.2.7 أشياء يجب ملاحظتها:

3.2.7.1 قيمة الخيار -g

لتقديم قيمة للخيار -g، تحتاج إلى معرفة اسم الثنائي *-gcc المستخدم لتجميع النواة. طريقة سهلة لمعرفة ذلك هي البحث عن gcc باستخدام grep في makeout.txt وسترى أوامر المترجم التي يمكنك من خلالها معرفة اسم الثنائي *-gcc.

في مثالنا أعلاه، إذا قمت بتنفيذ grep gcc makeout.txt للبناء المثال، سترى الكثير من الأسطر مثل ما يلي:

root@kitploit:~
aarch64-linux-android-gcc -Wp,-MD,fs/jbd2/.transaction.o.d  -nostdinc -isystem ...

لذا، يجب أن تكون قيمة -g هي aarch64-linux-android-gcc.

إذا كانت النواة المراد بناؤها 32 بت، فمن المرجح أن يكون الثنائي arm-eabi-gcc

3.2.7.2 قيمة الخيار -a

اعتمادًا على نوع مجموعة الشرائح، تحتاج إلى تقديم الرقم المقابل.

3.2.7.3 قيمة الخيار -o

هذا هو مسار المجلد المقدم للخيار O= لأمر make أثناء بناء النواة.

ليست كل النوى تحتاج إلى مسار مخرجات منفصل. يمكنك بناء النواة بعدم تقديم الخيار O، وفي هذه الحالة يجب عليك عدم تقديم قيمة لذلك الخيار عند تشغيل run_all.py.

3.3 تصور نتائج DR.CHECKER ❄️

نقدم واجهة مستخدم قائمة على الويب لعرض جميع التحذيرات. يرجى الرجوع إلى التصور.

3.6 تعطيل كاشفات الثغرات الأمنية

يمكنك تعطيل واحد أو أكثر من كاشفات الثغرات الأمنية عن طريق إلغاء تعليق الأسطر #define DISABLE_* المقابلة في BugDetectorDriver.cpp

3.5 معالجة نتائج DR.CHECKER لاحقًا

حسب رغبتك، نقدم أيضًا نصًا برمجيًا لمعالجة النتائج لاحقًا. تفقدها.

استمتع!!

4. الاتصال

  • Slack: JOIN SLACK CHANNEL
  • Aravind Machiry ([email protected])
تنزيل الأداة