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:shellroot: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/shadowroot:$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 Ripperunshadow to combine passwd and shadow:unshadow passwd shadow > full_hashes.txtjohn full_hashes.txt --wordlist=/path/to/wordlist.txtrockyou.txt as a common wordlist: /usr/share/wordlists/rockyou.txtrockyou.txt.gz ⇒ gzip -dk /usr/share/wordlists/rockyou.txt.gzcewl, crunch, or manually.john --format=crypt hashes.txtjohn --show full_hashes.txthashcat -m 1800 -a 0 hash.txt /usr/share/wordlists/rockyou.txthashcat —help # to know all types of hashes📁 يحتوي على كل الجروبات الموجودة في النظام:
cat /etc/groupsudo: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 rezksudo 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 صلاحيات باقي المستخدمين
🔐 الصلاحيات دي معناها:
chmodchmod 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 و chgrpsudo 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 /tmpdrwxrwxrwt ...لاحظ الـ 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 استغلال صلاحيات ضعيفة افتراضية