Nmap: البداية

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

01 / ملخص الدرس

Nmap: البداية

إزاي تحدد الأهداف والـ ports في Nmap (‎-p و ‎-p- و ‎--top-ports)، وتقرا الـ output سطر سطر، وتحلّله بـ Python.

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

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

Nmap هو أشهر أداة Scanning في العالم، ومجانية، وهتستخدمها في كل Pentest وفي كل جهاز في OSCP. في الدرس ده هنتعلم الأساسيات.

الأول: تحدد الهدف. IP واحد. أو range زي slash twenty four. أو أكتر من IP بـ dash، زي one dash fifty. أو ملف فيه قايمة أهداف بـ dash i L.

تاني حاجة: الـ ports. من غير أي option، Nmap بيعمل Scan على أشهر ألف port بس. dash p وبعدها ports معيّنة. dash p dash، يعني كل الـ ports من واحد لخمسة وستين ألف. و top ports، لأشهر عدد إنت تحدده.

ونصيحة مهمة لـ OSCP: دايماً اعمل dash p dash على كل الـ ports. خدمات كتير مهمة بتبقى على ports غريبة، زي eight thousand أو forty nine thousand، وأشهر ألف port مش هيلاقوها. ده output حقيقي الشكل لـ Nmap. أي سطر فيه slash tcp، نقسمه لتلات أجزاء: الـ port، والحالة، والخدمة. ونحوّل رقم الـ port لـ int. نشغّل… كل port بحالته وخدمته. ولاحظ سطر Not shown: Nmap بيخبّي الـ closed علشان الـ output ما يبقاش طويل.

main.py
output = """Starting Nmap 7.94 ( https://nmap.org )
Nmap scan report for 10.10.10.5
Host is up (0.031s latency).
Not shown: 995 closed tcp ports (reset)
PORT     STATE    SERVICE
22/tcp   open     ssh
80/tcp   open     http
139/tcp  open     netbios-ssn
445/tcp  filtered microsoft-ds
3306/tcp open     mysql
Nmap done: 1 IP address (1 host up) scanned in 2.41 seconds
"""

ports = []
for line in output.splitlines():
    if "/tcp" in line:
        port_proto, state, service = line.split()
        ports.append((int(port_proto.split("/")[0]), state, service))

for port, state, service in ports:
    print(port, state, service)

المخرجات

22 open ssh
80 open http
139 open netbios-ssn
445 filtered microsoft-ds
3306 open mysql

دورك: اطبع الـ ports المفتوحة بس، رقم الـ port واسم الخدمة.

تمرين

جُوّه الـ loop: if state == "open": print(port, service)

الحل: نشغّل… أربع ports مفتوحة، والـ filtered اختفى.

main.py
output = """Starting Nmap 7.94 ( https://nmap.org )
Nmap scan report for 10.10.10.5
Host is up (0.031s latency).
Not shown: 995 closed tcp ports (reset)
PORT     STATE    SERVICE
22/tcp   open     ssh
80/tcp   open     http
139/tcp  open     netbios-ssn
445/tcp  filtered microsoft-ds
3306/tcp open     mysql
Nmap done: 1 IP address (1 host up) scanned in 2.41 seconds
"""

ports = []
for line in output.splitlines():
    if "/tcp" in line:
        port_proto, state, service = line.split()
        ports.append((int(port_proto.split("/")[0]), state, service))

for port, state, service in ports:
    if state == "open":
        print(port, service)

المخرجات

22 ssh
80 http
139 netbios-ssn
3306 mysql

الدرس الجاي: أنواع الـ Scan في Nmap، والسرعة، وإزاي تختار بينهم. يلا بينا.

03 / دروس المسار (22)
  1. 01يعني إيه جمع معلومات (Recon)؟
  2. 02سلبي ولا نشط؟ والنطاق القانوني
  3. 03WHOIS: مين صاحب الـ Domain؟
  4. 04سجلات DNS: كنز المعلومات
  5. 05اكتشاف الـ Subdomains
  6. 06Certificate Transparency: الشهادات بتتكلم
  7. 07Google Dorking
  8. 08OSINT: الموظفين والإيميلات
  9. 09الـ Metadata: أسرار جُوّه الملفات
  10. 10اكتشاف الأجهزة الشغّالة (Host Discovery)
  11. 11الـ Port Scanning بيشتغل إزاي؟
  12. 12Nmap: البدايةانت هنا
  13. 13أنواع الـ Scan والسرعة في Nmap
  14. 14كشف الخدمات والإصدارات ونظام التشغيل
  15. 15NSE Scripts وحفظ النتايج
  16. 16تعداد الويب: الـ Headers والتكنولوجيا
  17. 17الـ Directory Brute Force
  18. 18تعداد SMB
  19. 19تعداد خدمات تانية: FTP و DNS و SNMP وغيرهم
  20. 20تنظيم نتايج الـ Recon
  21. 21أتمتة الـ Recon بـ Python
  22. 22مراجعة شاملة وخطة Recon