الـ Attack Surface والـ Attack Vectors
كل الأبواب اللي المهاجم ممكن يدخل منها: المواقع والـ ports والـ users والموبايلات وحتى الموظفين، وإزاي بنرتّبها.
نص شرح المعلم والكود الذي كتبه ونتيجة تشغيله، بنفس ترتيب الدرس.
أهلاً بيك. المهاجم مابيبدأش يهاجم على طول. الأول بيرسم خريطة لكل الأبواب اللي ممكن يدخل منها. والخريطة دي اسمها Attack Surface.
الـ Attack Surface هو كل حتة الشركة مكشوفة منها. المواقع والـ subdomains. الـ ports المفتوحة على الإنترنت. حسابات الموَزَّفين والإيميلات. والـ apps والـ cloud والـ VPN. والقاعدة بسيطة: كل ما الـ Attack Surface يكبر، كل ما فرصة المهاجم تزيد. موقع تجارب قديم حد نسيه، أو port مفتوح من غير سبب… كل ده أبواب زيادة.
أما الـ Attack Vector، فهو الطريقة اللي المهاجم بيدخل بيها من الباب ده. ثَغْرة في موقع. إيميل Phishing. باسورد ضعيف أو متسرّب. أو USB مرمي قدام الشركة. وفيه نوعين من الـ Surface. External، اللي باين من الإنترنت. و Internal، اللي جُوّه الشبكة… وده بيبان بس بعد ما المهاجم يدخل أول جهاز. وفي OSCP، هتشتغل على الاتنين. نعمل خريطة صغيرة بـ Python لحاجات لقيناها. نشغّل…
surface = [
{"asset": "shop.example.com", "port": 443, "service": "HTTPS"},
{"asset": "dev.example.com", "port": 80, "service": "HTTP"},
{"asset": "10.0.0.5", "port": 3306, "service": "MySQL"},
]
for item in surface:
print(item["asset"], item["port"], item["service"])المخرجات
shop.example.com 443 HTTPS dev.example.com 80 HTTP 10.0.0.5 3306 MySQL
ونفكر زي المهاجم: أنهي واحدة فيهم تلفت النزر؟ نضيف ملاحزات أوتوماتيك. نشغّل… موقع dev مكشوف ومن غير تشفير… ده أول حاجة هبص عليها.
surface = [
{"asset": "shop.example.com", "port": 443, "service": "HTTPS"},
{"asset": "dev.example.com", "port": 80, "service": "HTTP"},
{"asset": "10.0.0.5", "port": 3306, "service": "MySQL"},
]
for item in surface:
note = ""
if item["service"] == "HTTP":
note = "no encryption"
if "dev" in item["asset"]:
note += " dev server exposed"
print(item["asset"], item["service"], note)المخرجات
shop.example.com HTTPS dev.example.com HTTP no encryption dev server exposed 10.0.0.5 MySQL
ليه الـ dev؟ لأن مواقع التجارب غالباً: ما بتتحدِّسش. فيها debug شغال. وباسوردات افتراضية زي admin admin. وساعات متوصّلة بنفس قاعدة البيانات الحقيقية. دورك: ضيف تنبيه لأي قاعدة بيانات مكشوفة، يعني لو الـ service هي MySQL، ضيف database exposed.
ضيف شرط: لو service == "MySQL" ضيف " database exposed" للـ note.
الحل: نشغّل…
surface = [
{"asset": "shop.example.com", "port": 443, "service": "HTTPS"},
{"asset": "dev.example.com", "port": 80, "service": "HTTP"},
{"asset": "10.0.0.5", "port": 3306, "service": "MySQL"},
]
for item in surface:
note = ""
if item["service"] == "HTTP":
note = "no encryption"
if "dev" in item["asset"]:
note += " dev server exposed"
if item["service"] == "MySQL":
note += " database exposed"
print(item["asset"], item["service"], note)المخرجات
shop.example.com HTTPS dev.example.com HTTP no encryption dev server exposed 10.0.0.5 MySQL database exposed
الدرس الجاي: أسهل باب للدخول ساعات مش جهاز خالص… ده بني آدم. الـ Social Engineering. يلا بينا.
03 / دروس المسار (23)
- 01أهلاً بيك — يعني إيه أمن سيبراني؟
- 02الكمبيوتر بيشتغل إزاي من جُوّه؟
- 03نظام التشغيل: المدير اللي بيدير كل حاجة
- 04الملفات والـ Users والصلاحيات
- 05صفر وواحد: Binary و Hex و Encoding
- 06الشبكات والـ IP Address
- 07الـ Ports والـ Protocols
- 08الـ DNS والـ HTTP: إزاي الموقع بيفتح؟
- 09تطبيق الويب: Client و Server و Database
- 10مفاهيم الحماية: CIA Triad
- 11Vulnerability و Threat و Risk
- 12Authentication و Authorization
- 13Least Privilege و Defense in Depth
- 14الـ Hashing: إزاي نحفَظ الباسورد صح
- 15الـ Encryption: Symmetric و Asymmetric و HTTPS
- 16تفكير المهاجم: الثقة والمدخلات
- 17الـ Attack Surface والـ Attack Vectorsانت هنا
- 18الـ Social Engineering والـ Phishing
- 19أنواع المهاجمين، والأخلاق، والقانون
- 20أنواع الاختبار والـ Scope والـ Rules of Engagement
- 21مراحل اختبار الاختراق
- 22جهّز الـ Lab بتاعك
- 23مراجعة نهائية: سيناريو كامل، وإنت رايح فين