إستطلاع الشبكة وجمع المعلومات باستخدام لغة البرمجة Python --روهاك

مواضيع مفضلة

إستطلاع الشبكة وجمع المعلومات باستخدام لغة البرمجة Python --روهاك

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


في مرحلة الاستطلاع وجمع المعلومات سوف نقوم بكتابة برامج بلغة البرمجة بايثون للقيام بالأمور التالية:
  • إكتشاف الأجهزة الموجودة في الشبكة الهدف باستخدام الأمر ping.
  • TCP scanner.
  • Port Scanner.

إكتشاف الأجهزة الموجودة في الشبكة:

التعليمة ping تقوم بإرسال طلب ICMP ECHO Request إلى الجهاز الهدف، إذا كان الجهاز يعمل ومتصل بالشبكة بشكل صحيح فسوف يرد بإرسال ICMP RCHO Reply Internet Control Message Protocol  – ICMP
كما يظهر في الشكل التالي:
ping-request

تقنية Ping sweep :

تستخدم لفحص عدد من الأجهزة إذا كانت متصلة بالشبكة وذلك ضمن مجال معين لعناوين IP ومن خلال معرفة subnet and network address يمكن لمختبر الاختراق حساب مجال عناوين IP الخاص بالشبكة الهدف.
لنبدأ بالكود البرمجي التالي:
ping-sweep-code1

ونتيجة التنفيذ هي كما يلي :
ping-sweep-result
كما تلاحظ فإن هذا البرنامج البسيط هو تنفيذ لتعليمة ping على العنوان الشبكي 192.168.1.1 ،  في البداية قمنا باستيراد OS module لكي نستطيع تنفيذ أوامر نظام التشغيل ، وفي السطر الثاني استخدمنا التعليمة os.popen(‘ping 1 192.168.1.1’) والتي تقوم بأخذ التعليمة التي تمرر إليها بشكل سلسلة نصية وتعيد نتيجة تنفيذ هذه التعليمة.
في نظام الويندوز فإن الأمر  ping 192.168.1.1  تقوم بإرسال طلب ICMP ECHO request إلى الجهاز الهدف الطريقة popen() تقوم بإعادة قيمة عبارة عن file object وهي نتيجة تنفيذ التعليمة ping نتيجة تنفيذ التعليمة ping سوف يتم حفظه في المتغير response قمنا باستخدام حلقة for والتابع readlines() من أجل قراءة ملف الخرج file object (الذي يحوي على نتيجة تنفيذ التعليمة ping) سوف نقوم بتوسيع العملية السابقة وكتابة برنامج بلغة البايثون يقوم بفحص مجال معين من عناوين IP قم بفتح ملف جديد ثم قم بكتابة الكود التالي:
ping-sweep-code
في البداية قمنا باستيراد OS module لنتمكن من استدعاء تعليمات نظام التشغيل. وقمنا باستيراد datetime لنتمكن من استدعاء التعليمة التي تحدد الزمن الحالي. التابع raw_input يقوم بعرض الرسالة الممرة له وينتظر المستخدم ليقوم بإدخال قيمة ليتم حفظها في المتغير net (الطلب من المستخدم إدخال عنوان IP للشبكة الهدف) والطريقة النصية ()split تقوم بفصل عنوان IP إلى أربع أجزاء المتغيرnet2 سوف يحوي على الأجزاء الثلاثة الأولى من عنوان IP ( مثلاً 192.168.1)
التابع raw_input سوف يعرض رسالة على المستخدم يطلب منه إدخال قيمة عددية لتحديد بداية المجال ليتم حفظه في المتغير st1 وبنفس الطريقة يتم الطلب من المستخدم إدخال قيمة عددية لتحديد نهاية المجال ويتم حفظه في المتغير en1 في حال كنت تستخدم نظام ويندوز فالتعليمة ping -n 1 ” ” تقوم بإرسال حزمة بيانات لمرة واحدة أما إذا كنت تستخدم نظام لينكس فيجب استخدام التعليمة ” ping -c 1 “.
قمنا باستدعاء datetime.now() لحفظ قيمة الوقت الحالي قبل البدء بعملية الفحص وحفظ هذه القيمة في المتغير t1 وبعد الانتهاء من عملية الفحص قمنا بحفظ قيمة الزمن الحالي في المتغير t2 ومن ثم قمنا بحساب الفرق لمعرفة المدة التي استمرت فيها عملية الفحص.
استخدمنا حلقة for للمرور على عناوين IP ضمن المجال [st1,en1] التعليمة addr = net2 + str(ip) تخلق عنوان IP كامل ومن ثم قمنا باستخدام هذه العنوان مع تعليمة ping من أجل خلق تعليمة كاملة يتم تمريرها إلى popen.
التعليمة ((“if (line.count(“TTL تقوم بفحص خرج تعليمة ping لترى فيما إذا كان يحوي على TTL وإذا كانت هذه القيمة موجودة يتم طباعة عنوان IP وعبارة
Live لتحديد أن الجهاز متصل بالشبكة نتيجة تنفيذ هذا البرانامج :
ping-sweep-result-final
كما تلاحظ فإن هذا البرنامج يمكنه القيام بعملية فحص لأي مجال من عناوين IP ويعيد عناوين الأجهزة المتصلة بالشبكة والمدة الزمنية التي تمت فيها عملية الفحص.

تقنية TCP scan : 

تقنية Ping sweep تعمل من خلال إرسال طلب ICPM ECHO request وإستقبال الإجابة ICMP ECHO reply حيث أن العديد من الشركات تقوم بإيقاف ICMP ECHO reply باستخدام جدار ناري من أجل منع حزم البيانات الخاصة ببرتوكول ICMP وفي مثل هذه الحالة فإن عملية الفحص باستخدام ping sweep لن تعمل ويجب أن نستخدم TCP scan.
لنتعرف على عملية three-way handshake التي تظهر بالشكل التالي :
three-way-handshake
من أجل بدأ الاتصال فإن الأجهزة تقوم بعملية three-way handshake :
1. المستخدم يرسل SYN ليطلب من السيرفر بدء الجلسلة.
2. السيرفر يرد ويرسل ACK and SYN.
3. المستخدم يرد بإرسال ACK.
سنقوم بكتابة برنامج بلغة البايثون ليقوم بعملية TCP Scan :
tcp-scan-code
الجزء الأول من هذا البرنامج مشابه للبرنامج السابق ping sweep حيث قُمنا بتعريف تابعين ، الأول هو التابع scan والذي يستخدم socket للقيام بمحاولة الاتصال
التعليمة ((result = sock.connect_ex((add,135 تعيد في حال نجاح عملية الاتصال القيمة ‘0’ وفي حال فشل الاتصال تعيد رقم يشير إلى رمز الخطأ، في هذا البرنامج استخدمنا البورت port: 135 (هذا البورت عادةً ما يكون مفتوح في نظام الويندوز).
نتيجة تنفيذ البرنامج هي كما يلي :
tcp-scan-result
كما تلاحظ فإن هذا البرنامج يقوم بعملية فحص لأجهزة ضمن مجال عناوين IP التي يدخلها المستخدم ويعيد عناوين الأجهزة المتصلة بالشبكة.

تحديد الخدمات التي تعمل على الجهاز الهدف :

الآن وبعد أن تمكنا من تحديد الأجهزة الموجودة في الشبكة الهدف سوف نقوم بتحديد الخدمات التي تعمل على كل جهاز، طبعاً الخدمات التي تعمل باستخدام الشبكة. الخدمات التي تعمل باستخدام الشبكة يجب أن تقوم بفتح بورت port ومن رقم البورت المفتوح يمكننا معرفة الخدمة التي تعمل على الجهاز الهدف.
لنفترض أن جهازك مصاب ببرمجية خبيثة من نوع حصان طروادة Trojan والتي تقوم بتسجيل كل حرف تقوم بكاتبه وترسلها بشكل سري إلى المهاجم أو أنها تقوم بفتح اتصال مخفي بين جهازك وجهاز المهاجم.
في هذه الحالة فإن عملية فحص البورتات سوف تساعدك على اكتشاف الخدمات التي تعمل في جهازك وبدون معرفتك.
البورتات لها الأرقام ضمن المجال 0 – 65536 والبورتات الأكثر استخداماً هي ضمن المجال 0 – 1023 (وهي البورتات المستخدمة من قبل النظام).

برنامج Port scanner :

في البرنامج السابق TCP scanner استخدمنا البورت port: 135 للقيام بعملية الاتصال من خلاله في هذا البرنامج سوف نأخذ عنون IP واحد ونحاول الاتصال من خلال استخدام مجال معين من البورتات والتي يقوم المستخدم بتحديده وفي حال نجاح الاتصال فهذا يعني أن البورت مفتوح وفي حال فشل الاتصال هذا يعني أن البورت مغلق.
افتح ملف جديد وقم بكتابة الكود البرمجي التالي :
port-scanner-code
في البداية قمنا بعرض رسالة على المستخدم تطلب منه إدخال الحرف ‘ D ‘ إذا كان يريد فحص عنوان دومين أو إدخال الحرف ‘ I ‘ إذا كان يردي فحص عنوان IP ثم يتم الطلب من المستخدم أن يقوم بإدخال عنوان الدومين أو عنوان IP للجهاز الهدف.
ثم قمنا بتعريف socket ومحاولة الاتصال مع العنوان الهدف عبر مجال البورتات التي يدخلها المستخدم وفي حال نجاح عملية الاتصال سوف يتم طباعة رقم البورت المفتوح والخدمة التي تعمل عليه.
ونتيجة تنفيذ هذا البرنامج على العنوان IP: 192.168.1.1 وهو عنوان gateway في الشبكة لدي :
port-scanner-result
نتيجة تنفيذ هذا البرنامج على موقع google.com هي:
google-port-scanner
كما تلاحظ فإن هذا البرنامج قد قام بعملية فحص للبورتات وقام بتحديد البورتات المفتوحة وتحديد الخدمات التي تعمل على هذه البورتات قمنا بتحديد (socket.defaulttimeout(1 بمقدار ثانية واحدة وهذا يعني أن البرنامج سوف يمضي على الأكثر ثانية واحدة في محاولة الاتصال مع كل بورت، في حال كنت تريد فحص عدد كبير من البورتات يمكنك تقليل هذا الزمن لتتم عملية الفحص الكلية بشكل أسرع.

  • روابط التحميل والمشاهدة، الروابط المباشرة للتحميل من هنا
---------------------------------------------------------------
شاهد هذا الفيديو القصير لطريقة التحميل البسيطة من هنا
كيف تحصل على مدونة جاهزة بآلاف المواضيع والمشاركات من هنا شاهد قناة منتدى مدونات بلوجر جاهزة بألاف المواضيع والمشاركات على اليوتيوب لمزيد من الشرح من هنا رابط مدونة منتدى مدونات بلوجر جاهزة بآلاف المواضيع والمشاركات في أي وقت حــــتى لو تم حذفها من هنا شاهد صفحة منتدى مدونات بلوجر جاهزة بألاف المواضيع والمشاركات على الفيس بوك لمزيد من الشرح من هنا تعرف على ترتيب مواضيع منتدى مدونات بلوجر جاهزة بآلاف المواضيع والمشاركات (حتى لا تختلط عليك الامور) من هنا
ملاحظة هامة: كل عمليات تنزيل، رفع، وتعديل المواضيع الجاهزة تتم بطريقة آلية، ونعتذر عن اي موضوع مخالف او مخل بالحياء مرفوع بالمدونات الجاهزة بآلاف المواضيع والمشاركات، ولكم ان تقوموا بحذف هذه المواضيع والمشاركات والطريقة بسيطة وسهلة. ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــسلامـ.

إرسال تعليق

المشاركة على واتساب متوفرة فقط في الهواتف