أنواع الاختبار والـ Scope والـ Rules of Engagement
Black و White و Gray Box، و External و Internal، والـ Scope، والـ Rules of Engagement، وتعمل إيه لو لقيت حاجة برا الـ Scope.
نص شرح المعلم والكود الذي كتبه ونتيجة تشغيله، بنفس ترتيب الدرس.
أهلاً بيك. دلوقتي بقيت فاهم الأساس، وبتفكر زي المهاجم. من النهاردة هنتعلم إزاي نشتغل كـ Penetration Tester محترف… وأول حاجة: قبل ما نلمس أي حاجة، لازم نعرف إحنا هنختبر إيه، وإزاي.
أنواع الاختبار حسب المعلومات اللي معاك: Black Box، مش عارف أي حاجة، زي مهاجم حقيقي من برا. White Box، معاك كل حاجة، حتى الـ source code. Gray Box، معاك جزء، زي حساب user عادي. و Gray Box هو الأشهر في الشغل الحقيقي.
وأنواع حسب المكان: External، من الإنترنت، على الحاجات المكشوفة. Internal، من جُوّه الشبكة، كأن المهاجم دخل خلاص أو موَزَّف. Web Application، على موقع أو API معيّن. وفيه كمان Wireless و Social Engineering.
وأهم ورقة في المشروع كله اسمها Scope. ده الاتفاق المكتوب اللي بيحدد إيه المسموح تختبره بالزبط. الـ domains، والـ IP ranges، وإيه الممنوع خالص.
ومعاه ورقة تانية اسمها Rules of Engagement. مواعيد الاختبار، مَسَلاً بعد الساعة عشرة بالليل. ممنوع إيه، زي DoS أو مسح بيانات. تكلّم مين لو حصلت مشكلة. وتعمل إيه لو لقيت ثَغْرة خطيرة قوي. طب لو لقيت جهاز مهم برا الـ Scope؟ ما تلمسوش. اكتب الملاحزة، وبلّغ العميل، وهو اللي يقرر. حتى لو شكله سهل… الإزن هو اللي بيحميك. الـ Scope ساعات بيبقى IP range. يعني slash twenty four مَسَلاً، معناها مِيّتين خمسة وخمسين عنوان تقريباً. نعمل function تتأكد إن الـ target جُوّه الـ range، ومش في الممنوع. نشغّل… الأول مسموح، التاني ممنوع، والتالت برا الـ range خالص.
import ipaddress
scope = ipaddress.ip_network("10.10.10.0/24")
excluded = [ipaddress.ip_address("10.10.10.1")]
def in_scope(ip):
ip = ipaddress.ip_address(ip)
return ip in scope and ip not in excluded
for t in ["10.10.10.5", "10.10.10.1", "10.10.20.7"]:
print(t, in_scope(t))المخرجات
10.10.10.5 True 10.10.10.1 False 10.10.20.7 False
دورك: العميل قال كمان العنوان ten dot ten dot ten dot two hundred ممنوع. ضيفه للـ excluded، وجرّبه.
ضيف ipaddress.ip_address("10.10.10.200") للـ excluded، وجرّب "10.10.10.200".
الحل: نشغّل…
import ipaddress
scope = ipaddress.ip_network("10.10.10.0/24")
excluded = [
ipaddress.ip_address("10.10.10.1"),
ipaddress.ip_address("10.10.10.200"),
]
def in_scope(ip):
ip = ipaddress.ip_address(ip)
return ip in scope and ip not in excluded
for t in ["10.10.10.5", "10.10.10.1", "10.10.20.7", "10.10.10.200"]:
print(t, in_scope(t))المخرجات
10.10.10.5 True 10.10.10.1 False 10.10.20.7 False 10.10.10.200 False
الدرس الجاي: الاختبار نفسه بيمشي إزاي من أوله لآخره؟ مراحل اختبار الاختراق. يلا بينا.
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مراجعة نهائية: سيناريو كامل، وإنت رايح فين