شبكات


استخدام برنامج Nmap في فحص الأنظمة والشبكات

Nmap Security Scanner
Network Mapper أو Nmap اختصارا هو برنامج مجاني ومفتوح المصدر خاص بفحص الشبكات والأنظمة ويعتبر من أقوى البرامج التي يستخدمها الهاكرز والـ Penetration Testers وحتى خبراء الحماية ومدراء الشبكات أيضا. بدأ Nmap كبرنامج بسيط لفحص المنافذ لكنه تطور بشكل كبير خلال السنوات الماضية وأضيفت عليه الكثير من الميزات جعلت منه Securtiy Scanner فالبرنامج قادر على فحص نطاق شبكة كامل وفحص الأجهزة الموجودة فيها وتحديد المنافذ والخدمات التي يستخدمها بالاضافة لقدرته على عمل Remote OS Fingerprint أي تحديد نظام التشغيل الذي يعمل بالجهاز عن بعد والكثير الكثير من الأمور والميزات الأخرى.
لن أستطيع تغطية برنامج Nmap بشكل كامل في هذا الموضوع فالبرنامج ضخم وتم تأليف كتب كاملة عنه لاحتوائه على الكثير من الميزات والخيارات المتقدمة لكنه بنفس الوقت سهل الاستخدام لاحتواء Nmap على خيارات بسيطة وعملية بالاضافة لوجود واجهة رسومية جميلة تدعى Zenmap.
تعتبر عملية فحص المنافذ هي المهمة الأساسية لبرنامج Nmap وتكمن قوة البرنامج باحتوائه على خيارات كثيرة ومتقدمة وتوفيره لجميع الطرق المعروفة, ففحص المنافذ لا يتم بطريقة واحدة كما يظن البعض بل يوجد عدة أساليب وطرق متوفرة لكن قبل التطرق لها سأوضح معلومات أساسية عن بروتوكول TCP/IP فكما جميعنا يعلم يتم تحديد IP Address لكل جهاز متصل بالشبكة وعندما نريد الاتصال بهذا الجهاز يتم فتح منفذ (بين الرقم 1 وحتى 65536) لنتمكن من ارسال المعلومات له ولنفرض مثلا أن الجهاز A يريد الاتصال بالجهاز B عن طريق المنفذ رقم 22 وهو المنفذ الافتراضي لخدمة الـ SSH في البداية سيرسل الجهاز A طلب للجهاز B فاذا كان المنفذ مفتوح ولايوجد جدار ناري يمنع الاتصال سيقوم الجهاز B بارسال رد للجهاز A يخبره أن المنفذ مفتوح وأنه قبل الاتصال فيقوم الجهاز A بتكملة العملية والاتصال مع الجهاز B عن طريق المنفذ السابق أما اذا كان المنفذ 22 مغلق سيرسل الجهاز B رد يخبر به الجهاز A أن المنفذ مغلق أو غير مستخدم وبهذه الحالة سيقوم الجهاز A باغلاق الاتصال أما اذا لم يحصل الجهاز A على أي رد من الجهاز B هذا يعني أن المنفذ مفلتر أو بالأحرى محظور بسبب وجود جدار ناري يمنع الاتصال مثلا أو أن النظام لا يعمل أو غير موجود من الأساس!
ماذكرته سابقا هو الاسلوب المبسط الذي يوضح فكرة الاتصال وفحص المنافذ بشكل عام لكن في بروتوكول TCP/IP كل شيء يتم عن طريق Packets مثل ICMP, FIN, ACK, SYN… لكني لن أتطرق لها كثيرا ومن أراد التوسع أنصحه أن يقرأ عن بروتوكول TCP وأن يقرأ أيضا عن الـ OSI model ويعرف كيف يتم الاتصال ونقل البيانات في الشبكة بشكل مفصّل فأنا لا أريد الدخول بتفاصيل أكثر من ذلك وبنفس الوقت كان من الضروري أن أذكر المقدمة السابقة فما يهمني هو أن يفهم البعض كيف تعمل الأداة ثم أن يتعرفوا على طريقة استخدامها.
كما قلت سابقا يوجد عدة أساليب وطرق مستخدمة في فحص المنافذ والشبكات باستخدام برنامج Nmap سأستخدم في الشرح نظام Linux والاصدار 4.76 من Nmap مع العلم أن البرنامج متوفر على عدة أنظمة تشغيل مثل Windows, Linux, Unix… ويمكن تنفيذ جميع ماذكر بالموضوع على أي نظام آخر لكن شخصيا أفضل وأنصح باستخدام نظام GNU/Linux أو احدى أنظمة Unix في هذه الأمور.
الشرح للغرض العلمي فقط! وهو للتعريف بهذه الأنواع من البرامج وتوضيح طريقة استخدامها. أنا لا أشجع ولا بأي شكل من الأشكال على استخدام هذا البرنامج بشكل غير قانوني أو خارج نطاق شبكتك الخاصة وأنت وحدك تتحمل نتيجة استخداماتك!
1- TCP connect: وهو أبسط الأساليب المستخدمة في فحص المنافذ ويستعمل في أنظمة Unix للبدء باتصال TCP ويمكننا استخدامه بتنفيذ الأمر التالي:
nmap -sT 192.168.0.1
بفرض أن 192.168.0.1 هو الجهاز الذي نريد فحصه وبهذه الحالة سيحاول برنامج Nmap الاتصال بالجهاز بطريقة عادية فمثلا اذا تمكن برنامج Nmap من الاتصال بالمنفذ 21 هذا يعني ان خدمة الـ FTP تعمل على الجهاز كون المنفذ 21 هو المنفذ الافتراضي الخاص بخدمة الـ FTP مع العلم أن مدير السيرفر يستطيع تغيير المنفذ الافتراضي لأي خدمة يريد وبهذه الحالة سنعتمد على الـ Header الخاص بالخدمة لمعرفة المنفذ الذي تعمل عليه.
2- SYN Stealth Scan: أكثر الأساليب انتشارا في فحص المنافذ ويدعى أيضا half-open scanning لأنه لن يقوم بعمل اتصال TCP كامل فعوضا عن استخدام TCP connect والاعتماد على النظام في انشاء اتصال ستقوم أداة Nmap بانشاء وارسال Packet من نوع SYN وهي الـ Packet الخاصة ببدأ اتصال مع النظام وفي حال حصلنا على رد من النظام الذي نقوم بفحصة (Packet من نوع SYN-ACK) هذا يعني أن المنفذ مفتوح ويمكننا استخدامه بتنفيذ الأمر التالي (سنحتاج لصلاحيات root):
nmap -sS 192.168.0.1
3- UDP Scan: في هذا الأسلوب سيقوم برنامج Nmap بارسال UDP Packet فارغة (0-byte) وينتظر الرد من الجهاز الذي نقوم بفحصه فاذا لم نحصل على رد هذا يعني أن المنفذ مفتوح أما اذا كان المنفذ مغلق فسيرسل لنا الجهاز Packet من نوع ICMP تخبرنا أن المنفذ مغلق مع العلم أنه اذا كان المنفذ محظور من الجدار الناري سيظهر لنا أن المنفذ مفتوح أما اذا تم حظر الرد (ICMP Packet) فسيظهر لنا أن جميع المنافذ مفتوحة! يمكننا استخدام هذا الأسلوب بتنفيذ الأمر التالي:
nmap -sU 192.168.0.1
4- ACK Scan: نستخدم هذا الأسلوب في اكتشاف قوانين الجدار الناري ومعرفة اذا كان المنفذ الذي نفحصه مفلتر أم لا حيث سيقوم برنامج Nmap بارسال Packet من نوع ACK عوضا عن SYN وهذا أمر خاطئ فالاتصال يبدأ بـ SYN وليس بـ ACK لذلك سيقوم الجاهز الذي نفحصه بارسال Packet من نوع RST لاعادة الاتصال وبهذه الحالة نعلم أن المنفذ غير مفلتر ولا يوجد جدار ناري يمنع ارسال Packet من نوع RST أما اذا كان يوجد جدار ناري فلن نحصل على اي رد وهكذا نعلم أن المنفذ مفلتر (filtered) مع العلم أن هذا الأسلوب لن يظهر لنا ان كان المنفذ مفتوح أم مغلق ولكنه سيظهر ان كان المنفذ مفلتر أم لا, نستخدم هذا الأسلوب بتنفيذ الأمر:
nmap -sA -p 80 192.168.0.1
استخدمنا الأمر السابق بفرض أن 192.168.0.1 هو الجهاز الذي نفحصه و 80 هو المنفذ الذي نختبره.
5- IP Protocol Scan: في هذا الأسلوب يختلف عن الأساليب السابقة حيث سيقوم برنامج Nmap بارسال IP Packet للبروتوكولات الموجودة في الجهاز فاذا كان البروتوكول غير مستخدم سيقوم الجهاز بارسال رد عبارة عن Packet من نوع ICMP تخبرنا بذلك بغير هذه الحالة هذا يعني أن البروتوكول مستخدم, يمكننا استخدام هذا الأسلوب بتنفيذ الأمر التالي:
nmap -sO 192.168.0.1
6- Version Detection Scan: يمكننا هذا الأسلوب من فحص المنافذ المفتوحة ومعرفة الخدمات التي تعمل وتحديد اصداراتها أيضا حيث سيقوم برنامج Nmap بجمع معلومات عن الخدمات التي تعمل بالنظام الذي نفحصه ويفيدنا باكتشاف الثغرات الموجودة فبمجرد معرفتنا للخدمات التي تعمل في النظام وتحديد اصداراتها يمكننا استخدام مشروع ثغرات Metasploit مثلا أو استغلال أي ثغرة remote لاختراق النظام عن بعد (Black Hat Hackers Wins!) يمكننا استخدام هذا الأسلوب بتنفيذ الأمر التالي:
nmap -sV 192.168.0.1
7- Ping Scan: نستفيد من هذا الأسلوب في فحص نطاق شبكة ومعرفة اذا كان الجهاز يعمل أم لا حيث سيقوم برنامج Nmap بارسال Packet من نوع ICMP وهي نفسها التي نقوم بارسالها عندما ننفذ الأمر ping للتأكد ان كان الجهاز موجود بالشبكة اذا وصلنا رد من الجهاز هذا يعني أن الجهاز يعمل أما في حال لم نحصل على أي رد بسبب وجود جدار ناري يحجب الـ ICMP Packet مثلا سيقوم برنامج Nmap بعمل TCP Ping فاذا حصلنا على رد من نوع RST أو ACK هذا يعني أن الجهاز يعمل بغير هذه الحالة يعني أن النظام لا يعمل أو أن المنفذ الذي اخترناه مفلتر, يمكننا استخدام هذا الأسلوب بتنفيذ الأمر:
nmap -sP 192.168.0.1-255
ليفحص جميع الأجهزة الموجودة في النطاق 192.168.0.1 وحتى 192.168.0.225 أو عن طريق الأمر:
nmap -sP 192.168.0.1/24
هذا الأمر مثل الأمر السابق تماما فبما أن النطاق Class C هذا يعني أن الـ Netmask: 255.255.255.0 وهذا سيعطينا نفس النطاق السابق, أما اذا أردنا اختيار منفذ محدد ليتم فحصه مثلا 80 وهو المنفذ الافتراضي الخاص بالـ Webserver, نستخدم الأمر التالي:
nmap -sP -p 80 192.168.0.1-255
يحتوي برنامج Nmap على خيارات أخرى كثيرة ويمكننا استخدامهم مع بعض بالشكل الذي نريد فمثلا لنفرض أننا نريد فحص المنافذ التالية فقط (21,22,53,80) بجميع الأجهزة الموجودة بالشبكة, اذاً كل ماعلينا هو تنفيذ الأمر التالي:
nmap -sS -p 21,22,53,80 192.168.0.1-255
يمكننا كذلك اضافة -v لجعل عملية الفحص بشكل مرئي أمامنا فهي تفيدنا في حال فحص نطاق شبكة كبير مثلا أو لأننا لم نرغب بالانتظار حتى النهاية لمشاهدة جميع النتائج, نقوم بذلك بتنفيذ الأمر:
nmap -sS -v -p 21,22,53,80 192.168.0.1-255
لنفرض أننا نريد فحص المنافذ المفتوحة في الجهاز الذي نستخدمه من المنفذ رقم 1 وحتى 100:
nmap -sS -p 1-100 127.0.0.1
من ميزات برنامج Nmap أيضا قدرته على معرفة نظام التشغيل عن بعد, كل ماعلينا هو استخدام الأمر التالي لعمل Remote OS Fingerprint:
nmap -O -v 192.168.0.1
أو يمكننا استخدام أمر أكثر شمولية يجمع لنا معلومات عن النظام وجميع الخدمات التي تعمل عليه باستخدام الأمر التالي:
nmap -sS -A 192.168.0.1
طبعا كما قلت سابقا يمكننا استخدام جميع الأوامر السابقة مع بعضها البعض فمثلا ان أردنا من البرنامج تحديد نوعية التظام وجمع معلومات عن المنفذ 80 فقط نستطيع تنفيذ الأمر:


	

	
		

شرح تغيير Mac Address كرت الشبكة و طرق معرفته بالتفصيل

 

أحد أهم الخطوات التي يجب القيام بها قبل القيام بأي محاولة فحص لشبكة ما أو اختراقها هي تغيير ماك أدرس كرت الشبكة الذي تستخدمه, لماذا؟ لأنه و بمنتهى السهولة أي مدير شبكة لديه خبرة بسيطة يستخدم برنامج/سيرفر ليراقب به شبكته سيعرف أنك تحاول اختراقها و بهذه الحالة الدليل الوحيد ضدك سيكون Mac Address كرت الشبكة الذي تستخدمه! و من الممكن أيضا أن نستفيد من أشياء أخرى كثيرة سأذكرها في الموضوع لكن قبل أن أكمل يجب أن تعلم أني أشرح هذا الموضوع لغرض التعلم فقط و لا أشجّع أحد على القيام بتجربة ما ذكر هنا دون موافقة مدير الشبكة أو خارج نطاق شبكته الخاصة!
أول شيء أتوقع أن يأتي شخص و يسأل ما هو الـ Mac Address ؟ الجواب: هو العنوان الفيزيائي لكرت الشبكة, كلمة Mac هي اختصار لـ Media Access Control و كل كرت شبكة يأتي بماك أدرس مختلف عن الآخر و لا يمكن وجود كرتين لهما نفس قيمة الماك أدرس و بشكل عام لا يمكننا تغيير القيمة الموجود بكرت الشبكة لأنها تحدد من أساس الصنع لكن يمكننا أن نقوم بتغييرها من النظام فعند بدء كل تشغيل يقوم النظام بنسخ قيمة الماك أدرس الحقيقي الى الرام و بهذه الحالة اذا أردنا تغيير الماك أدرس سنقوم بتغيير القيمة الموجودة بالرام فقط! و هذا يعني أن الماك أدرس سيتغير بشكل مؤقت و بعد اعادة تشغيل الجهاز ستعود قيمة الماك أدرس كما كانت و كأن شيء لم يكن, يتألف المك أدرس من 6 قيم HEX تكون فيها الأحرف من A – F أما الأرقام من 0 – 9 مثال على ذلك:
00-19-B9-52-C4-7C
00-15-C8-B6-52-6F
00-4F-C3-DA-3B-E5
لمعرفة الماك أدرس الخاص بكرت الشبكة لديك كل ما عليك هو تطبيق الأمر التالي في سطر الأوامر CMD بالنسبة لأنظمة Windows أو من خصائص الكرت نفسه (كل واحد يختار الأسهل له):
ipconfig /all
سيظهر لك هذا الأمر جميع معلومات كرت الشبكة من بينها الماك أدرس كما هو واضح في الصورة الموجودة في أعلى الموضوع
Physical Address. . . . . . . . . : 00-19-B9-52-C4-7C
أما اذا كان النظام الذي تستخدمه Linux فعليك تطبيق الأمر
ifconfig -a
ليظهر لك جميع كروت الشبكة الموجودة بالجهاز و معلومات أخرى كثيرة احداها الماك أدرس (المظلل) كما هو واضح في الصورة التالية:
و اذا أردت معرفة Mac Address جهاز موجود في نفس الشبكة يمكنك ذلك أيضا باستخدام احدى البرامج أو من الـ NetBios اذا كان نظامك Windows عن طريق تنفيذ الأمر التالي:
nbtstat -a IP-ADDRESS
مثال على ذلك
nbtstat -a 192.168.0.43
أما في نظام لينوكس يمكننا استخدام الأمر التالي:
nmblookup - A 192.168.0.43
أو حتى نفس الأمر السابق لكن بعد وجود سيرفر Samba منصب على الجهاز.
يوجد أدوات و طرق أخرى كثيرة لمعرفة الماك أدرس الخاص بالأجهزة الموجودة معك في الشبكة كاستعمال برنامج Sniffer مثلا لكني سأكتفي بهذا الحد و أترك معرفة باقي الطرق لكم, السؤال الذي يطرح نفسه الأن كيف يمكننا تغيير الماك أدرس؟ اذا كنا في نظام ويندوز يمكننا ذلك اما من الريجستري أو من الخصائص المتقدمة لكرت الشبكة (لا تدعمها جميع الكروت) كما في الصورة التالية:
أما أسهل طريقة هي استخدام برامج لتقوم لنا هذه المهمة, بالنسبة لي أجد برنامج TMAC 5.0 أفضلها و هو برنامج مجاني و بسيط يمكنك تحميله من هــنــا
كل ماعليك هنا هو تحديد كرت الشبكة الذي تريد تغيير الماك أدرس الخاص به و الضغط على زر Change.
أما في نظام لينوكس الأمر أسهل ما يكون و لا يحتاج لأي برنامج و يكفي تطبيق الأوامر التالية لتغيير الماك أدرس الخاص بالكرت الذي تريده:
ifconfig eth0 down hw ether 00:4F:C3:A4:3B:E5
ifconfig eth0 up
مع استبدال كل من eth0 باسم كرت الشبكة عندك و 00:4F:C3:A4:3B:E5 بالماك أدرس الذي تريد
الأن و بعد أن عرفنا كيفية تغيير Mac Address كرت الشبكة ماذا نستفيد من ذلك أيضا؟ الجواب: يمكننا عمل الكثير كأن نأخذ ماك أدرس جهاز آخر موجود على نفس الشبكة و بهذه الطريقة نستطيع أن نقطع اتصاله بالانترنت أو  قد نحصل على صلاحيته فمثلا بعض الشبكات تحدد سرعات تحميل مختلفة لكل جهاز اذا عرفت أي جهاز صاحب سرعة التحميل الأكبر غيّر ماك أدرس جهازك الى ماك أدرس جهازه و ستتمكن من التحميل بنفس السرعة المخصصة له! أيضا بعض شبكات الوايرس تعتمد على الماك أدرس و تحدد الأشخاص الذين يمكنهم الاتصال بالشبكة عن طريقه.. الكثير و الكثير الأشياء الأخرى لن أذكرها الأن بل أترككم لتكتشفوها بأنفسكم و بالنهاية أعيد و أكرر الموضوع للتعلم و الفائدة فقط! و ليس لتجريب ما ذكر فيه على شبكات عامة دون تصريح من مدير الشبكة أو خارج نطاق شبكتك الخاصة!



Nessus البرنامج المجاني الأقوى لفحص السيرفرات والشبكات

 

NESSUS LOGO
آخر موضوع كتبته في المدونة قبل 13 يوم تقريبا! بصراحة لا أعرف لماذا لم أعد أكتب مثل السابق يوجد الكثير من الأفكار بحاجة لترتيب ولا أستطيع التركيز بشيء أتوقع أن ضيق الوقت الذي أمر به هو السبب.. على كل حال اليوم سأشرح برنامج NESSUS الرائع المستخدم في فحص السيرفرات والشبكات بشكل عام, البرنامج فعال جدا ويظهر لنا الكثير من المعلومات التي تفيد الـ Hackers والـ Security Professionals على حد سواء مثل المنافذ المفتوحة في السيرفر, الخدمات المستخدمة واصداراتها, الثغرات الموجودة في السيرفر مع شرح طرق سدها واصلاحها والكثير الكثير من الأمور الأخرى…
رغم قوة البرنامج الكبيرة الا أن كثيرين هم الذين لايعرفونه وفي نظام ويندوز أجدهم يستخدمون برامج أخرى مثل برنامج GFI شرحته سابقا في المدونة هــنــا, الذي يعيب برنامج GFI أنه مدفوع وسعره مرتفع أيضا ولايوجد نسخة تعمل على نظام لينوكس وثقيل على الجهاز أما برنامج NESSUS يعمل على أكثر من نظام Windows, Linux, FreeBSD, Mac, Solaris بالاضافة لسهولة استخدامه وخفته على الجهاز فهو سريع جدا أثناء الفحص ويظهر نتائج دقيقة ويوجد العديد من الاضافات يمكن اضافتها للبرنامج والأهم من كل ذلك أنه مجاني! برنامج NESSUS من برمجة شركة Tenable Network Security وسابقا في الاصدار 2.2 كان هذا البرنامج مجاني ومفتوح المصدر أيضا لكن بعد ذلك للأسف تم اغلاق المصدر وبقي البرنامج بشكل مجاني فكل ماعليك هو التسجيل في الموقع والحصول على رقم تسجيل خاص بك. سأشرح في هذا الموضوع جميع الخطوات على نظام لينوكس! أما مستخدمي الويندوز لا أتوقع أنهم بحاجة لهذا الشرح كل ماعليكم هو تحميل البرنامج ثم Next, Next, Next, Finish تم التنصيب!
بعض الصور للبرنامج وهو يعمل من جهازي (نظام لينوكس)
Nessus 1Nessus 2Nessus 3
Nessus 4Nessus 5
Nessus Report
في نظام لينوكس سنحتاج لتنصيب Nessus for Linux وهو السيرفر بالاضافة لـ NessusClient وهو الواجهة الرسومية المستخدمة في نظام لينوكس والتي ستتحكم بواسطتها بسيرفر NESSUS وبما أن البرنامج يعمل بشكل سيرفر فمن الممكن تنصيبه على جهاز والتحكم به من جهاز آخر وتستطيع اضافة عدة مستخدمين للتحكم به والكثير من الأمور الأخرى…
أول خطوة يجب القيام بها هي تحميل Nessus fo Linux والقيام بتنصيبه, اعداده وتشغيله ثم يجب علينا تحميل NessusClient وتنصيبه والاتصال بواسطته بالسيرفر بعد ذلك نبدأ الفحص (رابط التحميل موجود في آخر الموضوع) قبل التحميل سيطلب منك التسجيل ضع ايميلك الصحيح لأن الموقع سيرسل رقم التسجيل للايميل الذي أدخلته بعد ذلك سيظهر لك الصفحة الموجود فيها روابط التحميل اختر الحزمة الخاصة بتوزيعتك وقم بتنصيب NESSUS بشكل عادي حسب الحزمة التي اخترتها وبعد الانتهاء من تنصيب الحزمة بنجاح نفذ الأمر التالي وأنت بصلاحيات رووت
/opt/nessus/sbin/nessus-adduser
لتضيف مستخدم جديد للسيرفر سيطلب منك ادخال اسم المستخدم الذي تريده ثم كلمة المرور بعد ذلك افتح الايميل الذي وصلك من الموقع وستجد بداخلة رقم التسجيل نفذ الأمر
/opt/nessus/bin/nessus-fetch --register XXXX-XXXX-XXXX-XXXX-XXXX
مع استبدال XXXX-XXXX-XXXX-XXXX-XXXX برقم التسجيل الذي أرسلوه لك وبهذه الحالة انتهينا من اعداد السيرفر وتسجيله بقي علينا تشغيله ويتم ذلك بتنفيذ الأمر
/etc/init.d/nessusd start
الأن شغل برنامج NessusClient بعد تنصيبه اذا لم تجده بالقائمة نفذ الأمر
/opt/nessus/bin/NessusClient
بعد أن يعمل البرنامج اضغط على زر Connect وسيظهر لك مثل الصورة التالية:
Nessus Connection Configure
اضغط Edit لتعديل خيارات الاتصال وأدخل في الأسفل اسم المستخدم وكلمة المرور الذي أضفته سابقا واحفظ الاعدادات بالضغط على Save بعد ذلك اضغط على زر Connect ليتم الاتصال بالسيرفر اضغط على + لتضيف السيرفر أو نطاق الشبكة الذي تريد فحصه بعد ذلك اضعط على Scan Now ليبدأ الفحص وتبدأ النتائج بالظهور…