الفحص بـ OpenVAS

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

01 / ملخص الدرس

الفحص بـ OpenVAS

OpenVAS أو Greenbone: فاحص ثغرات شامل للشبكة كلها، إزاي تعمل Target و Task وتختار Scan Config، وتقرا التقرير بالـ CVSS و QoD، وتعدّ الـ findings لكل جهاز بـ Python.

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

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

كل الأدوات اللي فاتت كانت مركّزة: Nmap NSE على ports معيّنة، و Nuclei و Nikto على الـ web. بس ساعات العميل عايز فحص شامل للشبكة كلها، بتقرير جاهز. وهنا ييجي OpenVAS.

OpenVAS فاحص ثغرات open source، والنسخة الكاملة اسمها Greenbone. فيه عشرات الآلاف من الاختبارات، اسمها NVTs. بيفحص الشبكة كلها: كل الأجهزة وكل الخدمات. وليه واجهة web بتشتغل منها. وهو البديل المجاني لأدوات تجارية زي Nessus.

الشغل فيه بيمشي كده: تعمل Target: الـ IPs أو الـ range اللي هتفحصها. تعمل Task: تربط الـ Target بـ Scan Config. الـ Scan Config الافتراضي اسمه Full and fast. تشغّل الـ Task، وتستنى، الفحص ممكن ياخد ساعات.

في التقرير، كل finding ليه رقمين مهمين. الـ CVSS: خطورة الثَغْرة، زي ما اتعلمنا. والـ QoD، يعني Quality of Detection: OpenVAS متأكد قد إيه، كنسبة مئوية. الـ QoD الواطي، زي سبعين في المِيّة أو أقل، معناه خمّن من الإصدار، فراجعه بإيدك. هنا تقرير OpenVAS متصدّر CSV، ومختصر في list. كل سطر فيه الجهاز والـ port واسم الثَغْرة والـ CVSS، وبنطبعهم زي ما هُمّا. نشغّل… خمس findings على جهازين.

main.py
# Saved, shortened OpenVAS report (exported as CSV): host, port, name, CVSS
rows = [
    ("10.10.10.5", "80/tcp", "Apache HTTP Server 2.4.49 Path Traversal", 7.5),
    ("10.10.10.5", "445/tcp", "Samba 3.0.20 Command Injection", 10.0),
    ("10.10.10.5", "22/tcp", "SSH Weak Encryption Algorithms", 4.3),
    ("10.10.10.7", "21/tcp", "vsftpd 2.3.4 Backdoor", 9.8),
    ("10.10.10.7", "80/tcp", "Missing X-Frame-Options Header", 2.6),
]

for host, port, name, cvss in rows:
    print(f"{cvss:4}  {host:11} {port:8} {name}")

المخرجات

7.5  10.10.10.5  80/tcp   Apache HTTP Server 2.4.49 Path Traversal
10.0  10.10.10.5  445/tcp  Samba 3.0.20 Command Injection
 4.3  10.10.10.5  22/tcp   SSH Weak Encryption Algorithms
 9.8  10.10.10.7  21/tcp   vsftpd 2.3.4 Backdoor
 2.6  10.10.10.7  80/tcp   Missing X-Frame-Options Header

دورك: عايزين نعرف كل جهاز عليه كام ثَغْرة. اعمل dict فاضي، ولفّ على الـ rows، وزوّد العدّاد بتاع كل host بواحد، واطبع الـ dict في الآخر.

تمرين

per_host = {} وبعدين جُوّه الـ loop: per_host = per_host.get(host, 0) + 1

الحل: نشغّل… الجهاز الأول عليه تلاتة، والتاني عليه اتنين.

main.py
# Saved, shortened OpenVAS report (exported as CSV): host, port, name, CVSS
rows = [
    ("10.10.10.5", "80/tcp", "Apache HTTP Server 2.4.49 Path Traversal", 7.5),
    ("10.10.10.5", "445/tcp", "Samba 3.0.20 Command Injection", 10.0),
    ("10.10.10.5", "22/tcp", "SSH Weak Encryption Algorithms", 4.3),
    ("10.10.10.7", "21/tcp", "vsftpd 2.3.4 Backdoor", 9.8),
    ("10.10.10.7", "80/tcp", "Missing X-Frame-Options Header", 2.6),
]

for host, port, name, cvss in rows:
    print(f"{cvss:4}  {host:11} {port:8} {name}")

per_host = {}
for host, port, name, cvss in rows:
    per_host[host] = per_host.get(host, 0) + 1
print(per_host)

المخرجات

7.5  10.10.10.5  80/tcp   Apache HTTP Server 2.4.49 Path Traversal
10.0  10.10.10.5  445/tcp  Samba 3.0.20 Command Injection
 4.3  10.10.10.5  22/tcp   SSH Weak Encryption Algorithms
 9.8  10.10.10.7  21/tcp   vsftpd 2.3.4 Backdoor
 2.6  10.10.10.7  80/tcp   Missing X-Frame-Options Header
{'10.10.10.5': 3, '10.10.10.7': 2}

لحد دلوقتي كل الأدوات بتفحص الهدف من بره. بس في طريقة بتوريك أكتر بكتير: الفحص بصلاحيات، يعني من جُوّه الجهاز. وده موضوع الدرس الجاي. يلا بينا.

03 / دروس المسار (16)
  1. 01يعني إيه ثغرة؟ ومن الـ Recon للـ Vulnerabilities
  2. 02CVE و CWE: أسماء الثغرات
  3. 03الخطورة: CVSS و EPSS و KEV
  4. 04البحث في NVD
  5. 05Exploit-DB و searchsploit
  6. 06GitHub و Metasploit
  7. 07الفحص بـ Nmap NSE
  8. 08الفحص بـ Nuclei
  9. 09الفحص بـ Nikto
  10. 10الفحص بـ OpenVASانت هنا
  11. 11فحص بصلاحيات ومن غيرها
  12. 12تجميع وتنظيم النتايج
  13. 13False Positives والتأكد اليدوي
  14. 14ترتيب الأولويات
  15. 15أتمتة الفحص بـ Python
  16. 16مراجعة شاملة