Blog
Sep 19, 2026 - 9 MIN READ
لينكس للهاكرز #4: متغيرات البيئة، وكتابة أول أداة اختراق بخط يدك

لينكس للهاكرز #4: متغيرات البيئة، وكتابة أول أداة اختراق بخط يدك

murtaja

Murtaja

🧭 قبل أن نبدأ

هذه الحلقة الرابعة، وهي نقطة تحوّل حقيقية في رحلتنا مع كتاب Linux Basics for Hackers. بعد أن تعلمنا التنقل، الشبكات، الصلاحيات، والعمليات، وصلنا الآن إلى الفصل السابع: إدارة متغيرات بيئة المستخدم، والفصل الثامن: البرمجة النصية بـ Bash — الفصل الذي فيه، وللمرة الأولى، نكتب أداة اختراق حقيقية بأيدينا.


🧬 الفصل السابع: إدارة متغيرات بيئة المستخدم (Managing User Environment Variables)

يفتتح الكاتب بجملة تكشف لماذا يستحق هذا الموضوع فصلًا كاملًا رغم أنه يبدو "مملًا" للوهلة الأولى:

"To get the most from your Linux hacking system, you need to understand environment variables and be adept at managing them for optimal performance, convenience, and even stealth." — "لكي تحصل على أقصى استفادة من نظام لينكس الخاص بك، عليك أن تفهم متغيرات البيئة وأن تُتقن إدارتها من أجل أفضل أداء، وراحة، بل وحتى التخفّي."

كلمة "التخفّي" (Stealth) هنا هي المفتاح — سنرى لاحقًا كيف تُستخدم هذه المتغيرات لإخفاء آثارك.

📦 ما الفرق بين متغيرات البيئة ومتغيرات الشل؟

  • متغيرات البيئة (Environment Variables): مكتوبة دائمًا بأحرف كبيرة (مثل HOME, PATH, USER)، وتُورَث تلقائيًا من قِبل أي عملية فرعية تنبثق من الجلسة الحالية.
  • متغيرات الشل (Shell Variables): تُكتب عادة بأحرف صغيرة، وتكون صالحة فقط داخل الجلسة التي أُنشئت فيها.

كل المتغيرات في لينكس هي في الأساس أزواج "مفتاح=قيمة" (KEY=value)، وإن احتوت القيمة على مسافات يجب وضعها بين علامتي اقتباس.

👀 استعراض المتغيرات

  • env: يعرض متغيرات البيئة الافتراضية فقط.
  • set: يعرض كل شيء — متغيرات البيئة، متغيرات الشل، والدوال المُعرَّفة — وغالبًا ما تكون القائمة طويلة جدًا، لذا يُفضّل تمريرها لـ more:
kali > set | more
  • للبحث عن متغير محدد بسرعة، نعود لصديقنا grep:
kali > set | grep HISTSIZE

🕵️ كيف تُخفي آثارك عبر HISTSIZE

هذا الجزء عملي جدًا لأي مهتم بالأمن السيبراني. متغير HISTSIZE يحدد عدد الأوامر التي يحتفظ بها لينكس في سجل الأوامر (يمكن استرجاعها بأسهم لوحة المفاتيح للأعلى والأسفل). إن كنت لا تريد ترك أي أثر على نظامك — أو على نظام اخترقته أثناء اختبار مصرَّح به — يمكنك ببساطة:

kali > HISTSIZE=0

بهذا، يتوقف النظام عن تخزين أي أمر جديد تكتبه. ملاحظة مهمة: أي تعديل على متغير يبقى فقط طوال الجلسة الحالية (تختفي عند إغلاق الطرفية) ما لم تستخدم أمر export لجعله دائمًا:

kali > export HISTSIZE

🎨 تخصيص واجهة الطرفية عبر PS1

متغير PS1 يتحكم في شكل سطر الأوامر (Prompt) الذي تراه أمامك. يحتوي على رموز خاصة مثل \u (اسم المستخدم)، \h (اسم الجهاز)، و\w (المجلد الحالي). مثال طريف يقدمه الكاتب:

kali > PS1="World's Best Hacker: #"

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

kali > export PS1='C:\w> '

🧭 متغيّر PATH: كيف "يعرف" لينكس أين يجد أوامرك؟

هذا من أهم أجزاء الفصل. متغير PATH يحتوي قائمة المجلدات التي يبحث فيها الشل عن أي أمر تكتبه. إن لم يكن الأمر موجودًا في أحد هذه المجلدات، ستحصل على command not found — حتى لو كان الملف موجودًا فعليًا في مكان آخر على قرصك!

لعرض محتواه:

kali > echo $PATH

لإضافة أداة اختراق جديدة نزّلتها في مجلد خاص بها إلى PATH حتى تستطيع تشغيلها من أي مكان:

kali > PATH=$PATH:/root/newhackingtool

ويحذّر الكاتب من خطأ شائع جدًا عند المبتدئين:

"One mistake commonly made by new Linux users is assigning a new directory... directly to the PATH variable... If you use this command, your PATH variable will only contain that directory and no longer contain the system binaries directories." — "من الأخطاء الشائعة عند المستخدمين الجدد إسناد مجلد جديد مباشرة لمتغير PATH بدلًا من إضافته. لو فعلت ذلك، سيحتوي PATH فقط على ذلك المجلد ويفقد كل مجلدات أوامر النظام الأساسية!"

الفرق حرف واحد فقط: PATH=$PATH:مجلد (إضافة، صحيح) مقابل PATH=مجلد (استبدال كامل، كارثي). قاعدة ذهبية: احفظ نسخة من أي متغير مهم في ملف نصي قبل تعديله.

🏷️ إنشاء متغيرات خاصة بك

يمكنك ببساطة إنشاء متغير خاص بك:

kali > MYNEWVARIABLE="Hacking is the most valuable skill set in the 21st century"
kali > echo $MYNEWVARIABLE

ولحذفه: unset MYNEWVARIABLE.


💻 الفصل الثامن: البرمجة النصية بـ Bash (Bash Scripting)

الجملة الافتتاحية لهذا الفصل تستحق أن تُكتب على جدار كل من يريد دخول مجال الأمن السيبراني:

"Any self-respecting hacker must be able to write scripts... Hackers often need to automate commands, sometimes from multiple tools, and this is most efficiently done through short programs they write themselves." — "أي هاكر يحترم نفسه يجب أن يكون قادرًا على كتابة السكربتات... الهاكرز غالبًا ما يحتاجون لأتمتة الأوامر، أحيانًا من أدوات متعددة، وأكفأ طريقة لفعل ذلك هي كتابة برامج قصيرة بأنفسهم."

👋 أول سكربت: "Hello, Hackers-Arise!"

كل سكربت bash يبدأ بسطر خاص يُسمى shebang، يخبر النظام أي مفسّر (Interpreter) يجب استخدامه:

#! /bin/bash
# هذا أول سكربت بايش لي
echo "Hello, Hackers-Arise!"

نقاط مهمة:

  • السطر الذي يبدأ بـ # هو تعليق (Comment)، لا يُنفَّذه المفسّر، بل هو ملاحظة للبشر فقط.
  • أي سكربت جديد لا يملك افتراضيًا صلاحية تنفيذ (تذكّر الفصل الخامس!)، لذا يجب أولًا:
kali > chmod 755 HelloHackersArise
  • لتشغيله، نستخدم ./ قبل الاسم:
kali > ./HelloHackersArise

الفائدة من ./ أنها تحدد أنك تريد تشغيل الملف في المجلد الحالي بالضبط، حتى لو وُجد ملف بنفس الاسم في مجلد آخر ضمن PATH.

🎤 إضافة تفاعل: القراءة من المستخدم

باستخدام أمر read، يمكن للسكربت أن يطلب مدخلات من المستخدم ويخزّنها في متغير:

#! /bin/bash
echo "What is your name?"
read name
echo "What chapter are you on in Linux Basics for Hackers?"
read chapter
echo "Welcome $name to Chapter $chapter of Linux Basics for Hackers!"

بهذه الأسطر البسيطة تعلمنا أهم عنصرين في أي سكربت: المتغيرات والتفاعل مع المستخدم.

🎯 قصة حقيقية: كيف يبني هاكر أداته الأولى؟

هنا يروي الكاتب قصة واقعية مثيرة عن الهاكر Max Butler (المعروف باسم Max Vision)، الذي كان بالنهار خبير أمن معلومات محترمًا في وادي السيليكون، وبالليل يدير أكبر سوق سوداء لبطاقات الائتمان المسروقة في العالم (CardersMarket). اكتشف Max أن نظام نقاط البيع Aloha POS المستخدم في مطاعم كثيرة يحتوي منفذًا خلفيًا (Backdoor) للدعم الفني على المنفذ 5505، فكتب سكربتًا يفحص ملايين عناوين IP بحثًا عن هذا المنفذ المفتوح ليخترق تلك الأنظمة ويسرق أرقام بطاقات ائتمان بالملايين. انتهى به الأمر بالسجن 13 عامًا.

⚠️ هذه القصة تُروى هنا كتحذير وتوضيح تقني، لا كنموذج يُحتذى — الهدف تعليمي بحت: فهم كيف تُبنى أداة استطلاع آلية، لتكون قادرًا على اكتشاف مثل هذه الثغرات ومنعها في أنظمتك الخاصة.

🔨 بناء ماسح منافذ MySQL الخاص بنا

يقترح الكاتب أن نبني نسخة تعليمية شبيهة، لكن تبحث عن قواعد بيانات MySQL (منفذ 3306) بدلًا من الهدف الأصلي. أولًا، نتعرف على أداة nmap الشهيرة لفحص المنافذ:

nmap -sT 192.168.181.1 -p 3306

ثم نكتب سكربتًا بسيطًا:

#! /bin/bash
# سكربت للبحث عن أجهزة تعمل عليها MySQL
nmap -sT 192.168.181.0/24 -p 3306 >/dev/null -oG MySQLscan
cat MySQLscan | grep open > MySQLscan2
cat MySQLscan2

كل سطر هنا له وظيفة:

  1. nmap -sT ... -p 3306: فحص شبكة كاملة (/24 تعني كل الشبكة الفرعية) بحثًا عن المنفذ 3306.
  2. >/dev/null: إخفاء المخرجات العادية (يُرسل الناتج إلى "اللامكان" — أداة تخفٍّ بسيطة لكن فعالة).
  3. -oG MySQLscan: حفظ النتائج بصيغة يسهل على grep تصفيتها.
  4. grep open: تصفية النتائج للإبقاء فقط على المنافذ المفتوحة.

🚀 السكربت المتقدم: إضافة التفاعل

بدمج ما تعلمناه في بداية الفصل (القراءة من المستخدم)، نجعل السكربت أكثر مرونة بحيث يسأل المستخدم عن نطاق العناوين والمنفذ المطلوب بدلًا من كتابتها يدويًا في الكود كل مرة:

#! /bin/bash
echo "Enter the starting IP address : "
read FirstIP
echo "Enter the last octet of the last IP address : "
read LastOctetIP
echo "Enter the port number you want to scan for : "
read port
nmap -sT $FirstIP-$LastOctetIP -p $port >/dev/null -oG MySQLscan
cat MySQLscan | grep open > MySQLscan2
cat MySQLscan2

بهذا السكربت الصغير جدًا (أقل من 10 أسطر)، صنعنا فعليًا أداة استطلاع شبكي قابلة لإعادة الاستخدام — بالضبط نفس الفكرة التي استخدمها Max Butler، لكن هنا لأغراض تعليمية ودفاعية. هذا هو جوهر ما يعنيه الكاتب بقوله في بداية الفصل إن الهاكر "يجب أن يكتب سكربتاته بنفسه".

🧰 جدول أوامر Bash المدمجة

يختم الفصل بجدول مرجعي لأوامر bash المدمجة الأكثر فائدة، أبرزها: exit (إنهاء الجلسة)، export (تصدير متغير)، jobs (عرض المهام في الخلفية)، shift (لمعالجة معاملات السكربت واحدًا تلو الآخر)، وtrap (لمعالجة الإشارات، وإلا ستُنهي السكربت تلقائيًا).


💎 اقتباسات هذا الجزء تستحق التوقف عندها

  • "عليك أن تفهم متغيرات البيئة... من أجل أفضل أداء، وراحة، بل وحتى التخفّي." — كلمة "التخفي" هنا تربط موضوعًا يبدو إداريًا بالجانب الهجومي للأمن السيبراني مباشرة.
  • "أي هاكر يحترم نفسه يجب أن يكون قادرًا على كتابة السكربتات." — الجملة التي تفصل "مستخدم أدوات جاهزة" عن "هاكر حقيقي."
  • قصة Max Butler — درس حي في كيف تتحول مهارة تقنية بسيطة (سكربت فحص منافذ) إلى قوة هائلة، للخير أو للشر، حسب من يستخدمها ولماذا.

🎯 خلاصة الجزء

في هذين الفصلين انتقلنا من "استخدام لينكس" إلى "برمجة لينكس ليعمل لصالحنا". تعلمنا كيف نتحكم ببيئة عملنا وحتى نخفي آثارنا فيها عبر المتغيرات، وكتبنا — للمرة الأولى في هذه السلسلة — أداة اختراق حقيقية وقابلة لإعادة الاستخدام بأقل من 10 أسطر كود. هذه هي اللحظة التي يتحول فيها القارئ من "متعلّم أوامر" إلى "بانٍ لأدواته الخاصة" — بالضبط ما وعد به الكتاب منذ سطره الأول.

في الحلقة القادمة ننتقل إلى الفصل التاسع: الضغط والأرشفة، والفصل العاشر: إدارة نظام الملفات وأجهزة التخزين — حيث نتعلم كيف نتعامل مع الملفات الكبيرة والأقراص كما يفعل أي مسؤول أنظمة محترف. 🚀

Built with Nuxt UI • © 2026