Day 2 Linux ( User Management + Permissions )
7/24/2025

7/24/2025
🔍 وحدة أساسية للمهاجمين (Red Teamers) لفهم صلاحيات الأنظمة، التحكم في الامتيازات، واكتشاف نقاط الضعف المتعلقة بالمستخدمين
العنصر الوصف User (UID) كل مستخدم له رقم تعريفي (User ID) خاص به Group (GID) كل مجموعة لها رقم تعريفي (Group ID) Home Directory لكل مستخدم مجلد شخصي /home/username
System Users مستخدمين غير بشريين (مثل daemon
, www-data
) لتشغيل خدمات
🎯 كمهاجم Red Team، معرفة المستخدمين والمجموعات بتساعدك:
🔐 root هو المستخدم الأعلى صلاحية في النظام، UID = 0
يقدر يعمل أي شيء:
تشغيل النظام بـ root دايمًا = مخاطرة (ممكن تمسح ملفات النظام بالغلط)
الأمر الوظيفة sudo
تنفيذ أمر واحد بصلاحيات root su
فتح shell جديد كمستخدم آخر (افتراضيًا root)
sudo cat /etc/shadow
su
🧠 مين يقدر يستخدم sudo؟
↪️ النظام بيحدده في ملف:
/etc/sudoers
📌 لا تعدّل الملف ده يدويًا، استخدم:
visudo
# or
nano
🎯 كمهاجم، لو لقيت اسمك ضمن الـ sudoers – أنت تقدر تعمل Privilege Escalation بسهولة جدًا.
cat /etc/passwd
كل سطر يمثل مستخدم:
username:password:UID:GID:GECOS:home:shell
root:x:0:0:root:/root:/bin/bash
الحقل الوصف username اسم المستخدم password غالبًا يكون x
→ يعني الباسوورد محفوظ في /etc/shadow
UID رقم تعريف المستخدم GID رقم تعريف المجموعة الأساسية GECOS بيانات وصفية (مثل الاسم الحقيقي) home directory مجلد المستخدم shell الشل الافتراضية (bash غالبًا)
📌 مش كل المستخدمين في /etc/passwd
بشريين – فيه مستخدمين للنظام نفسه.
🎯 كمهاجم:
/bin/false
← ده حساب غير قابل لتسجيل الدخول🔒 بيحتوي على كلمات المرور (مشفرة) لكل مستخدم، وبيحتاج صلاحيات root علشان تشوفه:
sudo cat /etc/shadow
root:$6$Nhf...:19222:0:99999:7:::
الحقل المعنى اسم المستخدم root كلمة المرور المشفرة (Hash) يبدأ بـ $1
, $6
← نوع التشفير تاريخ آخر تغيير أيام من 1-1-1970 الحد الأدنى لتغيير كلمة المرور عدد الأيام الحد الأقصى لتغيير كلمة المرور عدد الأيام مدة التحذير قبل انتهاء الباسوورد أيام فترة السماح بعد الانتهاء أيام تاريخ انتهاء الحساب رقم حقل محجوز مستقبلًا
🎯 كمهاجم:
💡$5$ is (SHA-256) $6$ is (SHA-512) $y$ (or $7$) is yescrypt.
John the Ripper
unshadow
to combine passwd
and shadow
:unshadow passwd shadow > full_hashes.txt
john full_hashes.txt --wordlist=/path/to/wordlist.txt
rockyou.txt
as a common wordlist: /usr/share/wordlists/rockyou.txt
rockyou.txt.gz
⇒ gzip -dk /usr/share/wordlists/rockyou.txt.gz
cewl
, crunch
, or manually.john --format=crypt hashes.txt
john --show full_hashes.txt
hashcat -m 1800 -a 0 hash.txt /usr/share/wordlists/rockyou.txt
hashcat —help # to know all types of hashes
📁 يحتوي على كل الجروبات الموجودة في النظام:
cat /etc/group
sudo:x:27:rezkgamal
الحقل المعنى اسم المجموعة sudo كلمة المرور غالبًا * أو x GID رقم تعريف المجموعة الأعضاء أسماء المستخدمين داخل المجموعة
🎯 فكر هجومي:
sudo
أو docker
أو shadow
← خطر كبيرsudo useradd rezk # don't use it
أو:
sudo adduser rezk
🔸 adduser
أسهل لأنه بيعمل:
sudo userdel rezk
📍لو عايز تحذف الداتا كمان:
sudo userdel -r rezk
sudo passwd rezk
ولو عايز تغير للمتسخدم اللي انت فيه حاليا
sudo passwd
🎯 كـ Root، تقدر تغير كلمة سر أي مستخدم.
/etc/passwd
تحديد الحسابات، البحث عن UID = 0/etc/shadow
استخراج الهاشات، كسر الباسووردات/etc/sudoers
استغلال sudo /etc/group
هل المستخدم في shadow؟ sudo؟ useradd
إنشاء حسابات جديدة بصلاحياتusermod -aG
تصعيد صلاحياتsudo
, su
تشغيل أدوات الاستغلال-------------------------------------------------------------------------
أساس كل عملية هجومية تعتمد على التحكم أو تجاوز صلاحيات الملفات والمجلدات والبرمجيات
كل ملف أو مجلد في لينوكس ليه صلاحيات بتحدد:
لما تعمل:
ls -l Desktop
هتشوف:
drwxr-xr-x 2 razook razookGroup 4096 Dec 1 11:45 .
الرمز المعنى d
نوع الملف (d = directory)
rwx
صلاحيات الـ user (المالك)
r-x
صلاحيات المجموعة (group)
r-x
صلاحيات باقي المستخدمين
🔐 الصلاحيات دي معناها:
chmod
chmod u+x myfile # أضف صلاحية التنفيذ للمالك
chmod g-w myfile # احذف صلاحية الكتابة من الجروب
chmod o+r myfile # أضف صلاحية القراءة للـ others
chmod ug+w myfile # أضف صلاحية الكتابة لمالك الملف والجروب
# + = بيزود
# - = بينفص
الرقم المعنى
بنحسب المجموع لكل مجموعة:
chmod 755 myfile
يعني:
rwx
للمالكr-x
للجروبr-x
للـ others🎯 لا تعدل الصلاحيات عشوائيًا، لأنك ممكن تفتح ملف حساس للجميع وتخرب النظام أو تفتح باب لمهاجم.
chown
و chgrp
sudo chown rezk myfile # هينقل صلاحية الملف ل رزق
sudo chgrp hackers myfile # هينقل صلاحية الملف ل جروب الهاكرز واي حد فيهم ليه الصلاحية
sudo chown rezk:hackers myfile
🎯 ده مهم للمهاجم لأنه لو قدر يغير ملكية ملف، يقدر يسيطر عليه، أو يعمل Privilege Escalation.
umask
– التحكم في صلاحيات الملفات الجديدةumask 022
النتيجة = الملفات الجديدة تكون بصلاحيات:
rw-r--r--
🎯 كمهاجم: ممكن تراقب أو تغير umask
علشان ملفات معينة تتولد بضعف أمني.
لما برنامج يتنفذ وعليه صلاحية SUID، بيتنفذ بصلاحيات مالكه، مش بصلاحيات المستخدم اللي شغله.
ls -l /usr/bin/passwd
هتلاقي:
-rwsr-xr-x 1 root root ...
لاحظ الـ s
بدل x
← معناها SUID مفعّل
↪️ يعني passwd
بيتنفذ كـ root حتى لو شغلته بمستخدم عادي، علشان يقدر يكتب في /etc/shadow
.
sudo chmod u+s myfile
# or
sudo chmod 4755 myfile
🎯 كمهاجم:
s
في الـ permissions ابحث في ExploitDBls -l /usr/bin/wall
-rwxr-sr-x 1 root tty ...
الـ s
في مجموعة الجروب = SGID مفعّلة
↪️ البرنامج هيتنفذ كأنه عضو في جروب tty
sudo chmod g+s myfile
# or
sudo chmod 2555 myfile
🎯 SGID على مجلدات ممكن تستخدم لتحديد مجموعة الملفات الجديدة تلقائيًا ← خطر محتمل
النوع الوصف Real UID صاحب العملية الحقيقي – المستخدم اللي شغل الأمر Effective UID الصلاحيات اللي العملية بتشتغل بيها حاليًا (قد تكون root لو فيه SUID) Saved UID بيحتفظ بصلاحيات معينة للتبديل لاحقًا
passwd
عليه SUID ومالكه root (UID 0)لما تشغله:
/etc/shadow
🎯 ده بيوفر تحكم دقيق في الامتيازات داخل البرامج، وأنت كمهاجم لازم تفهم ده لو ناوي تستغل SUID بشكل ذكي.
ls -ld /tmp
drwxrwxrwt ...
لاحظ الـ t
في الآخر ← معناها sticky bit مفعّلة
↪️ أي حد يقدر يكتب جوه /tmp
، لكن مفيش حد يقدر يمسح ملفات غيره.
sudo chmod +t mydir
#or
sudo chmod 1777 mydir
🎯 كمهاجم:
/tmp
واستغلال البرامج اللي تشتغل من هناكfind / -perm -4000 2>/dev/null
Privilege Escalation chmod
, chown
, chgrp
تثبيت Backdoor أو حذف قيودps -eo user,euser,ruser,args
معرفة UID الفعلي/الافتراضيls -ld /tmp
مسح ملفات مستخدمين آخرينls -l
, stat
البحث عن ملفات خطيرة قابلة للتنفيذ أو التعديل umask
, umask -S
استغلال صلاحيات ضعيفة افتراضية