scapy ابزاری بسیار قدرتمند و انعطاف پذیر است که از زبان برنامه نویسی پایتون استفاده می کند. این ابزار قابلیت شنود داده, دستکاری بسته ها و انجام حملات را دارد.
شنود
می توان از این ابزار برای شنود بسته های شبکه استفاده کرد. در مقایسه با wireshark این ابزار رابط گرافیکی مناسبی ندارد. ولی برخلاف wireshark شما در ابزار scapy حتی می توانید خودتان بسته نیز بسازید.
برای هر بسته تمام لایه ها را به صورت زیر می نویسد که حجم بسیار بالایی دارد و بررسی آن بدون کد بسیار مشکل است.
در خط اول کد کتابخانه Scapy را وارد کردیم و از برخی از کلاس هایش را نیز استفاده می کنیم. سپس تابعی تعریف کردیم که نامش packet_callback است و هر زمان بسته ای دریافت کند آن را نمایش می دهد.
خط آخر هم دستور sniff را با دو پارامتر نشان می دهد.
ICMP
می توان به جای ابزارهایی مانند ping و hping3 نیز از ابزار scapy استفاده کرد که نسبت به آن ها انعطاف پذیری بهتری در ارسال بسته مورد نظر جهت پینگ گرفتن دارد.
SCAN
می توان برای اسکن شبکه نیز از ابزار scapy استفاده کرد. نسبت به سایر ابزارها در این زمینه (nmap,…) قابلیت شخصی سازی بسته های شبکه و انجام اسکن های پیچیده تر را دارد.
نتیجه به صورت زیر است :
مثال های عملی تر
همچنین می توانید از طریق ICMP به جای پینگ یک پیام برای گیرنده ارسال نمایید و یک TTL عجیب هم داخلش قرار دهید.
خب وقتش رسیده که یک مثال کاربردی و عملی را بررسی کنیم. می خواهیم یک حمله DOS از طریق بسته های Tcp با syn.flag = 1 طراحی کنیم. و در لایه دو و سه شبکه ردپای خود را محو نماییم.
تارگت مجبور است با بسته های ACk به ما پاسخ بده و از آنجاییکه IP مبدا جعلی هست پس پاسخی دریافت نخواهد کرد و این انتظار درگیرش می کند.
اما چرا از IP جعلی در رنج تارگت استفاده کردم. اگر تمام اوکتت ها را رندوم تعیین می کردم چه اتفاقی می افتاد ؟
اگر رنج داخلی رو انتخاب کنیم بسته به راحتی در شبکه داخلی مسیریابی میشود. در این حالت، دستگاههای شبکه نیازی به مسیریابی خارجی ندارند و بستهها فقط در شبکه داخلی حرکت میکنند.
اگر ما IP مبدأ رو از رنج خارج از شبکه داخلی قرار بدهیم، بسته به (Gateway) می رود. مقادیر زیر را در نظر بگیرید.
Network IP : 172.30.1.0/24
Gateway : 172.30.1.100
src fake IP : 8.88.8.8
target IP : 12.30.1.23
حالا شما با ابزار scapy یک IP فیک طبق فرضیات بالا می سازید. دراینجا هنوز سیستم شما از جدول مسیریابی خودش استفاده می کند و با IP اصلی خودش گیت وی را پیدا می کند. اما بسته ای که به Gateway می رسد شامل IP مبدا با مقدار 8.88.8.8 است.
گیت وی اما به IP مبدا اهمیتی نمی دهد و بسته را به تارگت می رساند. اما تارگت در جواب چه کار می کند ؟ به دنبال IP مبدا می رود تا به آن جواب دهد. در اینجا فایروال وارد مدار می شود چون می خواهد این بسته را از شبکه عبور دهد. و این موضوع می تواند برایتان مشکل ساز شود. از طرفی ممکن است جواب تارگت به یک مقصد واقعی برسد که IP اش 8.88.8.8 است و این موضوع هم مشکل جدیدی است.
اما اگر IP مبدا را از داخل رنج شبکه بگذارید دیگر درگیر فایروال و IDS احتمالا نخواهید شد و خیالتان راحت تر خواهد بود. اما اینجا هم مشکلی وجود دارد. ممکن است شما با تداخل بین IP های داخلی مواجه شوید و این موضوع هم باعث لورفتنتان خواهد شد.
اما این دو حالت مربوط به وقتی بود که داخل شبکه حضور دارید. اگر خارج از شبکه هستید و باید از پشت فایروال این بسته فیک خود را به تارگت داخل شبکه برسانید به احتمال زیاد اصلا قادر به عبور از فایروال نخواهید بود. در نهایت به نظر می رسد انتخاب IP در رنج شبکه وقتی داخل شبکه هستید انتخاب بهتری است. مخصوصا اگر بخواهید جواب تارگت را دریافت کنید.
اما نکته بعدی که باید توضیح داده شود نحوه تعیین MAC است. ما بیت هفتم MAC را 1 گذاشتیم و بیت هشتم را صفر کردیم. بیت هفتم 1 نشانه لوکال بودن MAC است. اگر MAC خود را غیرلوکال بگذارید طبیعی تر است ولی از آنجایی که سیستم تان از برند خاصی است و MAC منحصر به فردی باید داشته باشد این موضوع می تواند باعث ردیابی تان شود.
اما وقتی MAC لوکال انتخاب می کنید سرور مانیتورینگ نسبت به این MAC حساسیت کمتری نشان می دهد زیرا ابزار های مجازی سازی به عنوان مثال این MAC ها را می سازند و این MAC ها هم چندان غیرطبیعی نیستند. همچنین بیت هشتم هم اگر یک باشد به معنی مالتی کست بودن MAC است. به همین دلیل صفر قرار دادیم.حال چرا عدد تصادفی را بین 10 تا 99 می گذاریم؟ خب می توانستیم این عدد را از 00 تا ff قرار دهیم اما 10 را انتخاب کردم تا عدد تصادفی ساخته شده یک رقمی نشود و عدد تصادفی هم نمی توانست به صورت هگزادسیمال ساخته شود. بنابراین تا 99 قرار دادم.
7th bit in MAC for local = 1
8th bit in MAC for multicast = 1
اما شاید جالب ترین حمله با ابزار scapy حمله DNS SPOOFING باشد. در این حمله شما می توانید با دستکاری درخواست های DNS پاسخ جعلی به تارگت خود بدهید و او را به مقصد مورد نظر خود هدایت کنید. بررسی DNS بسیار مشکل خواهد بود و شما به راحتی می توانید حمله FISHING وMIDM را با این حمله ادغام کنید. به عنوان مثال می توانید رمز های کاربران را یافته و دیتای محافظت شده آن ها را اززندان دیسک هایشان آزاد کنید.
به نظرتون چجوری میشه کد این حمله رو نوشت و همچنان غیرقابل ردیابی باقی ماند ؟
دیدگاهتان را بنویسید