المجتمع Active Directory

CrackMapExec وNetExec وnxc: ليش أوامر الشروحات تختلف، وكيف تعرف النسخة اللي تشغلها فعلًا؟

في شرح قديم مكتوب crackmapexec، وفي شرح جديد مكتوب nxc، وعلى جهازك الأمر netexec يعمل لكن خيارًا شفته في الفيديو يرفضه. قبل ما تقول إن اللاب فيه مشكلة، خلنا نراجع برنامجك نفسه. ممكن تكون تستدعي نسخة ثانية غير اللي ثبتَّها قبل شوي، أو أن الشرح يقصد مشروعًا أو إصدارًا مختلفًا. اسم الأمر في الطرفية ما يكفي وحده لإثبات هويته.

هنا نرتب العلاقة بين الأسماء، ثم نبني طريقة تشخيص محلية: مصدر التثبيت، والمسار، وبيئة Python، ونص المساعدة، ونوع الخطأ. الأمثلة لا تتضمن تجربة كلمات مرور أو تنفيذًا بعيدًا أو جمعًا من أجهزة غير مصرح بها. بنركز على تجهيز أداة اللاب وفهم ما تستدعيه فعلًا، لأن هذه الخطوة كثيرًا ما تفسر أخطاء نسبها المتدرب إلى SMB أو Active Directory وهي حدثت قبل الاتصال أصلًا.

وش العلاقة بين CrackMapExec وNetExec؟

مستودع NetExec الرسمي يشرح أن المشروع تطور من تاريخ CrackMapExec، وأن مجموعة من المساهمين واصلت العمل باسم NetExec كمشروع مجتمعي مفتوح. هذا يفسر ليش تجد اسم CME في شروحات أقدم واسم NetExec في مصادر أحدث. لكنه ما يعني أن استبدال كلمة واحدة يجعل كل أمر قديم يعمل بنفس الخيارات والسلوك. تعامل مع التوثيق والبرنامج كزوج مرتبط بنسخة محددة، لا كأسماء متبادلة بلا تاريخ.

الاختصار nxc اسم استدعاء لـNetExec. ملف المشروع الحالي يعرّف nxc وnetexec وNetExec كواجهات لاستدعاء نقطة البرنامج نفسها، بينما nxcdb له وظيفة مختلفة تخص قاعدة الأداة. هذا وصف الملف الرسمي الذي راجعناه، وليس ضمانًا أن كل حزمة على كل توزيعة تقدم كل الأسماء بنفس الطريقة. إذا كان واحد من الأسماء لا يعمل، راجع الحزمة ومساراتها قبل افتراض أن البرنامج غير موجود أو أن التثبيت تلف.

وفي تقرير اللاب، اكتب NetExec مع رقم النسخة وطريقة تثبيتها، ثم اسم الأمر الذي استخدمته. لا تكتب CME إذا كان الملف الفعلي NetExec فقط لأنك تعلمت من شرح قديم. هذه الدقة تفيد من يريد إعادة الاختبار وتفيدك أنت لما ترجع لملاحظاتك بعد أشهر. الاسم التاريخي يشرح مصدر الفكرة، أما النسخة الفعلية فهي التي تحدد الخيارات والمخرجات التي بنيت عليها نتيجة أو تشخيصًا.

المسار أهم من آخر رسالة «تم التثبيت»

قد يكون عندك تثبيت من مدير حزم التوزيعة، وتثبيت آخر عبر pipx، ونسخة داخل بيئة تطوير. نجاح تثبيت الجديد لا يثبت أنه صار أول برنامج تستدعيه الطرفية عند كتابة الاسم. ترتيب PATH أو alias أو إعداد الجلسة قد يوصلك لنسخة سابقة. في Bash، قراءة command -v nxc تساعدك تعرف ما يفسره shell لهذا الاسم، وtype -a nxc تساعد في مراجعة المطابقات التي يعرفها. اقرأ الناتج محليًا بدل افتراض المسار.

إذا كانت النتيجة alias أو وظيفة shell، فلا تعاملها كمسار ملف تنفيذي مباشر. وإذا ظهرت مسارات متعددة، سجل أيها يستخدم الأمر الحالي. لا تحذف النسخ القديمة عشوائيًا قبل فهم من يستخدمها. قد تكون جزءًا من بيئة تدريب أخرى أو تطبيق يملك اعتماداته الخاصة. السؤال الأول ليس «كيف أنظف الجهاز كله؟» بل «أي برنامج يشغله هذا الاسم في هذه الجلسة؟». بعد الإجابة تقدر تختار معالجة محدودة ومفهومة.

جرب المقارنة من نفس الطرفية التي ظهر فيها الخطأ. فتح طرفية جديدة قد يغير بيئة PATH أو تفعيل بيئة افتراضية، وهذا فرق تحتاج تسجيله. إذا اشتغل الخيار في جلسة وفشل في أخرى، ابدأ بمقارنة المسار والمساعدة والنسخة، لا بالشبكة. النتيجة المحلية هذه لا تتطلب هدفًا بعيدًا. وهي فرصة تتعلم مهارة تشخيص تنطبق على Certipy وImpacket وأدوات كثيرة يعتمد استخدامها على بيئات وأسماء استدعاء متشابهة.

pipx وvenv ومدير الحزم: ثلاثة سياقات لا تخلطها

pipx مصمم لتثبيت تطبيقات Python في بيئات منفصلة لكل تطبيق وعرض أوامرها للاستخدام. أما venv فهي بيئة Python افتراضية بمجموعتها من الحزم، ويمكنك تجهيز أداة فيها حسب توثيقها. ومدير حزم التوزيعة يقدم تثبيتًا وفق سياسة التوزيعة. لا توجد حاجة تجمع الطرق الثلاث لنفس المهمة من غير سبب. اختر طريقة مناسبة للاب وسجلها، ثم عرف كيف تقرأ معلوماتها عندما يظهر خطأ أو تحتاج إعادة تجهيزها.

إذا كان NetExec تحت إدارة pipx، قراءة pipx list تساعدك ترى التطبيقات التي يديرها والأوامر المرتبطة بها وفق نسختك. ظهور التطبيق هناك لا يثبت أن الأمر الذي كتبته في shell يستخدمه؛ ارجع إلى المسار. وإذا كان داخل venv، راجع البيئة التي تعمل منها بدل تنفيذ pip في بيئة النظام على أمل أن تصلح المكتبة الناقصة. تثبيت اعتماد في مكان آخر قد ينجح كعملية تثبيت من دون أن يغير بيئة التطبيق الذي يفشل.

كذلك لا تعالج أي رسالة مكتبة باستخدام sudo pip أو تحديث كل حزم الجهاز دفعة واحدة. افهم من يملك البيئة وما الذي يحتاجه المشروع الفعلي. توثيق NetExec الحالي يقدم مسارات تثبيت مختلفة، ويتغير دعم الحزم والإصدارات مع الوقت. هذا المقال ما يثبت وصفة تثبيت أبدية؛ يعطيك طريقة تربط الخطأ بالبيئة. الخطوة المناسبة تعرفها بعد أن تحدد المصدر والمسار والمفسر والنسخة، مو قبلها.

المساعدة المحلية مرجع لمعنى الخيار عندك

بعد تثبيت هوية البرنامج، قراءة nxc --help توضح الخيارات العامة التي توفرها نسختك، وnxc smb --help توضح مساعدة البروتوكول المحدد في هذا المثال. هذه قراءة محلية للمساعدة، ولا نضيف أهدافًا أو بيانات حساب. الفائدة أن تعرف هل الخيار الذي تبحث عنه عام أم خاص بالبروتوكول أو وحدة أخرى، وهل اسمه وصيغته يطابقان ما رأيته في الشرح. احتفظ بالمساعدة ذات الصلة مع بطاقة النسخة إذا كان التمرين يعتمد عليها.

لو ظهر unrecognized arguments، فهذا مختلف عن رفض مصادقة من خادم. قد يكون الخيار غير مدعوم في النسخة أو وضعته في موضع غير صحيح أو استخدمت اسمًا يخص أداة أخرى. لا تبدأ بتعديل كلمة المرور؛ البرنامج ربما رفض تحليل الأمر قبل أن يرسل طلبًا. راجع النص والمساعدة وتوثيق النسخة. وإذا هناك خطأ صياغة قيمة، فالحل يبدأ من القيمة والمتطلب الذي يتوقعه الخيار، لا من استنتاج أن البروتوكول لا يعمل.

وحين ترى في شرح قائمة modules، لا تشغّل وحدة لأن اسمها جذاب قبل قراءة ماذا تعمل. ليست كل وظيفة قراءة فقط، وبعضها يغير حالة أو ينفذ عملًا على الهدف. اختيار وظيفة يتبع سؤالًا وتصريحًا معلومين. في هذا المقال نثبت الأداة محليًا أولًا، ثم حين تنتقل لفحص لابك تكون قادرًا تعرف الوظيفة التي تقصدها بدل إعطاء أمر كبير منسوخ وتوقع أن كل جزء فيه آمن أو ضروري لمشكلتك.

خطأ Python قبل الاتصال يختلف عن خطأ الخدمة بعده

رسالة مثل ModuleNotFoundError أو فشل استيراد في بداية التنفيذ تشير إلى جانب في البيئة البرمجية يحتاج مراجعة. لا يصح وصفها بأنها الحساب غير صحيح إذا لم يبدأ الاتصال بالهدف. احتفظ بأول خطأ ذي صلة وموقعه في التسلسل، وراجع مصدر الحزمة والبيئة التي تستدعيها. أحيانًا الإكثار من آخر سطر في traceback يخفي اسم الاعتماد أو السياق الذي كان أوضح في جزء سابق.

أما إذا بدأ البرنامج الوظيفة واتصل ثم أعاد حالة من الخدمة، فالسؤال انتقل إلى الهدف والبروتوكول والهوية والحق المطلوب. لا تستخدم تحديث الأداة كحل تلقائي لكل رفض وصول. قد تكون القراءة ممنوعة فعلًا لهذا الحساب، أو أن الهدف مختلف، أو أن العملية تطلب قدرة لا تملكها. حدد المرحلة التي وصلت لها من المخرجات الموثقة، ثم اختر سؤالًا يناسبها. نفس الواجهة النصية يمكن أن تعرض أخطاء من طبقات مختلفة تمامًا.

في ملاحظاتك، افصل ثلاثة أعمدة معنوية: بدء البرنامج، وتحليل الخيارات، ونتيجة العمل المقصود. قد لا يصل التنفيذ إلى العمود الثالث. هذه طريقة بسيطة لتجنب خلط الأخطاء، وتسمح لك تقارن جولتين بصدق. إذا اصلحت البيئة ثم ظهر رفض من الخدمة، فهذا تقدم في التشخيص وليس دليلًا أن الحل فشل؛ أصبحت هناك مرحلة جديدة تحتاج تفسيرًا مستقلًا. لا تمسح الرسالة الأولى قبل تسجيل التغير الذي حدث.

سيناريو: ثبت الجديد لكن القديم ما زال أول PATH

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

الخطوة التالية تكون اختيار الطريقة المقصودة وتطبيق إجراء PATH أو استدعاء موثق يناسبها وفق إعداد اللاب، مع الحفاظ على عدم تضارب البيئات. بعد ذلك راجع المسار والمساعدة نفسها للتأكد أن التغير تحقق. لا تكفي عبارة «فتحت طرفية جديدة وصار يعمل» إذا تريد تفهم السبب. اكتب ماذا تغير في حل اسم الأمر، وأي نسخة أصبحت مستدعاة. إذا استدعيت ملفًا بمسار صريح للقراءة، سجل ذلك حتى يقدر شخص آخر إعادة الحالة.

في سيناريو ثانٍ، الطرفية داخل venv لمشروع آخر، والنسخة التي تستخدمها ليست التي تظهر في pipx list. هنا يحتاج التشخيص معرفة حدود تفعيل البيئة، لا نقل كل اعتماد إلى كل مكان. المقارنة بين الجلسات تساعدك تعرف أين يبدأ الفرق. هذه تمارين تجهيز أدوات، لكنها جزء مهم من مهارة مختبر الاختراق؛ الوقت الذي توفره من حل مشكلة محلية بسرعة يصبح وقتًا لفهم الهدف وكتابة دليل أفضل.

كيف تنتقل من شرح CME قديم إلى NetExec بشكل صحيح؟

خذ فكرة الاختبار من الشرح، ثم أعد صياغة السؤال: ماذا يريد الكاتب معرفته من الخدمة؟ اكتشاف معلومات؟ مراجعة وصول؟ قراءة إعداد معين؟ بعد ذلك ابحث عن الوظيفة المقابلة في توثيق NetExec الذي يطابق نسختك. لا تنسخ أمرًا كاملًا وتغير الاسم فقط. يمكن أن تتغير خيارات ومرشحات واعتماديات ومخرجات، وقد تكون الوظيفة في الشرح أوسع من هدف تمرينك الحالي.

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

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

بطاقة أدوات تحمي وقت المذاكرة والتقرير

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

راجع التجهيز قبل جلسة تعلم طويلة. تأكد أن المساعدة تعمل وأنك تعرف مصدر البرنامج، ثم انتقل إلى سؤال مصرح لهدف لاب محدد. إذا واجهت اختلافًا بين جهازين، ابدأ ببطاقتي الأداة قبل المقارنة الأمنية. كثيرًا ما يفسر الاختلافَ مسارٌ أو نسخةٌ أو نطاق وظيفة، ثم يبقى لك وقت لفحص ما يخص البيئة فعلًا. واذا نجح الإصلاح، سجل السبب بدل تركه كحظ اكتسبته من تحديث عشوائي.

المراجع: NetExec الرسمي https://github.com/Pennyw0rth/NetExec ، وتعليمات التثبيت https://www.netexec.wiki/getting-started/installation ، وتوثيق pipx https://pipx.pypa.io/stable/ ، وبيئات Python https://docs.python.org/3/library/venv.html . وللقراءة المكملة في المجتمع، ارجع إلى مقال NetExec الذي يشرح تفسير نتائج الخدمة؛ هذا المقال يجهز لك الأرضية قبلها. لما تعرف أي برنامج يعمل وأي سؤال يسأل، تصبح رسائل الخطأ معلومات تقودك بدل ما تكون عائقًا غامضًا.

إذا تحتاج إعادة حالة بعد مدة، لا تعتمد على رابط فرع متحرك وحده. سجل الإصدار أو المرجع الذي جهزت منه اللاب، لأن محتوى main قد يتغير بعد ملاحظتك. هذا لا يعني تجميد الأدوات للأبد؛ يعني أن التحديث يصبح تغييرًا معلومًا تختبر أثره. احتفظ بجولة مقارنة صغيرة قبل التحديث وبعده بدل فقدان نقطة المرجع التي كانت تشرح نتيجة سابقة.