هناك الكثير من المواضيع التي تتحدث عن كيفية عمل ARP spoofing او ARP poisoning للشبكات و من ثم القيام بالكثير من الامور مثل هجمات MITM – Man In The Middle التي تمكننا من السيطرة على الاتصالات بين الاجهزة و الراوتر بشكل كامل مما يمكننا من سرقة جميع كلمات المرور و الكوكيز و الاطلاع على جميع الملعومات المرسلة في الشبكة , ليس هذا فقط بل بامكاننا التعديل على هذه المعلومات مثلا تحويل جميع اتصالات HTTPS الى HTTP و غيرها.

كل هذه الامور تعتمد على مبدأ عمل واحد و هو تسميم جداول ARP في الجهاز الهدف و في الراوتر , الفرق بين هذه الهجمات هو كيفية التعامل مع المعلومات التي يتم تجميعها من الشبكة بعد القيام بعملية التسميم , لذا نلاحظ في جميع هذه الهجمات أول خطوة نقوم بها هي القيام بتسميم الهدف و الراوتر ثم نقوم بتنفيذ الهجوم الذي نريده.

و لكن السؤال هو كيف يحدث هذا التسميم و كيف بامكاننا وضع جهازنا في وسط الاتصال بين اي جهاز في الشبكة و بين الراوتر ؟؟

الجواب يمكن في فهم طريقة عمل بروتوكول ARP أو Address Resolution Protocol.

ما هو ARP:
هو بروتوكول يستخدم من قبل الاجهزة الموجودة في الشبكة لربط عناوين الـIP للأجهزة الموجودة في نفس الشبكة بـMAC Address الخاصة بكل جهاز مما يمكن هذه الاجهزة من الاتصال ببعضها و تناقل المعلومات بينها.
يحتوي هذا البروتوكول على 4 اوامر بسيطة:
1. ARP request: هذا هو امر الطلب و يتسخدم لطلب عنوان الماك باستخدام الاي بي.
مثال: نفرض ان جهازك يريد التواصل مع جهاز صاحب العنوان 192.168.1.5 فسيقوم جهازك بارسال الطلب التالي “من يملك العنوان 192.168.1.5”
2. ARP response: هذا هو امر الاستجابة بحيث يستجيب الجهاز الذي يملك الاي بي المطلوب و يرسل الماك ادرس الخاص به الى الجهاز الذي طلبه
مثال: يقوم الجهاز صاحب العنوان 192.168.1.5 بارسال الاستجابة التالية الى جهازك “انا صاحب هذا الاي بي و الماك ادرس الخاص بي هو 00:11:22:33:44:55”

3. RARP request: نفس امر الطلب الاول و لكن معكوس بحيث يتم الحصول على الاي بي من خلال الماك ادرس
4. RARP response: نفس امر الاستجابة الثاني و لكن معكوس بحيث يتم ارسال الاي بي بدلا من الماك ادرس

جميل الان فهمنا كيفية عمل بروتوكول ARP , فعندما يحتاج جهاز من التواصل مع جهاز اخر يرسل رسالة الى جميع الاجهزة الموجودة في الشبكة يسئلهم عن ماك ادرس الجهاز الذي يريد التواصل معه , هذا الجهاز يقوم بالاستجابة من خلال ارسال الماك ادرس الخاص به الى الجهاز الذي طلبه. طبعا لتسريع عمل الاجهزة كل جهاز يحتوي على جدول ARP يحتوي على جميع الاجهزة التي تم التواصل معها مسبقا , هذا الجدول يحتوي على اي بي كل جهاز و الماك ادرس الخاص بهذه الاجهزة. مثال على جدول ARP في جهازي:

arp-table

مثل ما تشاهدون في الصورة  فالجدول يحتوي على ايبي الراوتر و الماك ادرس الخاص بالروتر.

الان مثا ما شاهدنا فبروتوكول ARP رائع , فهو بسيط و سريع (لانه يحتفظ بقائمة الاجهزة المتصلة بكل جهاز في جدول) , و لكن هناك مشكلة واحدة , انه غير امين , فالجهاز الطالب يثق بالجواب الذي يتلاقاه دون التحقق من المصدر , ليس هذا و حسب ولكنه يقبل حزم الجوابات ARP response في اي وقت حتى و لو انه لم يرسل طلب في بداية الامر!!
هذا يعني انه بامكاننا تكوين حزمة جواب ARP response و ارسالها الى اي جهاز موجود في الشبكة و هذا الجهاز سيثق بمعلومات هذه الحزمة و سضعها في جدول ARP الموجود لديه.

هجمات MITM:
بامكاننا استغلال هذه المشكلة في بروتوكول ARP لنضع نفسنا في الوسط بين الراوتر و اي جهاز موجود في الشبكة مما يمكننا من الاطلاع على جميع الحزم المرسلة بين الجهازين , لنفرض ان اي بي جهازنا هو 192.168.1.66 و اي بي الجهاز الهدف هو 192.168.1.5 و اي بي الراوتر هو 192.168.1.1.
كل ما علينا فعله هو تكوين حزمتين من نوع ARP response الاولى نرسلها للروتر نخبره انه “انا 192.168.1.5 و الماك ادرس الخاص بي هو 00:11:22:33:44:55” و الثانية الى الجهاز الهدف نخبره بها “انا 192.168.1.1 و الماك ادرس الخاص بي هو 00:11:22:33:44:55” , الان كلا الجهازين سيصدقون كلامي و سيقومان بتحديث جداول ARP لديهم , الان الجهاز الهدف يظن انني الراوتر و الراوتر يظن انني الجهاز الهدف مما سيجعلني في الوسط بين الجهازين و بالتالي سأتمكن من الاطلاع على جميع الحزم المرسلة بين الجهازين.

لنأخذ مثال لتبسيط الصورة نفرض انه عندك صديقين احمد و علي , هذين الضديقين يصدقون كلامك بشكل اعمى , و لنفرض انك تريد ان تعرف كل شيء يقوله احمد لعلي و كل شيء يقوله علي لاحمد , فكل ما عليك فعله هو – بما انهم يصدقوم كلامك دون تشكيك  – هو ان تقول لعلي انك احمد و تقول لاحمد انك علي , في هذه الحالة كل ما يريد احمد التواصل مع علي سيتواصل معك لانه يعتقد بانك علي و علي سيقوم بنفس الشيء.
ملاحظة: لنجاح الهجوم السابق يتوجب علينا تفعيل خاصية IP Forwarding و التي تمكن جهازنا من تمرير الحزم خلاله بحيث يتم وصل الجهاز الهدف بالراوتر و لن يتم قطع الاتصال عنه.

في الموضوع القادم سنتكلم عن كيفية اكتشاف هذا الهجوم في الشبكة و كيفية الحماية منه.