تعریف
پروتکل ARP یا Address Resolution Protocol یک پروتکل لایه دو است، که کار آن به دست آوردن آدرس لایه دو یا همان آدرس فیزیکی مقصد، معروف به MAC، از روی آدرس لایه سه-ای یعنی IP است.
فرض کنید کامپیوتر A که IP آن ۱۹۲.۱۶۸.۱.۱۰۰/۲۴ است، قصد دارد بستهای به کامپیوتر B که IP آن ۱۹۲.۱۶۸.۱.۲۰۰/۲۴ است ارسال کند. آدرس فیزیکی یا همان MAC Address کامپیوتر A برابر با AA.AA.AA.AA.AA.AA است. هنگام تشکیل بسته در لایه دو نیاز به Destination-MAC یا همان آدرس MAC مقصد دارد. در ابتدا کامپیوتر A به جدول ARP خود که معروف به ARP Cache یا ARP Table است نگاه میکند. در این جدول آدرسهای IP با آدرسهای MAC متناظر یا Bind شدهاند. یعنی MAC آدرسی برای این IP آدرس موجود است. کامپیوترها به کمک این جدول میتوانند بستههای خود را کامل کرده و ارسال کنند.
حال اگر کامپیوتر A هیچ اطلاعی از آدرس MAC کامپیوتر B نداشته باشد، یعنی در جدول خود آدرس MAC کامپیوتر B را نداشته باشد باید چه کند؟
جواب ساده است. باید درخواست ARP ارسال کند و خواستار آدرس MAC کامپیوتر B شود.
پس یک بار دیگر با هم مرور میکنیم :
کامپیوتر A برای ارسال بسته به کامپیوتر B، آدرس IP آن یعنی ۱۹۲.۱۶۸.۱.۲۰۰ را دارد. ولی آدرس MAC کامپیوتر B را ندارد و هیچ فریمی تا کامل نشدن آن ارسال نمیشود. پس کامپیوتر A نگاهی به جدول ARP خود میکند تا آدرس MAC کامپیوتر B با آدرس IP برابر با ۱۹۲.۱۶۸.۱.۲۰۰ را پیدا کند. در صورت داشتن آن، فریم را کامل کرده و ارسال میکند و در صورت نداشتن آن باید به کمک پروتکل ARP درخواست خود را در شبکه ارسال کند.
کامپیوتر A قبل از ارسال بسته به کامپیوتر B باید ARP بزند. این بسته ARP به صورت Broadcast در شبکه پخش میشود تا کامپیوتری که آدرس آن ۱۹۲.۱۶۸.۱.۲۰۰ است آدرس مک خود را Reply کند.
مراحل ARP
ARP دو مرحله دارد:
مرحلهی اول ARP Request و مرحلهی دوم ARP Reply
مرحلهی اول: ARP Request
این مرحله معروف به Who has میباشد. این فریم به صورت Broadcast است. زیرا ما نمیدانیم که مقصد کجای شبکه است و به شکل زیر است:
Destination-MAC: آدرس مک گیرنده که در بستههای ARP Request از نوع Broadcast است.
Type: اشاره میکند در لایه بالایی یعنی لایه سه، بسته چه چیزی را حمل میکند. در بستههای ARP، پروتکل لایه سه ما ARP است و Ethertype آن برابر با 0x0806 است.
Sender-MAC: آدرس مک-ای که ARP Request را ارسال میکند.
Sender-IP: آدرس IP کسی که ARP میزند.
Target-IP: به صورت خیلی عامیانه یعنی دنبال آدرس مک این IP هستم. در مثال ما کامپیوتر A دنبال مک کامپیوتر B با آدرس ۱۹۲.۱۶۸.۱.۲۰۰ است.
Target-MAC:
۰۰.۰۰.۰۰.۰۰.۰۰.۰۰ یعنی من مک را ندارم.
حال این بسته به سوئیچ میرسد و سوئیچ این بسته را بر روی تمامی پورتهای خود ارسال میکند. چون نوع این بسته برادکست است تمامی کامپیوترهای متصل به سوئیچ این بسته را دریافت میکنند و شروع به باز کردن و تحلیل بسته از لایه پایین یعنی هدر Ethernet مینمایند. چون مقصد بسته برادکست است، بسته را در لایه بالاتر یعنی هدر ARP بررسی میکنند و با نگاه کردن به قسمت Target-IP متوجه میشوند که آیا این بسته به دنبال مک آنها است یا خیر.
نهایتا تمامی کامپیوترها بسته ARP را دور میریزند به غیر از کامپیوتر B که آدرس IP آن ۱۹۲.۱۶۸.۱.۲۰۰ است و با Target-IP داخل بسته برابر است. ابتدا کامپیوتر B آدرس مک کامپیوتر A را در جدول ARP خود یادداشت میکند. حال باید جواب ARP Request ای که کامپیوتر A ارسال کرده را بدهد که به آن ARP Reply میگویند.
مرحلهی دوم: ARP Reply
در این مرحله ARP Reply به فرستنده Request به صورت Unicast ارسال میشود که به شکل زیر است:
بعد از این که ARP کار خود را تمام کرد کامپیوتر A و کامیپوتر B میتوانند به یکدیگر بسته ارسال کنند. زیرا هر دو کامپیوتر از آدرس های MAC یکدیگر خبر دارند و در جدول ARP خود یادداشت کردهاند.
نکته ۱: وقتی مقصد کامپیوتر A در لایه سه خارج از شبکه باشد یعنی مقصد بستهها خارج از شبکه ۱۹۲.۱۶۸.۱.۰/۲۴ باشد، باید بسته به روتر یا Gateway برسد. زیرا روتر میتواند بسته ها را مسیریابی کند و برای این که در یک بستر Ethernet بسته از کامپیوتر A به روتر برسد کامپیوتر A باید در قسمت Destination-MAC بستهها، آدرس مک روتر را قرار دهد. اگر آدرس مک روتر یا GW را نداشته باشد باید GW خود را ARP بزند.
نکته ۲: پروتکل ARP به شدت آسیبپذیر است. یعنی Attacker ها با استفاده از ضعف این پروتکل به راحتی میتوانند صدمات سنگینی وارد کنند. به طور مثال فرض کنید Attacker خود را به جای روتر قرار دهد و آدرس مک خود را به عنوان آدرس مک روتر به کامپیوتر A ارسال کند. کامپیوتر A در تمام بستههای خود آدرس مک مقصد را آدرس مک Attacker قرار میدهد و تمامی بستههای ارسالی کامپیوتر A با اینترنت از Attacker عبور میکند.
به این تهاجم MITM یا همان Man in the Middle میگویند. به حملاتی که Attacker آدرس مک خود را جعل می کند به اصطلاح ARP Spoofing میگویند که به راحتی با ابزارهای مانند Arpspoof و Ethercap در کالی امکانپذیر است. برای مصون ماندن از این حملات باید از مکانیزمهای امنیتی مانند DAI در سوئیچ استفاده کرد.
GARP چیست؟
وقتی شما آدرس IP خود را عوض میکنید، ARP Table تمام کامپیوترهای دیگر به اصطلاح بیات هست و باید آپدیت شوند. در این هنگام کامپیوتری که آدرس IP خود را عوض کرده GARP ارسال میکند. در این حالت کامپیوتر آدرس IP خود را ARP میزند تا جدول بقیه را آپدیت کند. این اتفاق زمانی که کارت شبکه فعال شده و یا آدرس IP از DHCP Server دریافت میکند نیز میافتد تا از Duplicate IP جلوگیری کند. البته Attacker ها از این قابلیت برای حملات ARP Spoofing استفاده میکنند.