سلبي ولا نشط؟ والنطاق القانوني
الفرق بين الجمع السلبي والجمع النشط، وليه لازم يبقى معاك إذن مكتوب ونطاق واضح، وإزاي تعمل Scope Checker بـ Python.
نص شرح المعلم والكود الذي كتبه ونتيجة تشغيله، بنفس ترتيب الدرس.
في جمع المعلومات فيه نوعين أساسيين: سلبي ونشط. والفرق بينهم بسيط جداً، بس مهم جداً.
الجمع السلبي، أو Passive Recon: إنك تجمع معلومات من غير ما تلمس الهدف نفسه. بتدوّر في مصادر عامة، زي WHOIS و DNS ومحركات البحث. الهدف مش بيشوفك خالص. ومفيش أي traffic بيروح من عندك لأجهزته.
الجمع النشط، أو Active Recon: إنك تبعت traffic للهدف مباشرةً. زي إنك تعمل ping، أو Port Scan بـ Nmap. ده بيبان في الـ logs بتاعة الهدف. وممكن يِعَطّل خدمة لو اتعمل غلط.
ودي أهم حاجة في الكورس كله: الجمع النشط من غير إذن جريمة. لازم يبقى معاك إذن مكتوب من صاحب الأنظمة. ونطاق واضح، أو Scope: إيه الـ IPs والـ domains المسموح بيها. وإيه الممنوع، حتى لو جُوّه نفس الشبكة. وإتدرّب على أجهزتك أو على منصات زي Hack The Box و TryHackMe. قبل أي Scan، اسأل نفسك: الـ IP ده جُوّه النطاق؟ نعمل function بسيطة اسمها in scope. بتستخدم مكتبة ipaddress، وبتشوف الـ IP جُوّه أنهي network، وكمان بتستبعد الـ IPs الممنوعة. نشغّل… أول IP جُوّه النطاق. التاني OUT، علشان العميل استبعده، غالباً ده الـ router. التالت جُوّه، والرابع برّه خالص.
import ipaddress
scope = [
ipaddress.ip_network("10.10.10.0/24"),
ipaddress.ip_network("203.0.113.0/28"),
]
excluded = [ipaddress.ip_address("10.10.10.1")]
def in_scope(ip):
ip = ipaddress.ip_address(ip)
if ip in excluded:
return False
return any(ip in net for net in scope)
for ip in ["10.10.10.5", "10.10.10.1", "203.0.113.20", "192.168.5.20"]:
print(f"{ip:15}", "IN" if in_scope(ip) else "OUT")المخرجات
10.10.10.5 IN 10.10.10.1 OUT 203.0.113.20 OUT 192.168.5.20 OUT
دورك: العميل بعتلك إيميل وضاف network جديدة: one ninety two dot one sixty eight dot five dot zero slash twenty four. ضيفها للـ scope، واتأكد إن آخر IP بقى IN.
ضيف ipaddress.ip_network("192.168.5.0/24") للـ scope.
الحل: نشغّل…
import ipaddress
scope = [
ipaddress.ip_network("10.10.10.0/24"),
ipaddress.ip_network("203.0.113.0/28"),
ipaddress.ip_network("192.168.5.0/24"),
]
excluded = [ipaddress.ip_address("10.10.10.1")]
def in_scope(ip):
ip = ipaddress.ip_address(ip)
if ip in excluded:
return False
return any(ip in net for net in scope)
for ip in ["10.10.10.5", "10.10.10.1", "203.0.113.20", "192.168.5.20"]:
print(f"{ip:15}", "IN" if in_scope(ip) else "OUT")المخرجات
10.10.10.5 IN 10.10.10.1 OUT 203.0.113.20 OUT 192.168.5.20 IN
الدرس الجاي: أول أداة في الجمع السلبي: WHOIS. يلا بينا.
03 / دروس المسار (22)
- 01يعني إيه جمع معلومات (Recon)؟
- 02سلبي ولا نشط؟ والنطاق القانونيانت هنا
- 03WHOIS: مين صاحب الـ Domain؟
- 04سجلات DNS: كنز المعلومات
- 05اكتشاف الـ Subdomains
- 06Certificate Transparency: الشهادات بتتكلم
- 07Google Dorking
- 08OSINT: الموظفين والإيميلات
- 09الـ Metadata: أسرار جُوّه الملفات
- 10اكتشاف الأجهزة الشغّالة (Host Discovery)
- 11الـ Port Scanning بيشتغل إزاي؟
- 12Nmap: البداية
- 13أنواع الـ Scan والسرعة في Nmap
- 14كشف الخدمات والإصدارات ونظام التشغيل
- 15NSE Scripts وحفظ النتايج
- 16تعداد الويب: الـ Headers والتكنولوجيا
- 17الـ Directory Brute Force
- 18تعداد SMB
- 19تعداد خدمات تانية: FTP و DNS و SNMP وغيرهم
- 20تنظيم نتايج الـ Recon
- 21أتمتة الـ Recon بـ Python
- 22مراجعة شاملة وخطة Recon