
إطار عمل لتعداد واستغلال تصعيد الامتيازات في النواة
كيرنل بوب هو إطار عمل لأتمتة تعداد واستغلال ثغرات النواة على أنظمة التشغيل التالية:
لينكس
ماك
مصمم ليكون غير مرتبط بإصدار python، مما يعني أنه يجب أن يعمل مع كل من python2 وpython3

$ git clone https://github.com/spencerdodd/kernelpop
$ cd kernelpop
$ python kernelpop.py || python3 kernelpop.py
$ git clone https://github.com/spencerdodd/kernelpop
$ cd kernelpop
$ ./create_executable.sh
$ ./kernelpop
pyinstaller (تختلف الخطوات حسب نظام البناء)$ pyinstaller kernelpop.py --onefile$ cp dist/kernelpop .كلا خطوتي بناء الملف الثنائي يجب أن تنشئا ملفًا ثنائيًا kernelpop في جذر المشروع.
user@debian:~/Desktop/kernelpop$ python3 kernelpop.py
##########################
# welcome to kernelpop #
# #
# let's pop some kernels #
##########################
[*] grabbing distro version and release from underlying OS (linuxdebian7)
[*] grabbing kernel version from 'uname -a'
[+] kernel (Linux debian 3.2.0-4-686-pae #1 SMP Debian 3.2.41-2 i686 GNU/Linux) identified as:
[base]
type: linux
distro: linuxdebian7
version: 3.2.0-4
architecture: i686
[specific]
type: linux
distro: linuxdebian7
version: 3.2.41-2
architecture: i686
[*] matching kernel to known exploits
[+] discovered 11 possible exploits !
[[ distro kernel matched exploit available ]]
CVE20165195_32 Dirty COW race condition root priv esc for 32 bit
[[ distro kernel version vulnerable ]]
CVE20144699 Exploitable race condition in linux before 3.15.4
CVE20143153 `futex_requeue` vulnerability before 3.14.6 allows for priv esc
CVE20162384 Double free vulnerability in the `snd_usbmidi_create` (requires physical proximity)
CVE20140196 `n_tty_write` vuln before 3.14.4 allows priv esc to root
CVE20132094_semtex perf_swevent_init Local root exploit (32 bit)
CVE20176074 `dccp_rcv_state_process` in net/dccp/input.c mishandles structs and can lead to local root
CVE20132094_32 perf_swevent_init Local root exploit (32 bit)
[[ base linux kernel vulnerable ]]
CVE20144014 `chmod` restriction bypass allows users to get root before 3.14.8
CVE20177308 `packet_set_ring` in net/packet/af_packet.c can gain privileges via crafted system calls.
CVE20171000112 ip_ufo_append_data() memory corruption flaw can be exploited to gain root privileges.
في المخرجات، هناك عدة فئات. هذا ما تعنيه كل منها
[[ distro kernel matched exploit available ]]
[[ distro kernel version vulnerable ]]
[[ base linux kernel vulnerable ]]
python2 أو python3
pyinstaller (إذا كنت تريد بناء ملف ثنائي)
run modes:
(default) python3 kernelpop.py
(exploit-mode) python3 kernelpop.py -e {exploit name}
(dump-source) python3 kernelpop.py -e {exploit name} -d
(uname-mode) python3 kernelpop.py -u {uname -a output}
(interactive-mode) python3 kernelpop.py -i # LEGACY option (same as uname-mode)
other:
(playground path) -p {new path}
(json output file) --digest json
يقوم الوضع الافتراضي بمعالجة معلومات حول نواة المضيف ومقارنتها باستغلالات النواة المعروفة المتاحة للبرنامج. ثم يُخرج قائمة بالثغرات المحتملة الفائدة والاستغلالات المرفقة.
-e {exploit name}
يقوم وضع الاستغلال بترجمة وتشغيل كود مصدر الاستغلال ديناميكيًا مع تفاعلات stdio داخل البرنامج. يمكنه أيضًا التقاط المقاطعات من المحاولات المتوقفة مبكرًا. استخدم اسم الاستغلال الذي يظهر في تشغيل التعداد الأولي لـ kernelpop في الوضع الافتراضي.
تفريغ المصدر (خيار) -d
الاستغلال. يقوم بتفريغ ملفات المصدر للاستغلال المحدد إلى ملفاتها الخاصة في PLAYGROUND_PATH (الافتراضي /tmp). هذا مفيد لتعديل مصدر الاستغلال على جهاز أو العمل مع استغلالات تتطلب تفاعلًا يدويًا أو ترميزًا ثابتًا للقيم. إنه مفيد بشكل خاص عند التشغيل من ملف ثنائي، لأنه لن يكون لديك إمكانية الوصول إلى كود مصدر المشروع (أي مصدر الاستغلال).-u {uname -a output}
يتيح لك هذا الخيار تمرير مخرجات أمر uname -a إلى البرنامج مباشرة، مما يجعله قابلًا للاستخدام للتكامل مع السكريبتات الآلية أو لأي سبب آخر متوقع. بديل لـ الوضع التفاعلي.
uname]-i {uname -a output}
يسمح لك الوضع التفاعلي بإجراء التعداد فقط بمخرجات أمر uname -a، مما يجعله مفيدًا كأداة تعداد من جانب المضيف فقط. يتم تشغيله ببدء kernelpop مع العلامة -i ثم تمرير مخرجات uname -a عند الطلب. هذه ميزة إرث وتم استبدالها بـ وضع uname، لكنها تبقى مدعومة لأن -u لا يدعم تعداد ماك.
PLAYGROUND-p {new PLAYGROUND_PATH dir}
يقوم الخيار -p بتعيين قيمة المتغير العام PLAYGROUND_PATH. هذا هو الموقع الذي تُكتب إليه جميع ملفات مصدر الاستغلالات، وتُجمّع إليه الاستغلالات. يتم تعيينه افتراضيًا إلى /tmp. ومع ذلك، يمكنك تعيينه إلى أي دليل باستخدام هذا المُعدِّل في حال لم يكن لديك صلاحية الكتابة في /tmp.
--digest json
يتيح لك هذا الخيار تفريغ نتائج تشغيل kernelpop إلى ملف json قابل للهضم للمعالجة لاحقًا. حتى الآن، قمت فقط بتنفيذ تفريغ json، لكنني سأعمل على إصدار XML إذا تم طلبه.
إضافة المزيد من الاستغلالات! (src/to_add إذا أراد أي شخص البدء في العمل على بعضها، فليتفضل!)
تضمين مستويات التصحيح في مقارنات النوافذ المعرضة للخطر
إضافة طريقة لتجاوز الإعدادات المكتشفة في حالة التحليل غير الصحيح أو الإعدادات العدائية
ابحث في جوجل: CVE-XXXX-XXXX "ubuntu"
انقر على رابط canonical (https://people.canonical.com/~ubuntu-security/cve/2016/CVE-XXXX-XXXX.html)
انقر على جميع الإشعارات المرتبطة في usn.ubuntu.com واستخرج المعلومات
احصل على إصدارات التصحيح لملء نوافذ الثغرات حسب الإصدار
ابحث في جوجل: CVE-XXXX-XXXX "debian"
رابط security-tracker.debian.org (https://security-tracker.debian.org/tracker/CVE-XXXX-XXXX)
ابحث في جوجل: CVE-XXXX-XXXX "mitre"
CVE-2017-1000379
CVE-2017-1000373
CVE-2017-1000372
CVE-2017-1000371
CVE-2017-1000370
CVE-2017-1000367
CVE-2017-1000112
CVE-2017-7308
CVE-2017-6074
CVE-2017-5123
CVE-2016-5195
CVE-2016-2384
CVE-2016-0728
https://github.com/SecWiki/linux-kernel-exploits
http://exploit-db.com/
https://github.com/lucyoa/kernel-exploits
https://github.com/SecWiki/windows-kernel-exploits
ديبيان
CVE-2015-1328
CVE-2014-4699
CVE-2014-4014
CVE-2014-3153
CVE-2014-0196
CVE-2014-0038
CVE-2013-2094
CVE-2010-4347
CVE-2010-2959
CVE-2009-1185