ITCS 310 · Network Security · Week 14
Port Scanning & Nmap
مسح المنافذ وأداة Nmap
Port Scanning Nmap TCP Handshake Scan Phases
Dr. Lubna Fayez Eliyan
College of Information Technology
Detailed Teaching Guide · دليل تدريس مفصّل
ما هو مسح المنافذ؟ (Motivation & Warning) What is Port Scanning? §1
يُستخدم مسح المنافذ للعثور على جميع الأجهزة المضيفة (Hosts) على الشبكة، وتحديد الخدمات التي تعمل على هذه الأجهزة، بالإضافة إلى معرفة أنواع الجدران النارية المستخدمة.
Port scanning is used to find all hosts on a network, determine the services running on those hosts, and figure out what type of firewalls are in place.
⚠ تحذير هام: لا يُستخدم مسح المنافذ للمحاولة دون إذن! لا تقم بمسح أجهزة على الإنترنت (فقد يبلغ عنك مديرو الأنظمة مزود الخدمة الخاص بك)، ولا تقم بمسح أجهزة جامعة LU (قد يكون جريمة يُعاقب عليها).
⚠ Warning: Not for trying without permission! Do not use this to scan machines on the internet or at LU (punishable offense).
من يستخدم مسح المنافذ؟ Useful For... §2
Security Audit
مراجعة الأمان
للعثور على الخدمات غير الآمنة التي تعمل على شبكتك والتأكد من قواعد الجدار الناري.
Find unsecured services running on your network & verify firewall rules.
Attackers
المهاجمون
للعثور على أجهزة لاختراقها واستغلالها، واكتشاف ثغرات الجدار الناري.
Find machines to exploit and flaws in firewall rules.
Researchers
الباحثون
لاستكشاف الإنترنت وجمع الإحصائيات والمعلومات.
Probe the internet to get statistics and information.
أداة Nmap (Network Mapper) وحالات المنافذ Nmap & States of a Port §3
Nmap: أداة سريعة لمسح المنافذ. ترسل حزم اختبار للأجهزة المضيفة وتراقب الردود. يمكنها العثور على: الحواسيب، المنافذ المفتوحة، إصدارات الخدمات، ونوع نظام التشغيل.
Nmap: A fast port scanner. Sends test packets to hosts and watches replies. Can find: computers, open ports, service versions, and running OS.
حالة المنفذ Port Stateالمعنى Meaning
Open (مفتوح)الخدمة عند هذا المنفذ تتلقى البيانات بنجاح.Service at that port is receiving data.
Closed (مغلق)لا توجد أي خدمة تعمل عند هذا المنفذ.There is no service at that port.
Filtered (مُفلتر)لا يمكن معرفة ما إذا كان هناك شيء على هذا المنفذ (غالباً محمي بجدار ناري).Can't tell if there is anything at that port (probably firewalled).
مراجعة سريعة لبروتوكول TCP Revisit - TCP & TCP Header §4
بروتوكول TCP هو بروتوكول في طبقة النقل (Transport layer) يضمن توصيلاً موثوقاً ومرتباً للبيانات (إذا أرسل المُرسل 5 حزم، يستلمها المستقبل بنفس الترتيب). يُستخدم لمعظم التطبيقات مثل HTTP وSSH.
TCP is a transport layer protocol providing reliable, ordered delivery of data (if sender sends 5 packets, receiver gets them in same order). Used for most applications (HTTP, SSH, etc.).
TCP Flags (6 bits)
أعلام TCP (التي تهمنا)
SYN: Synchronize (تزامن)
ACK: Acknowledgement (تأكيد)
RST: Reset (إعادة تعيين)
FIN: Finish (إنهاء)
PSH: Push (دفع)
URG: Urgent (عاجل)
We care about 6 flags: SYN, ACK, RST, FIN, PSH, URG. They signify what kind of TCP packet it is.
لمسح المنافذ، يجب فهم المصافحة الثلاثية (Three-Way Handshake) Connecting to Ports: The Three-Way Handshake §5
1. Connecting to an OPEN Port
Client (Port 12456)
Message Exchange
Server (Port 80)
Send SYN
1. TCP SYN (SEQ=A, ACK=0) →
← 2. TCP SYN-ACK (SEQ=B, ACK=A+1)
Reply SYN+ACK
Reply ACK
3. TCP ACK (SEQ=A+1, ACK=B+1) →
2. Connecting to a CLOSED Port
Send SYN
1. TCP SYN (SEQ=A) →
← 2. TCP RST (Connection Rejected)
Reply RST
3. Connecting to a FILTERED Port
Send SYN
1. TCP SYN (SEQ=A) →
Firewall Drops Packet
بعد الاتصال (After Connection): يتم تبادل حزم البيانات مع تحديث أرقام SEQ و ACK باستمرار. يتم تعيين علم ACK على معظم هذه الحزم. تُنهي حزمة FIN الاتصال.
After Connecting: Both sides exchange packets with data. SEQ & ACK numbers update. ACK flag is set on most packets. FIN packet terminates connection.
أنواع المسح عبر TCP في Nmap Nmap TCP Scans Overview §6
يوفر Nmap أنواعاً مختلفة من عمليات المسح عبر بروتوكول TCP. يمكنك أيضاً تحديد الأعلام (Flags) التي تريد تعيينها في الحزمة يدوياً. سنتعرف على 6 أنواع.
Nmap provides different types of TCP scans. You can also manually specify which flags you want set. We will discuss 6 types of TCP scans.
1. المسح بالاتصال الكامل (TCP Connect Scan) 1. TCP Connect Scan (-sT) §7
يستخدم أمر nmap -sT <IP> وظيفة نظام التشغيل connect() لإجراء مصافحة ثلاثية كاملة (Full handshake). ملاحظة: إذا كانت هناك خدمة على المنفذ، فهذا المسح سيُسجل اتصالاً (يسجل في اللوغات).
Uses nmap -sT <IP> and the OS connect() function to do a full, three-way handshake. Note: If there is a service on the port, it registers a connection.
نتيجة وظيفة connect() connect() Resultحالة المنفذ Port Status
نجح الاتصال (Succeeds)Connection succeedsOpen (مفتوح)
فشل الاتصال (Fails)Connection failsClosed (مغلق)
انتهت المهلة (Times out)Connection times outFiltered (مُفلتر)
2. مسح التزامن (TCP SYN Scan) 2. TCP SYN Scan (-sS) §8
باستخدام أمر nmap -sS <IP>، يرسل حزمة SYN واحدة للمنفذ. إذا تلقى رداً، يرسل حزمة RST لإنهاء الاتصال فوراً. هذا المسح أسرع، وبما أن المصافحة الثلاثية لم تكتمل، فإنه لا يُسجل اتصالاً على الهدف.
Using nmap -sS <IP>, sends a single SYN packet. If it gets a reply, it sends an RST to terminate connection. Faster, and because the 3-way handshake is never completed, it doesn't register a connection.
الرد المستلم Received Replyحالة المنفذ Port Status
رد SYN-ACKSYN-ACK replyOpen (مفتوح)
رد RSTRST replyClosed (مغلق)
لا يوجد ردNo replyFiltered (مُفلتر)
3. المسح الصامت: NULL, FIN, Xmas Scan 3. TCP NULL, FIN, and Xmas Scan (-sN, -sF, -sX) §9
يعتمد على معيار TCP الذي ينص على أن المنفذ المغلق يجب أن يرد بحزمة RST إذا استلم أي حزمة غير RST. هذه العمليات توفر "معلومات محدودة" (Limited Information).
Relies on TCP standard stating a closed port should respond with RST if any packet other than RST is received. These scans provide "Limited Information".
NULL Scan (-sN)
لا يتم تعيين أي أعلام في الحزمة (No flags set).
FIN Scan (-sF)
يتم تعيين علم الإلغاء فقط (FIN flag is set).
Xmas Scan (-sX)
يتم تعيين 3 أعلام: FIN, PSH, URG.
الرد المستلم Received Replyحالة المنفذ Port Status
رد RSTRST replyClosed (مغلق)
لا يوجد ردNo replyOpen or Filtered (مفتوح أو مُفلتر)
4. مسح التأكيد (TCP ACK Scan) 4. TCP ACK Scan (-sA) §10
باستخدام أمر nmap -sA <IP>، يتم إرسال حزمة ACK لتحديد ما إذا كان المنفذ مُفلتراً أم لا. لا يتم إكمال المصافحة.
Using nmap -sA <IP>, sends an ACK packet. This only determines filtered vs. unfiltered status.
الرد المستلم Received Replyحالة المنفذ Port Status
رد RSTRST replyOpen or Closed (مفتوح أو مغلق) Because it expects this packet from someone with an open connection.
لا يوجد ردNo replyFiltered (مُفلتر)
لماذا نستخدم مسوحات NULL, FIN, Xmas, ACK؟ Why NULL, FIN, Xmas, and ACK Scans? §11
الهدف: الالتفاف على جدار ناري سيء التكوين (Get around a poorly configured firewall).
مثال: ربما يقوم الجدار بحظر حزم SYN (للاتصالات الجديدة) ولكنه يسمح بحزم ACK (لأنها يُفترض أن تكون تابعة لاتصالات حالية). لن تستخدمها كثيراً ولكن من الجيد معرفتها.
Goal: Get around a poorly configured firewall. Example: It blocks SYN packets (new connections) but allows ACK packets (related to existing connections). Good to know about, even if rarely used.
المراحل الخمس للمسح في Nmap Five Phases of a Scan §12
Stage 1
اكتشاف المضيف
Host Discovery (Ping)
Stage 2
مسح المنافذ
Port Scanning
Stage 3
كشف الإصدار
Version Detection
Stage 4
نظام التشغيل
OS Detection
Stage 5
المُخرجات
Output Format
المرحلة 1: اكتشاف المضيف (Host Discovery) Stage 1: Host Discovery §13
تُستخدم للعثور على الأجهزة النشطة. ترسل حزم (ICMP أو TCP أو UDP) للمضيف، وأي رد يشير إلى أن المضيف نشط (Up).
Used to find active hosts to scan. Sends ICMP, TCP, or UDP packets. Any reply indicates the host is up.
ICMP Packets
عبر ICMP
-PE طلب صدى (مثل ping العادي)
-PP طلب طابع زمني
-PM طلب قناع العنوان
-PE (Echo req), -PP (Timestamp req), -PM (Address mask query).
UDP Packets
عبر UDP
-PU<ports> يرسل حزمة UDP للمنافذ المحددة ليرى الرد.
-PU (Send a UDP packet to specified ports).
الإعدادات الافتراضية (Defaults): افتراضياً، يقوم Nmap بـ: ICMP echo, ICMP timestamp, حزمة SYN لمنفذ 443, وحزمة ACK لمنفذ 80.
By default, Nmap does: ICMP echo, ICMP timestamp, SYN packet to 443, ACK packet to 80.
Example
nmap -PE -PS 80,443 -PU 5670 192.168.122.1-255
يشرح المثال: يرسل حزمة ICMP، ثم SYN للمنافذ 80 و 443، ثم UDP للمنفذ 5670، لكل مضيف في هذا النطاق.
Sends ICMP echo, SYN to 80 and 443, and UDP to 5670 for each host in the range.
المرحلة 2: مسح المنافذ (Port Scanning) Stage 2: Port Scanning §14
كما تمت مناقشته (TCP بأنواعه و UDP). تحدد المنافذ بالخيار -p <ports>. إذا لم تحدد، سيقوم Nmap بمسح أكثر 1000 منفذ شيوعاً.
TCP (SYN, ACK, NULL, etc.) and UDP. Specify ports with -p <ports>. If not, Nmap scans the 1000 most common ports.
Example
nmap -sS -p 22-25,80,443 192.168.122.5
المرحلة 3: اكتشاف الإصدار (Version Detection) Stage 3: Version Detection §15
يتصل بالمنافذ المفتوحة ويحاول تحديد إصدار الخدمات التي تعمل عليها. يُطلب خصيصاً بالخيار -sV، وإلا سيتخطاه Nmap.
Connects to open ports and tries to determine the version of services. Command: -sV. Must specifically ask for it, otherwise Nmap skips it.
Example
nmap -sS -sV 192.168.122.5
المرحلة 4: اكتشاف نظام التشغيل (OS Detection) Stage 4: OS Detection §16
يرسل حزم شبكة غريبة ويحلل الرد لتخمين نظام التشغيل. يعمل بأفضل صورة إذا كان هناك منفذ واحد مفتوح وآخر مغلق على الأقل. الأمر: -O.
Sends strange packets, analyzes response, guesses OS. Works best with at least 1 open and 1 closed port. Command line option: -O.
كيف يعمل؟ رغم أن بروتوكولات الشبكة موحدة، إلا أن هناك تطبيقات مختلفة لها (مثلاً تطبيق TCP في Windows مختلف عن Linux). هذه الاختلافات في الردود تميز النظام. أمثلة: بعض الأنظمة ترفق رسالة خطأ مع حزم RST والبعض لا. تحليل أرقام SEQ العشوائية. إرسال حزم غير صالحة ورؤية الرد.
How? Multiple implementations of standardized protocols exist (Windows vs Linux TCP). Slight differences in responses distinguish them. Examples: RST packets might have error messages on some OSs. Analyzing random SEQ numbers, sending strange ICMP/invalid packets.
Example
nmap -sS -O 192.168.122.5
المرحلة 5: المخرجات (Output Options) Stage 5: Output §17
يمكنك التحكم في تنسيق المخرجات التي يعرضها Nmap.
You can control the format Nmap prints its output in.
Default (-oN)
الافتراضي
مخرج قابل للقراءة البشرية (ما تراه عادة).
Human readable.
XML (-oX)
صيغة XML
جيد لاستيراد البيانات في برامج أخرى.
Good for importing into other programs.
Example
nmap -sS -oG outfile.txt 192.168.122.5
عمليات مسح مفيدة (للتجربة على scanme.nmap.org) Useful Scans to try on scanme.nmap.org §18
الموقع scanme.nmap.org مصرح بمسحه للتجربة.
You are allowed to scan scanme.nmap.org for testing.
Host Discovery & Ping
nmap -PE -PS80,443 scanme.nmap.org # -PE: Send ICMP Echo request # -PS80,443: TCP SYN Ping (to ports 80 and 443)
TCP Connect Scan
nmap -sT scanme.nmap.org # TCP Connect scan (full handshake)
Targeted Port Scanning
nmap -sS -p 22,80,443 scanme.nmap.org # SYN Scan on specific ports only
Service Version Detection
nmap -sS -sV scanme.nmap.org # SYN Scan + Service Version Detection
ملخص المحاضرة — النقاط الرئيسية للمراجعة Chapter Summary – Key Takeaways for Review §19
  • Port Scanning: يُستخدم لاستكشاف المضيفين والمنافذ المفتوحة ونظام التشغيل. لا تقم بالمسح دون إذن. Used to find hosts, open ports, OS. Do not scan without permission.
  • TCP Ports: 3 حالات أساسية: Open, Closed, Filtered. 3 main states: Open, Closed, Filtered.
  • TCP Flags: SYN للبدء، ACK للتأكيد، RST للرفض أو الإنهاء، FIN للإنهاء الآمن. SYN (Start), ACK (Acknowledge), RST (Reset), FIN (Finish).
  • Nmap Connect (-sT): ينفذ Handshake كامل، يسجل اتصالاً. Full Handshake, registers connection.
  • Nmap SYN (-sS): يرسل SYN، يستقبل الرد، ثم يرسل RST. أسرع ولا يسجل اتصالاً. Sends SYN, then RST. Faster, stealthier.
  • Stealth Scans (-sN, -sF, -sX): للتهرب من الجدران النارية التي تعتمد قواعد سيئة التكوين. Bypass poorly configured firewalls.
  • Phases of Scan: Discovery, Port Scan, Version Detect (-sV), OS Detect (-O), Output. 5 stages of an Nmap scan.
أمثلة على المخرجات الفعلية لأداة Nmap Real Sample Outputs §20
Service Version Scanning (-sV)
C:\Windows\System32>nmap -sS -sV scanme.nmap.org Starting Nmap 7.99 (https://nmap.org) Nmap scan report for scanme.nmap.org (45.33.32.156) Host is up (0.26s latency). Not shown: 988 closed tcp ports (reset) PORT STATE SERVICE VERSION 22/tcp open tcpwrapped 80/tcp open http Apache httpd 2.4.7 ((Ubuntu)) 135/tcp filtered msrpc 139/tcp filtered netbios-ssn 593/tcp filtered http-rpc-epmap 3389/tcp filtered ms-wbt-server 9929/tcp open nping-echo Nping echo 31337/tcp open tcpwrapped Service detection performed. Please report any incorrect results... Nmap done: 1 IP address (1 host up) scanned in 19.38 seconds
OS Detection Scanning (-O)
C:\Windows\System32>nmap -O scanme.nmap.org Starting Nmap 7.99 (https://nmap.org) PORT STATE SERVICE 22/tcp open ssh 80/tcp open http 135/tcp filtered msrpc... Device type: router|general purpose|WAP|storage-misc|load balancer Running (JUST GUESSING): Synology embedded (90%), Linux 2.6.X (88%), Ubiquiti (88%) OS CPE: cpe:/h:synology:rt1900ac cpe:/o:linux:linux_kernel:2.6.32 Aggressive OS guesses: Synology RT1900ac router (90%), Linux 2.6.32 (88%) No exact OS matches for host (test conditions non-ideal). OS detection performed. Nmap done: 1 IP address (1 host up) scanned in 13.26 seconds