مبین آقاشاهی
Full Stack Developer

ARP Spoofing چیست و چگونه صورت می‌گیرد؟

شاید شماهم شنیده باشید که میگن از وای فای های موجود در مکان های عمومی استفاده نکنید و احتمالا این کار رو هم انجام نمی‌دادید. اما قضیه چیه و چرا این کار میتونه خطرساز بشه؟!

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

خب همونجور که از عنوان مقاله پیداست میتونید حدس بزنید که بخاطر ARP Spoofing این کار میتونه خطرساز باشه ولی خب ARP Spoofing چیه؟! یک قطعس؟! یک برنامس؟! یا شایدهم یک هکر 13 ساله چینی!! البته که آخری یک شوخی بی مزه بود.

برای اینکه بخواهیم ادامه مطلب رو توضیح بدیم ابتدا به نظرم اگر یک دید کلی از موضوع داشته باشید به شدت مفید خواهد بود و به شما این امکان رو خواهد داد که فقط تا جایی که تمایل دارید در این مطب عمیق شوید. زیرا شاید شما یک خواننده کنجکاو باشید که فقط می‌خواهید بدانید در صورت استفاده از وای فای در مکان های عمومی چه چیزی می‌تواند خطرساز باشد و چه بلایی می‌تواند بر سر اطلاعاتتان بیاید و یا شایدهم یک دانشجوی رشته کامپیوتر هستید که می‌خواهید کمی عمیق تر درمورد شبکه و کارکرد آن بدانید.

یک دید کلی از مسئله موجود:

سناریو اول: (وقتی همه چیز آرام است.)

ARP Spoofing چیست و چگونه صورت می‌گیرد؟

در این سناریو اگر کامپیوترهای موجود در تصویر، همان اشخاص متصل به اینترنت از طریق یک مودم مشترک باشند، قضیه به این صورت است که هر کامپیوتر برای برقراری ارتباط با اینترنت بسته های خود را به مودم تحویل می‌دهند و مودم بسته ها را در بستر اینترنت ارسال می‌کند و جواب آن بسته ها را به کامپیوتر مورد نظر بر می‌گرداند. زیبا نیست؟! همه چیز به درستی کار خود را انجام خواهند داد و شما قادر هستید از این طریق پول های خودتان را از حسابی به حساب دیگر منتقل کنید یا وارد صفحه وبسایت دانشگاهتان شوید و در آن لاگین کنید و نمراتتان را چک کنید و هزاران کار دیگر که امروزه با اینترنت قادر به انجام آن ها هستیم. اما شبکه همیشه به این زیبایی کار نخواهد کرد و اشخاصی وجود خواهند داشت که مانع کارکرد درست یک شبکه شوند.

سناریو دوم: (وقتی همه چیز آرام نیست.)

ARP Spoofing چیست و چگونه صورت می‌گیرد؟

حال این سناریو را با وجود فردی در شبکه که چیزهایی از شبکه ها و کارکرد آن ها می‌داند بررسی می‌کنم. فرض کنید کامپیوتر B در سناریو اول جای خود را به یک هکر می‌دهد. هکر با چیز هایی که از شبکه می‌داند خود را به جای مودم جا میزند و تمام پیام هارا به سمت خود می‌کشاند. آیا چنین کاری شدنی است؟! بله!! هکر تمام پیام هارا به سمت خود می‌کشاند و می‌تواند یک به یک پیام هارا بخواند (البته در اکثر موارد نمیتواند که در سناریو بعد توضیح خواهیم داد.) و بعد از خواندن پیام ها، پیام هارا جهت ارسال به اینترنت به مودم ارسال می‌کند و جواب هارا از مودم می‌گیرد و یک به یک به صاحبانشان تحویل می‌‎دهد. عجب خر تو خری است؟! دقیقا. آیا شما وقتی درحال لاگین به صفحه دانشگاهتان هستید می‌توانید متوجه شوید که این پیام های ارسالی و دریافتی به دستان شخص سومی هم رسیده و خوانده شده است؟! پیام هایی که از اتفاق رمز عبور و نام کاربری شماهم درون آن قرار داشته است؟! عمرا متوجه شوید!! شبکه به ظاهر آرام است و به کار خود ادامه می‌دهد ولی چیزی در این بین اشتباه است و آن شنودِ (همان Sniff خودمان در دنیای کامپیوتر) ارتباط شما توسط شخص سوم است. آیا شبکه همیشه همینقدر خطرناک است؟! بله. پس دیگر از اینترنت برای کارهای حیاطی خود استفاده نکینم؟! بیاید به سناریو سوم تا بهتون بگم هک و امنیت چجوری با یکدیگر به پیش می‌روند و چقدر پیشرفت هرکدام وابسته به پیشرفت دیگری است. به عبارت دیگر، اگر روشی برای هک پیدا شود، اشخاصی هستند که راه حلی بیابند و جلوی آن را بگیرند (معمولا با آپدیت ها این مشکلات امنیتی برطرف خواهند شد.) و اگر روشی برای هک وجود نداشته باشد، بازهم افراد خلاق و پیگیری پیدا خواهند شد که راهی برای نفوذ پیدا کنند. و این دو قطبی هک و امنیت مدام در حال رشد است.

سناریو سوم: (وقتی همه چیز آرام نیست ولی جای امیدواری هست.)

ARP Spoofing چیست و چگونه صورت می‌گیرد؟

حال این سناریو که همانند سناریو دوم (سناریو بالایی) است را در نظر بگیرید. با این تفاوت که اینبار، اشخاص پیام های خود را با کلیدی که کپی همان کلید را بانک و دانشگاه در اختیار دارند قفل می‌‎کنند. حال چه اتفاقی رخ می‌دهد؟! اجازه دهید پیام های شخص سبز رنگ (computer B) در شکل را دنبال کنیم تا به صورت صحیح درک کنیم که چرا این شبکه درحالی که شنود می‌شود ولی همچنان امن است.

فرض کنید شخص مو فرفری و سبز رنگ داستان ما می‌خواهد در صفحه دانشگاهی خود لاگین کند و برای این کار یک پیام حاوی نام کاربری و رمز عبور را برروی شبکه و برای دانشگاه ارسال می‌کند. اما قبل از ارسال با یک کلید که کپی همان کلید را دانشگاه در اختیار دارد پیغام خود را قفل می‌کند. پیغام در مرحله اول به هکر بد طینت ما می‌رسد (در واقع اول به مودم می‌رسد ولی شما برای راحت تر شدن توضیح مسئله از من بپذیرید که به دست هکر می‌رسد.). هکر می‌خواهد داخل نامه را بخواند اما ای دریغا به برش که برروی نامه قفل بزرگی قرار دارد و هکر قادر به خواندن آن نیست. در این مرحله هکر چشمش کور می‌شود و نامه را جهت رسیدن به دانشگاه به مودم ارسال می‌کند (چون اگر این کار را انجام ندهد شبکه درست کار نمی‌کند و شما متوجه خواهید شد که جایی از کار میلنگد). مودم نامه را به اینترنت می‌دهد و اینترنت آن را به مقصد خود یعنی دانشگاه می‌رساند. دانشگاه به وسیله کلید خود قفل را باز می‌کند و عملیات های مورد نیاز را انجام می‌دهد و نامه ای که درون آن اجازه ورود به صفحه پرتال دانشگاه است را ایجاد می‌کند. دانشگاه به وسیله همان کلید نامه را قفل می‌کند و ارسال می‌کند. نامه مسیر بازگشت خود را طی می‌کند و به دست هکر می‌رسد، هکر بازهم قفلی بزرگ برروی نامه می‌بیند و از فرط ناراحتی هودی خود را جر می‌دهد، فریاد می‌کشد، قهوه را بر صورت خود می‌پاشد و نامه را به صاحب آن یعنی کامپیوتر B می‌رساند. کامپیوتر B نامه را دریافت می‌کند و با کلید خود آن را باز می‌کند. آنجاست که هکر متوجه موضوعی می‌‍شود. بله بله!!! شبکه ما مجهز به TLS شده است.

ما چجوری پیام هامون رو قفل کنیم؟!

حقیقت این است که اگر ما فقط یک کاربر ساده باشیم که از یک وبسایت و یا یک نرم افزار تحت شبکه استفاده می‌‎کنیم، این وظیفه ما نیست که پیام های خودمان را رمزگذاری کنیم و این کار وظیفه وبسایت و یا نرم افزار هاییست که ما به آن ها مراجعه می‌کنیم و به ما خدمات می‌دهند.

ولی آیا میتوان فهمید کدام وبسایت ها از TLS استفاده می‌کنند و این ارتباط امن را در اختیار ما قرار می‌دهند؟! بله. امروزه صفحاتی که از TLS استفاده نمی‌کنند بسیار کم هستند از این رو آیکون "قفل" بالای صفحات وبسایت برای ما موضوعی جا افتاده است و به چشمانمان آشناست. به بالای همین مقاله، جایی که آدرس ویرگول قرار دارد توجه کنید. در ابتدای این آدرس یک قفل می‌بینید؟! بله؟! معنای آن این است که ارتباط شما امن است و شما می‌توانید با خیال راحت از وبسایت ویرگول در هر مکانی استفاده کنید و خیالتان راحت باشد که هکری در بین راه در حال شنود کردن ارتباط شما نیست و یا اگر درحال شنود باشد، راهی از پیش نخواهد برد زیرا ارتباط ما رمزگذاری شده است.

ARP Spoofing چیست و چگونه صورت می‌گیرد؟

خب تا اینجای مطلب برای آن ها بود که تنها یک دید کلی از موضوع می‌خواستند و فقط می‌خواستند از خطرات هک در امان باشند. ولی اگر شما جزو آن دسته از افراد هستید که می‌خواهید موضوع را کمی عمیق تر دنبال کنید و بدانید از لحاظ فنی این کار چگونه صورت می‌گیرد ادامه مطلب را دنبال کنید و اگر مایل به این موضوع نیستید از شما متشکر هستم که مطالب این جانب را می‌خواندی و اشکالاتش را به طریقی به بنده اطلاع می‌دهید. چراغ ها خاموش می‌شود و کسانی که مایل به ادامه دادن نیستند می‌تواند بدون ذره ای شرمساری مطلب را رها کنند.


مسئله از بعد فنی آن:

اجازه دهید کمی عمیق تر شویم و مسئله را فنی تر بررسی کنیم.

پیام ها در یک شبکه خصوصی (private) بر چه اساسی مسیریابی می‌شوند؟ IP ها؟! نام دیوایس های؟! بر اساس شماره‌ی اتصالشان؟! خیر هیچکدام. مسیریابی در شبکه خصوصی (private) یا همان شبکه محلیمان براساس آدرس های MAC صورت می‌گیرد. هر دیوایس برای خود یک جدولی تشکلی می‌دهد به نام ARP Table که در آن جدول، پارامترهای مختلفی نگهداری می‌شود. اما دوتا از مهم ترین پارامترهایی که در این قسمت برای ما مهم است، آدرس IP و آدرس MAC هست.

برای دیدن این جدول در ویندوز می‌توانید وارد CMD ویندوز شوید و دستور arp -a را وارد کنید. نمونه ای از این جدول را در تصویر زیر میتوانید مشاهده کنید. که ابتدا آدرس IP و روبروی آن آدرس MAC مربوطه ذخیره شده است.

ARP Spoofing چیست و چگونه صورت می‌گیرد؟

این جدول چگونه ساخته می‌شود؟!

خب سوال درست و به موقع این است که "این جدول چگونه ساخته می‌شود؟". جواب سوال ساده است. دیوایس ها برای ارسال پیام به فلان IP در جدول MAC خود به دنبال IP مورد نظر می‌گردند و درصورت پیدا نکردن آن یک پیغام arp را برای تمام شبکه broadcast می‌کنند و از تمام شبکه می‌خواهند اگر کسی فلان IP را می‌شناسد، آدرس MAC آن را برایش ارسال کنند. و اگر دیوایسی در شبکه آن را بشناسد، آدرس MAC آن را برای درخواست کننده ارسال می‌کند. درخواست کننده MAC مورد نظر را دریافت می‌کند و آن را وارد جدول MAC خود می‌کند و بعد از آن، زمانی که می‌خواهد برای IP مورد نظر پیغامی بفرستد از همان MAC ذخیره شده در جدول ARP استفاده میکند.

چیز به ذهنتون رسید؟! نه؟! خب چرا ما خودمون رو به جای مودم جا نزنیم؟! چرا به تمام دیوایس ها یک پیغام arp نفرستیم و مدعی نشیم آدرس MAC دیواس ما برابر است با IP مودم؟! IP مودم چیست؟! در اکثر موارد 192.168.1.1. بله بله!! ما میتوانیم این کار را انجام دهیم و ترافیک شبکیمان را از خود عبور دهیم!! جالب نیست؟! به نظر من که زندگی یعنی همین.

مسئله از بعد عملی:

خب سوال اساسی اینجاست که ما تمام این کارهای پیچیده شبکه ای را به چه صورتی انجام دهیم؟! و جواب اینه که خوشبختانه برای تمام این چیزها که گفته شد ابزارهای مناسبی ساخته شده که به رایگان در اختیار ما قرار دارند.

مواد لازم:

  • لینوکس (چه بهتر که کالی لینوکس استفاده شود زیرا تمام ابزارهای تست امنیت را در بر دارد و نیاز نیست تمام این هارا دوباره نصب کنیم.)
  • پکیج نرم افزاری dsniff جهت ایجاد پکت های arp در شبکه
  • نرم افزار wireshark برای انجام شنود و دیدن بسته های ارسال و دریافت شده

نکته: در این آموزش فرض شده است که کامپیوتری که می‌خواهیم به آن حمله ARP Spoofing انجام دهیم دارای آدرس آی پی 192.168.1.11 است و مودم ما دارای آدرس آی پی 192.168.1.1 است.

خب ابتدا باید ما به عنوان شخص سوم (هکر) پکت های ARP خود را برروی شبکه منتشر کنیم و آدرس  MAC خود را به جای آدرس MAC مودم به شخصی که می‌خواهیم به آن حمله کنیم، قالب کنیم. برای این کار از دستور زیر استفاده میکنیم.

sudo arpspoof -i eth0 -t 192.168.1.11 192.168.1.1

در این دستور با سوئیچ i میگوییم که ما این حلمه را از طریق اینترفیس eth0 خود انجام می‌دهیم و از طریق سوئیچ t مشخص می‌کنیم که target (هدف) ما برای حمله آدرس آی پی 192.168.1.11 است و می‌خواهیم خود را به جای آدرس آی پی 192.168.1.1 (آدرس آی پی مودممان) جا بزنیم تا از این به بعد آدرس آی پی 192.168.1.11 به جای ارسال بسته هایش به مودم برای اتصال به اینترنت، ترافیکش را از ما عبور دهد. به همین راحتی!!! الان ما در بین راه به شنود پیام های ارسالی و دریافتی آدرس آی پی 192.168.1.11 نشسته ایم.

تا اینجای کار آدرس آی پی 192.168.1.11 تمام بسته هایش را برای ما ارسال خواهد کرد و اگر همین الان برای مراجعه به یک وبسایت برروی کامپیوتر مورد حمله قرار گرفته شده تلاش کنید متوجه خواهید شد که به ظاهر اینترنت کامپیوتر مقابل قطع است و هیچ کاری انجام نمی‌دهد. زیرا کامپیوتر مورد حمله بسته های خود را برای ما ارسال می‌کند ولی ما آن بسته هارا دور میریزیم؛ ولی قرار بود ما این بسته هارا بخوانیم و بعد آن هارا تحویل مودم دهیم تا آب از آب تکان نخورد!! برای این کار در لینوکس باید حالت روتر را فعال کنیم که لینوکس کار مسیریابی را انجام دهد و بسته هارا به مقاصد درست خود برساند. برای این کار از دستور زیر استفاده می‌کنیم و حالت روتر لینوکس خود را فعال می‌کنم.

sudo echo 1 >/proc/sys/net/ipv4/ip_forward

حالا همه چیز آماده است و شما میتوانید تمامی ترافیک ارسالی از کامپیوتر مورد حمله را به وسیله نرم افزار wireshark شنود کنید.

نرم افزار wireshark را اجرا کنید.

ARP Spoofing چیست و چگونه صورت می‌گیرد؟

برروی شبکه eth0 خود کلیک کنید تا بتوانید تمام بسته هایی که از این انترفیس عبور می‌کند را مشاهده کنید.

اما ما نیازی به تمامی پکت های ارسالی و دریافتی برروی اینترفیس eth 0 نداریم و باید تمام پکت هایی که از طرف 192.168.1.11 است را مورد بررسی قرار دهیم.

ARP Spoofing چیست و چگونه صورت می‌گیرد؟

برای این کار در قسمت فیلتر کردن پکت ها مقدار ip.addr==192.168.1.11 را تایپ می‌کنیم تا فقط و فقط بسته هایی از این آدرس آی پی برای ما نمایش داده شود.

حالا شما شاهد تمامی پکت های ارسالی و دریافتی توسط کامپیوتر 192.168.1.11 هستید و به یاد داشته باشید که اگر کامپیوتر مورد نظر به سایت هایی که از TLS استفاده می‌کند سر بزند شما قادر به خواندن محتوای آن نیستید!!

با تشکر از توجه شما. امیدوارم بعد از خواندن این مقاله جریان خون را در رگ هایتان حس کرده باشید.


مبین آقاشاهی
مبین آقاشاهی

Full Stack Developer

یک آسیایی قضا و قدری که به کامپیوترها دستور میده 💻 گاهی عکس میگیرم چون کامپیوترهارو نمی‌فهمم و گاهی مینویسم چون دنیا رو نمیفهم

نظرات