






السمعة:
- إنضم17 يونيو 2023
- المشاركات 515
- الحلول 10
- مستوى التفاعل 1,106
- النقاط 93

Nmap
بهاد الدرس بدنا نشوف أي المنافذ مفتوحة وأي المنافذ مغلقة راح نركز على عملية فحص المنافذ وأنواع الفحوصات المختلفة المستخدمة في الـ nmap.وراح نحكي عن تقنيات متطورة زي الـ null FIN Xmas و idle (zombie) scans وكمان الـ spoofing بالإضافة إلى التعامل مع الـ FW و كيفية تفادي الحواجز النارية وأنظمة الـ IDS
شرح للأمور التالية :
1. منافذ TCP و UDP
2. الـ TCP Flags
3. فحص المنافذ ببروتوكول TCP Connect
4. فحص المنافذ ببروتوكول TCP SYN
5. فحص المنافذ ببروتوكول UDP
6. تحديد نطاق المسح
7. فحص Tcp ( Null / FIN / Xmas / Maimon / ACK / Window / Custom Scan )
8. التزوير والتضليل Spoofing and Decoys
9. تجزئة الحزم Fragmented Packets
10. فحص Idle / Zombie
11. تفاصيل إضافية وتفسير النتائج بدقة
منافذ TCP و UDP
في عالم الشبكات لما نحكي عن الـ TCP و UDP Ports بنحكي عن كيفية تحديد الخدمات التي بتعمل على جهاز معين في الشبكة فـ كل جهاز على الإنترنت له عنوان IP وكذلك اله Ports تحدد أي خدمات متوفرة عليه
مثلاً يمكن لجهاز الخادم Server أن يقدم خدمة توقيت الوقت أو الرد على طلبات الـ DNS أو خدمة صفحات الويب كل خدمة بترتبط برقم Port معين
مثلاً خادم HTTP بعتاد الاستماع على Port الـ TCP/80 وإذا كان يدعم SSL/TLS سيكون على Port الـ TCP/443
سبق ووضحت الفرق بيننهم HTTP / HTTPS
[ WalkTh ] - الـ HTTP و HTTPS وأجزاء الـ URL
الـ HTTP هو اختصار لـ HyperText Transfer Protocol يعني إنها القاعدة اللي يتم استخدامها لما نفتح موقع ويب. هاي تم تطويرها من قبل Tim Berners-Lee وفريقه في الفترة من 1989 لحد 1991. راح يكون الحكي عن سبعه مواضيع : 1. الـ HTTP Vs HTTPS 2. الـ URL 3. شرح كيف ترسل طلب على الويب 4. الـ HTTP...

بشكل عام في حالتين للـ Ports :
- مفتوح : يعني أن هناك خدمة تستمع على هذا الـ Port
- مغلق : يعني أنه لا يوجد خدمة تستمع على هذا الـ Port
لذلك Nmap تعتبر ست حالات :
- مفتوح Open : يعني أن هناك خدمة تستمع على الـ Port المحدد
- مغلق Closed : يعني أنه لا يوجد خدمة تستمع على الـ Port المحدد، ولكن الـ Port متاح. بمعنى أنه يمكن الوصول إليه ولكنه قد يكون محجوباً بواسطة جدار الحماية أو برامج الأمان الأخرى
- مرشح Filtered : يعني أن Nmap لا تستطيع تحديد ما إذا كان الـ Port مفتوحاً أو مغلقاً لأن الـ Port غير متاح. يحدث هذا عادةً بسبب جدار الحماية الذي يمنع Nmap من الوصول إلى هذا الـ Port
- غير مرشح Unfiltered : يعني أن Nmap لا تستطيع تحديد ما إذا كان الـ Port مفتوحاً أو مغلقاً على الرغم من أن الـ Port متاح يحدث هذا عند استخدام مسح ACK -sA
- مفتوح|مرشح Open|Filtered : يعني أن Nmap لا تستطيع تحديد ما إذا كان الـ Port مفتوحاً أم مرشحاً
- مغلق|مرشح Closed|Filtered : يعني أن Nmap لا تستطيع تحديد ما إذا كان الـ Port مغلقاً أم مرشحاً
ما الخدمة التي تستخدم منفذ UDP 53 افتراضيًا؟
DNS
ما الخدمة التي تستخدم منفذ TCP 22 افتراضيًا؟
ssh
كم عدد حالات المنفذ التي يأخذها Nmap في الإعتبار؟
6
ما هي حالة الـ port الأكثر إثارة للاهتمام لاكتشافها باعتبارك مختبر اختراق ؟
open
الـ TCP Flags
الـ Flags في رأس البروتوكول TCP هي بتات (bits) تُستخدم للتحكم في عملية الإتصال بين الأجهزة وهي تظهر في الرأس (header) للبيانات المُرسلة عبر الشبكة عندما يُشير إلى تعيين بت العلم يقصد أنه يُمكن تعيين قيمة معينة (1 أو 0) لكل بت من هذه البتات عشان نفهمها نفهم شو هو ال TCP بروتوكول (Transmission Control Protocol TCP ) من بروتوكولات طبقة النقل (Transport Layer) يستخدم لنقل البيانات بأسلوب موثوق (Reliable) يُعتمد عليه في توصيل البيانات لوجهتها و اكتشاف أي أخطاء في عملية الإرسال و إعادة إرسال البيانات المفقودة error-recover و يتيح أيضًا عملية التحكم في إرسال البيانات باستخدام Windowing و Buffering هذا البروتوكول من البروتوكولات التي تعتمد على إنشاء إتصال مع الطرف الآخر قبل إرسال البيانات إليه Connection Oriented protocol
عند دخول البيانات لطبقة النقل (Transport Layer) , يتم تقسيم البيانات إلى وحدات بيانات أصغر ويتم تغليفها و إضافة رأس أو ترويسة Header إلى هذه البيانات تسمى هذه الترويسة Header باسم البروتوكول المستخدم , و تحتوي على معلومات هامة تخص هذا البروتوكول.
فعند استخدام بروتوكول TCP سيتم إضافة ترويسة تسمى ترويسة بروتوكول TCP Header , يعني البيانات اللي بتكون بـبداية الباكت , و تسمى وحدة البيانات في هذه الحالة باسم Segment
عشان نفهم الفرق بين الفحوصات هاي لازم نفهم رأس الـ TCP
رأس الـ TCP هو أول 24 بايت

أول سطر عنا رقم منفذ الـ TCP للمصدر والواجهه من الصورة تم تحديد لرقم المنفذ 2 بايت ( 16 بت ) يعني الرقم نطاقه 0 - 65535
بالصف الثاني رقم تسلسلي وبالصف الثالث رقم الـ acknowledgement
كم صف يحتوي على 4 بايت ( 32 بت ) * 6 صفوف بإجمالي 24 بايت
أول اشي إحنا لازم نركز على الـ Flags اللي برنامج Nmap بقدر يضيفها أو يشيلها
الـ Flags هاي اللي هي باللون الأحمر بالصورة فوق لما نحكي Setting a flag bit يعني بنحط قيمة 1 فيه
عند تحديد قيمة البتات يتم ذلك من الشمال إلى اليمين في رأس الـ TCP حيث يُمكن تعيين قيمة 1 لتفعيل البت وقيمة 0 لتعطيله
هاي البتات تُستخدم للتحكم في تدفق البيانات وإدارة الإتصالات بين الأجهزة في شبكة الإنترنت
الـ Flags في رأس TCP هي :
- الـ URG : هاي بتحكي إن في بيانات urgent جاية ولازم نعاملها فورًا
- الـ ACK : هاي بتحكي إنها استلمت البيانات اللي وصلت
- الـ PSH : هاي بتطلب من TCP يمرر البيانات للتطبيق فورًا
- الـ RST : هاي بتستخدم لإعادة ضبط الإتصال وقد ترسلها جهاز ثاني زي جدار الحماية لقطع الإتصال
- الـ SYN : هاي بتستخدم لبدء الإتصال ومزامنة التسلسل مع الجهاز الثاني
- الـ FIN : هاي بتحكي إن المرسل خلصت بياناته ومافي حاجة ثانية يرسلها
ما هي الأحرف الثلاثة التي تمثل علامة إعادة الضبط؟
RST
ما هي العلامة التي يجب تعيينها عند بدء اتصال TCP (الحزمة الأولى من مصافحة TCP ثلاثية الاتجاهات)؟
SYN
فحص المنافذ ببروتوكول TCP Connect
العميل ببعث باكت TCP بالـ SYN flagالسيرفر برد بـ SYN/ACK لو البورت مفتوح
في النهاية العميل بكمل الـ handshake بالبعث بـ ACK

احنا بهمنا نعرف إذا كان منفذ الـ TCP مفتوح وبمجرد ما يتأكد الإتصال بنقطعه بإرسال RST / ACK بإمكاننا نشغل فحص إتصال الـ TCP عن طريق استخدام أمر sT-

في Wireshark اللي بستقبل باكتات بنشوف Nmap ببعث باكتات TCP بـ SYN flag مفعل لأكتر من بورت زي 256 | 443 | 143
بشكل افتراضي Nmap بتحاول تتصل بأكثر من 1000 بورت شائع
البورت المغلق برد على الباكت بـ RST/ACK عشان يوضح إنه مش مفتوح
النمط هاد بتكرر لكل البورتات المغلقة لما نحاول نبدأ الـ TCP 3-way handshake معاهم


نلاحظ إن البورت 143 مفتوح فرد علينا بـ SYN/ACK و Nmap أكمل الـ 3-way handshake بإرسال ACK الشكل فوق بظهر كل الباكتات المبادلة بين Nmap وبين بورت 143 عند الهدف أول ثلاث باكتات هي إكمال الـ TCP 3-way handshake و الباكت الرابع بنهي الإتصال بباكت RST / ACK
المثال:
كود:
pentester@TryHackMe$ nmap -sT 10.10.98.71
Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-30 09:53 BST
Nmap scan report for 10.10.98.71
Host is up (0.0024s latency).
Not shown: 995 closed ports
PORT STATE SERVICE
MAC Address: 02:45:BF:8A:2D:6B (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 0.40 seconds
بنلاحظ أنه بإمكاننا استخدام F- لتفعيل الوضع السريع وتقليل عدد البورتات المفحوصة من 1000 إلى أكثر 100 بورت شائع
يجب أن نذكر أن الخيار r- يمكن أيضًا إضافته لمسح البورتات بترتيب متتالي بدلاً من ترتيب عشوائي هاد الخيار مفيد عند اختبار إذا كانت البورتات مفتوحة بطريقة ثابتة
قم بتنفيذ nmap -sT 10.10.98.71 عبر الجهاز تم تثبيت خدمة جديدة على هذا الجهاز الإفتراضي منذ آخر عملية فحص قمنا بها المثال فوق
ما رقم المنفذ الذي تم إغلاقه في الفحص أعلاه ولكنه مفتوح الآن على هذا الجهاز الافتراضي المستهدف؟
110
ما هو تخمين Nmap بشأن الخدمة المثبتة حديثًا؟
pop3
فحص المنافذ ببروتوكول TCP SYN
لما نحكي عن الـ TCP SYN Scan يعني بنحكي عن طريقة لفحص البورتات على جهاز معين بس بطريقة مختلفة
أول اشي عنا نوعين من الـ Scans اللي بنقدر نستخدمهم:
الأول Connect Scan
التاني SYN Scan
الموضوع ببدأ بإنك بتحتاج لمستخدم privileged عشان نقدر تستخدم الـ SYN Scan
الفكرة الأساسية بالـ SYN Scan إنه ببعث باكت SYN للجهاز اللي بنحاول نفحصه
لو كان البورت مفتوح برد علينا الجهاز بـ SYN / ACK بنرد عليه بـ Reset باكت ( بمجرد ما يتلقى الإتصال يقطع الإتصال هذا يفيد بأنه فرصه تسجيل الحدث هاد بالسجلات قليل )
بشكل عام الـ SYN Scan بقدملك فكرة سريعة وسهلة عن حالة البورتات بدون ما تدخل في عملية إتصال كاملة مع الجهاز
يمكن تحديد هاذ النوع من المسح عن طريق اضافه sS-

كود:
pentester@TryHackMe$ sudo nmap -sS 10.10.231.181
Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-30 09:53 BST
Nmap scan report for 10.10.231.181
Host is up (0.0073s latency).
Not shown: 994 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
80/tcp open http
110/tcp open pop3
111/tcp open rpcbind
143/tcp open imap
MAC Address: 02:45:BF:8A:2D:6B (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 1.60 seconds
عشان نشوف الفرق بين النوعين من الـ Scans اللي حكينا عنهم

في النصف السفلي بإمكاننا تشوف الحركه اللي صارت SYN -sS ما بحتاج لإكمال مصافحة TCP ثلاثية الإتجاهات ترسل Nmap حزمة RST بمجرد تلقي حزمة SYN/ACK
تم تثبيت بعض برامج الخادم الجديدة منذ آخر مرة قمنا فيها بفحصها استخدم الـ terminal لتنفيذ
كود:
nmap -sS 10.10.231.181
ما هو المنفذ المفتوح الجديد؟
6667
ما هو تخمين Nmap لاسم الخدمة؟
irc
فحص المنافذ ببروتوكول UDP
الـ UDP هو بروتوكول غير متصل يعني ما يحتاج لأي تبادل بيانات لإنشاء الإتصالسبق ووضحت طريقة عمله
UDP Pingبنستخدم الـ UDP عشان نشوف إذا الـ host موجود أو لا , بالعكس تمامًا لـ TCP SYN ping لما نرسل باكيت UDP لبورت مفتوح ما بنتوقع يجينا رد
بس لو أرسلنا باكيت UDP لبورت UDP
مقفل : بيجينا باكيت ICMP بحكيلنا أنه البورت مغلق Port Unreachable ( معنى تلقي باكيت أن الجهاز المستهدف شغال ومتوفر )مفتوح : لن يتم استلام أي رد هكذا نعرف أن البورت مفتوح
بإمكانك استخدام خيار sU- في nmap لتحديد فحص UDP ويمكن أيضًا دمجه مع فحص TCP آخر إذا أرسلنا باكت UDP إلى منفذ مفتوح ما راح يجينا أي


وبالنظر إلى برنامج Wireshark نرى أن كل منفذ مغلق راح يعطينا باكت ICMP (المنفذ مغلق)
مثال
كود:
pentester@TryHackMe$ sudo nmap -sU 10.10.47.187
Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-30 09:54 BST
Nmap scan report for 10.10.47.187
Host is up (0.00061s latency).
Not shown: 998 closed ports
PORT STATE SERVICE
68/udp open|filtered dhcpc
111/udp open rpcbind
MAC Address: 02:45:BF:8A:2D:6B (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 1085.05 seconds
استخدم الوحدة الطرفية لتنفيذ nmap -sU -F -v 10.10.47.187
تم تثبيت خدمة جديدة منذ آخر فحص
ما هو المنفذ UDP الذي أصبح مفتوحًا؟
53
ما هو اسم الخدمة وفقًا لـ Nmap؟
domain
تحديد نطاق المسح
سبق وحكينا عن p- عشان تحدد بورتات معينه أو رينجباستخدام Nmap بإمكانك تحد استخدام أي فحص عبر استخدام الخيار PS- متبوعًا برقم البورت المطلوب مثل PS21- لاختبار بورت 21
كما يمكن تحديد مجموعة من البورات باستخدام النطاق مثل PS21-25- لاختبار البورات من 21 إلى 25. كما يمكن تحديد قائمة من البورات بواسطة فاصلة ، مثل PS80,443,8080- لاختبار البورتات 80 ، 443 ، 8080.
إذا حاب تعمل فحص للمنافذ الأكثر استخدامًا حط F- وإذا حاب تعمل فحص لأكثر من 100 منفذ حط top-ports 10--
بتقدر تتحكم بسرعة الفحص بتستخدم T- برقم من 0 ل 5
T0- البطيء و T5- الأسرع.
يعني إذا حاب تفحص بشكل هادئ ودقيق حط T0- او T1- بس إذا حاب تفحص بسرعة حط T5- و يعتبر T4- مناسب لتدريبات الأمن والتقاطعات اللي تحتاج سرعة وإذا كنت بتفحص مواقع حقيقية أفضل شيء T1-
وإذا حاب تتحكم بسرعة الباكتات اللي بترسلها بتستخدم min-rate-- و max-rate--
مثال
max-rate 10-- بيضمن أنه الفحص ما يرسل أكثر من 10 باكتات بالثانية
وبتقدر تحكم بعدد الباكتات اللي بترسلها بالوقت نفسه بتستخدم min-parallelism-- و max-parallelism-- بخليك تحدد عدد الباكتات اللي بترسلها بنفس الوقت عشان تعرف إذا الهوست شغال أو المنافذ مفتوحة
ما هو خيار فحص كافة منافذ TCP بين 5000 و5500؟
p5000-5500-
كيف يمكنك التأكد من أن Nmap سيقوم بتشغيل 64 مسبارًا على الأقل بالتوازي؟
min-parallelism=64--
ما الخيار الذي تود إضافته لجعل Nmap بطيئًا جدًا ؟
T0-
فحص Tcp ( Null / FIN / Xmas / Maimon / ACK / Window / Custom Scan )
Null Scan
الـ Null Scan بهدف إنه يفحص البورتات بدون ما يرسل أي Flags يعني بتبعث بيانات بروتوكول TCP بس الـ Flags فيها صفر وبتستخدم التقنية هاي في فحص الأمان ( عند استخدامها يجب استخدام مستخدم privileged )
لما يوصل الباكت اللي ما فيه أي Flags على بورت مفتوح ما بنتج رد من الجهاز المستهدف
هيك بأنه إما البورت مفتوح أو مغلق و في جدار ناري بمنع الرد على الباكتات اللي ما فيها Flags
لكن لو كان مغلق بعطينا رد بباكت RST فبنقدر نعرف أنه عدم الرد بـ RST البورتات اللي مو مغلقة : مفتوحة أو مرشحة.


مثلًا في النتيجة بالأعلى بنشوف فحص Null Scan ضد سيرفر Linux قدرت nmap تحدد 6 بورتات مفتوحة على النظام المستهدف لكن لأن الـ Null Scan بعتمد عدم الرد عشان يحكيلنا إذا البورت مو مغلق من الممكن يكون هناك احتمال أن البورتات مغلقة بالفعل وإنما ما في رد بسبب قاعدة جدار ناري
عن طريق إضافه sN-
مثال
كود:
pentester@TryHackMe$ sudo nmap -sN 10.10.161.140
Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-30 10:30 BST
Nmap scan report for 10.10.161.140
Host is up (0.00066s latency).
Not shown: 994 closed ports
PORT STATE SERVICE
22/tcp open|filtered ssh
25/tcp open|filtered smtp
80/tcp open|filtered http
110/tcp open|filtered pop3
111/tcp open|filtered rpcbind
143/tcp open|filtered imap
MAC Address: 02:45:BF:8A:2D:6B (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 96.50 seconds
FIN Scan
الـ FIN Scan بترسل برسالة TCP تحتوي على علم FIN ممكن تختاره باستخدام الخيار sF-لو البورت مفتوح ما برجع أي رد ( أحيانًا Nmap ما بتقدر تحدد إذا كان البورت مفتوح أو مغلق بسبب الـ firewall اللي بمنع حركة البورت )

لو البورت مغلق النظام المستهدف برد برسالة RST

هاد بساعدنا نعرف أي بورتات مغلقة ونستخدم المعلومة هاي عشان نستنتج أي بورتات مفتوحة أو مرشحة بس بنلاقي بعض أنواع ال firewalls ما بترجع رسالة RST
مثال
كود:
pentester@TryHackMe$ sudo nmap -sF 10.10.211.201
Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-30 10:32 BST
Nmap scan report for 10.10.211.201
Host is up (0.0018s latency).
Not shown: 994 closed ports
PORT STATE SERVICE
22/tcp open|filtered ssh
25/tcp open|filtered smtp
80/tcp open|filtered http
110/tcp open|filtered pop3
111/tcp open|filtered rpcbind
143/tcp open|filtered imap
MAC Address: 02:45:BF:8A:2D:6B (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 96.52 seconds
Xmas Scan
الـ Xmas Scan بضبط ثلاثة إشارات دفعة واحدة وهم FIN و PSH و URG بتقدر تختار الـ Xmas Scan بالخيار sX-
مثل الـ Null Scan والـ FIN Scan لو أجانا باكت RST يعني إنه البورت مغلق
وإذا ما جابت يعني البورت مفتوح أو filtered يعني open|filtered
الصورتين اللي تحت بتبين الحالة لما يكون البورت مفتوح ولما يكون البورت مغلق



مثال
كود:
pentester@TryHackMe$ sudo nmap -sX MACHINE_IP
Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-30 10:34 BST
Nmap scan report for MACHINE_IP
Host is up (0.00087s latency).
Not shown: 994 closed ports
PORT STATE SERVICE
22/tcp open|filtered ssh
25/tcp open|filtered smtp
80/tcp open|filtered http
110/tcp open|filtered pop3
111/tcp open|filtered rpcbind
143/tcp open|filtered imap
MAC Address: 02:45:BF:8A:2D:6B (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 84.85 seconds
النتائج اللي طلعت مثل ما هي نتائج الـ Null Scan والـ FIN Scan
الـ firewalls هاد بشيك لو في باكت بوصل بكون فيه الـ SYN مشغّلة عشان يشوف إذا في محاولة إتصال أو لكن لما تستخدم نوع معين من الـ Flags في الباكت مش متوافقة مع SYN ( مثل FIN ACK RST URG )
ممكن تقدر تخدع الـ firewalls وتوصل للنظام اللي وراه إلا إذا كان معه سجل للحركات السابقة اللي مرت عليه لأنه لما تحاول تخترق firewalls إذا كان معه سجل بحلل سلوك الباكتات بناءً على الحركات السابقة
Maimon
في هذا الفحص يتم تعيين بتات FIN و ACK برسل الهدف حزمة RST كاستجابة ومع ذلك بعض أنظمة الـ BSD المشتقة، زي FreeBSD OpenBSD NetBSD بتتصرف بشكل آخر مش زي غيرها لما يوصلها باكت TCP مع بعض البتات معينه مضبوطة متل FIN و ACK , عادة بتوقع من النظام الهدف أنه يرد بحزمة RST لما يكون الإتصال مغلقبس بحالة بعض أنظمة الـ BSD إذا كان البورت مفتوح ومكشوف ف ممكن تختار تسقط الحزمة بدل ما ترد ب RST يعني ممكن ما ترد
وهاي القصة بتعني إنه الفحص باستخدام تقنية Maimon Scan ما بكون فعال على هيك أنظمة
لاستخدم هذا الفحص عن طريق الخيار sM-
معظم الأنظمة الهدف بترد بحزمة RST بغض النظر عما إذا كان البورت TCP مفتوحًا
في مثل هذه الحالة لن نكون قادرين على اكتشاف البورتات المفتوحة.
يظهر الشكل السلوك المتوقع في حالات البورتات TCP المفتوحة والمغلقة على حد سواء

بسبب سلوك البورتات المفتوحة والمغلقة لم يتمكن الفحص

كود:
pentester@TryHackMe$ sudo nmap -sM 10.10.252.27
Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-30 10:36 BST
Nmap scan report for ip-10-10-252-27.eu-west-1.compute.internal (10.10.252.27)
Host is up (0.00095s latency).
All 1000 scanned ports on ip-10-10-252-27.eu-west-1.compute.internal (10.10.252.27) are closed
MAC Address: 02:45:BF:8A:2D:6B (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 1.61 seconds
ACK
فحص الـ TCP ACK فكرته ببساطة إنك بتبعث طلب TCP بال ACK flag الطلب بروح للهدف بس الرد من الهدف رح يكون RST مهما كانت حالة البورت والسبب إنه الـ ACK في الـ TCP بنبعث عادةً بعد ما يتم استلام بيانات بس هون مافي بيانات تم استلامها فما بتبين نتيجه واضحه , لاستخدام هذا الفحص نستخدم الأمر sA-

في المثال هاد عملنا فحص لجهاز معين قبل ما نركب عليه firewall
كود:
pentester@TryHackMe$ sudo nmap -sA 10.10.178.213
Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-30 10:37 BST
Nmap scan report for 10.10.178.213
Host is up (0.0013s latency).
All 1000 scanned ports on MACHINE_IP are unfiltered
MAC Address: 02:45:BF:8A:2D:6B (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 1.68 seconds
كما توقعنا ما عرفنا أي بورتات مفتوحة
والفكرة بتساعد لو في firewall قدام الهدف بتعرف من خلال الـ ACK packets اللي جايين بالرد من الهدف أنت بتعرف أي بورتات مش محجوبة بالـ firewall يعني الـ scan هاد والـ Window مناسبين لاكتشاف إعدادات وقواعد الـ firewall
عملنا الفحص مرة ثانية بعد ما فعلنا الجدار الناري وكان في نتائج مثيرة للإهتمام ظهرلنا ثلاث بورتات مش محجوبة بالـ firewall هيك بنعرف أنه الجدار بحجب كل البورتات إلا الثلاث هدول
كود:
pentester@TryHackMe$ sudo nmap -sA 10.10.178.213
Starting Nmap 7.60 ( https://nmap.org ) at 2021-09-07 11:34 BST
Nmap scan report for 10.10.178.213
Host is up (0.00046s latency).
Not shown: 997 filtered ports
PORT STATE SERVICE
22/tcp unfiltered ssh
25/tcp unfiltered smtp
80/tcp unfiltered http
MAC Address: 02:78:C0:D0:4E:E9 (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 15.45 seconds
Window
هو ببعث ACK packets للسيرفر وبشوف ردود السيرفر لكن الفرق إنه بيشوف الـ TCP Window field في الرد.
في بعض الأنظمة لو شاف إنه الحقل هاد بالرد بكون مفتوح يعني البورت ممكن يكون مفتوح بتقدر تستخدم هاد الفحص عن طريق الامر sW-
يعني اذا كان في firewall بعطينا معلومات بدنا اياها لكن لو مافي ما بعطينا نتائج ( النتائج بتكون تمامًا مثل فحص ACK )
مثل ما بالصورة متوقعين يجينا رد من السيرفر بعد ما نبعث الـ ACK packets بس بغض النظر إذا كان البورت مفتوح أو مغلق

لو جربنا الفحص وفي firewall ماراح يعطينا معلومات كثيرة
كود:
pentester@TryHackMe$ sudo nmap -sW 10.10.178.213
Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-30 10:38 BST
Nmap scan report for 10.10.178.213
Host is up (0.0011s latency).
All 1000 scanned ports on ip-10-10-252-27.eu-west-1.compute.internal (10.10.252.27) are closed
MAC Address: 02:45:BF:8A:2D:6B (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 1.60 seconds
مثل ما هو موجود بالمثال فوق ما أعطانا أي معلومات زيادة عن فحص الـ ACK اللي شرحناه قبل
لكن لو في firewall

النتائج من الفحص هي أنه الثلاث بورتات مغلقات
النتائج أفضل من فحص الـ ACK اللي أظهر أنهم نفس الثلاثة بورتات unfiltered بس الواقع أنهم ردوا بشكل مختلف، يعني الفايروول ماعم يمنعهم.
كود:
pentester@TryHackMe$ sudo nmap -sW 10.10.178.213
Starting Nmap 7.60 ( https://nmap.org ) at 2021-09-07 11:39 BST
Nmap scan report for 10.10.178.213
Host is up (0.00040s latency).
Not shown: 997 filtered ports
PORT STATE SERVICE
22/tcp closed ssh
25/tcp closed smtp
80/tcp closed http
MAC Address: 02:78:C0:D0:4E:E9 (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 14.84 seconds
Custom
باستخدام --scanflags إذا بدك تضبط SYN و RST و FIN في نفس الوقت بتقدر عن طريق الأمر scanflags --RSTSYNFIN زي ما شايفين في الصورة تحت إذا قررت تختار طريقتك الخاصة للفحص لازم تفهم كيف راح ترد البورتات المختلفة عشان تفسر النتائج صح
لو بدك تجرب اشي جديد في فحص الشبكة على الTCP خليك عارف ان الفحص بالـ ACK والـ window بساعدونا نشوف قواعد الجدار الناري مش الخدمات الموجودة.

يعني لازم نعرف أنه scan الـ Window و ACK مناسبين لاكتشاف إعدادات وقواعد الـ firewall

أسئلة
null
في فحص الـ null كم عدد الـ flags التي تم ضبطها على 1؟
0
استخدم nmap لبدء فحص الـ null
كم عدد المنافذ التي تظهر مفتوحة | مفلترة؟
7
FIN
في فحص FIN كم عدد الـ flags التي تم ضبطها على 1؟
1
استخدم nmap لبدء فحص FIN
كم عدد المنافذ التي تظهر مفتوحة | مفلترة؟
7
Xmas
في فحص Xmas كم عدد الـ flags التي تم ضبطها على 1؟
3
Maimon
في فحص Maimon كم عدد الـ flags التي تم وضعها؟
2
Window + Custom + ACK
في فحص Window، كم عدد العلامات التي تم تعيينها؟
1
استخدم Nmap لبدء فحص ACK على الجهاز الافتراضي المستهدفلقد قررت تجربة فحص TCP مخصص يحتوي على علامة إعادة التعيين ماذا ستضيف بعد scanflags-- ؟
RST
كم عدد المنافذ التي تظهر دون تصفية؟
4
ما هو رقم المنفذ الجديد الذي ظهر؟
443
هل هناك أي خدمة وراء رقم المنفذ المكتشف حديثا؟ (نعم / لا)؟
N
التزوير والتضليل Spoofing and Decoys
ببعض الشبكات ممكن تفحص جهاز باستخدام عنوان الـ IP وحتى عنوان MAC غير حقيقيهاد الفحص مفيد فقط إذا كنت متأكد إنك راح تجيب رد من الجهاز لو حاولت تفحص جهاز من شبكة عشوائية باستخدام عنوان IP مزور مافي احتمال يجيك رد والنتائج ممكن تكون غير دقيقة
كود:
nmap -S SPOOFED_IP 10.10.1.7
الأمر هاد يقوم بـ تحديد عنوان IP مزور كمصدر ( SPOOFED_IP ) لهذه الحزم وإرسالها إلى الجهاز المستهدف المحدد ( 10.10.1.7 )

إذا حابب تفحص بعنوان IP مزور بتتم العمليه بـ 3 خطوات
- الهاكر ببعث بيانات بعنوان IP مزور لجهاز الهدف
- جهاز الهدف بجاوب العنوان المزور كوجهة للرد
- الهاكر بجمع الردود عشان يشوف البورتات المفتوحة
كود:
nmap -e NET_INTERFACE -Pn -S SPOOFED_IP 10.10.178.213

وفي حالة إنك على نفس الشبكة مع الجهاز الهدف ممكن تزور عنوان MAC يعني الهاكر بقدر يستخدم عنوان الـ MAC مزور لعمل هجمه Man in the middle attack
يمكن القيام بها عن طريق اداه ettercap حيث يوجد منها نسخه بواجهه رسوميه بنظام كالي لينكس
ملاحظه : ابرئ نفسي من اي استخدام خاطئ لغير غرض التعلم قد يعرضك للمحاسبه القانونيه
التزوير بشتغل فقط في بعض الحالات لما تكون موجودة شروط معينة فـ الهاكر ممكن يستخدم (Decoys) عشان يخلي الأمور أكتر تعقيداً الفكرة بظهر الفحص كأنه جاي من عدة عناوين IP عشان يختلط عنوان الهاكر فيهم يعني الفحص بظهر من 3 مصادر مختلفة وبالتالي الردود بتروح للـ (Decoys) كمان
الغرائز (Decoys) هي عبارة عن عناوين IP مزيفة يقوم الهاكر بتضمينها في عملية الفحص أو الهجوم على الشبكة
يقوم الهاكر بإدراج هذه العناوين كـ "غرائز" لجعل مسار الهجوم أو الفحص يبدو وكأنه قادم من عدة مصادر مختلفة بدلاً من مصدر واحد وهو الهاكر الفعلي هذا يعمل على تشتيت جهود الدفاع وجعلها أكثر صعوبة في تحديد مصدر الهجوم أو التعقب
ممكن تبدأ فحص هاد بتحديد عنوان IP معين أو عشوائي بعد D- مثلاً
كود:
nmap -D 10.10.0.1,10.10.0.2,ip-me 10.10.178.213

ما الذي تحتاج إلى إضافته إلى الأمر sudo nmap 10.10.1.7 لجعل الفحص يظهر كما لو كان قادمًا من عنوان IP المصدر 10.10.10.11 بدلاً من عنوان IP الخاص بك؟
s 10.10.10.11-
ما الذي تحتاج إلى إضافته إلى الأمر sudo nmap 10.10.1.7 لجعل الفحص يظهر كما لو كان قادمًا من عناوين IP المصدر 10.10.20.21 و10.10.20.28 بالإضافة إلى عنوان IP الخاص بك؟
S 10.10.20.21,10.10.20.28,me-
تجزئة الحزم Fragmented Packets
Firewall
الـ Firewall هي أداة أو جهاز أو برنامج أمان يتم استخدامه لتصفية حركة مرور الشبكة عن طريق إيقاف حركة المرور الواردة والصادرة غير المصرح بها بشكل أوضح هو برنامج أو جهاز عمله إنه يمنع الباكتات (أجزاء صغيرة من البيانات) تمر أو يحجبها بعتمد على قواعد بتكون إما بتسمح بكل الباكتات مع استثناءات أو بتحجب كل الباكتات مع استثناءاتFirewall
مثلًا بتقدر تحجب كل الباكتات اللي بتيجي لسيرفرك عدا اللي بيوصلوا للـ web server
الـ Firewall التقليدي بفحص IP header و transport layer header
و الـ Firewall الأكثر تطورًا بحاول كمان يفحص البيانات اللي بتنقلها طبقة الـ transport
IDS
تقسيم البيانات
عملية تقسيم البيانات لأجزاء صغيرة تسمى باكتات باستخدام Nmap بنعمل تجزئة للباكتاتاستخدام خيار f- ليتم تقسيم بيانات الـ IP إلى 8 بايتات أو أقل و
استخدام خيار ff- ليتم تقسيم البيانات لـ 16 بايتًا
بتقدر تغير القيمة الافتراضية باستخدام mtu--
نقارن لما نعمل تقسم للبيانات
لما نستخدم الأمر
كود:
sudo nmap -sS -p80 10.20.30.144

أول سطرين بإمكاننا نشوف استعلام الـ ARP والرد عليه سبق وطبقنا عليه بالبارت الأول هنا الـ Nmap أصدرت استعلام ARP لأن الهدف على نفس الشبكة
بالسطرين الثانيين استجابة SYN للـ TCP ورد
السطر الخامس هو بداية فحص البورت ترسل الـ Nmap حزمة TCP SYN إلى البورت 80
بهاي الحاله الـ IP header بكون 20 بايت و الـ TCP header بكون 24 بايت علمًا أنه الحد الأدنى لحجم الـ TCP header هو 20 بايت
عند استخدام أمر
كود:
sudo nmap -sS -p80 -f 10.20.30.144
يتم تقسيم 24 بايتًا من الـ TCP header إلى مضاعفات الـ 8 بايت مع الجزء الأخير قد يحتوي على 8 بايت أو أقل من الـ TCP header لأنه 24 لما نقسمها على 8 بعطينا 3 أجزاء متجزئة للـ IP
كل جزء منها يحتوي على 20 بايت من الـ IP header و 8 بايت من الـ TCP header

إذا أضفت ff- أو f -f- ستكون تجزئة البيانات مضاعفات لـ 16 يعني يتم تقسيم 24 بايتًا من الـ TCP header عبر حزمتين IP الأولى بتحتوي على 16 بايتًا والثانية بتحتوي على ( الباقي ) الـ 8 بايت من الـ TCP header
حيث يحتوي كل جزء منهم على 20 بايت من الـ IP header و 8 بايت من الـ TCP header
إذا كنت تفضل زيادة حجم حزمك لجعلها تبدو جيده يمكنك استخدام الخيار data-length NUM-- حيث يُحدد num عدد البايتات التي ترغب في إلحاقها بحزمك
إذا كان حجم مقطع TCP 64، وتم استخدام الخيار -ff، فما هو عدد أجزاء IP التي ستحصل عليها؟
4
فحص Idle / Zombie
فحص الـ Idle/Zombie هو عبارة عن طريقة لعمل فحص للشبكة بطريقة سرية , الفكرة إنك تنتحال عنوان IP بس سلبياته ما بشتغل إلا في أنظمة معينة
ما بنفع إلا في ببعض الشبكات الخاصة يعني لازم تكون موجود في مكان تقدر تراقب فيه حركة البيانات
فحص الـ Idle أو المعروفة أيضًا بفحص الـ zombie هاي الطريقة بتحتاج لجهاز واقف عن العمل ( خامل ) متصل بالشبكة وبإمكانك التواصل معه
الـ Nmap بظهر كل فحص بمنظور جهاز الـ idle (الـ zombie) بعدها بتأكد من مؤشرات مثل معرف الـ IP (IP ID) في الـ IP header
مثلاً الرسم التوضيحي بظهر النظام المهاجم وهو بفحص جهاز idle اللي هو بحالتنا طابعة متعددة الوظائف بإرسال SYN/ACK برد بحزمة RST بتحتوي على الـ id للـ ip

في 3 سيناريوهات محتملة:
إذا كان منفذ الـ TCP مغلقًا يرد الجهاز المستهدف بحزمة RST إلى جهاز الـ idle ( الـ idle لا يرد لذلك لا يتم زيادة الـ id للـ ip )

مفتوحًا يرد الجهاز المستهدف بـ SYN / ACK إلى جهاز الـ idle (الـ zombie) يرد جهاز الـ idle على هذه الحزمة بحزمة RST مما يؤدي إلى زيادة الـ id للـ ip
إذا لم يرد الجهاز المستهدف بسبب قواعد جدار الحماية فسيؤدي هذا الامر إلى نفس النتيجة التي تم الحصول عليها في السيناريو الأول لا يقوم جهاز الـ idle بزيادة الـ id للـ ip
الحالة اأاولى وهي إذا كان البورت مغلق
الحالة الثانية وهي إذا كان البورت مفتوح

الحالة الثانية وهي إذا كان البورت مفتوح

بالآخر برسل المهاجم SYN/ACK آخر إلى جهاز الـ idle برد عليه بحزمة RST مما يؤدي إلى زيادة الـ id للـ ip مرة أخرى بواحد بحتاج المهاجم أنه يقارن الـ id للـ ip لحزمة RST التي تم استلامها في الخطوة الأولى مع الـ id للـ ip لحزمة RST التي تم استلامها في هذه الخطوة الثالثة
إذا كان الفرق 1 فـ هاد بعني أن المنفذ على الجهاز المستهدف كان مغلق أو تم تصفيته يعني ما رد يعني الحاله يا الاولى او الثالثه من السيناريوهات اللي ذكرناها فوق
إذا كان الفرق 2 فـ هاد بعني أن المنفذ على الجهاز المستهدف كان مفتوح لانو حكينا اذا كان مفتوح هاد الشي يؤدي إلى زيادة الـ id للـ ip بواحد
بتقدر تشغل فحص الـ idle باستخدام الأمر نستخدم الـ i للتفريق بينها وبين ال ( l -> L )
كود:
nmap -sI ZOMBIE_IP MACHINE_IP
حيث أن ZOMBIE_IP هو عنوان الـ IP لجهاز الـ idle (الـ zombie)
فحص الـ idle (zombie) بتحتاج لـ ثلاث خطوات لتحديد إذا كان المنفذ مفتوح :
- نرسل طلب للجهاز الخامل لنحصل على الـ id للـ ip الخاص فيه
- إرسال حزمة SYN لمنفذ TCP على الجهاز المستهدف يجب أن تكون الحزمة مزورة لتبدو وكأنها قادمة من عنوان IP لجهاز الـ idle (الـ zombie)
- نرسل طلب مرة ثانية للجهاز الخامل عشان نقارن بين الـ id للـ ip الخاص فيه الجديد و الـ id للـ ip الذي تم استلامه بالخطوة الأولى
إذا كان جهاز الـ idle مشغول بأداء مهام أو عمليات أخرى كل الـ IP IDs الراجعة مارح تكون مفيدة لأنها احتمال يصير في تداخل بين الفحص مع العمليات اللي بقوم فيها
لقد اكتشفت طابعة شبكة نادرًا ما تستخدم بعنوان IP 10.10.5.5 وقررت استخدامها كطابعة زومبي في الفحص الخامل
ما الوسيطة التي يجب عليك إضافتها إلى أمر Nmap؟
sI 10.10.5.5-
تفاصيل إضافية وتفسير النتائج بدقة
لما تستخدم الـ Nmap بفحص الشبكات ممكن تضيف الامر reason-- عشان يعطيك تفاصيل أكثر عن النتائج
مثال بدون استخدام reason--
كود:
pentester@TryHackMe$ sudo nmap -sS 10.10.252.27
Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-30 10:39 BST
Nmap scan report for ip-10-10-252-27.eu-west-1.compute.internal (10.10.252.27)
Host is up (0.0020s latency).
Not shown: 994 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
80/tcp open http
110/tcp open pop3
111/tcp open rpcbind
143/tcp open imap
MAC Address: 02:45:BF:8A:2D:6B (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 1.60 seconds
مثال مع استخدام reason--
كود:
pentester@TryHackMe$ sudo nmap -sS --reason 10.10.252.27
Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-30 10:40 BST
Nmap scan report for ip-10-10-252-27.eu-west-1.compute.internal (10.10.252.27)
Host is up, received arp-response (0.0020s latency).
Not shown: 994 closed ports
Reason: 994 resets
PORT STATE SERVICE REASON
22/tcp open ssh syn-ack ttl 64
25/tcp open smtp syn-ack ttl 64
80/tcp open http syn-ack ttl 64
110/tcp open pop3 syn-ack ttl 64
111/tcp open rpcbind syn-ack ttl 64
143/tcp open imap syn-ack ttl 64
MAC Address: 02:45:BF:8A:2D:6B (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 1.59 seconds
الـ Nmap عمل فحص ولقى بورتات مفتوحة على النظام زي الـ SSH والـ SMTP وغيرهم بس لما استخدمنا الـ reason-- طلع ليش النظام يعتبر أونلاين وليش البورتات مفتوحة مثلا الـ SSH مفتوح لأنه تلقى syn-ack ردّ من السيرفر
وإذا كنت بدك تفاصيل أكتر بتقدر تستخدم v- لفحص مفصل و vv- لتفاصيل أكتر من هيك ( verbose verbose )
مثال
مثلًا لما نستخدم vv- عرفنا البورتات المفتوحة و أيضًا تلقينا رد على الـ ARP

كود:
pentester@TryHackMe$ sudo nmap -sS -vv 10.10.252.27
Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-30 10:41 BST
Initiating ARP Ping Scan at 10:41
Scanning 10.10.252.27 [1 port]
Completed ARP Ping Scan at 10:41, 0.22s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 10:41
Completed Parallel DNS resolution of 1 host. at 10:41, 0.00s elapsed
Initiating SYN Stealth Scan at 10:41
Scanning ip-10-10-252-27.eu-west-1.compute.internal (10.10.252.27) [1000 ports]
Discovered open port 22/tcp on 10.10.252.27
Discovered open port 25/tcp on 10.10.252.27
Discovered open port 80/tcp on 10.10.252.27
Discovered open port 110/tcp on 10.10.252.27
Discovered open port 111/tcp on 10.10.252.27
Discovered open port 143/tcp on 10.10.252.27
Completed SYN Stealth Scan at 10:41, 1.25s elapsed (1000 total ports)
Nmap scan report for ip-10-10-252-27.eu-west-1.compute.internal (10.10.252.27)
Host is up, received arp-response (0.0019s latency).
Scanned at 2021-08-30 10:41:02 BST for 1s
Not shown: 994 closed ports
Reason: 994 resets
PORT STATE SERVICE REASON
22/tcp open ssh syn-ack ttl 64
25/tcp open smtp syn-ack ttl 64
80/tcp open http syn-ack ttl 64
110/tcp open pop3 syn-ack ttl 64
111/tcp open rpcbind syn-ack ttl 64
143/tcp open imap syn-ack ttl 64
MAC Address: 02:45:BF:8A:2D:6B (Unknown)
Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 1.59 seconds
Raw packets sent: 1002 (44.072KB) | Rcvd: 1002 (40.092KB)
هاد الأمر بيساعدك تعرف تفصيلات أكثر عن النتائج اللي بتجيك من الـ Nmap وهيك بتقدر تفهم بشكل أفضل شو اللي بصير بالشبكة اللي بتفحصها
وبتقدر تجرب تستخدم d- لتفاصيل الـ debugging أو حتى dd- لتفاصيل أكثر من هيك
لما تستخدم الـ d- رح تشوف تفاصيل عن كل خطوة بعملها الـ Nmap بس خذ بالك أنه راح يمتد كثير الإخراج من الفحص بس بتكون فاهم كل عملية بتعملها nmap بالفحص
استخدم Nmap مع الأمر
كود:
nmap -sS -F --reason 10.10.98.105
ما هو السبب المقدم لفتح المنفذ (المنافذ) المذكورة؟
syn-ack
ملخص
ملخص جزء 1 لشرح أول 6 مواضيع
نوع المسح | أمثلة الأوامر |
---|---|
مسح الاتصال TCP | nmap -sT 10.10.47.187 |
مسح TCP SYN | sudo nmap -sS 10.10.47.187 |
مسح UDP | sudo nmap -sU 10.10.47.187 |
الخيار | الغرض |
---|---|
-p- | جميع المنافذ |
p1-1023- | مسح المنافذ من 1 إلى 1023 |
F- | 100 منفذ شائع |
r- | مسح المنافذ بترتيب متتالٍ |
T0-5- | -T0 بطيء جدا و T5 الأسرع |
max-rate 50-- | معدل <= 50 باكت/ثانية |
min-rate 15-- | معدل >= 15 باكت/ثانية |
min-parallelism 100-- | على الأقل 100 اختبار بنفس الوقت |
ملخص جزء 2 لشرح من موضوع 7
نوع المسح | أمثلة الأوامر |
---|---|
مسح البورتات TCP بدون إرسال أي flag | sudo nmap -sN 10.10.98.105 |
مسح البورتات TCP بإرسال FIN flag | sudo nmap -sF 10.10.98.105 |
مسح البورتات TCP بإرسال Xmas flag | sudo nmap -sX 10.10.98.105 |
مسح البورتات TCP بإرسال Maimon flag | sudo nmap -sM 10.10.98.105 |
مسح البورتات TCP بإرسال ACK flag | sudo nmap -sA 10.10.98.105 |
مسح البورتات TCP بإرسال Window flag | sudo nmap -sW 10.10.98.105 |
مسح مخصص للبورتات TCP | sudo nmap --scanflags URGACKPSHRSTSYNFIN 10.10.98.105 |
تزييف عنوان IP المصدر | sudo nmap -S SPOOFED_IP 10.10.98.105 |
تزييف عنوان MAC | spoof-mac SPOOFED_MAC-- |
مسح برمجيات باستخدام عنوان IP مزيف | nmap -D DECOY_IP,ME 10.10.98.105 |
مسح نائم (زومبي) | sudo nmap -sI ZOMBIE_IP 10.10.98.105 |
تجزئة بيانات IP إلى 8 بايتات | f- |
تجزئة بيانات IP إلى 16 بايتات | ff- |
الخيار | الغرض |
---|---|
reason-- | شرح كيف قام Nmap بتحديد النتيجة |
v- | تفاصيل مطولة |
vv- | تفاصيل مطولة جداً |
d- | تفاصيل تصحيح الأخطاء |
dd- | تفاصيل تصحيح الأخطاء مطولة جداً |
المرفقات
التعديل الأخير: