هجوم ARP Cache Poisoning (الجزء الأول)

يوليو ٢١، ٢٠٢٠

بسم الله الرحمن الرحيم نبدأ درسنا الأول والذي سيكون عن هجوم ARP Cache Poisoning. الدرس سيقسم إلى جزئيين، الجزء الأول سيركز على الجانب النظري بينما الجزء الثاني سيركز على الجانب العملي.

ما يجب معرفته قبل البدء في هذا الدرس:

1- نموذج TCP/IP
2- أساسيات الشبكة Network Essentials
3- بروتوكول الإنترنيت الإصدار الرابع IPv4

سنتعلم في هذا الدرس:

1- ما هو بروتوكول ARP؟
2- كيف يعمل بروتوكول ARP؟
3- ما هو هجوم ARP Cache Poisoning؟

ما هو بروتوكول ARP؟

بروتكول ARP هو اختصار لـ Address Resolution Protocol وهو بروتوكول يعمل في طبقة ربط البياناتData Link Layer أو ما تسمى أيضًا بالطبقة الثانية في نموذج TCP/IP. يُستخدم بروتوكول ARP لربط عنوان IP مع عنوان MAC لأي جهاز في الشبكة. كل جهاز في الشبكة يقوم بحفظ معلومات الربط للعنوانين لأجهزة الشبكة في تخزين مؤقت يسمى بـ ARP Cache. يمكن أن نعتبر ARP Cache على أنها جدول، يتم تخزين قيمتين ( قيمة عنوان IP وما يقابله من قيمة عنوان MAC للجهاز ) في كل سطر فيه بشكل مؤقت. مدة تخزين هذه القيم هي دقيقة واحدة ( ٦٠ ثانية) في نظام Ubuntu Linux 18.04 وتختلف مدة التخزين من نظام إلى نظام آخر ويمكن ضبطها يدويًا.

كيف يعمل بروتوكول ARP؟

لنفترض أنه يوجد جهازين في الشبكة: جهاز محمد (عنوانه IP هو 10.0.2.5 و عنوانه MAC هو 08:00:27:7d:f0:89) و جهاز نورة ( عنوانه IP هو 10.0.2.6 و عنوانه MAC هو 08:00:27:٠f7:bf:67) ، و يريد هذين الجهازين التواصل مع بعضهما البعض. فلنتبع الخطوات الموجودة في الصورة أدناه والتي ستوضح طريقة عمل بروتوكول ARP عندما يتواصل الجهازين مع بعضهما البعض.

1- لنفترض أن جهاز محمد لديه IP Packet جاهزة وتحتاج إلى إضافة Ethernet Header ليتكون لدينا Ethernet frame كامل جاهز للإرسال إلى جهاز نورة. و كما نعرف في Ethernet Header نحتاج لوضع عنوان MAC للجهاز المراد الإرسال إليه اذا كان في نفس الشبكة أو عنوان جهاز router الموجود في الشبكة اذا كان الجهاز المراد الإرسال إليه خارج الشبكة. وبما أن جهاز نورة في نفس شبكة جهاز محمد سيكون عنوان MAC هو العنوان الخاص بجهاز نورة.

2- جهاز محمد في هذه المرحلة فقط يعرف عنوان IP الخاص بجهاز نورة ولكن لا يعرف عنوان MAC الخاص بجهاز نورة. و لجلب عنوان MAC الخاص بجهاز نورة ، سيتفقد جهاز محمد ARP Cache المخزنة في جهازه ويبحث ما اذا كان هناك مدخل (ARP Entry) لجهاز نورة يوضح من خلاله عنوان IP و MAC لجهاز نورة. فإذا وجد المدخل (ARP Entry) فسيستخدم العنوان MAC الموجود وسيضيفه في Ethernet Header وسيكتمل لدينا Ethernet frame جاهز للإرسال وعندها ستكون الخطوة التالية هي خطوة رقم 8.

3- أما إذا لم يجد المدخل (ARP Entry) لجهاز نورة في ARP Cache فعندها سيرسل جهاز محمد طلب ARP أو ما يسمى ب ARP Request يقوم من خلاله سؤال كل الأجهزة في الشبكة عن من يحمل عنوان IP هذا 10.0.2.6. يحتوي ARP Request المرسل من قبل جهاز محمد على هذه المعلومات: عنوان IP و MAC للمصدر Source أو المرسل (جهاز محمد) و عنوان IP للمرسل إليه Destination ( جهاز نورة).

4- كل جهاز في الشبكة سيتجاهل ARP Request المرسل من قبل جهاز محمد ما عادا جهاز نورة لأن طلب ARP (ARP Request) يحتوي على عنوان IP الخاص بجهاز نورة. عندما يتلقى جهاز نورة الطلب فإنه سيخزن عناوين المصدر المذكورة في الطلب وهي عنوانIP و عنوان MAC الخاصة بجهاز محمد في مدخل في ARP Cache الموجود في جهاز نورة.

5- و أيضًا جهاز نورة سيرسل رد أو ما يسمى بـ ARP Reply إلى جهاز محمد يقوم من خلاله بالرد على طلب ARP المرسل من قبل جهاز محمد وسيقوم بإخباره بأنه هو من يحمل العنوان الذي يسأل عنه. الرد سيحتوي على هذه المعلومات: عنوان IP و عنوان MAC للمصدر أو المرسل ( جهاز نورة ) و عنوان IP و عنوان MAC للمرسل إليه Destination ( جهاز محمد).

6- عندما يتلقى جهاز محمد الرد ARP Reply من جهاز نورة فعدها سيقوم بتحديث ARP Cache وإضافة مدخل يحتوي على عنوان IP وعنوان MAC لجهاز نورة.

7- و أيضًا سيستخدم جهاز محمد عنوان MAC لجهاز نورة وسيضيفه في Ethernet Header وسيكتمل لدينا Ethernet frame جاهز للإرسال.

8- وهنا يرسل جهاز محمد Ethernet frame الجاهز إلى جهاز نورة مباشرة.

9- وهكذا يستطيع الجهازين التواصل مباشرة. ونريد أن ننوه أن إذا انتهى وقت تخزين مدخل ARP ( ARP Entry ) في ARP Cache فستعاد الخطوات من الخطوة رقم 3.

مكونات ARP Header

يوضح الجدول أعلاه مكونات ARP Header في Ethernet frame:
1- Hardware Type وهو نوع Hardware المستخدم للشبكة. مثال على ذلك: Ethernet و قيمة نوع Hardware له هي 1 .
2- Protocol Type وهو نوع البروتوكول المستخدم في تحديد العناوين المستخدمة في طبقة الشبكة أو الطبقة الثالثة (تبعًا لنموذج TCP/IP ). مثال على ذلك: IP وقيمة نوع البروتوكول له هي 2048 (0x0800))
3- Hardware Length وهو طول عناوين Hardware المستخدمة. مثال على ذلك: طول عنوان Ethernet أو عنوان MAC هو 6.
4- Protocol Length وهو طول عناوين البروتوكول المستخدمة. مثال على ذلك: طول عنوان IP هو 4.
5- Operation وهو نوع العملية في رسالة ARP. مثال على ذلك: إذا كانت طلب ARP Request فالقيمة هي 1 أما إذا كانت رد ARP Reply فالقيمة هي 2.
6- Sender hardware address وهو عنوان Hardware للمرسل. مثال على ذلك: عنوان MAC للمرسل.
7- Sender protocol address وهو عنوان البروتوكول للمرسل. مثال على ذلك: عنوان IP للمرسل.
8- Target hardware address وهو عنوان Hardware للمرسل إليه. مثال على ذلك: عنوان MAC للمرسل إليه. هذه الخانة ستكون فارغة اذا كانت عملية ARP هي طلب ARP Request.
9- Target protocol address وهو عنوان البروتوكول للمرسل إليه. مثال على ذلك: عنوان IP للمرسل إليه.

فلو أخذنا مثالنا السابق: فيما يلي محتويات ARP Header عندما يرسل جهاز محمد ARP Request

وهنا محتويات ARP Header عندما يرسل جهاز نورة ARP Reply

ما هو هجوم ARP Cache Poisoning؟

لنفترض أنه يوجد جهاز ثالث وهو جهاز المخترِق (عنوانه IP هو 10.0.2.7و عنوانه MAC هو 08:00:27:7b:2a:af) في نفس شبكة جهاز محمد و جهاز نورة. وهدف المخترق هو تغير المدخل ARP Entry والذي يربط عنوان IP بعنوان MAC لجهاز نورة في ARP Cache المخزنة في جهاز محمد إلى هذه القيمة : عنوان IP لجهاز نورة مربوط بعنوان MAC لجهاز المخترق. بحيث أي رسائل مرسلة إلى جهاز نورة من جهاز محمد سترسل إلى جهاز المخترق بدلاً من جهاز نورة. فإذا تمكن المخترق من فعل ذلك فعندها استطاع ان ينفذ ما يسمى ب هجوم ARP Cache Poisoning.

بهذا الهجوم يستطيع المخترق تنفيذ نوعين من أنواع الهجمات وهما:
1- Denial-Of-Service (DOS)
2- Man-In-The-Middle (MITM)

هجوم DOS بواسطة ARP Cache Poisoning

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

1- هنا قيمة المدخل في ARP Cache الموجودة في جهاز محمد قبل الاختراق وهي عنوان IP لجهاز نورة مربوط بعنوان MAC الحقيقي لجهاز نورة.

2- سيقوم المخترق بتجهيز رسالة ARP لنفترض أنها ARP Reply والتي ستحتوي على هذه العناوين:

Sender protocol address = 10.0.2.6  (عنوان IP  لجهاز نورة  )
Sender hardware address = 08:00:27:7b:2a:af (عنوان MAC  لجهاز المخترق )
Target protocol address = 10.0.2.5 (عنوان IP  للضحية ( جهاز محمد ) )
Target hardware address = 08:00:27:7d:f0:89 (عنوان MAC  للضحية ( جهاز محمد))

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

3- عندما يتلقى جهاز محمد رسالة ARP المرسلة من جهاز المخترق وهي ARP Reply سيقوم بتحديث مباشرة ARP Cache بالعناوين الموجودة في ARP Reply ليصبح المدخل الذي يحمل عنوان IP لجهاز نورة مربوطًا بعنوان MAC مزور وهو عنوان المخترق. وهذا يرجع إلى أن بروتوكول ARP هو بروتوكول stateless أي انه لا يخزن أي قيمة حالة state تمكنه من معرفة ما اذا كان الجهاز قد ارسل بالفعل طلب مسبقًا حتى يتلقى الرد من الأساس. وحتى لو كانت رسالة ARP هي ARP Request فسينتج نفس التأثير وستتحدث ARP Cache بالعنوان المزور لأنه لا يوجد في بروتوكول ARP خاصية التحقق من هوية المرسل Authentication.

4- بعد ذلك إذا قام جهاز محمد إلى ارسال أي رسالة إلى جهاز نورة فستتوجه إلى جهاز المخترق بدلًا من جهاز نورة، وهنا تمكن المخترق من منع جهاز محمد من التواصل مع جهاز نورة أي انه نفذ هجوم DOS.

هجوم MITM بواسطة ARP Cache Poisoning

في هذا الهجوم المخترق سيسمح لجهاز محمد وجهاز نورة بالتواصل مع بعضهما البعض ولكن هدفه هو التقاط وقراءة وتعديل محتوى كل الرسائل المرسلة بين هذين الجهازين. ولفهم هذا النوع من الهجوم فلنتبع أيضًا الخطوات الموجودة في الصورة أدناه والتي ستوضح كيفية عمل هذا الهجوم.

1- هنا قيمة المدخل في ARP Cache الموجودة في جهاز محمد قبل الاختراق وهي عنوان IP لجهاز نورة مربوط بعنوان MAC الحقيقي لجهاز نورة. وأيضًا قيمة المدخل في ARP Cache الموجودة في جهاز نورة قبل الاختراق وهي عنوان IP لجهاز محمد مربوط بعنوان MAC الحقيقي لجهاز محمد.

2- في هذا الاختراق سيقوم المخترق بتجهيز رسالتين ARP ولنفترض أيضًا أنهما ARP Reply وسيرسل واحدة إلى جهاز محمد و الأخرى إلى جهاز نورة.
الرسالة المرسلة إلى جهاز محمد ستحتوي على هذه العناوين:

Sender protocol address = 10.0.2.6  (عنوان IP  لجهاز نورة  )
Sender hardware address = 08:00:27:7b:2a:af (عنوان MAC  لجهاز المخترق )
Target protocol address = 10.0.2.5 (عنوان IP  للضحية ( جهاز محمد ) )
Target hardware address = 08:00:27:7d:f0:89 (عنوان MAC  للضحية ( جهاز محمد))

أما الرسالة المرسلة لجهاز نورة ستحتوي على هذه العناوين:

Sender protocol address = 10.0.2.5 (عنوان IP  لجهاز محمد  )
Sender hardware address = 08:00:27:7b:2a:af (عنوان MAC  لجهاز المخترق )
Target protocol address = 10.0.2.6 (عنوان IP  للضحية ( جهاز نورة ) )
Target hardware address = 08:00:27:f7:bf:67 (عنوان MAC  للضحية ( جهاز نورة))

3- عندما يتلقى كلاً من جهاز محمد وجهاز نورة تلك الرسائل المرسلة من جهاز المخترق وهي ARP Reply سيحدثان مباشرة ARP Cache المخزنة في أجهزتهما بالعناوين الموجودة في ARP Reply وهي العناوين المزورة. و يرجع السبب لما ذكرناه سابقًا أن بروتوكول ARP هو stateless و أيضًا لا يملك خاصية التحقق من هوية المرسل authentication.

4- بعد ذلك أي تواصل بين جهاز نورة وجهاز محمد سيمر من خلال جهاز المخترق وهنا تمكن المخترق من التقاط وقراءة محتوى كل الرسائل بين هذين الجهازين أي انه نفذ هجوم MITM نوع Passive Attack أما إذا قام بتعديل محتوى الرسائل قبل إرسالها فهنا المخترق نفذ هجوم MITM نوع Active Attack.

الخاتمة

تعلمنا في هذا الدرس المفاهيم الأساسية لبروتوكول ARP بشكل عام و أيضًا تعلمنا عن الفكرة الأساسية لهجوم ARP Cache Poisoning وأمثلة على ما يمكنه المخترق من تنفيذه بهذا الهجوم. في الدرس القادم وهو الجزء الثاني لهذا الدرس سنتعلم بإذن الله كيفية تطبيق هجوم ARP Cache Poisoning عمليًا. فترقبـوا (。◕‿◕。).

إذا كان لديكم أي أسئلة أو ملاحظات يسعدني أن تتواصلوا معي عبر حسابي في تويتر:
@YARA_ALTEHINI

المراجع والمصادر

https://erg.abdn.ac.uk/users/gorry/course/inet-pages/arp.html
http://www.tcpipguide.com/free/t_ARPMessageFormat.htm