Linux. Red Team

Day 2 Linux ( User Management + Permissions )

7/24/2025

Day 2 Linux ( User Management + Permissions )

🛠️ Linux User Management

🔍 وحدة أساسية للمهاجمين (Red Teamers) لفهم صلاحيات الأنظمة، التحكم في الامتيازات، واكتشاف نقاط الضعف المتعلقة بالمستخدمين

1️⃣ Users and Groups – المستخدمين والمجموعات

📌 تعريف بسيط:

groups and users image

✅ أمور أساسية:

العنصر الوصف User (UID) كل مستخدم له رقم تعريفي (User ID) خاص به Group (GID) كل مجموعة لها رقم تعريفي (Group ID) Home Directory لكل مستخدم مجلد شخصي /home/username System Users مستخدمين غير بشريين (مثل daemon, www-data) لتشغيل خدمات

🎯 كمهاجم Red Team، معرفة المستخدمين والمجموعات بتساعدك:

2️⃣ Superuser – Root Access

🔐 root هو المستخدم الأعلى صلاحية في النظام، UID = 0

يقدر يعمل أي شيء:

🛡️ لكن! التعامل مع root خطر:

تشغيل النظام بـ root دايمًا = مخاطرة (ممكن تمسح ملفات النظام بالغلط)

✨ البدائل:

الأمر الوظيفة sudo تنفيذ أمر واحد بصلاحيات root su فتح shell جديد كمستخدم آخر (افتراضيًا root)

sh
sudo cat /etc/shadow
su


🧠 مين يقدر يستخدم sudo؟

↪️ النظام بيحدده في ملف:

sh
/etc/sudoers

📌 لا تعدّل الملف ده يدويًا، استخدم:

sh
visudo 
# or 
nano 

🎯 كمهاجم، لو لقيت اسمك ضمن الـ sudoers – أنت تقدر تعمل Privilege Escalation بسهولة جدًا.

3️⃣ /etc/passwd – قاعدة بيانات المستخدمين

🧾 محتويات الملف:

sh
cat /etc/passwd

كل سطر يمثل مستخدم:

sh
username:password:UID:GID:GECOS:home:shell

👀 مثال:

sh
root:x:0:0:root:/root:/bin/bash

الحقل الوصف username اسم المستخدم password غالبًا يكون x → يعني الباسوورد محفوظ في /etc/shadow UID رقم تعريف المستخدم GID رقم تعريف المجموعة الأساسية GECOS بيانات وصفية (مثل الاسم الحقيقي) home directory مجلد المستخدم shell الشل الافتراضية (bash غالبًا)

📌 مش كل المستخدمين في /etc/passwd بشريين – فيه مستخدمين للنظام نفسه.

🎯 كمهاجم:

4️⃣ /etc/shadow – ملف كلمات المرور

🔒 بيحتوي على كلمات المرور (مشفرة) لكل مستخدم، وبيحتاج صلاحيات root علشان تشوفه:

sh
sudo cat /etc/shadow

👀 مثال سطر:

sh
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.

Cracking with John the Ripper

🔹 Use unshadow to combine passwd and shadow:

sh
unshadow passwd shadow > full_hashes.txt

🔹 Crack it:

sh
john full_hashes.txt --wordlist=/path/to/wordlist.txt

🔹 $y$ (yescrypt) hash

sh
john --format=crypt hashes.txt

🔹 See cracked passwords:

sh
john --show full_hashes.txt

⚡ Alternative: Hashcat

  1. Format the hash into a single-line entry.
  2. Use correct hash mode (e.g., 1800 for SHA-512 crypt):
sh
hashcat -m 1800 -a 0 hash.txt /usr/share/wordlists/rockyou.txt
sh
hashcat —help  # to know all types of hashes

5️⃣ /etc/group – ملف إدارة المجموعات

📁 يحتوي على كل الجروبات الموجودة في النظام:

sh
cat /etc/group

👀 مثال سطر:

sh
sudo:x:27:rezkgamal

الحقل المعنى اسم المجموعة sudo كلمة المرور غالبًا * أو x GID رقم تعريف المجموعة الأعضاء أسماء المستخدمين داخل المجموعة

🎯 فكر هجومي:

6️⃣ Users Management أدوات إدارة المستخدمين

📦 إضافة مستخدم:

sh
sudo useradd rezk # don't use it

أو:

sh
sudo adduser rezk


🔸 adduser أسهل لأنه بيعمل:

🗑️ حذف مستخدم:

sh
sudo userdel rezk

📍لو عايز تحذف الداتا كمان:

sh
sudo userdel -r rezk


🔑 تغيير كلمة المرور:

sh
sudo passwd rezk

ولو عايز تغير للمتسخدم اللي انت فيه حاليا

sh
sudo passwd

🎯 كـ Root، تقدر تغير كلمة سر أي مستخدم.

🔚 خلاصة مهاجم Red Team:

-------------------------------------------------------------------------

🛡️ Linux Permissions

أساس كل عملية هجومية تعتمد على التحكم أو تجاوز صلاحيات الملفات والمجلدات والبرمجيات

✅ 1. File Permissions - فهم صلاحيات الملفات

كل ملف أو مجلد في لينوكس ليه صلاحيات بتحدد:

لما تعمل:

sh
ls -l Desktop

هتشوف:

sh
drwxr-xr-x 2 razook razookGroup 4096 Dec 1 11:45 .

file permissions

🎯 التحليل:

الرمز المعنى d نوع الملف (d = directory)

rwx صلاحيات الـ user (المالك)

r-x صلاحيات المجموعة (group)

r-x صلاحيات باقي المستخدمين

🔐 الصلاحيات دي معناها:

✍️ 2. تعديل الصلاحيات – chmod

✅ الطريقة الرمزية:

sh
chmod u+x myfile     # أضف صلاحية التنفيذ للمالك
chmod g-w myfile     # احذف صلاحية الكتابة من الجروب
chmod o+r myfile     # أضف صلاحية القراءة للـ others
chmod ug+w myfile    # أضف صلاحية الكتابة لمالك الملف والجروب

# + = بيزود
# - = بينفص

🔢 الطريقة الرقمية (Octal):

الرقم المعنى

بنحسب المجموع لكل مجموعة:

sh
chmod 755 myfile

يعني:

🎯 لا تعدل الصلاحيات عشوائيًا، لأنك ممكن تفتح ملف حساس للجميع وتخرب النظام أو تفتح باب لمهاجم.

🧑‍💻 3. تعديل الملكية – chown و chgrp

🔄 تغيير مالك الملف:

sh
sudo chown rezk myfile  # هينقل صلاحية الملف ل رزق

🧑‍🤝‍🧑 تغيير الجروب:

sh
sudo chgrp hackers myfile  # هينقل صلاحية الملف ل جروب الهاكرز واي حد فيهم ليه الصلاحية 

✨ تغيير الاثنين معًا:

sh
sudo chown rezk:hackers myfile

🎯 ده مهم للمهاجم لأنه لو قدر يغير ملكية ملف، يقدر يسيطر عليه، أو يعمل Privilege Escalation.

🧮 4. الـ umask – التحكم في صلاحيات الملفات الجديدة

📌 لما تنشئ ملف جديد، بيتولد بصلاحيات افتراضية ناقص منها الـ umask

sh
umask 022

النتيجة = الملفات الجديدة تكون بصلاحيات:

sh
rw-r--r--

🎯 كمهاجم: ممكن تراقب أو تغير umask علشان ملفات معينة تتولد بضعف أمني.

🔐 5. SUID – Set User ID

💡 فكرة الـ SUID:

لما برنامج يتنفذ وعليه صلاحية SUID، بيتنفذ بصلاحيات مالكه، مش بصلاحيات المستخدم اللي شغله.

sh
ls -l /usr/bin/passwd

هتلاقي:

sh
-rwsr-xr-x 1 root root ...

لاحظ الـ s بدل x ← معناها SUID مفعّل

↪️ يعني passwd بيتنفذ كـ root حتى لو شغلته بمستخدم عادي، علشان يقدر يكتب في /etc/shadow.

⛏️ تعديل SUID:

sh
sudo chmod u+s myfile
# or
sudo chmod 4755 myfile

🎯 كمهاجم:

👥 6. SGID – Set Group ID

💡 زي SUID، لكن للـ Group

sh
ls -l /usr/bin/wall

sh
-rwxr-sr-x 1 root tty ...

الـ s في مجموعة الجروب = SGID مفعّلة

↪️ البرنامج هيتنفذ كأنه عضو في جروب tty

⛏️ تعديل SGID:

sh
sudo chmod g+s myfile
# or
sudo chmod 2555 myfile

🎯 SGID على مجلدات ممكن تستخدم لتحديد مجموعة الملفات الجديدة تلقائيًا ← خطر محتمل

🔄 7. Process Permissions – UIDs في العمليات

كل عملية في لينوكس ليها 3 أنواع من UIDs:

النوع الوصف Real UID صاحب العملية الحقيقي – المستخدم اللي شغل الأمر Effective UID الصلاحيات اللي العملية بتشتغل بيها حاليًا (قد تكون root لو فيه SUID) Saved UID بيحتفظ بصلاحيات معينة للتبديل لاحقًا

🧠 مثال:

لما تشغله:

🎯 ده بيوفر تحكم دقيق في الامتيازات داخل البرامج، وأنت كمهاجم لازم تفهم ده لو ناوي تستغل SUID بشكل ذكي.

🧷 8. Sticky Bit – منع الحذف من مجلد مشترك

💡 Sticky bit بيمنع أي حد من حذف ملفات غيره في مجلد مشترك (زي /tmp)

sh
ls -ld /tmp

sh
drwxrwxrwt ...

لاحظ الـ t في الآخر ← معناها sticky bit مفعّلة

↪️ أي حد يقدر يكتب جوه /tmp، لكن مفيش حد يقدر يمسح ملفات غيره.

⛏️ تفعيل Sticky Bit:

sh
sudo chmod +t mydir
#or
sudo chmod 1777 mydir

🎯 كمهاجم:

📌 خلاصة سريعة (Red Team Mindset):

🎉 أنتهي اليوم الثاني