Linux. Red Team

Day1 Linux(CLI + Text-Fu)

7/21/2025

Day1 Linux(CLI + Text-Fu)

🐧Introduction to Linux

🧠 تاريخ لينوكس:

🖥️ مكونات نظام لينوكس:

  1. الهاردوير: القطع المادية (RAM, CPU, HDD...).
  2. نواة لينوكس (Kernel): بتربط الهاردوير مع السوفتوير.
  3. User Space: البرامج والشيل اللي المستخدم بيتعامل معاها.

📦 توزيعات لينوكس الشهيرة:

التوزيعة مميزاتها مناسبة لمين؟ Debian مستقرة – مجانية – قوية مناسب لسيرفرات أو بيئة اختراق مستقرة RHEL موجهة للمؤسسات – مدفوعة – قوية جدًا مناسب لو هتشتغل في شركات Ubuntu سهلة – مدعومة – مستخدمة بكثرة مناسب للمبتدئين والمطورين

🧰 إدارة الحزم:


# مثال:
sudo apt install nmap # في Debian/Ubuntu
sudo dnf install nmap # في RHEL/Fedora

🎯 كنقطة لمهاجم:

Command Line Interface (CLI)

💻 مقدمة: ما هو الـ Shell؟

الـ Shell هو البرنامج اللي بيتلقى أوامرك من الكيبورد وبيبعثها لنظام التشغيل علشان ينفذها.

في الأنظمة الرسومية (GUI)، ممكن تشوفه باسم "Terminal" أو "Console"، لكن جوه هو بيشغّل برنامج اسمه Shell.

🐚 أشهر Shell:

في الكورس ده هنشتغل على Bash (Bourne Again Shell)، وده الافتراضي في أغلب توزيعات لينوكس.

فيه شيلز تانية (zsh, ksh, tsch)، لكن مش هنغوص فيها دلوقتي.

🧭 شكل الـ Prompt:

sh
username@hostname:current_directory $

# مثال

pete@icebox:/home/pete $

🎯 معلومة لمهاجم:

لو دخلت على جهاز وشفْت الـ prompt فيه # بدل $، يبقى معاك صلاحيات root – مفتاح لأي حاجة تقريبًا.

🛠️ أوامر أساسية في الـ Shell

1️⃣ echo

يطبع أي نص على الشاشة.

sh
echo Hello World


📌 مفيد في السكربتات، اختبار متغيرات، أو إرسال بيانات في الاستغلالات.

2️⃣ pwd – Print Working Directory

يعرض المسار الحالي اللي أنت واقف فيه.

sh
pwd


مهم جدًا كمهاجم عشان تعرف أنت شغال فين على السيرفر أو النظام.

3️⃣ cd – Change Directory

لتغيير المجلد الحالي:

sh
cd /etc # بيروح لفولدر etc
cd .. # بيرجع لورا فولدر
cd ~ # بيروح لفولدر ال home


4️⃣ ls – List Files

لعرض الملفات والمجلدات.

sh
ls
ls -l      # عرض مفصل
ls -a      # عرض الملفات المخفية

# تقدر تستخدم -la مع بعض عادي بدل -l -a 
ls -la


📌 ls -la مفضّلة عند المهاجمين لاستكشاف كل محتوى مجلد معين.

5️⃣ touch

ينشئ ملف فاضي.

sh
touch test.txt


🎯 ممكن تستخدمه لإنشاء ملفات مؤقتة في مراحل post-exploitation.

6️⃣ file

يعرض نوع الملف:

sh
file test.txt


📌 بيعرفك لو الملف تنفيذي، سكربت، صورة... الخ.

7️⃣ cat

لعرض محتوى ملف:

sh
cat /etc/passwd


أداة قوية لمهاجمين بيستخرجوا بيانات من ملفات النظام زي passwd, shadow, authorized_keys.

8️⃣ less

لعرض ملفات طويلة بشكل قابل للتنقل.

sh
less /var/log/syslog


استخدم الأسهم أو q للخروج.

9️⃣ history

يعرض الأوامر اللي استخدمتها قبل كده.

sh
history


مهاجم محترف دايمًا يراجع history بتاعة الضحية علشان يعرف إيه البرامج أو الأوامر اللي استخدمها.

أوامر إدارة الملفات والمجلدات

1️⃣0️⃣ cp – Copy

sh
cp file.txt /tmp/

1️⃣1️⃣ mv – Move / Rename

sh
mv file.txt newname.txt


1️⃣2️⃣ mkdir – Make Directory

sh
mkdir test


1️⃣3️⃣ rm – Remove

sh
rm file.txt
rm -r folder/   # لحذف مجلد


استخدمه بحذر. ودايمًا خد بالك من rm -rf / اوعي تجربها هتمسح ملفات النظام

1️⃣4️⃣ find – البحث عن الملفات

sh
find / -name "passwd"

مهم جدًا في مرحلة جمع المعلومات (Enumeration) لو عايز تلاقي ملفات حساسة.

🧠 أوامر المساعدة والمعلومات

1️⃣5️⃣ help

يعرض مساعدة للأوامر الداخلية للـ shell:

sh
help cd

1️⃣6️⃣ man – Manual Pages

sh
man ls

صفحات فيها شرح كل حاجة عن الأمر.

1️⃣7️⃣ whatis

يعطيك تعريف سريع لأي أمر:

sh
whatis ls


1️⃣8️⃣ alias

ينشئ اختصار لأمر معين:

sh
alias ll='ls -la'

ممكن تستخدمه في إعداد بيئة استغلال خاصة بيك بإنك تجهز aliases لأوامر الهجوم.

لكن لو عايز تعمل اختصار دائم :

sh
nano ~/.zshrc  # وضيف اختصارك ف اخر الملف
# OR # علي حسب شغال ب shell 
nano ~/.bashrc

# عشان تحفظ الملف 
CTRL + S 
CTRL + X

✅ تلخيص سريع للجزء ده:

الأمر الوظيفة

echo طباعة نص

pwd عرض المسار الحالي

cd التنقل بين المجلدات

ls عرض محتوى المجلد

touch إنشاء ملف جديد

file معرفة نوع الملف

cat عرض محتوى ملف

less قراءة ملفات طويلة

history عرض الأوامر السابقة

cp نسخ ملفات

mv نقل أو إعادة تسمية

mkdir إنشاء مجلد

rm حذف ملف أو مجلد

find البحث عن الملفات

help شرح للأوامر الداخلية

man الدليل الكامل للأوامر

whatis تعريف مختصر للأمر

alias إنشاء اختصارات

📘Text-Fu

🎯 الهدف: إتقان التعامل مع تدفق البيانات والنصوص – مهارة أساسية لمهاجم

✅ 1. stdout / stdin / stderr

في لينوكس، كل برنامج بيشتغل بيتعامل مع 3 أنواع من تدفق البيانات (Streams):

stdin "Standard Input" - مدخل البيانات (عادة من الكيبورد)

stdout "Standard Output" - الإخراج الطبيعي (اللي بيظهر على الشاشة) 1

stderr "Standard Error" - مكان ظهور الأخطاء (برضه على الشاشة غالبًا) 2

لو عايز اضيف حاجة ف ملف ع طول من غير ما اعمل ملف وبعد كدا اكتب جواه :

sh
echo "will create new file" > filefromecho.txt
علامة السهم الواحد < معناها المطبوع علي الشاشة هيروح للملف اللي كاتبين اسمه
sh
echo "will add new line at the end of file" >> filefromecho.txt

علامة السهم + 2 معناها ان الاخطاء اللي هتظهر هتروح لملف معين <2

sh
# will make error 
ls iamnothere 2> error.txt 
كدا هيودي اي اخطاء ف ملف ال error.txt

لكن الاحسن نودي اي اخطاء علي الفولدر /dev/null

لأنه عامل زي ثقب اسود بيسحب اي حاجة بتجيله

sh
# will make error 
ls iamnothere 2> /dev/null

📌 مثال عملي:

لو بتشغل أداة، زي nmap، وتبعت الناتج لملف:

sh
nmap -sS 10.10.10.10 > scan.txt 2> errors.txt

🎯 فكر هجومي:

لو بتشغّل سكربت استغلال وعايز ترصد الأخطاء أو نتائج معينة، لازم تكون فاهم إزاي تتحكم في الـ streams دي.

✅ 2. Piping (|) و tee

📌 Pipe |:

sh
cat /etc/passwd | grep root


🎯 في الواقع الهجومي:

sh
ps aux | grep apache

بتستخدمها تراقب العمليات اللي بتخص خدمة معينة.

📌 tee:

بتطبع الناتج على الشاشة وتخزنه في ملف في نفس الوقت.

sh
whoami | tee output.txt

🎯 مفيد لما تكون بتسجل ناتج السكربت live وأنت بتتفرج عليه.

✅ 3. env (Environment Variables)

المتغيرات البيئية هي مفاتيح بيئة التشغيل، بتحكم في:

sh
echo $HOME
echo $USER

أمر استعراض البيئة كاملة:

sh
env

📌 أهم متغير:

sh
echo $PATH

🎯 سيناريو هجومي:

لو رفعت بايناري للاستغلال داخل /tmp/mytool وشغلته كده:


mytool

وغالبًا هتاخد:


command not found

لأن /tmp/mytool مش موجود في $PATH.

✅ الحل:

sh
export PATH=$PATH:/tmp/mytool


✅ 4. cut – استخراج أجزاء من النصوص

أمر مهم جدًا لما تتعامل مع ملفات system أو outputs طويلة.

ملف تجريبي:

sh
echo 'The quick brown; fox jumps over the lazy  dog' > sample.txt

استخراج بالحروف:

sh
cut -c 5 sample.txt

⬅️ بيطبع الحرف رقم 5 من كل سطر.

استخراج بالحقول (fields):

sh
cut -f 2 sample.txt

⬅️ بيستعمل TAB كفاصل افتراضي.

استخراج بحقل وفاصل مخصص:

sh
cut -f 1 -d ";" sample.txt

⬅️ الفاصل دلوقتي ; والنتيجة هتكون الجزء قبل الـ ;

🎯 كمهاجم:

مفيد جدًا لما يكون معاك بيانات بصيغة CSV أو ملفات Config وتقسم الحقول علشان تحللهم.

✅ 5. paste – دمج الأسطر

ملف:


sample2.txt:

sample2.txt
The
quick
brown
fox


دمج الأسطر بسطر واحد:

sh
paste -s sample2.txt

⬅️ بيفصل بينهم TAB.

تغيير الفاصل لمسافة:

sh
paste -d ' ' -s sample2.txt

⬅️ الناتج: The quick brown fox

🎯 مفيد في دمج أسطر في ملفات config أو توليد أوامر معينة بشكل آلي.

✅ 6. head / tail

head – يعرض أول سطور:

sh
head -n 5 /etc/passwd

tail – يعرض آخر سطور:

sh
tail -n 5 /var/log/syslog

🎯 هجوميًا:

sh
tail -f /var/log/auth.log   # show file changes live 


✅ 7. expand / unexpand

expand: يحول التاب لمسافات.

sh
expand file.txt

unexpand: العكس.

🎯 أداة مفيدة في تحليل ملفات متنسقة بالتاب.

✅ 8. join / split

split – تقسيم ملفات:

sh
split -l 100 big.txt parts_

⬅️ يقسم الملف كل 100 سطر لملف جديد.

join – دمج سطور من ملفين (على أساس العمود الأول المشترك):

sh
join file1.txt file2.txt

✅ 9. sort – الترتيب الأبجدي

sh
sort users.txt

🎯 لازم تستخدمه قبل uniq لو عايز تحذف تكرارات.

✅ 10. tr – translate

مثال:

sh
tr a-z A-Z

⬅️ يحوّل كل النصوص لحروف كبيرة.

🎯 مفيد في sanitization، خاصة في الأدوات اللي بتحتاج تنسيق أسماء أو data موحدة.

✅ 11. uniq – حذف التكرارات

محتوى file.txt:

file.txt
apple
apple
banana
banana
orange

إزالة التكرارات:

sh
uniq file.txt

عرض عدد التكرارات:

sh
uniq -c file.txt

حذف المكرر فقط:

sh
uniq -d file.txt

🎯 معلومة مهمة: لازم الأسطر تكون متتالية.

✅ الحل: استخدم sort قبلها:

sh
sort file.txt | uniq

✅ 12. wc / nl

wc: عد الكلمات والأسطر:

sh
wc /etc/passwd
# عدد السطور – الكلمات – البايتات
wc -l /etc/passwd   # عدد السطور فقط

nl: يرقم الأسطر:

sh
nl file.txt

✅ 13. grep – البحث الأقوى في لينوكس

البحث في ملف:


sh
grep fox sample.txt

تجاهل حالة الأحرف:

sh
grep -i fox sample.txt

البحث داخل نتائج أوامر:

sh
env | grep USER

باستخدام regex:

sh
ls /etc | grep '\\.conf$'

🎯 أداة لا غنى عنها لأي مهاجم أو محلل بيانات.

✅ ملخص هجومي سريع:

cut استخراج كلمات سر أو أسماء من ملفات

tee مشاهدة النتيجة وتسجيلها أثناء التشغيل

sort/uniq ترتيب الملف او توحيده

tr تحويل التنسيق لمقارنة بيانات

grep البحث عن مؤشرات اختراق أو كلمات سر

wc عد الأسطر مثل في ملفات logs أو users

head/tail معاينة أول أو آخر الأحداث

env استخراج معلومات المستخدم والبيئة