مضى على الشبكة و يوم من العطاء.
  • تحذير: يجب على كل روّاد الشبكة تشغيل برامج الاختراق داخل الأنظمة الوهمية وهي بهدف التعلم وحماية الأعضاء والتوعية بها

[ WalkTh ] شرح أداة Nmap الجزء الثاني - Nmap part 2

3b0-0d3b0-0d is verified member.

{ || مشرف قسم CTF || }
.:: طاقم المشرفين ::.

السمعة:

netsecmodule.png

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

بشكل عام في حالتين للـ Ports :
  1. مفتوح : يعني أن هناك خدمة تستمع على هذا الـ Port
  2. مغلق : يعني أنه لا يوجد خدمة تستمع على هذا الـ Port
بس لازم نوخذ بعين الإعتبار تأثير جدران الحماية ( الفاير وولز ) فـممكن يكون الـ Port مفتوحاً بس جدار الحماية بمنع الحزم ( الباكتات ) من المرور

لذلك Nmap تعتبر ست حالات :

  1. مفتوح Open : يعني أن هناك خدمة تستمع على الـ Port المحدد
  2. مغلق Closed : يعني أنه لا يوجد خدمة تستمع على الـ Port المحدد، ولكن الـ Port متاح. بمعنى أنه يمكن الوصول إليه ولكنه قد يكون محجوباً بواسطة جدار الحماية أو برامج الأمان الأخرى
  3. مرشح Filtered : يعني أن Nmap لا تستطيع تحديد ما إذا كان الـ Port مفتوحاً أو مغلقاً لأن الـ Port غير متاح. يحدث هذا عادةً بسبب جدار الحماية الذي يمنع Nmap من الوصول إلى هذا الـ Port
  4. غير مرشح Unfiltered : يعني أن Nmap لا تستطيع تحديد ما إذا كان الـ Port مفتوحاً أو مغلقاً على الرغم من أن الـ Port متاح يحدث هذا عند استخدام مسح ACK -sA
  5. مفتوح|مرشح Open|Filtered : يعني أن Nmap لا تستطيع تحديد ما إذا كان الـ Port مفتوحاً أم مرشحاً
  6. مغلق|مرشح Closed|Filtered : يعني أن Nmap لا تستطيع تحديد ما إذا كان الـ Port مغلقاً أم مرشحاً

ما الخدمة التي تستخدم منفذ UDP 53 افتراضيًا؟
DNS

1707970685725.png

ما الخدمة التي تستخدم منفذ TCP 22 افتراضيًا؟
ssh

1707970802746.png

كم عدد حالات المنفذ التي يأخذها 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 بايت

79ca8e4acbd573a27cee413cde927769.png

أول سطر عنا رقم منفذ الـ TCP للمصدر والواجهه من الصورة تم تحديد لرقم المنفذ 2 بايت ( 16 بت ) يعني الرقم نطاقه 0 - 65535
بالصف الثاني رقم تسلسلي وبالصف الثالث رقم الـ acknowledgement
كم صف يحتوي على 4 بايت ( 32 بت ) * 6 صفوف بإجمالي 24 بايت
أول اشي إحنا لازم نركز على الـ Flags اللي برنامج Nmap بقدر يضيفها أو يشيلها

الـ Flags هاي اللي هي باللون الأحمر بالصورة فوق لما نحكي Setting a flag bit يعني بنحط قيمة 1 فيه
عند تحديد قيمة البتات يتم ذلك من الشمال إلى اليمين في رأس الـ TCP حيث يُمكن تعيين قيمة 1 لتفعيل البت وقيمة 0 لتعطيله
هاي البتات تُستخدم للتحكم في تدفق البيانات وإدارة الإتصالات بين الأجهزة في شبكة الإنترنت


الـ Flags في رأس TCP هي :
  1. الـ URG : هاي بتحكي إن في بيانات urgent جاية ولازم نعاملها فورًا
  2. الـ ACK : هاي بتحكي إنها استلمت البيانات اللي وصلت
  3. الـ PSH : هاي بتطلب من TCP يمرر البيانات للتطبيق فورًا
  4. الـ RST : هاي بتستخدم لإعادة ضبط الإتصال وقد ترسلها جهاز ثاني زي جدار الحماية لقطع الإتصال
  5. الـ SYN : هاي بتستخدم لبدء الإتصال ومزامنة التسلسل مع الجهاز الثاني
  6. الـ FIN : هاي بتحكي إن المرسل خلصت بياناته ومافي حاجة ثانية يرسلها
ما هي الأحرف الثلاثة التي تمثل علامة إعادة الضبط؟
RST
ما هي العلامة التي يجب تعيينها عند بدء اتصال TCP (الحزمة الأولى من مصافحة TCP ثلاثية الاتجاهات)؟
SYN


فحص المنافذ ببروتوكول TCP Connect

العميل ببعث باكت TCP بالـ SYN flag
السيرفر برد بـ SYN/ACK لو البورت مفتوح
في النهاية العميل بكمل الـ handshake بالبعث بـ
ACK


8390020a13d6f22f49233833f6265de6.png

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


a975503bd3e006bd32147ba9c9faede4.png


19ebc8172c930867c50e214b630ef4ec.png

نلاحظ إن البورت 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 عبر الجهاز تم تثبيت خدمة جديدة على هذا الجهاز الإفتراضي منذ آخر عملية فحص قمنا بها
المثال فوق

1708027677309.png

ما رقم المنفذ الذي تم إغلاقه في الفحص أعلاه ولكنه مفتوح الآن على هذا الجهاز الافتراضي المستهدف؟
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-


48e631fd3deba4a2b759ca48405fcc08.png
مثال
كود:
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 اللي حكينا عنهم

fe642b2fafb70cbaa2531d2c41d6cddb.png
في النصف العلوي بإمكاننا تشوف الحركه اللي صارت TCP Connect scan -sT بطلب أي منفذ TCP مفتوح من Nmap إكمال مصافحة TCP ثلاثية الإتجاهات قبل إغلاق الإتصال
في النصف السفلي بإمكاننا تشوف الحركه اللي صارت SYN -sS ما بحتاج لإكمال مصافحة TCP ثلاثية الإتجاهات ترسل Nmap حزمة RST بمجرد تلقي حزمة
SYN/ACK
تم تثبيت بعض برامج الخادم الجديدة منذ آخر مرة قمنا فيها بفحصها استخدم الـ terminal لتنفيذ
كود:
nmap -sS 10.10.231.181

1708072348524.png

ما هو المنفذ المفتوح الجديد؟
6667
ما هو تخمين Nmap لاسم الخدمة؟
irc


فحص المنافذ ببروتوكول UDP

الـ UDP هو بروتوكول غير متصل يعني ما يحتاج لأي تبادل بيانات لإنشاء الإتصال
سبق ووضحت طريقة عمله

UDP Ping
بنستخدم الـ UDP عشان نشوف إذا الـ host موجود أو لا , بالعكس تمامًا لـ TCP SYN ping لما نرسل باكيت UDP لبورت مفتوح ما بنتوقع يجينا رد
بس لو أرسلنا باكيت UDP لبورت UDP

مقفل : بيجينا باكيت ICMP بحكيلنا أنه البورت مغلق Port Unreachable ( معنى تلقي باكيت أن الجهاز المستهدف شغال ومتوفر )
مفتوح : لن يتم استلام أي رد هكذا نعرف أن البورت مفتوح

بإمكانك استخدام خيار sU- في nmap لتحديد فحص UDP ويمكن أيضًا دمجه مع فحص TCP آخر إذا أرسلنا باكت UDP إلى منفذ مفتوح ما راح يجينا أي 👆

8b8b32517699b96777641a97dbf9d880.png

وبالنظر إلى برنامج 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
تم تثبيت خدمة جديدة منذ آخر فحص


1708073823461.png

ما هو المنفذ 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 البورتات اللي مو مغلقة : مفتوحة أو مرشحة.

04b178a9cf7048c21256988b8b2343e3.png


224e01a913a1ce7b0fb2b9290ff5e1c8.png


مثلًا في النتيجة بالأعلى بنشوف فحص 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 اللي بمنع حركة البورت )



78eb3d6ba158542f2b3223184b032e64.png

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

74dc07da7351a5a7f258948ec59efccc.png


هاد بساعدنا نعرف أي بورتات مغلقة ونستخدم المعلومة هاي عشان نستنتج أي بورتات مفتوحة أو مرشحة بس بنلاقي بعض أنواع ال 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
الصورتين اللي تحت بتبين الحالة لما يكون البورت مفتوح ولما يكون البورت
مغلق
7d28b756aed3b6eb72faf98d6974776c.png

👇
4304eacbc3db1af21657f285bc16ebce.png

مثال

كود:
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 المفتوحة والمغلقة على حد سواء

8ca5e5e0f6e0a1843cebe11b5b0785b3.png


بسبب سلوك البورتات المفتوحة والمغلقة لم يتمكن الفحص 👇 من اكتشاف أي بورتات مفتوحة على النظام المستهدف

كود:
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-

a991831cedbb2761dde1fe66012a7311.png

في المثال هاد عملنا فحص لجهاز معين قبل ما نركب عليه 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 بس بغض النظر إذا كان البورت مفتوح أو
مغلق
5118dcb424d429376f09bf2f85db5bce.png


لو جربنا الفحص وفي 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

d76c5020f14ac0d66e7ff3812bb0bec3.png



أسئلة
null

في فحص الـ null كم عدد الـ flags التي تم ضبطها على 1؟
0

استخدم nmap لبدء فحص الـ null
1708431226437.png
كم عدد المنافذ التي تظهر مفتوحة | مفلترة؟
7

FIN

في فحص FIN كم عدد الـ flags التي تم ضبطها على 1؟
1

استخدم nmap لبدء فحص FIN
1708431214032.png
كم عدد المنافذ التي تظهر مفتوحة | مفلترة؟
7
Xmas
في فحص Xmas كم عدد الـ flags التي تم ضبطها على 1؟
3
Maimon
في فحص Maimon كم عدد الـ flags التي تم وضعها؟
2
Window + Custom + ACK
في فحص Window، كم عدد العلامات التي تم تعيينها؟
1
لقد قررت تجربة فحص TCP مخصص يحتوي على علامة إعادة التعيين ماذا ستضيف بعد scanflags-- ؟
RST
استخدم Nmap لبدء فحص ACK على الجهاز الافتراضي المستهدف

1708453913570.png

كم عدد المنافذ التي تظهر دون تصفية؟
4
ما هو رقم المنفذ الجديد الذي ظهر؟
443
هل هناك أي خدمة وراء رقم المنفذ المكتشف حديثا؟ (نعم / لا)؟
N


التزوير والتضليل Spoofing and Decoys

ببعض الشبكات ممكن تفحص جهاز باستخدام عنوان الـ IP وحتى عنوان MAC غير حقيقي
هاد الفحص مفيد فقط إذا كنت متأكد إنك راح تجيب رد من الجهاز لو حاولت تفحص جهاز من شبكة عشوائية باستخدام عنوان IP مزور مافي احتمال يجيك رد والنتائج ممكن تكون غير دقيقة


كود:
nmap -S SPOOFED_IP 10.10.1.7

الأمر هاد يقوم بـ تحديد عنوان IP مزور كمصدر ( SPOOFED_IP ) لهذه الحزم وإرسالها إلى الجهاز المستهدف المحدد ( 10.10.1.7 )
45b982d501fd26deb2b381059b16f80c.png

إذا حابب تفحص بعنوان IP مزور بتتم العمليه بـ 3 خطوات
  1. الهاكر ببعث بيانات بعنوان IP مزور لجهاز الهدف
  2. جهاز الهدف بجاوب العنوان المزور كوجهة للرد
  3. الهاكر بجمع الردود عشان يشوف البورتات المفتوحة
وعادة بتوقع إنك تحدد واجهة الشبكة وتلغي فحص البينج ولذلك بتستخدم
كود:
nmap -e NET_INTERFACE -Pn -S SPOOFED_IP 10.10.178.213
@King.Of.Noobs يا رب ما يضربني Pn- :ROFLMAO:

وفي حالة إنك على نفس الشبكة مع الجهاز الهدف ممكن تزور عنوان 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
بخلي الفحص لـ 10.10.178.213 يظهر كأنه جاي من عناوين 10.10.0.1 و 10.10.0.2 وبعدين عنواني ip-me

754fc455556a424ca83f512665beaf7d.png

ما الذي تحتاج إلى إضافته إلى الأمر 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 هي أداة أو جهاز أو برنامج أمان يتم استخدامه لتصفية حركة مرور الشبكة عن طريق إيقاف حركة المرور الواردة والصادرة غير المصرح بها بشكل أوضح هو برنامج أو جهاز عمله إنه يمنع الباكتات (أجزاء صغيرة من البيانات) تمر أو يحجبها بعتمد على قواعد بتكون إما بتسمح بكل الباكتات مع استثناءات أو بتحجب كل الباكتات مع استثناءات
مثلًا بتقدر تحجب كل الباكتات اللي بتيجي لسيرفرك عدا اللي بيوصلوا للـ web server
الـ Firewall التقليدي بفحص IP header و transport layer header
و الـ Firewall الأكثر تطورًا بحاول كمان يفحص البيانات اللي بتنقلها طبقة
الـ transport

IDS
نظام اكتشاف الاختراقات ( IDS ) بفحص باكتات الشبكة عشان يراقبها ويحللها عشان يكشف إذا كان في أنماط أو سلوكية مثل محاولات الاختراق أو استخدام بروتوكولات غير مسموح فيها أو تواجد بيانات غير مشفرة بشكل صحيح وغيرها من الأنشطة غير المرغوب فيها , إذا اكتشف نمط معين أو سلوك غريب بطلع تنبيه
تقسيم البيانات
عملية تقسيم البيانات لأجزاء صغيرة تسمى باكتات باستخدام Nmap بنعمل تجزئة للباكتات
استخدام خيار f- ليتم تقسيم بيانات الـ IP إلى 8 بايتات أو أقل و
استخدام خيار ff- ليتم تقسيم البيانات لـ 16 بايتًا
بتقدر تغير القيمة الافتراضية باستخدام
mtu--

نقارن لما نعمل تقسم للبيانات
لما نستخدم الأمر
كود:
sudo nmap -sS -p80 10.20.30.144

b817b7d8b8ef9ee64dd9494e31def426.png

أول سطرين بإمكاننا نشوف استعلام الـ 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


953fd599d2afaa8efb36923b02707d2b.png

إذا أضفت 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

a93e181f0effe000554a8b307448bbb2.png


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


الحالة اأاولى وهي إذا كان البورت مغلق
8e28bf940936ddbc2367b193ea3550b8.png



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


بالآخر برسل المهاجم 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) بتحتاج لـ ثلاث خطوات لتحديد إذا كان المنفذ مفتوح :

  1. نرسل طلب للجهاز الخامل لنحصل على الـ id للـ ip الخاص فيه
  2. إرسال حزمة SYN لمنفذ TCP على الجهاز المستهدف يجب أن تكون الحزمة مزورة لتبدو وكأنها قادمة من عنوان IP لجهاز الـ idle (الـ zombie)
  3. نرسل طلب مرة ثانية للجهاز الخامل عشان نقارن بين الـ 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

1708543175010.png

ما هو السبب المقدم لفتح المنفذ (المنافذ) المذكورة؟
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 بدون إرسال أي flagsudo nmap -sN 10.10.98.105
مسح البورتات TCP بإرسال FIN flagsudo nmap -sF 10.10.98.105
مسح البورتات TCP بإرسال Xmas flagsudo nmap -sX 10.10.98.105
مسح البورتات TCP بإرسال Maimon flagsudo nmap -sM 10.10.98.105
مسح البورتات TCP بإرسال ACK flagsudo nmap -sA 10.10.98.105
مسح البورتات TCP بإرسال Window flagsudo nmap -sW 10.10.98.105
مسح مخصص للبورتات TCPsudo nmap --scanflags URGACKPSHRSTSYNFIN 10.10.98.105
تزييف عنوان IP المصدرsudo nmap -S SPOOFED_IP 10.10.98.105
تزييف عنوان MACspoof-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-تفاصيل تصحيح الأخطاء مطولة جداً
 

المرفقات

  • 1707972307552.png
    1707972307552.png
    77.9 KB · المشاهدات: 152
  • 1708506549032.png
    1708506549032.png
    4.3 KB · المشاهدات: 155
التعديل الأخير:
netsecmodule.png

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

بشكل عام في حالتين للـ Ports :
  1. مفتوح : يعني أن هناك خدمة تستمع على هذا الـ Port
  2. مغلق : يعني أنه لا يوجد خدمة تستمع على هذا الـ Port
بس لازم نوخذ بعين الاعتبار تأثير جدران الحماية ( الفاير وولز ) فـ ممكن يكون الـ Port مفتوحاً بس جدار الحماية بمنع الحزم ( الباكتات ) من المرور

لذلك Nmap تعتبر ست حالات :
  1. مفتوح Open : يعني أن هناك خدمة تستمع على الـ Port المحدد
  2. مغلق Closed : يعني أنه لا يوجد خدمة تستمع على الـ Port المحدد، ولكن الـ Port متاح. بمعنى أنه يمكن الوصول إليه ولكنه قد يكون محجوباً بواسطة جدار الحماية أو برامج الأمان الأخرى
  3. مرشح Filtered : يعني أن Nmap لا تستطيع تحديد ما إذا كان الـ Port مفتوحاً أو مغلقاً لأن الـ Port غير متاح. يحدث هذا عادةً بسبب جدار الحماية الذي يمنع Nmap من الوصول إلى هذا الـ Port
  4. غير مرشح Unfiltered : يعني أن Nmap لا تستطيع تحديد ما إذا كان الـ Port مفتوحاً أو مغلقاً على الرغم من أن الـ Port متاح يحدث هذا عند استخدام مسح ACK -sA
  5. مفتوح|مرشح Open|Filtered : يعني أن Nmap لا تستطيع تحديد ما إذا كان الـ Port مفتوحاً أم مرشحاً
  6. مغلق|مرشح Closed|Filtered : يعني أن Nmap لا تستطيع تحديد ما إذا كان الـ Port مغلقاً أم مرشحاً










الـ 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 بايت
79ca8e4acbd573a27cee413cde927769.png

اول سطر عننا رقم منفذ الـ TCP للمصدر والواجهه من الصوره تم تحديد لرقم المنفذ 2 بايت ( 16 بت ) يعني الرقم نطاقه 0 - 65535
بالصف الثاني رقم تسلسلي وبالصف الثالث رقم الـ acknowledgement

كب صف يحتوي على 4 بايت ( 32 بت ) * 6 صفوف بإجمالي 24 بايت


أول اشي إحنا لازم نركز على الـ Flags اللي برنامج Nmap بقدر يضيفها أو يشيلها

الـ Flags هاي اللي هي باللون الأحمر بالصوره فوق لما نحكي Setting a flag bit يعني بنحط قيمة 1 فيه


عند تحديد قيمة البتات يتم ذلك من الشمال إلى اليمين في رأس الـ TCP حيث يُمكن تعيين قيمة 1 لتفعيل البت وقيمة 0 لتعطيله

هاي البتات تُستخدم للتحكم في تدفق البيانات وإدارة الاتصالات بين الأجهزة في شبكة الإنترنت


الـ Flags في رأس TCP هي :
  1. الـ URG : هاي بتحكي إن في بيانات urgent جاية ولازم نعاملها فورًا
  2. الـ ACK : هاي بتحكي إنها استلمت البيانات اللي وصلت
  3. الـ PSH : هاي بتطلب من TCP يمرر البيانات للتطبيق فورًا
  4. الـ RST : هاي بتستخدم لإعادة ضبط الاتصال وقد ترسلها جهاز تاني زي جدار الحماية لقطع الاتصال
  5. الـ SYN : هاي بتستخدم لبدء الاتصال ومزامنة التسلسل مع الجهاز الثاني
  6. الـ FIN : هاي بتحكي إن المرسل خلصت بياناته ومافي حاجة ثانية يرسلها







فحص المنافذ ببروتوكول TCP Connect


العميل ببعث باكت TCP بالـ SYN flag
السيرفر برد بـ SYN/ACK لو البورت مفتوح
في النهاية العميل بكمل الـ handshake بالبعث بـ ACK


8390020a13d6f22f49233833f6265de6.png

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

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

a975503bd3e006bd32147ba9c9faede4.png


19ebc8172c930867c50e214b630ef4ec.png

نلاحظ إن البورت 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 عبر الجهاز تم تثبيت خدمة جديدة على هذا الجهاز الافتراضي منذ آخر عملية فحص قمنا بها المثال فوق









فحص المنافذ ببروتوكول TCP SYN


لما نحكي عن الـ TCP SYN Scan يعني بنحكي عن طريقة لفحص البورتات على جهاز معين بس بطريقة مختلفة
أول اشي عننا نوعين من الـ Scans اللي بنقدر نستخدمهم
الأول Connect Scan
التاني SYN Scan

الموضوع ببدأ بإنك بتحتاج لمستخدم privileged عشان نقدر تستخدم الـ SYN Scan

الفكرة الأساسية بالـ SYN Scan إنه ببعث باكت SYN للجهاز اللي بنحاول نفحصه
لو كان البورت مفتوح برد علينا الجهاز بـ SYN / ACK بنرد عليه بـ Reset باكت ( بمجرد ما يتلقى الاتصال يقطع الاتصال هذا يفيد بانه فرصه تسجيل الحدث هاد بالسجلات قليل )

بشكل عام الـ SYN Scan بقدملك فكرة سريعة وسهلة عن حالة البورتات بدون ما تدخل في عملية اتصال كاملة مع الجهاز

يمكن تحديد هاذ النوع من المسح عن طريق اضافه sS-

48e631fd3deba4a2b759ca48405fcc08.png
مثال

كود:
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 اللي حكينا عنهم

fe642b2fafb70cbaa2531d2c41d6cddb.png
في النصف العلوي بإمكاننا تشوف الحركه اللي صارت TCP Connect scan -sT بطلب أي منفذ TCP مفتوح من Nmap إكمال مصافحة TCP ثلاثية الاتجاهات قبل إغلاق الاتصال
في النصف السفلي بإمكاننا تشوف الحركه اللي صارت SYN -sS ما بحتاج لإكمال مصافحة TCP ثلاثية الاتجاهات ترسل Nmap حزمة RST بمجرد تلقي حزمة SYN/ACK



تم تثبيت بعض برامج الخادم الجديدة منذ آخر مرة قمنا فيها بفحصها استخدم الـ terminal لتنفيذ
كود:
nmap -sS 10.10.231.181






فحص المنافذ ببروتوكول UDP


الـ UDP هو بروتوكول غير متصل يعني ما يحتاج لأي تبادل بيانات لإنشاء الاتصال
سبق ووضحت طريقه عمله



بإمكانك استخدام خيار sU- في nmap لتحديد فحص UDP ويمكن أيضًا دمجه مع فحص TCP آخر إذا أرسلنا باكت UDP إلى منفذ مفتوح ما راح يجينا أي 👆

8b8b32517699b96777641a97dbf9d880.png

وبالنظر إلى برنامج 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
تم تثبيت خدمة جديدة منذ آخر فحص








تحديد نطاق المسح


سبق وحكينا عن p- عشان تحدد بورتات معينه او رينج



اذا حاب تعمل فحص للمنافذ الأكثر استخداما حط 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 ( Null / FIN / Xmas / Maimon / ACK / Window / Custom Scan )

Null Scan

الـ Null Scan بهدف إنه يفحص البورتات بدون ما يرسل أي Flags يعني بتبعث بيانات بروتوكول TCP بس الـ Flags فيها صفر وبتستخدم التقنية هاي في فحص الأمان
( عند استخدامها يجب استخدام مستخدم privileged )
لما يوصل الباكت اللي ما فيه أي Flags على بورت مفتوح ما بنتج رد من الجهاز المستهدف
هيك بأنه إما البورت مفتوح أو مغلق و في جدار ناري بمنع الرد على الباكتات اللي ما فيها Flags

لكن لو كان مغلق بعطينا رد بباكت RST فبنقدر نعرف انو عدم الرد بـ RST البورتات اللي مو مغلقة : مفتوحة أو مرشحة
04b178a9cf7048c21256988b8b2343e3.png


224e01a913a1ce7b0fb2b9290ff5e1c8.png


مثلا في النتيجة بالأعلى بنشوف فحص 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 اللي بمنع حركة البورت )


78eb3d6ba158542f2b3223184b032e64.png

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

74dc07da7351a5a7f258948ec59efccc.png


هاد بساعدنا نعرف أي بورتات مغلقة ونستخدم المعلومة هاي عشان نستنتج أي بورتات مفتوحة أو مرشحة بس بنلاقي بعض أنواع ال 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

الصورتين اللي تحت بتبين الحالة لما يكون البورت مفتوح ولما يكون البورت مغلق
7d28b756aed3b6eb72faf98d6974776c.png
👇
4304eacbc3db1af21657f285bc16ebce.png



مثال

كود:
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 المفتوحة والمغلقة على حد سواء
8ca5e5e0f6e0a1843cebe11b5b0785b3.png


بسبب سلوك البورتات المفتوحة والمغلقة لم يتمكن الفحص 👇 من اكتشاف أي بورتات مفتوحة على النظام المستهدف

كود:
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-

a991831cedbb2761dde1fe66012a7311.png

في المثال هاد عملنا فحص لجهاز معين قبل ما نركب عليه 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 بس بغض النظر إذا كان البورت مفتوح أو مغلق
5118dcb424d429376f09bf2f85db5bce.png


لو جربنا الفحص وفي 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

d76c5020f14ac0d66e7ff3812bb0bec3.png



اسئله
null




استخدم nmap لبدء فحص الـ null
مشاهدة المرفق 8717




FIN



استخدم nmap لبدء فحص FIN
مشاهدة المرفق 8716




Xmas



Maimon





Window + Custom + ACK





استخدم Nmap لبدء فحص ACK على الجهاز الافتراضي المستهدف









التزوير والتضليل Spoofing and Decoys


ببعض الشبكات ممكن تفحص جهاز باستخدام عنوان الـ IP وحتى عنوان MAC غير حقيقي
هاد الفحص مفيد فقط إذا كنت متأكد إنك راح تجيب رد من الجهاز لو حاولت تفحص جهاز من شبكة عشوائية باستخدام عنوان IP مزور مافي احتمال يجيك رد والنتائج ممكن تكون غير دقيقة


كود:
nmap -S SPOOFED_IP 10.10.1.7

الامر هاد يقوم بـ تحديد عنوان IP مزور كمصدر ( SPOOFED_IP ) لهذه الحزم وإرسالها إلى الجهاز المستهدف المحدد ( 10.10.1.7 )
45b982d501fd26deb2b381059b16f80c.png

إذا حابب تفحص بعنوان IP مزور بتتم العمليه بـ 3 خطوات
  1. الهاكر ببعث بيانات بعنوان IP مزور لجهاز الهدف
  2. جهاز الهدف بجاوب العنوان المزور كوجهة للرد
  3. الهاكر بجمع الردود عشان يشوف البورتات المفتوحة
وعادة بتوقع إنك تحدد واجهة الشبكة وتلغي فحص البينج ولذلك بتستخدم
كود:
nmap -e NET_INTERFACE -Pn -S SPOOFED_IP 10.10.178.213
@King.Of.Noobs يا رب ما يضربني Pn- :ROFLMAO:
وفي حالة إنك على نفس الشبكة مع الجهاز الهدف ممكن تزور عنوان MAC برضه يعني الهاكر بقدر يستخدم عنوان الـ MAC مزور
التزوير بشتغل فقط في بعض الحالات لما تكون موجودة شروط معينة فـ الهاكر ممكن يستخدم (Decoys) عشان يخلي الأمور أكتر تعقيداً الفكرة بظهر الفحص كأنه جاي من عدة عناوين IP عشان يختلط عنوان الهاكر فيهم يعني الفحص بظهر من 3 مصادر مختلفة وبالتالي الردود بتروح للـ (Decoys) كمان

الغرائز (Decoys) هي عبارة عن عناوين IP مزيفة يقوم الهاكر بتضمينها في عملية الفحص أو الهجوم على الشبكة
يقوم الهاكر بإدراج هذه العناوين كـ "غرائز" لجعل مسار الهجوم أو الفحص يبدو وكأنه قادم من عدة مصادر مختلفة بدلاً من مصدر واحد وهو الهاكر الفعلي هذا يعمل على تشتيت جهود الدفاع وجعلها أكثر صعوبة في تحديد مصدر الهجوم أو التعقب

ممكن تبدأ فحص هاد بتحديد عنوان IP معين أو عشوائي بعد D- مثلاً
كود:
nmap -D 10.10.0.1,10.10.0.2,ip-me 10.10.178.213
بخلي الفحص لـ 10.10.178.213 يظهر كأنه جاي من عناوين 10.10.0.1 و 10.10.0.2 وبعدين عنواني ip-me

754fc455556a424ca83f512665beaf7d.png








تجزئة الحزم Fragmented Packets

Firewall
الـ Firewall هي أداة أو جهاز أو برنامج أمان يتم استخدامه لتصفية حركة مرور الشبكة عن طريق إيقاف حركة المرور الواردة والصادرة غير المصرح بها بشكل اوضح هو برنامج أو جهاز عمله إنه يمنع الباكتات (أجزاء صغيرة من البيانات) تمر أو يحجبها بعتمد على قواعد بتكون إما بتسمح بكل الباكتات مع استثناءات أو بتحجب كل الباكتات مع استثناءات
مثلا بتقدر تحجب كل الباكتات اللي بتيجي لسيرفرك عدا اللي بيوصلوا للـ web server
الـ Firewall التقليدي بفحص IP header و transport layer header
و الـ Firewall الأكثر تطورًا بحاول كمان يفحص البيانات اللي بتنقلها طبقة الـ transport


IDS
نظام اكتشاف الاختراقات ( IDS ) بفحص باكتات الشبكة عشان يراقبها ويحللها عشان يكشف اذا كان في أنماط او سلوكية مثل محاولات الاختراق أو استخدام بروتوكولات غير مسموح فيها أو تواجد بيانات غير مشفرة بشكل صحيح وغيرها من الأنشطة غير المرغوب فيها , اذا اكتشف نمط معين او سلوك غريب بطلع تنبيه

تقسيم البيانات
عملية تقسيم البيانات لأجزاء صغيرة تسمى باكتات باستخدام Nmap بنعمل تجزئة للباكتات
استخدام خيار f- ليتم تقسيم بيانات الـ IP إلى 8 بايتات أو أقل و
استخدام خيار ff- ليتم تقسيم البيانات لـ 16 بايتًا
بتقدر تغير القيمة الافتراضية باستخدام mtu--


نقارن لما نعمل تقسم للبيانات

لما نستخدم الامر
كود:
sudo nmap -sS -p80 10.20.30.144

b817b7d8b8ef9ee64dd9494e31def426.png

اول سطرين بإمكاننا نشوف استعلام الـ 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

953fd599d2afaa8efb36923b02707d2b.png

إذا أضفت ff- أو f -f- ستكون تجزئة البيانات مضاعفات لـ 16 يعني يتم تقسيم 24 بايتًا من الـ TCP header عبر حزمتين IP الأولى بتحتوي على 16 بايتًا والثانية بتحتوي على ( الباقي ) الـ 8 بايت من الـ TCP header
حيث يحتوي كل جزء منهم على 20 بايت من الـ IP header و 8 بايت من الـ TCP header

إذا كنت تفضل زيادة حجم حزمك لجعلها تبدو جيده يمكنك استخدام الخيار data-length NUM-- حيث يُحدد num عدد البايتات التي ترغب في إلحاقها بحزمك






فحص Idle / Zombie


فحص الـ Idle/Zombie هو عبارة عن طريقة لعمل فحص للشبكة بطريقة سرية , الفكرة إنك تنتحال عنوان IP بس
سلبياته
ما بشتغل إلا في أنظمة معينة
ما بنفع إلا في ببعض الشبكات الخاصة يعني لازم تكون موجود في مكان تقدر تراقب فيه حركة البيانات

فحص الـ Idle أو المعروفة أيضًا بفحص الـ zombie هاي الطريقة بتحتاج لجهاز واقف عن العمل ( خامل ) متصل بالشبكة وبإمكانك التواصل معه
الـ Nmap بظهر كل فحص بمنظور جهاز الـ idle (الـ zombie) بعدها بتأكد من مؤشرات مثل معرف الـ IP (IP ID) في الـ IP header


مثلاً الرسم التوضيحي بظهر النظام المهاجم وهو بفحص جهاز idle اللي هو بحالتنا طابعة متعددة الوظائف بإرسال SYN/ACK برد بحزمة RST بتحتوي على الـ id للـ ip

a93e181f0effe000554a8b307448bbb2.png


في 3 سيناريوهات محتملة

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


الحاله الاولى وهي اذا كان البورت مغلق
8e28bf940936ddbc2367b193ea3550b8.png



الحاله الثانيه وهي اذا كان البورت مفتوح
2b0de492e2154a30760852e07cebae0e.png


بالاخر برسل المهاجم 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) بتحتاج لـ ثلاث خطوات لتحديد إذا كان المنفذ مفتوح :
  1. نرسل طلب للجهاز الخامل لنحصل على الـ id للـ ip الخاص فيه
  2. إرسال حزمة SYN لمنفذ TCP على الجهاز المستهدف يجب أن تكون الحزمة مزورة لتبدو وكأنها قادمة من عنوان IP لجهاز الـ idle (الـ zombie)
  3. نرسل طلب مره ثانيه للجهاز الخامل عشان نقارن بين الـ id للـ ip الخاص فيه الجديد و الـ id للـ ip الذي تم استلامه بالخطوه الاولى



إذا كان جهاز الـ idle مشغول بأداء مهام أو عمليات أخرى كل الـ IP IDs الراجعة مارح تكون مفيدة لانها احتمال يصير في تداخل بين الفحص مع العمليات اللي بقوم فيها


لقد اكتشفت طابعة شبكة نادرًا ما تستخدم بعنوان IP 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







ملخص

ملخص جزء 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 بدون إرسال أي flagsudo nmap -sN 10.10.98.105
مسح البورتات TCP بإرسال FIN flagsudo nmap -sF 10.10.98.105
مسح البورتات TCP بإرسال Xmas flagsudo nmap -sX 10.10.98.105
مسح البورتات TCP بإرسال Maimon flagsudo nmap -sM 10.10.98.105
مسح البورتات TCP بإرسال ACK flagsudo nmap -sA 10.10.98.105
مسح البورتات TCP بإرسال Window flagsudo nmap -sW 10.10.98.105
مسح مخصص للبورتات TCPsudo nmap --scanflags URGACKPSHRSTSYNFIN 10.10.98.105
تزييف عنوان IP المصدرsudo nmap -S SPOOFED_IP 10.10.98.105
تزييف عنوان MACspoof-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-تفاصيل تصحيح الأخطاء مطولة جداً
الله يعطيك ألف عافية 🔥
 
هذا الشغل ولا بلاش 👏🔥🔥🔥
تم التقييم
 
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

بشكل عام في حالتين للـ Ports :
  1. مفتوح : يعني أن هناك خدمة تستمع على هذا الـ Port
  2. مغلق : يعني أنه لا يوجد خدمة تستمع على هذا الـ Port
بس لازم نوخذ بعين الاعتبار تأثير جدران الحماية ( الفاير وولز ) فـ ممكن يكون الـ Port مفتوحاً بس جدار الحماية بمنع الحزم ( الباكتات ) من المرور

لذلك Nmap تعتبر ست حالات :
  1. مفتوح Open : يعني أن هناك خدمة تستمع على الـ Port المحدد
  2. مغلق Closed : يعني أنه لا يوجد خدمة تستمع على الـ Port المحدد، ولكن الـ Port متاح. بمعنى أنه يمكن الوصول إليه ولكنه قد يكون محجوباً بواسطة جدار الحماية أو برامج الأمان الأخرى
  3. مرشح Filtered : يعني أن Nmap لا تستطيع تحديد ما إذا كان الـ Port مفتوحاً أو مغلقاً لأن الـ Port غير متاح. يحدث هذا عادةً بسبب جدار الحماية الذي يمنع Nmap من الوصول إلى هذا الـ Port
  4. غير مرشح Unfiltered : يعني أن Nmap لا تستطيع تحديد ما إذا كان الـ Port مفتوحاً أو مغلقاً على الرغم من أن الـ Port متاح يحدث هذا عند استخدام مسح ACK -sA
  5. مفتوح|مرشح Open|Filtered : يعني أن Nmap لا تستطيع تحديد ما إذا كان الـ Port مفتوحاً أم مرشحاً
  6. مغلق|مرشح Closed|Filtered : يعني أن Nmap لا تستطيع تحديد ما إذا كان الـ Port مغلقاً أم مرشحاً










الـ 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 بايت
79ca8e4acbd573a27cee413cde927769.png

اول سطر عننا رقم منفذ الـ TCP للمصدر والواجهه من الصوره تم تحديد لرقم المنفذ 2 بايت ( 16 بت ) يعني الرقم نطاقه 0 - 65535
بالصف الثاني رقم تسلسلي وبالصف الثالث رقم الـ acknowledgement

كب صف يحتوي على 4 بايت ( 32 بت ) * 6 صفوف بإجمالي 24 بايت


أول اشي إحنا لازم نركز على الـ Flags اللي برنامج Nmap بقدر يضيفها أو يشيلها

الـ Flags هاي اللي هي باللون الأحمر بالصوره فوق لما نحكي Setting a flag bit يعني بنحط قيمة 1 فيه


عند تحديد قيمة البتات يتم ذلك من الشمال إلى اليمين في رأس الـ TCP حيث يُمكن تعيين قيمة 1 لتفعيل البت وقيمة 0 لتعطيله

هاي البتات تُستخدم للتحكم في تدفق البيانات وإدارة الاتصالات بين الأجهزة في شبكة الإنترنت


الـ Flags في رأس TCP هي :
  1. الـ URG : هاي بتحكي إن في بيانات urgent جاية ولازم نعاملها فورًا
  2. الـ ACK : هاي بتحكي إنها استلمت البيانات اللي وصلت
  3. الـ PSH : هاي بتطلب من TCP يمرر البيانات للتطبيق فورًا
  4. الـ RST : هاي بتستخدم لإعادة ضبط الاتصال وقد ترسلها جهاز تاني زي جدار الحماية لقطع الاتصال
  5. الـ SYN : هاي بتستخدم لبدء الاتصال ومزامنة التسلسل مع الجهاز الثاني
  6. الـ FIN : هاي بتحكي إن المرسل خلصت بياناته ومافي حاجة ثانية يرسلها







فحص المنافذ ببروتوكول TCP Connect


العميل ببعث باكت TCP بالـ SYN flag
السيرفر برد بـ SYN/ACK لو البورت مفتوح
في النهاية العميل بكمل الـ handshake بالبعث بـ ACK


8390020a13d6f22f49233833f6265de6.png

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

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

a975503bd3e006bd32147ba9c9faede4.png


19ebc8172c930867c50e214b630ef4ec.png

نلاحظ إن البورت 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 عبر الجهاز تم تثبيت خدمة جديدة على هذا الجهاز الافتراضي منذ آخر عملية فحص قمنا بها المثال فوق









فحص المنافذ ببروتوكول TCP SYN


لما نحكي عن الـ TCP SYN Scan يعني بنحكي عن طريقة لفحص البورتات على جهاز معين بس بطريقة مختلفة
أول اشي عننا نوعين من الـ Scans اللي بنقدر نستخدمهم
الأول Connect Scan
التاني SYN Scan

الموضوع ببدأ بإنك بتحتاج لمستخدم privileged عشان نقدر تستخدم الـ SYN Scan

الفكرة الأساسية بالـ SYN Scan إنه ببعث باكت SYN للجهاز اللي بنحاول نفحصه
لو كان البورت مفتوح برد علينا الجهاز بـ SYN / ACK بنرد عليه بـ Reset باكت ( بمجرد ما يتلقى الاتصال يقطع الاتصال هذا يفيد بانه فرصه تسجيل الحدث هاد بالسجلات قليل )

بشكل عام الـ SYN Scan بقدملك فكرة سريعة وسهلة عن حالة البورتات بدون ما تدخل في عملية اتصال كاملة مع الجهاز

يمكن تحديد هاذ النوع من المسح عن طريق اضافه sS-

48e631fd3deba4a2b759ca48405fcc08.png
مثال

كود:
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 اللي حكينا عنهم

fe642b2fafb70cbaa2531d2c41d6cddb.png
في النصف العلوي بإمكاننا تشوف الحركه اللي صارت TCP Connect scan -sT بطلب أي منفذ TCP مفتوح من Nmap إكمال مصافحة TCP ثلاثية الاتجاهات قبل إغلاق الاتصال
في النصف السفلي بإمكاننا تشوف الحركه اللي صارت SYN -sS ما بحتاج لإكمال مصافحة TCP ثلاثية الاتجاهات ترسل Nmap حزمة RST بمجرد تلقي حزمة SYN/ACK



تم تثبيت بعض برامج الخادم الجديدة منذ آخر مرة قمنا فيها بفحصها استخدم الـ terminal لتنفيذ
كود:
nmap -sS 10.10.231.181






فحص المنافذ ببروتوكول UDP


الـ UDP هو بروتوكول غير متصل يعني ما يحتاج لأي تبادل بيانات لإنشاء الاتصال
سبق ووضحت طريقه عمله



بإمكانك استخدام خيار sU- في nmap لتحديد فحص UDP ويمكن أيضًا دمجه مع فحص TCP آخر إذا أرسلنا باكت UDP إلى منفذ مفتوح ما راح يجينا أي 👆

8b8b32517699b96777641a97dbf9d880.png

وبالنظر إلى برنامج 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
تم تثبيت خدمة جديدة منذ آخر فحص








تحديد نطاق المسح


سبق وحكينا عن p- عشان تحدد بورتات معينه او رينج



اذا حاب تعمل فحص للمنافذ الأكثر استخداما حط 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 ( Null / FIN / Xmas / Maimon / ACK / Window / Custom Scan )

Null Scan

الـ Null Scan بهدف إنه يفحص البورتات بدون ما يرسل أي Flags يعني بتبعث بيانات بروتوكول TCP بس الـ Flags فيها صفر وبتستخدم التقنية هاي في فحص الأمان
( عند استخدامها يجب استخدام مستخدم privileged )
لما يوصل الباكت اللي ما فيه أي Flags على بورت مفتوح ما بنتج رد من الجهاز المستهدف
هيك بأنه إما البورت مفتوح أو مغلق و في جدار ناري بمنع الرد على الباكتات اللي ما فيها Flags

لكن لو كان مغلق بعطينا رد بباكت RST فبنقدر نعرف انو عدم الرد بـ RST البورتات اللي مو مغلقة : مفتوحة أو مرشحة
04b178a9cf7048c21256988b8b2343e3.png


224e01a913a1ce7b0fb2b9290ff5e1c8.png


مثلا في النتيجة بالأعلى بنشوف فحص 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 اللي بمنع حركة البورت )


78eb3d6ba158542f2b3223184b032e64.png

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

74dc07da7351a5a7f258948ec59efccc.png


هاد بساعدنا نعرف أي بورتات مغلقة ونستخدم المعلومة هاي عشان نستنتج أي بورتات مفتوحة أو مرشحة بس بنلاقي بعض أنواع ال 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

الصورتين اللي تحت بتبين الحالة لما يكون البورت مفتوح ولما يكون البورت مغلق
7d28b756aed3b6eb72faf98d6974776c.png
👇
4304eacbc3db1af21657f285bc16ebce.png



مثال

كود:
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 المفتوحة والمغلقة على حد سواء
8ca5e5e0f6e0a1843cebe11b5b0785b3.png


بسبب سلوك البورتات المفتوحة والمغلقة لم يتمكن الفحص 👇 من اكتشاف أي بورتات مفتوحة على النظام المستهدف

كود:
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-

a991831cedbb2761dde1fe66012a7311.png

في المثال هاد عملنا فحص لجهاز معين قبل ما نركب عليه 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 بس بغض النظر إذا كان البورت مفتوح أو مغلق
5118dcb424d429376f09bf2f85db5bce.png


لو جربنا الفحص وفي 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

d76c5020f14ac0d66e7ff3812bb0bec3.png



اسئله
null




استخدم nmap لبدء فحص الـ null
مشاهدة المرفق 8717




FIN



استخدم nmap لبدء فحص FIN
مشاهدة المرفق 8716




Xmas



Maimon





Window + Custom + ACK





استخدم Nmap لبدء فحص ACK على الجهاز الافتراضي المستهدف









التزوير والتضليل Spoofing and Decoys


ببعض الشبكات ممكن تفحص جهاز باستخدام عنوان الـ IP وحتى عنوان MAC غير حقيقي
هاد الفحص مفيد فقط إذا كنت متأكد إنك راح تجيب رد من الجهاز لو حاولت تفحص جهاز من شبكة عشوائية باستخدام عنوان IP مزور مافي احتمال يجيك رد والنتائج ممكن تكون غير دقيقة


كود:
nmap -S SPOOFED_IP 10.10.1.7

الامر هاد يقوم بـ تحديد عنوان IP مزور كمصدر ( SPOOFED_IP ) لهذه الحزم وإرسالها إلى الجهاز المستهدف المحدد ( 10.10.1.7 )
45b982d501fd26deb2b381059b16f80c.png

إذا حابب تفحص بعنوان IP مزور بتتم العمليه بـ 3 خطوات
  1. الهاكر ببعث بيانات بعنوان IP مزور لجهاز الهدف
  2. جهاز الهدف بجاوب العنوان المزور كوجهة للرد
  3. الهاكر بجمع الردود عشان يشوف البورتات المفتوحة
وعادة بتوقع إنك تحدد واجهة الشبكة وتلغي فحص البينج ولذلك بتستخدم
كود:
nmap -e NET_INTERFACE -Pn -S SPOOFED_IP 10.10.178.213
@King.Of.Noobs يا رب ما يضربني Pn- :ROFLMAO:
وفي حالة إنك على نفس الشبكة مع الجهاز الهدف ممكن تزور عنوان MAC برضه يعني الهاكر بقدر يستخدم عنوان الـ MAC مزور
التزوير بشتغل فقط في بعض الحالات لما تكون موجودة شروط معينة فـ الهاكر ممكن يستخدم (Decoys) عشان يخلي الأمور أكتر تعقيداً الفكرة بظهر الفحص كأنه جاي من عدة عناوين IP عشان يختلط عنوان الهاكر فيهم يعني الفحص بظهر من 3 مصادر مختلفة وبالتالي الردود بتروح للـ (Decoys) كمان

الغرائز (Decoys) هي عبارة عن عناوين IP مزيفة يقوم الهاكر بتضمينها في عملية الفحص أو الهجوم على الشبكة
يقوم الهاكر بإدراج هذه العناوين كـ "غرائز" لجعل مسار الهجوم أو الفحص يبدو وكأنه قادم من عدة مصادر مختلفة بدلاً من مصدر واحد وهو الهاكر الفعلي هذا يعمل على تشتيت جهود الدفاع وجعلها أكثر صعوبة في تحديد مصدر الهجوم أو التعقب

ممكن تبدأ فحص هاد بتحديد عنوان IP معين أو عشوائي بعد D- مثلاً
كود:
nmap -D 10.10.0.1,10.10.0.2,ip-me 10.10.178.213
بخلي الفحص لـ 10.10.178.213 يظهر كأنه جاي من عناوين 10.10.0.1 و 10.10.0.2 وبعدين عنواني ip-me

754fc455556a424ca83f512665beaf7d.png








تجزئة الحزم Fragmented Packets

Firewall
الـ Firewall هي أداة أو جهاز أو برنامج أمان يتم استخدامه لتصفية حركة مرور الشبكة عن طريق إيقاف حركة المرور الواردة والصادرة غير المصرح بها بشكل اوضح هو برنامج أو جهاز عمله إنه يمنع الباكتات (أجزاء صغيرة من البيانات) تمر أو يحجبها بعتمد على قواعد بتكون إما بتسمح بكل الباكتات مع استثناءات أو بتحجب كل الباكتات مع استثناءات
مثلا بتقدر تحجب كل الباكتات اللي بتيجي لسيرفرك عدا اللي بيوصلوا للـ web server
الـ Firewall التقليدي بفحص IP header و transport layer header
و الـ Firewall الأكثر تطورًا بحاول كمان يفحص البيانات اللي بتنقلها طبقة الـ transport


IDS
نظام اكتشاف الاختراقات ( IDS ) بفحص باكتات الشبكة عشان يراقبها ويحللها عشان يكشف اذا كان في أنماط او سلوكية مثل محاولات الاختراق أو استخدام بروتوكولات غير مسموح فيها أو تواجد بيانات غير مشفرة بشكل صحيح وغيرها من الأنشطة غير المرغوب فيها , اذا اكتشف نمط معين او سلوك غريب بطلع تنبيه

تقسيم البيانات
عملية تقسيم البيانات لأجزاء صغيرة تسمى باكتات باستخدام Nmap بنعمل تجزئة للباكتات
استخدام خيار f- ليتم تقسيم بيانات الـ IP إلى 8 بايتات أو أقل و
استخدام خيار ff- ليتم تقسيم البيانات لـ 16 بايتًا
بتقدر تغير القيمة الافتراضية باستخدام mtu--


نقارن لما نعمل تقسم للبيانات

لما نستخدم الامر
كود:
sudo nmap -sS -p80 10.20.30.144

b817b7d8b8ef9ee64dd9494e31def426.png

اول سطرين بإمكاننا نشوف استعلام الـ 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

953fd599d2afaa8efb36923b02707d2b.png

إذا أضفت ff- أو f -f- ستكون تجزئة البيانات مضاعفات لـ 16 يعني يتم تقسيم 24 بايتًا من الـ TCP header عبر حزمتين IP الأولى بتحتوي على 16 بايتًا والثانية بتحتوي على ( الباقي ) الـ 8 بايت من الـ TCP header
حيث يحتوي كل جزء منهم على 20 بايت من الـ IP header و 8 بايت من الـ TCP header

إذا كنت تفضل زيادة حجم حزمك لجعلها تبدو جيده يمكنك استخدام الخيار data-length NUM-- حيث يُحدد num عدد البايتات التي ترغب في إلحاقها بحزمك






فحص Idle / Zombie


فحص الـ Idle/Zombie هو عبارة عن طريقة لعمل فحص للشبكة بطريقة سرية , الفكرة إنك تنتحال عنوان IP بس
سلبياته
ما بشتغل إلا في أنظمة معينة
ما بنفع إلا في ببعض الشبكات الخاصة يعني لازم تكون موجود في مكان تقدر تراقب فيه حركة البيانات

فحص الـ Idle أو المعروفة أيضًا بفحص الـ zombie هاي الطريقة بتحتاج لجهاز واقف عن العمل ( خامل ) متصل بالشبكة وبإمكانك التواصل معه
الـ Nmap بظهر كل فحص بمنظور جهاز الـ idle (الـ zombie) بعدها بتأكد من مؤشرات مثل معرف الـ IP (IP ID) في الـ IP header


مثلاً الرسم التوضيحي بظهر النظام المهاجم وهو بفحص جهاز idle اللي هو بحالتنا طابعة متعددة الوظائف بإرسال SYN/ACK برد بحزمة RST بتحتوي على الـ id للـ ip

a93e181f0effe000554a8b307448bbb2.png


في 3 سيناريوهات محتملة

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


الحاله الاولى وهي اذا كان البورت مغلق
8e28bf940936ddbc2367b193ea3550b8.png



الحاله الثانيه وهي اذا كان البورت مفتوح
2b0de492e2154a30760852e07cebae0e.png


بالاخر برسل المهاجم 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) بتحتاج لـ ثلاث خطوات لتحديد إذا كان المنفذ مفتوح :
  1. نرسل طلب للجهاز الخامل لنحصل على الـ id للـ ip الخاص فيه
  2. إرسال حزمة SYN لمنفذ TCP على الجهاز المستهدف يجب أن تكون الحزمة مزورة لتبدو وكأنها قادمة من عنوان IP لجهاز الـ idle (الـ zombie)
  3. نرسل طلب مره ثانيه للجهاز الخامل عشان نقارن بين الـ id للـ ip الخاص فيه الجديد و الـ id للـ ip الذي تم استلامه بالخطوه الاولى



إذا كان جهاز الـ idle مشغول بأداء مهام أو عمليات أخرى كل الـ IP IDs الراجعة مارح تكون مفيدة لانها احتمال يصير في تداخل بين الفحص مع العمليات اللي بقوم فيها


لقد اكتشفت طابعة شبكة نادرًا ما تستخدم بعنوان IP 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







ملخص

ملخص جزء 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 بدون إرسال أي flagsudo nmap -sN 10.10.98.105
مسح البورتات TCP بإرسال FIN flagsudo nmap -sF 10.10.98.105
مسح البورتات TCP بإرسال Xmas flagsudo nmap -sX 10.10.98.105
مسح البورتات TCP بإرسال Maimon flagsudo nmap -sM 10.10.98.105
مسح البورتات TCP بإرسال ACK flagsudo nmap -sA 10.10.98.105
مسح البورتات TCP بإرسال Window flagsudo nmap -sW 10.10.98.105
مسح مخصص للبورتات TCPsudo nmap --scanflags URGACKPSHRSTSYNFIN 10.10.98.105
تزييف عنوان IP المصدرsudo nmap -S SPOOFED_I 10.10.98.10
تزييف عنوان MACspoof-mac SPOOFED_MAC--
مسح برمجيات باستخدام عنوان IP مزيفnmap -D DECOY_IP,M 10.10.98.105
مسح نائم (زومبي)sudo nmap -sI ZOMBIE_IP 10.10.98.105
تجزئة بيانات IP
الخيارالغرض
reason--شرح كيف قام Nmap بتحدي

netsecmodule.png

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

بشكل عام في حالتين للـ Ports :
  1. مفتوح : يعني أن هناك خدمة تستمع على هذا الـ Port
  2. مغلق : يعني أنه لا يوجد خدمة تستمع على هذا الـ Port
بس لازم نوخذ بعين الاعتبار تأثير جدران الحماية ( الفاير وولز ) فـ ممكن يكون الـ Port مفتوحاً بس جدار الحماية بمنع الحزم ( الباكتات ) من المرور

لذلك Nmap تعتبر ست حالات :
  1. مفتوح Open : يعني أن هناك خدمة تستمع على الـ Port المحدد
  2. مغلق Closed : يعني أنه لا يوجد خدمة تستمع على الـ Port المحدد، ولكن الـ Port متاح. بمعنى أنه يمكن الوصول إليه ولكنه قد يكون محجوباً بواسطة جدار الحماية أو برامج الأمان الأخرى
  3. مرشح Filtered : يعني أن Nmap لا تستطيع تحديد ما إذا كان الـ Port مفتوحاً أو مغلقاً لأن الـ Port غير متاح. يحدث هذا عادةً بسبب جدار الحماية الذي يمنع Nmap من الوصول إلى هذا الـ Port
  4. غير مرشح Unfiltered : يعني أن Nmap لا تستطيع تحديد ما إذا كان الـ Port مفتوحاً أو مغلقاً على الرغم من أن الـ Port متاح يحدث هذا عند استخدام مسح ACK -sA
  5. مفتوح|مرشح Open|Filtered : يعني أن Nmap لا تستطيع تحديد ما إذا كان الـ Port مفتوحاً أم مرشحاً
  6. مغلق|مرشح Closed|Filtered : يعني أن Nmap لا تستطيع تحديد ما إذا كان الـ Port مغلقاً أم مرشحاً










الـ 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 بايت
79ca8e4acbd573a27cee413cde927769.png

اول سطر عننا رقم منفذ الـ TCP للمصدر والواجهه من الصوره تم تحديد لرقم المنفذ 2 بايت ( 16 بت ) يعني الرقم نطاقه 0 - 65535
بالصف الثاني رقم تسلسلي وبالصف الثالث رقم الـ acknowledgement

كب صف يحتوي على 4 بايت ( 32 بت ) * 6 صفوف بإجمالي 24 بايت


أول اشي إحنا لازم نركز على الـ Flags اللي برنامج Nmap بقدر يضيفها أو يشيلها

الـ Flags هاي اللي هي باللون الأحمر بالصوره فوق لما نحكي Setting a flag bit يعني بنحط قيمة 1 فيه


عند تحديد قيمة البتات يتم ذلك من الشمال إلى اليمين في رأس الـ TCP حيث يُمكن تعيين قيمة 1 لتفعيل البت وقيمة 0 لتعطيله

هاي البتات تُستخدم للتحكم في تدفق البيانات وإدارة الاتصالات بين الأجهزة في شبكة الإنترنت


الـ Flags في رأس TCP هي :
  1. الـ URG : هاي بتحكي إن في بيانات urgent جاية ولازم نعاملها فورًا
  2. الـ ACK : هاي بتحكي إنها استلمت البيانات اللي وصلت
  3. الـ PSH : هاي بتطلب من TCP يمرر البيانات للتطبيق فورًا
  4. الـ RST : هاي بتستخدم لإعادة ضبط الاتصال وقد ترسلها جهاز تاني زي جدار الحماية لقطع الاتصال
  5. الـ SYN : هاي بتستخدم لبدء الاتصال ومزامنة التسلسل مع الجهاز الثاني
  6. الـ FIN : هاي بتحكي إن المرسل خلصت بياناته ومافي حاجة ثانية يرسلها







فحص المنافذ ببروتوكول TCP Connect


العميل ببعث باكت TCP بالـ SYN flag
السيرفر برد بـ SYN/ACK لو البورت مفتوح
في النهاية العميل بكمل الـ handshake بالبعث بـ ACK


8390020a13d6f22f49233833f6265de6.png

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

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

a975503bd3e006bd32147ba9c9faede4.png


19ebc8172c930867c50e214b630ef4ec.png

نلاحظ إن البورت 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 عبر الجهاز تم تثبيت خدمة جديدة على هذا الجهاز الافتراضي منذ آخر عملية فحص قمنا بها المثال فوق









فحص المنافذ ببروتوكول TCP SYN


لما نحكي عن الـ TCP SYN Scan يعني بنحكي عن طريقة لفحص البورتات على جهاز معين بس بطريقة مختلفة
أول اشي عننا نوعين من الـ Scans اللي بنقدر نستخدمهم
الأول Connect Scan
التاني SYN Scan

الموضوع ببدأ بإنك بتحتاج لمستخدم privileged عشان نقدر تستخدم الـ SYN Scan

الفكرة الأساسية بالـ SYN Scan إنه ببعث باكت SYN للجهاز اللي بنحاول نفحصه
لو كان البورت مفتوح برد علينا الجهاز بـ SYN / ACK بنرد عليه بـ Reset باكت ( بمجرد ما يتلقى الاتصال يقطع الاتصال هذا يفيد بانه فرصه تسجيل الحدث هاد بالسجلات قليل )

بشكل عام الـ SYN Scan بقدملك فكرة سريعة وسهلة عن حالة البورتات بدون ما تدخل في عملية اتصال كاملة مع الجهاز

يمكن تحديد هاذ النوع من المسح عن طريق اضافه sS-

48e631fd3deba4a2b759ca48405fcc08.png
مثال

كود:
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 اللي حكينا عنهم

fe642b2fafb70cbaa2531d2c41d6cddb.png
في النصف العلوي بإمكاننا تشوف الحركه اللي صارت TCP Connect scan -sT بطلب أي منفذ TCP مفتوح من Nmap إكمال مصافحة TCP ثلاثية الاتجاهات قبل إغلاق الاتصال
في النصف السفلي بإمكاننا تشوف الحركه اللي صارت SYN -sS ما بحتاج لإكمال مصافحة TCP ثلاثية الاتجاهات ترسل Nmap حزمة RST بمجرد تلقي حزمة SYN/ACK



تم تثبيت بعض برامج الخادم الجديدة منذ آخر مرة قمنا فيها بفحصها استخدم الـ terminal لتنفيذ
كود:
nmap -sS 10.10.231.181






فحص المنافذ ببروتوكول UDP


الـ UDP هو بروتوكول غير متصل يعني ما يحتاج لأي تبادل بيانات لإنشاء الاتصال
سبق ووضحت طريقه عمله



بإمكانك استخدام خيار sU- في nmap لتحديد فحص UDP ويمكن أيضًا دمجه مع فحص TCP آخر إذا أرسلنا باكت UDP إلى منفذ مفتوح ما راح يجينا أي 👆

8b8b32517699b96777641a97dbf9d880.png

وبالنظر إلى برنامج 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
تم تثبيت خدمة جديدة منذ آخر فحص








تحديد نطاق المسح


سبق وحكينا عن p- عشان تحدد بورتات معينه او رينج



اذا حاب تعمل فحص للمنافذ الأكثر استخداما حط 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 ( Null / FIN / Xmas / Maimon / ACK / Window / Custom Scan )

Null Scan

الـ Null Scan بهدف إنه يفحص البورتات بدون ما يرسل أي Flags يعني بتبعث بيانات بروتوكول TCP بس الـ Flags فيها صفر وبتستخدم التقنية هاي في فحص الأمان
( عند استخدامها يجب استخدام مستخدم privileged )
لما يوصل الباكت اللي ما فيه أي Flags على بورت مفتوح ما بنتج رد من الجهاز المستهدف
هيك بأنه إما البورت مفتوح أو مغلق و في جدار ناري بمنع الرد على الباكتات اللي ما فيها Flags

لكن لو كان مغلق بعطينا رد بباكت RST فبنقدر نعرف انو عدم الرد بـ RST البورتات اللي مو مغلقة : مفتوحة أو مرشحة
04b178a9cf7048c21256988b8b2343e3.png


224e01a913a1ce7b0fb2b9290ff5e1c8.png


مثلا في النتيجة بالأعلى بنشوف فحص 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 اللي بمنع حركة البورت )


78eb3d6ba158542f2b3223184b032e64.png

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

74dc07da7351a5a7f258948ec59efccc.png


هاد بساعدنا نعرف أي بورتات مغلقة ونستخدم المعلومة هاي عشان نستنتج أي بورتات مفتوحة أو مرشحة بس بنلاقي بعض أنواع ال 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

الصورتين اللي تحت بتبين الحالة لما يكون البورت مفتوح ولما يكون البورت مغلق
7d28b756aed3b6eb72faf98d6974776c.png
👇
4304eacbc3db1af21657f285bc16ebce.png



مثال

كود:
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 المفتوحة والمغلقة على حد سواء
8ca5e5e0f6e0a1843cebe11b5b0785b3.png


بسبب سلوك البورتات المفتوحة والمغلقة لم يتمكن الفحص 👇 من اكتشاف أي بورتات مفتوحة على النظام المستهدف

كود:
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-

a991831cedbb2761dde1fe66012a7311.png

في المثال هاد عملنا فحص لجهاز معين قبل ما نركب عليه 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 بس بغض النظر إذا كان البورت مفتوح أو مغلق
5118dcb424d429376f09bf2f85db5bce.png


لو جربنا الفحص وفي 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

d76c5020f14ac0d66e7ff3812bb0bec3.png



اسئله
null




استخدم nmap لبدء فحص الـ null
مشاهدة المرفق 8717




FIN



استخدم nmap لبدء فحص FIN
مشاهدة المرفق 8716




Xmas



Maimon





Window + Custom + ACK





استخدم Nmap لبدء فحص ACK على الجهاز الافتراضي المستهدف









التزوير والتضليل Spoofing and Decoys


ببعض الشبكات ممكن تفحص جهاز باستخدام عنوان الـ IP وحتى عنوان MAC غير حقيقي
هاد الفحص مفيد فقط إذا كنت متأكد إنك راح تجيب رد من الجهاز لو حاولت تفحص جهاز من شبكة عشوائية باستخدام عنوان IP مزور مافي احتمال يجيك رد والنتائج ممكن تكون غير دقيقة


كود:
nmap -S SPOOFED_IP 10.10.1.7

الامر هاد يقوم بـ تحديد عنوان IP مزور كمصدر ( SPOOFED_IP ) لهذه الحزم وإرسالها إلى الجهاز المستهدف المحدد ( 10.10.1.7 )
45b982d501fd26deb2b381059b16f80c.png

إذا حابب تفحص بعنوان IP مزور بتتم العمليه بـ 3 خطوات
  1. الهاكر ببعث بيانات بعنوان IP مزور لجهاز الهدف
  2. جهاز الهدف بجاوب العنوان المزور كوجهة للرد
  3. الهاكر بجمع الردود عشان يشوف البورتات المفتوحة
وعادة بتوقع إنك تحدد واجهة الشبكة وتلغي فحص البينج ولذلك بتستخدم
كود:
nmap -e NET_INTERFACE -Pn -S SPOOFED_IP 10.10.178.213
@King.Of.Noobs يا رب ما يضربني Pn- :ROFLMAO:
وفي حالة إنك على نفس الشبكة مع الجهاز الهدف ممكن تزور عنوان MAC برضه يعني الهاكر بقدر يستخدم عنوان الـ MAC مزور
التزوير بشتغل فقط في بعض الحالات لما تكون موجودة شروط معينة فـ الهاكر ممكن يستخدم (Decoys) عشان يخلي الأمور أكتر تعقيداً الفكرة بظهر الفحص كأنه جاي من عدة عناوين IP عشان يختلط عنوان الهاكر فيهم يعني الفحص بظهر من 3 مصادر مختلفة وبالتالي الردود بتروح للـ (Decoys) كمان

الغرائز (Decoys) هي عبارة عن عناوين IP مزيفة يقوم الهاكر بتضمينها في عملية الفحص أو الهجوم على الشبكة
يقوم الهاكر بإدراج هذه العناوين كـ "غرائز" لجعل مسار الهجوم أو الفحص يبدو وكأنه قادم من عدة مصادر مختلفة بدلاً من مصدر واحد وهو الهاكر الفعلي هذا يعمل على تشتيت جهود الدفاع وجعلها أكثر صعوبة في تحديد مصدر الهجوم أو التعقب

ممكن تبدأ فحص هاد بتحديد عنوان IP معين أو عشوائي بعد D- مثلاً
كود:
nmap -D 10.10.0.1,10.10.0.2,ip-me 10.10.178.213
بخلي الفحص لـ 10.10.178.213 يظهر كأنه جاي من عناوين 10.10.0.1 و 10.10.0.2 وبعدين عنواني ip-me

754fc455556a424ca83f512665beaf7d.png








تجزئة الحزم Fragmented Packets

Firewall
الـ Firewall هي أداة أو جهاز أو برنامج أمان يتم استخدامه لتصفية حركة مرور الشبكة عن طريق إيقاف حركة المرور الواردة والصادرة غير المصرح بها بشكل اوضح هو برنامج أو جهاز عمله إنه يمنع الباكتات (أجزاء صغيرة من البيانات) تمر أو يحجبها بعتمد على قواعد بتكون إما بتسمح بكل الباكتات مع استثناءات أو بتحجب كل الباكتات مع استثناءات
مثلا بتقدر تحجب كل الباكتات اللي بتيجي لسيرفرك عدا اللي بيوصلوا للـ web server
الـ Firewall التقليدي بفحص IP header و transport layer header
و الـ Firewall الأكثر تطورًا بحاول كمان يفحص البيانات اللي بتنقلها طبقة الـ transport


IDS
نظام اكتشاف الاختراقات ( IDS ) بفحص باكتات الشبكة عشان يراقبها ويحللها عشان يكشف اذا كان في أنماط او سلوكية مثل محاولات الاختراق أو استخدام بروتوكولات غير مسموح فيها أو تواجد بيانات غير مشفرة بشكل صحيح وغيرها من الأنشطة غير المرغوب فيها , اذا اكتشف نمط معين او سلوك غريب بطلع تنبيه

تقسيم البيانات
عملية تقسيم البيانات لأجزاء صغيرة تسمى باكتات باستخدام Nmap بنعمل تجزئة للباكتات
استخدام خيار f- ليتم تقسيم بيانات الـ IP إلى 8 بايتات أو أقل و
استخدام خيار ff- ليتم تقسيم البيانات لـ 16 بايتًا
بتقدر تغير القيمة الافتراضية باستخدام mtu--


نقارن لما نعمل تقسم للبيانات

لما نستخدم الامر
كود:
sudo nmap -sS -p80 10.20.30.144

b817b7d8b8ef9ee64dd9494e31def426.png

اول سطرين بإمكاننا نشوف استعلام الـ 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

953fd599d2afaa8efb36923b02707d2b.png

إذا أضفت ff- أو f -f- ستكون تجزئة البيانات مضاعفات لـ 16 يعني يتم تقسيم 24 بايتًا من الـ TCP header عبر حزمتين IP الأولى بتحتوي على 16 بايتًا والثانية بتحتوي على ( الباقي ) الـ 8 بايت من الـ TCP header
حيث يحتوي كل جزء منهم على 20 بايت من الـ IP header و 8 بايت من الـ TCP header

إذا كنت تفضل زيادة حجم حزمك لجعلها تبدو جيده يمكنك استخدام الخيار data-length NUM-- حيث يُحدد num عدد البايتات التي ترغب في إلحاقها بحزمك






فحص Idle / Zombie


فحص الـ Idle/Zombie هو عبارة عن طريقة لعمل فحص للشبكة بطريقة سرية , الفكرة إنك تنتحال عنوان IP بس
سلبياته
ما بشتغل إلا في أنظمة معينة
ما بنفع إلا في ببعض الشبكات الخاصة يعني لازم تكون موجود في مكان تقدر تراقب فيه حركة البيانات

فحص الـ Idle أو المعروفة أيضًا بفحص الـ zombie هاي الطريقة بتحتاج لجهاز واقف عن العمل ( خامل ) متصل بالشبكة وبإمكانك التواصل معه
الـ Nmap بظهر كل فحص بمنظور جهاز الـ idle (الـ zombie) بعدها بتأكد من مؤشرات مثل معرف الـ IP (IP ID) في الـ IP header


مثلاً الرسم التوضيحي بظهر النظام المهاجم وهو بفحص جهاز idle اللي هو بحالتنا طابعة متعددة الوظائف بإرسال SYN/ACK برد بحزمة RST بتحتوي على الـ id للـ ip

a93e181f0effe000554a8b307448bbb2.png


في 3 سيناريوهات محتملة

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


الحاله الاولى وهي اذا كان البورت مغلق
8e28bf940936ddbc2367b193ea3550b8.png



الحاله الثانيه وهي اذا كان البورت مفتوح
2b0de492e2154a30760852e07cebae0e.png


بالاخر برسل المهاجم 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) بتحتاج لـ ثلاث خطوات لتحديد إذا كان المنفذ مفتوح :
  1. نرسل طلب للجهاز الخامل لنحصل على الـ id للـ ip الخاص فيه
  2. إرسال حزمة SYN لمنفذ TCP على الجهاز المستهدف يجب أن تكون الحزمة مزورة لتبدو وكأنها قادمة من عنوان IP لجهاز الـ idle (الـ zombie)
  3. نرسل طلب مره ثانيه للجهاز الخامل عشان نقارن بين الـ id للـ ip الخاص فيه الجديد و الـ id للـ ip الذي تم استلامه بالخطوه الاولى



إذا كان جهاز الـ idle مشغول بأداء مهام أو عمليات أخرى كل الـ IP IDs الراجعة مارح تكون مفيدة لانها احتمال يصير في تداخل بين الفحص مع العمليات اللي بقوم فيها


لقد اكتشفت طابعة شبكة نادرًا ما تستخدم بعنوان IP 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







ملخص

ملخص جزء 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 بدون إرسال أي flagsudo nmap -sN 10.10.98.105
مسح البورتات TCP بإرسال FIN flagsudo nmap -sF 10.10.98.105
مسح البورتات TCP بإرسال Xmas flagsudo nmap -sX 10.10.98.105
مسح البورتات TCP بإرسال Maimon flagsudo nmap -sM 10.10.98.105
مسح البورتات TCP بإرسال ACK flagsudo nmap -sA 10.10.98.105
مسح البورتات TCP بإرسال Window flagsudo nmap -sW 10.10.98.105
مسح مخصص للبورتات TCPsudo nmap --scanflags URGACKPSHRSTSYNFIN 10.10.98.105
تزييف عنوان IP المصدرsudo nmap -S SPOOFED_IP 10.10.98.105
تزييف عنوان MACspoof-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-تفاصيل تصحيح الأخطاء مطولة جداً
فنان 🦥✨
 
عبود المبدع يقوم برفع وتيرة التحدي في المواضيع المميزة باسلوب خطير وجبار
والله احييك يا حبيب واستمر دايماً بإبداعك
ننتظر جديدك + تم التقييم
تقبل مروري​
 

آخر المشاركات

فانوس

رمضان
عودة
أعلى