الـ Ports والـ Protocols

جارٍ التحميل…

01 / ملخص الدرس

الـ Ports والـ Protocols

يعني إيه Port و Service و Protocol، والفرق بين TCP و UDP، وأشهر الـ ports اللي هتقابلها في كل اختبار.

02 / شرح الدرس مكتوبًا

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

أهلاً بيك. الـ IP Address بيوصّلنا للجهاز. بس الجهاز الواحد عليه برامج كتير شغالة مع بعض. طب البيانات تعرف منين هي رايحة لأنهي برنامج؟

هنا ييجي دور الـ Port. تخيل الجهاز عمارة، والـ IP هو عنوان العمارة، والـ Port هو رقم الشقة. وكل برنامج بيستنى البيانات على port معيّن… والبرنامج ده اسمه Service. والـ Protocol هو اللغة المتفق عليها بين الطرفين. زي ما الناس لازم يتكلموا نفس اللغة علشان يفهموا بعض. HTTP لغة، و SSH لغة، و DNS لغة.

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

وفيه ports لازم تحفَظها، لأنك هتشوفها في كل اختبار. port twenty two، ده SSH، للتحكم في Linux من بعيد. port eighty و four forty three، دول HTTP و HTTPS، المواقع. port four forty five، ده SMB، مشاركة الملفات في Windows. و port three three eight nine، ده RDP، للتحكم في Windows من بعيد. وليه ده مهم في الأمن؟ كل port مفتوح… باب. ووراه service، والـ service دي ممكن تكون قديمة، أو متضبطة غلط، أو فيها ثَغْرة. علشان كده أول حاجة بنعملها في أي اختبار: نعرف أنهي ports مفتوحة. نعمل جدول صغير بـ Python: رقم الـ port، وقدامه اسم الـ service. نشغّل…

main.py
ports = {
    22: "SSH",
    80: "HTTP",
    443: "HTTPS",
}

print(ports[22])

المخرجات

SSH

ونتخيل إننا عملنا فحص، ولقينا تلات ports مفتوحة. نطبع اسم كل service. نشغّل… port three three oh six طلع unknown، علشان مش في الجدول بتاعنا.

main.py
ports = {
    22: "SSH",
    80: "HTTP",
    443: "HTTPS",
}

open_ports = [22, 80, 3306]

for p in open_ports:
    print(p, ports.get(p, "unknown"))

المخرجات

22 SSH
80 HTTP
3306 unknown

دورك: port three three oh six ده MySQL، قاعدة بيانات. ضيفه للجدول، وشغّل تاني.

تمرين

ضيف 3306: "MySQL" للـ dictionary.

الحل: نشغّل… قاعدة بيانات مفتوحة على الشبكة… وده لوحده ممكن يبقى finding.

main.py
ports = {
    22: "SSH",
    80: "HTTP",
    443: "HTTPS",
    3306: "MySQL",
}

open_ports = [22, 80, 3306]

for p in open_ports:
    print(p, ports.get(p, "unknown"))

المخرجات

22 SSH
80 HTTP
3306 MySQL

الدرس الجاي: أهم protocol في الأمن… HTTP، والـ DNS. يلا بينا.

03 / دروس المسار (23)
  1. 01أهلاً بيك — يعني إيه أمن سيبراني؟
  2. 02الكمبيوتر بيشتغل إزاي من جُوّه؟
  3. 03نظام التشغيل: المدير اللي بيدير كل حاجة
  4. 04الملفات والـ Users والصلاحيات
  5. 05صفر وواحد: Binary و Hex و Encoding
  6. 06الشبكات والـ IP Address
  7. 07الـ Ports والـ Protocolsانت هنا
  8. 08الـ DNS والـ HTTP: إزاي الموقع بيفتح؟
  9. 09تطبيق الويب: Client و Server و Database
  10. 10مفاهيم الحماية: CIA Triad
  11. 11Vulnerability و Threat و Risk
  12. 12Authentication و Authorization
  13. 13Least Privilege و Defense in Depth
  14. 14الـ Hashing: إزاي نحفَظ الباسورد صح
  15. 15الـ Encryption: Symmetric و Asymmetric و HTTPS
  16. 16تفكير المهاجم: الثقة والمدخلات
  17. 17الـ Attack Surface والـ Attack Vectors
  18. 18الـ Social Engineering والـ Phishing
  19. 19أنواع المهاجمين، والأخلاق، والقانون
  20. 20أنواع الاختبار والـ Scope والـ Rules of Engagement
  21. 21مراحل اختبار الاختراق
  22. 22جهّز الـ Lab بتاعك
  23. 23مراجعة نهائية: سيناريو كامل، وإنت رايح فين