شرح NetExec للمبتدئ: افهم مخرجات SMB قبل ما تجمع عشرات الأوامر
ظهر اسم الجهاز والدومين في الطرفية، وتحتها سطر ملون. كثير من شروحات NetExec تمر على هالجزء بسرعة وتدخل مباشرة في خيارات ثانية، مع أن فهم أول نتيجة يوفر عليك لخبطة كبيرة. هل وصلت إلى الخدمة فقط؟ هل قُبل الحساب؟ وهل ثبتت صلاحية معينة فعلًا؟ كل واحد من هذي الأسئلة له دليل مختلف. بنبدأ من جهاز واحد في لاب مصرح، ونقرأ النتيجة بهدوء، ثم نحدد متى تحتاج أداة ثانية أو مراجعة من مسؤول البيئة.
قبل الأوامر: وش مكان NetExec في شغلك؟
NetExec، ويظهر في الأوامر باسم nxc، أداة تتعامل مع عدة بروتوكولات وتجمع وظائف مختلفة تحت واجهة واحدة. لو اخترت SMB فأنت تتعامل مع واجهة وعمليات مرتبطة بهذا البروتوكول؛ ولو اخترت LDAP أو WinRM، تختلف الخيارات ومعاني بعض النتائج. تشابه شكل الأمر ما يجعل البروتوكولات تؤدي المهمة نفسها.
في اختبار مصرح، قد تستفيد منها لترتيب قراءة أولية للخدمات، أو للتحقق من سؤال محدد بحساب تدريبي معتمد. لكن الأداة فيها كذلك وظائف ذات أثر أكبر بكثير من القراءة الأولية. لذلك ما يصح تصنف كل أمر يبدأ بـ nxc بأنه مجرد استكشاف. الفعل الحقيقي يعتمد على البروتوكول والخيارات والإعدادات والنسخة التي تشغلها.
خلنا نفترض أن مهمتك داخل اللاب معرفة هل خادم الملفات يرد على SMB، وكيف تصف الأداة معلوماته. هذا سؤال يكفيه هدف واحد وخطوة محدودة. مو مطلوب منه اختبار جميع الحسابات، ولا تشغيل أوامر على الخادم، ولا الوصول إلى بيانات حساسة. لما تحدد السؤال كذا، يصير واضح وش تحتاج، ووش مالَه داعي في التجربة.
إذا كنت تذاكر CRTP أو مادة عن الاكتف دايركتوري، اربط الأداة بالمفهوم الذي تراجعه، مو باسم الشهادة فقط. معرفة أن أداة مشهورة تظهر في شروحات الدومين ما تعني أنها مسموحة في أي اختبار، أو أن حفظ خياراتها يغني عن فهم المصادقة والتفويض. ارجع لقواعد الاختبار الرسمي وقت دخولك، ولا تعتمد على مقال أدوات لتحديد المسموح.
تأكد أنك تشغّل النسخة اللي تقصدها
أول تجربة تكون محلية، بدون التواصل مع أي هدف:
nxc --version
nxc --help
nxc smb --help
الأول يساعدك تثبت إصدار الأداة، والثاني يعرض الخيارات العامة، والثالث يعرض خيارات SMB في النسخة الموجودة عندك. احفظ هذه المعلومات في ملاحظات اللاب. إذا شرح من الإنترنت يستخدم خيارًا مو ظاهر في مساعدتك، ما تحتاج تضغط على الدومين أكثر؛ تحتاج تفهم اختلاف النسخة أو طريقة التثبيت.
وثائق المشروع تشرح أكثر من طريقة للتثبيت حسب النظام، ومن بينها pipx وحزم بعض التوزيعات. اختَر الطريقة المناسبة لبيئتك من المصدر الرسمي، ولا تجمع تثبيتًا من مدير الحزم وتثبيتًا يدويًا ثم تنسى أي ملف يستدعيه الطرفية. أحيانًا تحدث نسخة وتواصل تشغيل نسخة ثانية موجودة في PATH، فتظن أن التحديث ما حل المشكلة.
وتذكر أن وثيقة الخيارات نفسها قد تحتوي أمثلة من وقت مختلف عن إصدارك. المساعدة المحلية مهمة، لكنها كذلك لا تشرح دائمًا كل أثر جانبي لوظيفة معقدة. للخيارات التي تتواصل مع حسابات أو ملفات، اقرأ وثيقة الوظيفة وسلوك نسختك قبل التشغيل. هذا يفرق بين الاستعداد التقني وبين مجرد التأكد أن الأمر لا يعطي خطأ صيغة.
جهّز لقطة محفوظة للاب وملف ملاحظات منفصل، وحدد أسماء الأجهزة الوهمية. وإذا ظهرت مشكلة اعتماديات محلية، عالجها محليًا؛ تغيير جدار الخادم أو حماية الحسابات ما يصلح حزمة Python ناقصة على جهازك.
جهاز واحد يكفي لأول قراءة
في لاب تملكه أو عندك تصريح لاختباره، ومع اسم جهاز معلوم، يمكن أن تبدأ بقراءة SMB الأولية التالية:
nxc smb files01.lab.test
استبدل الاسم باسم خادم التدريب الصحيح. هذا الأمر يتواصل فعليًا مع الهدف؛ ليس عرض مساعدة محلية، ولا ينبغي تشغيله على موقع أو شبكة من خارج نطاقك. المثال لا يمرر بيانات حساب ولا يطلب تنفيذ أمر بعيد، لكنه قد يظهر في سجلات البيئة ويتأثر بإعدادات العميل والنسخة، ومنها إعدادات فحص الضيف إن كانت مفعلة. راجع إعداداتك بدل افتراض أن غياب اسم مستخدم يعني غياب كل أنواع محاولات الجلسة.
قبل التشغيل تحقق من أن DNS يوجه الاسم إلى الجهاز المقصود، وأن شبكة جهازك الافتراضي هي شبكة التدريب المتفق عليها. وجود VPN آخر أو شبكة مشتركة يمكن يخلي الاسم يوجهك إلى مكان مختلف. لا توسع الهدف إلى نطاق عناوين كامل عشان تتأكد أن شيء ما يرد؛ حل التوجيه للهدف المعلوم أولًا.
إذا رد الخادم، اقرأ سطره كاملًا. قد تشوف اسم الجهاز، ومعلومات عن النظام والدومين، وحالة مرتبطة بالتوقيع أو إصدار البروتوكول. شكل الحقول وما يتوفر منها يتغير حسب الخادم ونسخة الأداة. لهذا نعتمد هنا على معنى القراءة، ولا نعدك بأن كل جهاز سيعرض الحقول نفسها أو بالقيم نفسها.
إذا ما رد، احتفظ برسالة الخطأ. عدم ظهور بيانات ما يعني أن الجهاز مطفأ؛ ممكن المسار الشبكي لا يسمح بخدمة SMB، أو الاسم غير صحيح، أو الخدمة غير متاحة من موقعك. التشخيص يبدأ من هذي الحدود قبل الحديث عن الحسابات.
اقرأ هوية الجهاز كقرينة، مو كجرد نهائي
إذا ظهر name باسم FILES01، فهذا يساعدك تربط النتيجة بالهدف الذي تتوقعه. وإذا ظهر اسم مختلف، لا تتجاوزه لأنه مجرد حقل صغير. قد يكون عندك DNS قديم، أو خادم أُعيدت تسميته، أو اسم خدمة يشير إلى جهاز مختلف. اسأل مسؤول اللاب وقارن المعلومات قبل إكمال أي خطوة لها أثر.
ومعلومة domain تحتاج السياق نفسه. وجود اسم ضمن الناتج ما يثبت وحده دور الجهاز داخل البنية، ولا يقول لك إن الحساب الذي معك ينتمي لذلك الدومين. جهاز أعضاء الدومين وخادم التحكم والمشاركة المستقلة أنواع تحتاج تحققًا مناسبًا. لا تحول كلمة domain في أداة إلى حكم أن الهدف Domain Controller.
كذلك وصف النظام أو رقم البناء قد يكون مفيدًا كبداية، لكنه مو بديلًا عن جرد موثوق أو معلومات مسؤول الجهاز. بعض الخدمات تعرض معلومات محدودة، وقد تختلف طريقة الأداة في تمثيلها. إذا كانت النتيجة ستؤثر على تقييم ثغرة يعتمد على إصدار محدد، تحقق من الإصدار بطريقة معتمدة تناسب ذلك التقييم.
سيناريو تدريبي بسيط: ملف النطاق يقول إن files01.lab.test جهاز ويندوز، بينما الناتج يوحي بخدمة مختلفة. السؤال المنطقي مو «أي ثغرة أجرب؟»، بل «هل هذه الخدمة هي المقصودة في النطاق؟». لما تحسم الهوية أولًا، تتجنب بناء تقرير طويل على هدف فهمته غلط من البداية.
signing: وش السؤال اللي يجاوب عليه؟
SMB signing يتعلق بسلامة رسائل SMB والتحقق منها خلال الاتصال. لا تخلطه مع تشفير المحتوى؛ التوقيع والتشفير وظيفتان مختلفتان، حتى لو اجتمعتا في بعض الاتصالات. ولا تخلط فرض التوقيع على الخادم مع مجرد قدرة النظام على دعمه. كلمة enabled في مصدر ما وكلمة required في مصدر آخر يمكن تتكلمان عن أمرين مختلفين.
إذا أظهرت الأداة حقل signing بقيمة False، خذه كإشارة تحتاج تفسيرًا حسب تنفيذ الأداة وسياق الخادم. لا تقفز منه إلى عبارة «كل الملفات مكشوفة» أو «الدومين مخترق». القيمة ما تثبت وصولًا لمشاركة، ولا صلاحية حساب، ولا تنفيذًا بعيدًا. وقد يكون الطرف العميل نفسه يفرض توقيع الاتصال، لذلك فهم سياسة الطرفين مهم عند تقييم جلسة فعلية.
الخطوة المهنية أنك تطلب من المسؤول مراجعة إعدادات SMB الفعلية والسياسة المطبقة، وتقارنها بملاحظة العميل. وثائق Microsoft تشرح فرق متطلبات الطرف العميل والطرف الخادم، وهذا يساعدك تصيغ نتيجة دقيقة. ما نحتاج تنفيذ سيناريو اعتراض أو نقل مصادقة عشان نفهم أن هالملاحظة تخص إعداد حماية محدد.
في التقرير اكتب ما شاهدته وما يحتاج تأكيدًا. مثلًا: «أظهر الفحص الأولي من شبكة التدريب أن الخدمة لا تفرض التوقيع وفق تفسير الأداة، ويحتاج الإعداد مراجعة من جهة الخادم». بعد تحقق إداري مناسب، تحدث الصياغة حسب الدليل. لا تجعل لون السطر أو الاسم الدرامي للوظيفة يحدد الخطورة بدل ظروف البيئة.
نجاح المصادقة مو تصريح بكل شيء
لو كانت المهمة لاحقًا تشمل حسابًا تدريبيًا معتمدًا، لازم تفصل بين قبول هوية الحساب وبين السماح بعملية معينة. يستطيع الخادم قبول الحساب ثم يرفض فتح مشاركة أو مجلد. هذا سلوك متوقع حين يكون الحساب صحيحًا لكنه غير مفوض للوصول إلى المورد الذي طلبته.
ما راح نضع في هذا المثال كلمة مرور ضمن سطر أمر. طريقة تمرير الأسرار تعتمد على سياسة بيئتك وسلوك نسختك، ولا يصح افتراض أن NetExec يطلب السر تفاعليًا مثل ldapsearch. راجع آلية معتمدة لحساب اللاب، وافهم ما تحفظه الأداة وما يظهر في الطرفية. الأمثلة المختصرة في وثائق الأدوات قد تضع كلمة مرور وهمية لتوضيح الصيغة؛ نسخ النمط إلى حساب عمل فعلي بدون مراجعة يسبب تسريبًا في السجل أو الملف أو الصورة.
وش لو ظهرت علامة Pwn3d!؟ الاسم جذاب، لكن تفسيره يعتمد على البروتوكول والتحقق الذي نفذته الأداة. في سياق SMB تشير الوثائق إلى قرينة مرتبطة بصلاحيات إدارية محلية. مع ذلك، لا تكتب أنك نفذت أمرًا على الجهاز إذا ما نفذته، ولا تحول الصلاحية المحلية إلى تحكم كامل بالدومين.
أحيانًا القرار الصحيح بعد ظهور القرينة هو التوقف وتوثيقها، لأن نطاق المهمة لا يشمل إثباتًا أكثر تأثيرًا. عدم تنفيذ خطوة إضافية ما ينقص قيمة النتيجة إذا وصفتها بصدق. الفرق كله في أن تقول «تشير النتيجة إلى» حين يكون الدليل قرينة، وتقول «تم إثبات العملية المحددة» عندما يكون عندك إثبات مصرح وواضح لهذه العملية نفسها.
خيار جمع واحد قد يكون أكثر من مجرد قراءة
خيار مثل عرض المشاركات يبدو بسيطًا من اسمه، لكن قبل استخدامه تحتاج معرفة كيف تفحص النسخة صلاحيات الوصول، وهل تشمل اختبارات كتابة. وجود فلتر يعرض مشاركات القراءة فقط ما يكفي وحده لإثبات أن الوظيفة لن تحاول التحقق من صلاحيات أخرى. النتيجة التي تعرضها الأداة والسلوك الذي نفذته للحصول عليها مو دائمًا الشيء نفسه.
لذلك إذا النطاق يسمح بجرد أسماء المشاركات فقط، اختَر طريقة تفهم سلوكها وتلتزم بهذا الحد. وإذا كان المطلوب اختبار كتابة، اتفق على مشاركة تدريبية وملف تجريبي وطريقة تنظيف الأثر قبل التنفيذ. لا تستخدم مجلد إنتاج حساس لتكتشف هل الوظيفة تكتب أم لا.
الأمر نفسه ينطبق على وحدات إضافية أو وظائف تتعامل مع الجلسات والخدمات والبيانات المحلية. اسم module ما يعني أن الوحدة آمنة تلقائيًا. اقرأ ماذا تجمع، وما الصلاحية المطلوبة، وما الاتصالات أو الملفات التي تنشئها، ومتى تتوقف. تشغيل عدة وحدات دفعة واحدة يصعب عليك تفسير الأثر وربطه بوظيفة محددة.
في أول أسبوع تعلم، يكفيك إتقان قراءة الخدمة ومراجعة المساعدة وفهم فرق المصادقة والتفويض. بعده أضف وظيفة واحدة ذات هدف معروف. هذا أفضل من دفتر مليان أوامر لا تعرف أيها ينفذ على الخادم وأيها يقرأ معلومة وأيها يحفظ سرًا محليًا.
الأداة تحفظ بيانات: انتبه لجهازك أنت بعد
وثائق NetExec توضح أن الأداة تستخدم قواعد بيانات، وأن بيانات اعتماد مستخدمة أو مجمعة ومعلومات أخرى يمكن أن تُحفظ فيها. وجود قاعدة محلية مهم لتجميع العمل، لكنه يعني أن مسؤوليتك ما تنتهي بعد إغلاق الطرفية. جهاز المختبر نفسه صار يحتوي بيانات مرتبطة بالمهمة.
تدعم الأداة workspaces لتنظيم المهام، وأداة nxcdb للتعامل مع قواعدها. راجع مساعدة nxcdb والوثائق قبل استخدامها. فصل مساحة لاب عن مساحة مهمة عمل يساعد على عدم خلط النتائج، لكنه مو بديلًا عن حماية الجهاز وسياسة الاحتفاظ بالأسرار. الاسم المختلف للمساحة لا يمنع الشخص الذي يستطيع قراءة ملفاتك من الوصول إلى محتواها.
خلنا نفترض أنك تعلمت على لاب، ثم نسخت جهازك الافتراضي لصديق. إذا تركت بيانات حسابات التدريب وقاعدة النتائج، فقد شاركت أكثر من الأدوات المثبتة. وفي العمل، رفع مجلدات الأداة إلى مستودع عام أو نسخها إلى تخزين غير معتمد ممكن يكشف أسماء أجهزة وحسابات أو أسرارًا. راجع ما تحفظه النسخة قبل أي مشاركة.
تجنب كذلك نشر خرج debug كاملًا في طلب مساعدة. اختصر الرسالة إلى الخطأ وسياق غير حساس، واحذف أسماء البيئة الحقيقية وأي بيانات اعتماد. وإذا احتجت سجلًا كاملًا لدعم داخلي، مرره عبر القناة المعتمدة. الهدف هنا مو الخوف من كل ملف؛ الهدف تعرف أن الناتج والقاعدة جزء من أدلة المهمة ويحتاجان التعامل نفسه.
كيف تعرف أن المشكلة في الهدف أو في جهازك؟
رسالة command not found معناها أن الطرفية ما استدعت البرنامج المطلوب. تبدأ عندها بالتثبيت وPATH، مو عند DNS الخادم. ورسالة خيار غير معروف توجهك إلى إصدار الأداة ومساعدة البروتوكول، مو إلى كلمة مرور الحساب. أما فشل التواصل مع الهدف، فيحتاج مراجعة الاسم والمسار والخدمة قبل أي محاولات مصادقة جديدة.
لو جهاز اللاب نفسه يرد من ويندوز ولا يرد من لينكس، لا تفترض أن أحد النظامين أفضل للاختراق. قارن موقعهما الشبكي، وحل الاسم، وطريقة الاتصال والخدمة المقصودة. ربما أحدهما داخل شبكة افتراضية مختلفة أو يستخدم اسمًا قصيرًا يتحول إلى هدف آخر. المقارنة المفيدة تغير عاملًا واحدًا وتحتفظ بباقي الظروف ثابتة قدر الإمكان.
وإذا الحساب التدريبي مقبول في خدمة ومرفوض في أخرى، فذلك ما يثبت أن كلمة المرور تغيرت بين التجربتين. الخدمات قد تستخدم سياق هوية مختلفًا أو سياسات وصول مختلفة. اسأل أي حساب تم تقديمه، وأي جهة تحقق منه، وأي عملية طلبت بعد قبوله. هذي الأسئلة أدق من عبارة «الأداة ما اشتغلت».
قبل طلب المساعدة جهز الإصدار، وطريقة التثبيت، والبروتوكول، والهدف الوهمي، والخيارات التي استخدمتها بدون أسرار، ونص الخطأ. لا تضف عشر وظائف إلى الأمر لمحاولة إصلاحه. قلل الطلب إلى الجزء الذي يفشل، ثم تحرك حسب المرحلة التي كشفها هذا الطلب.
تجربة قصيرة، وملاحظة تصلح للتقرير
اختر خادم تدريب واحدًا، واكتب مسبقًا اسمه وعنوانه ودوره المتوقع من وثيقة اللاب. سجل إصدار nxc، واقرأ مساعدة SMB، ثم نفذ القراءة الأولية المتفق عليها. بعده اكتب أربع جمل: ما الذي رد؟ أي معلومة ظهرت؟ ماذا تثبت هذه المعلومة؟ وماذا لا تثبته؟ إذا قدرت تجاوب بدون مبالغة، فأنت تستخدم الأداة بشكل أفضل من شخص يشغل وظائف أكثر ولا يعرف حدود الناتج.
قارن اسم الجهاز بما عند مسؤول اللاب، وراجع معه أي ملاحظة متعلقة بالتوقيع. لا تغير إعداد الحماية لمجرد إنتاج سطر لافت في المقال أو التدريب. إذا احتجت دراسة اختلاف إعدادين، جهز بيئتين تجريبيتين بالتنسيق مع المسؤول ووثق كل إعداد، بدل العبث بخادم تعتمد عليه خدمات أخرى.
بعد ذلك انتقل إلى شرح smbclient في المجتمع لتفهم الفرق بين رؤية المشاركة وفتحها وقراءة ملف منها:
https://courses.cyberpts.com/community/59/shrh-smbclient-afhs-msharkat-almlfat-wafhm-slahyatha-khtwh-bkhtwh
الفائدة من استخدام أداة ثانية تكون أنها تجيب عن سؤال جديد أو تساعد على تأكيد قراءة محددة. إعادة الفحص نفسه بثلاث أدوات بدون فهم الاختلاف ما تضيف بالضرورة ثلاثة أدلة مستقلة.
المراجع الرسمية:
مستودع NetExec:
https://github.com/Pennyw0rth/NetExec
اختيار البروتوكول وخياراته:
https://www.netexec.wiki/getting-started/selecting-and-using-a-protocol
قواعد البيانات ومساحات العمل:
https://www.netexec.wiki/getting-started/database-general-usage
دليل SMB signing من Microsoft:
https://learn.microsoft.com/en-us/windows-server/storage/file-server/smb-signing-overview
في النهاية، أول سطر من NetExec يستحق القراءة. اسم الجهاز يربط الهدف، ومعلومة البروتوكول تساعدك تصف الخدمة، وقبول الحساب له معنى محدود، والصلاحية تحتاج دليلًا يناسبها. لما تفصل هذي الأشياء، يصير اختيار الخطوة التالية أسهل، ويصير تقريرك أصدق من مجرد نسخ الطرفية.