مبحث یکم : مقدمه و تاریخچه
مبحث دوم: مراحل نفوذ کردن / جلوگیری از نفوذ
مبحث سوم: حملات شبکه ای
مبحث چهارم - کار عملی
مبحث پنجم - DHCP
مبحث ششم - وب و حملات مطرح در آن
مبحث هفتم - حملات DoS
مبحث هشتم - سیستم عامل
مبحث نهم - مهندسی اجتماعی
مبحث دهم - Vulnerability (آسیب پذیری)

تست عملی ARP Poisoning

کاری که در بالا انجام دادیم این بود که توانستیم host های موجود در شبکه را شناسایی کنیم ، بر روی چند سیستم دیگر از همان شبکه این کار را انجام دهید تا آن سیستم ها هم بتوانند host های موجود را شناسایی کنند .

توجه : اگر خواستید Pen Test انجام دهید گزینه All Tests را انتخاب نکنید زیرا این کار باعث آشکار شدن کار شما می گردد . پس شما یک تست را انجام دهید یا بگذارید sniffer همان گونه که است باقی بماند ( خودش به طور passive یک سری را update می کند )

توجه : گزینه All host in my subnet فقط subnet خودمان را تست می کند . یک گزینه Range هم وجود دارد که می توان یک محدوده را مشخص کرد . دقت کنید که چون بسته هایی که فرستاده می شود broadcast و multicast است . اگر vlan تعریف شده باشد و .. جلوی بسته های گرفته می شود .

حال برای انجام حمله ARP از قسمت پایین پنجره بر روی برگه ARP(ARP Poisoning Routing) کلیک کنید ( شکل 9 )

شکل 9

همانطور که می بینید یک سری از گزینه ها در سمت چپ پنجره اضافه می شوند ( شکل 10 )

شکل 10

از منوی Configure ( در بالای پنجره اصلی برنامه ) می توان در برگه ARP یک سری از تنظیمات را انجام داد ( شکل 11 ) برای مثال می توان تنظیم کرد به جای اینکه بسته هایی که فرستاده می شوند از MAC و IP اصلی سیستم استفاده کنند از MAC و IP دیگر استفاده کنند ( جعل IP و MAC)

شکل 11

  • ما همان گزینه use real IP … را انتخاب می کنیم .

توجه : ابزار ettercap می تواند جایگزینی برای cain باشد .

  • در پنجره شکل 11 درقسمت Poisoning گزینه Poison remote… برای این است که ARP replyها چندوقت به چندوقت فرستاده شوند . اگر از cain برای حمله استفاده می کنید این زمان را باید به گونه ای قرار دهید که IDS موجود در سیستم هدف ، نسبت به این کار شما واکنش نشان ندهد . البته در خلال این بازه ممکن است سیستم اصلی بیایید و reply  بدهد و کار حمله را مشکل کند . در ادامه دو گزینه وجود دارد که یکی می گوید فقط بستهreply  ارسال شود و دیگری می گوید که هم بسته request و بسته reply ارسال شود . انتخاب این گزینه ها بر می گردد به نحوه پیاده سازی ARP در OS های مختلف . اگر بخواهیم سولاریس را Poison بکنیم باید ARP Request را انتخاب کنیم ولی اگر ویندوز را بخواهیم، گزینه ARP reply را انتخاب می کنیم . همچنین مثلا اگر IDS موجود در سیستم هدف حساس است گزینه … ARP Request را انتخاب می کنیم اما time  را بالاتر می دهیم ، چون این حالت ترافیک بیشتری تولید می کند و شناسایی آن راحت تر می شود .
  • ما گزینه ARP reply را انتخاب می کنیم و زمان را هم 1S می دهیم و سپس بر روی OK کلیک می کنیم .

سوال : این زمان چه تاثیری دارد ؟ اگر یک زمان خیلی کم انتخاب کنیم ، ترافیک زیادی در شبکه ایجاد می شود که باعث می شود که شناسایی بشویم . مزیت زیاد بودن آن هم این است که مطمئنیم MAC که میخواستیم در جدول سیستم هدف Set شده است . اما اگر زمان را خیلی زیاد انتخاب کنیم ، ترافیک کم تر می شود . امکان شناسایی پایین تر می آید ولی ممکن است در این بازه در جدول سیستم هدف فرد واقعی MAC و IP خود را وارد کند .

  • همانطور که گفته شد یک سیستم زمانی یک ARP request ارسال می کند که 1 –MAC آی­پی مورد نیاز خود را نداشته باشد . 2 – در جدول ARP این MAC و IP وجود داشته اما age آن تمام و remove شده است . حال باید ببینیم aging این سیستم ها چقدر است . آیا مثلا هر 10 دقیقه یک بار یک سطر از جدول عمرش به پایان می رسد و یا هر 2 ثانیه؛ بعد از بدست آوردن این اطلاعات می توان زمان ارسال را در cain دقیق تر set کرد .

شکل 12

  • همانطور که درشکل 12 می بینید دو پنجره وجود دارند که بر روی پنجره بالایی کلیک کرده و سپس بر روی گزینه + کلیک می کنیم در پنجره ای که باز می شود از ما می خواهد که انتخاب کنیم ترافیک چه کسی را می خواهیم Poison کنیم . از لیست سمت چپ می توانیم سیستم مورد نظر را انتخاب کنید . دقت کنید همه را انتخاب نکنید ! همچنین gateway را هم انتخاب نکنید ! از لیست سمت راست هم می توانیم یک سیستم را انتخاب کنیم . حال ترافیک بین این دو سیستم را sniff کنیم . دقت کنید که سیستمی را انتخاب کنید که ترافیکی بینشان ردو بدل شود یعنی آن دو سیستم با هم تعامل داشته باشند .

بعد از انتخاب سیستم های مورد نظر در لیست بر روی دکمه OK کلیک می کنیم . مشاهده می کنیم که IP و MAC سیستم های هدف به جدول اول اضافه شد. برای شروع Poison کردن باید بر روی دکمه زردرنگ (Start /Stop APR) کلیک کنید . به wireshark هم دقت کنید . حال روی Start کلیک می کنیم . به wireshark نگاه کنید . یکی از بسته های مربوط به ARP را که بعد از Start  کردن APR تسخیر می شود را بررسی کنید . جزئیات این بسته را در پنجره پایین wireshark نگاه کنید ( شکل 13 ). من قصد داشتم تا دو سیستم 213.233.168.1 و 213.233.168.167 را Poison کنم . یکی از بسته های ارسال شده را انتخاب کرده ام . ( لازم به ذکر است IP و MAC من به ترتیب 213.233.168.56 و :::::58 است . )

شکل 13

اگر به کادر قرمز در شکل 13 نگاه کنید می بینید که در قسمت Sender MAC Address آدرس فیزیکی من وجود دارد اما در قسمت Sender IP Address آی پی کامپیوتر دیگر (213.233.168.1) که قصد Poison کردن آن را داشته ام آمده است. همچنین اگر به قسمت Target نگاه کنید می بینید که این بسته در حال ارسال به کامپیوتر دیگری است (213.233.168.167) که قصد Poison کردن آن را داشته ام . حال اگر در کامپیوتر 213.233.168.167 دستور arp –a را بزنید می بینید که در جلوی آی­پی 213.233.168.1 آدرس سخت افزاری من قرار گرفته است .

توجه : با دستور getmac می توانید MACخود را ببینید .

توجه : با دستور ipconfig  /all نیز می توانید MAC خود را ببینید .

  • کاری که کردیم نمونه ای بود از Active Sniffingهم اثرات بر روی شبکه دارد ، هم قابل شناسایی است (با دفاع در عمق هم می توان به صورت سخت افزاری /نرم افزاری IPS قرار داد) . می توان به طور دستی نیز بررسی کرد؛ مثلا ARPسیستم خود را چک کنیم و بررسی کنیم .
  • اگر بر روی stop ARP در نرم افزار cainکلیک کنید ، Poison برطرف می شود .
  • یک ویژگی که ابزاری مثل ettercap دارد این است که بعد از اینکه شما Poisonخود را انجام دادید و Stopرا می زنید ، جداول ARPسیستم های قربانی را به حالت قبل بر می گرداند .
  • حال در Cainقسمت Configureدر برگه ی APRاین بار روی گزینه ی ARP Requestکلیک می کنیم و OKمی زنیم . سپس همان Poison قبلی را Startمی کنیم اگر به wiresharkنگاه کنید می بینید که حالا دیگر خود سیستم requestهم می فرستد (who has….) .

توجه : دقت کنید که خود Wiresharkهم کنار برخی ازبسته ها یک اخطار duplicate use of …را داده است که به گونه ای تشخیص داده است که یک اتفاقاتی در حال رخ دادن است .

  • بسته requestکه ارسال می شود دارای آدرس MACشما و IPمثلا 233.168.1است و آن را ارسال می کند به 213.233.168.167. دقت کنید همانطور که در این بسته می بینید ( بسته request) مقدار Target MAC Addressبرابر صفر است . چون قرار است مقصدی که به دنبال آن هستیم (213.233.168.167)آدرس فیزیکی خود را در آن قرار دهد . دقت کنید که این requestبه 213.233.168.167 ارسال می شود و نه به همه سیستم ها (کاملا در حال بازی کردن است).

شکل 14

نکته : وقتی که Poisonرا Startمی کنیم با آمدن به برگه Passwords( در پایین صفحه ) می توان پسوردهای مختلف را دید (شکل 14) این پسوردها مربوط به همان ترافیک هایی است که شما در قبل گفتید redirectکند . نرم افزار هر Plain textجذابی که ببندد را Capture می کند .

تمرین : مثلا telnetرا روی یک سیستم فعال کنید . شما سیستم های دیگر که می خواهند به آن سیستم telnetکنند را Poisonکنید و سعی کنید Passwordشان را بدست آورید .

نکته : وقتی دو hostرا برای Poisonکردن مشخص می کنید ، فقط ترافیکی که بین این دو host رد وبدل می شود را می بینید اگر مثلا یکی از آن ها بخواهد به گوگل برود نمی توانید ترافیکش را بگیرید . اگر می خواهید ترافیک بیرون شبکه را بگیرید باید ترافیک gateway و host مورد نظر را بگیرید .

نکته : وقتی چند نفوذگر همزمان یک سیستم را Poison می کنند ، خیلی ناهمگونی پیش می آید . چون ARP tableآن سیستم دائما تغییر می­کند و بسته های آن سیستم به جاهای مختلف می روند.

نکته : می توان در wiresharkبا کلیک راست بر روی یک بسته مربوط به telnetو انتخاب گزینه follow TCP Streamاطلاعاتی را درباره ی telnetبدست آورید .

  • همانطور که گفته شد می توان Passwordرا در برگه Passwordمشاهد کرد. Cain چگونه username و Password ها را تشخیص می دهد ؟ مثلا در قسمت های مختلف که در سمت چپ پنجره وجود دارد مثل httpیا در قسمت SMM( برای shareوصل شدن ) . این ها چگونه شناسایی می شوند ؟ یکی از راه های جلوگیری از شناسایی این است که از تنظیمات پیش فرض استفاده نکنیم . مثلا تنظیم پیش فرض صفحات loginدر وب این است که عنوان text boxآن مثلا login، user،U،  Password،P و … است . حال بسته که رد و بدل می شود عبارت userرا که دید فیلد بعدی را Captureمی کند . حال اگر طرفین ارتباطی که قصد استخراج پسوردهایشان را داریم از پیش فرض ها استفاده نکرده بود می توانیم خودمان به یک سری اطلاعات برسیم . مثلا یک مدت سیستم را Sniffمی کنیم و فیلدها را بدست می آوریم و یا وب سایت مقصد را نگاه می کنیم . مثلا تراکنش های کاربر و بانک xرا می خواهید بررسی کنید . شما می توانید متوجه چند نکته شوید 1- login بانک xرا نگاه می کنید ومی بینید که مثلا نام فیلد loginآن us19است . مثلا عنوان فیلد پسورد هم Pa11است . حالامی خواهید این نام ها را بررسی کنید . برای این کار باید در cainفیلتر اضافه کنید؛ از منوی Configurationبه برگه ی Http Fieldsبروید همانطور که در شکل 15 می بینید در قسمت username fieldsخودش یک سری عبارت را دارد . در این قسمت شما می توانید عبارت مورد نظر خود را وارد کنید و روی دکمه + کلیک کنید .

شکل 15

سوال : آیا با این ورشی که گفتیم می توان ترافیک هرجایی را گرفت ؟ اگر در رنج شبکه ما باشد بله .

اسکرول به بالا