-
سه شنبه, ۱۱ شهریور ۱۳۹۹، ۱۱:۵۹ ق.ظ
-
۳۲۱۰
نفوذ و دسترسی به سیستم هدف در شبکه فقط با یک اسکریپت ۴ خطی
درود به همه !
امروز باز به مبحث گرفتن دسترسی یعنی فاز سوم هکینگ میپردازیم . در این پست یاد میگیریم اسکریپتی بنویسیم که فقط ۴ خط کد دارد و پس از اجرای این اسکریپت روی سیستم هدف ما میتونیم خیلی راحت در شبکه به فایل های روی سیستم هدف دسترسی داشته باشیم و اونارو ببینیم ، باز کنیم و ... . این اسکریپت بر روی هر سیستم عاملی میتواند اجرا شود .
کاری که اسکریپت امروز میکنه اینه که میاد یه وب سرور روی سیستم هدف اجرا میکنه . وب سرور چیه ؟ وب سرور در واقع یه برنامه هستش که وقتی روی یه کامپیوتری اجرا میشه ، میاد به درخواست های وب که کلاینت ها ارسال میکنن پاسخ میده . برای مثال یک وبسایت عادی ، روی سرور خود یک وب سرور دارد که به درخواست های http یعنی روی پورت 80 شنود میکند و به آن ها جواب مورد نیاز را میدهد .
حال اسکریپت ما باعث میشود تا سیستم هدف روی پورت دلخواهی که ما مشخص میکنیم شنود رو انجام بده و وقتی ما یه درخواست http میفرستیم به اون پورت مورد نظر ، اسکریپت ما مثل یک وب سرور فایل های سیستم هدف رو در اختیار ما میزاره
(اسکریپت رو بنویسیم و اجرا کنیم بهتر متوجه میشید )
شاید براتون سوال پیش بیاد یه چنین چیزی چطور میشه که با ۴ خط کد نوشته بشه ؟؟؟ باید بگم وقتی ما از زبانی مثل پایتون صحبت میکنیم این چیزا کاملا عادیه چون پایتون یه زبان شیء گرا هستش و کتابخونه های بسیار زیادی داره .
خود پایتون یه سری اسکریپت ها و کتابخونه های داخلی داره که به صورت پیشفرض روی پایتون نصب هستن . برای مثال ما امروز از ماژولی به اسم http.server استفاده میکنیم که باعث میشه ما با چند خط کد بتونیم یه وب سرور روی سیستم هدف ایجاد کنیم .
سورس کد :
from http.server import SimpleHTTPRequestHandler as handler from socketserver import TCPServer
httpd = TCPServer(("" ,8000) , handler) # Make Handler on port 8000
httpd.serve_forever() # Start Handler
توضیح سورس کد : در ابتدا از ماژول http.server ، کلاس SimpleHTTPRequestHandler رو ایمپورت کردیم . کار این کلاس پردازش درخواست های http هستش که هکر میفرسته . در خط بعد از کتابخونه ی socketserver اومدیم TCPServer رو ایمپورت کردیم . کاربرد این مورد هم برای ساختن و اجرای وب سرور هستش .
در خط بعدی اومدیم handler یا همون کنترل کننده ی وب سرورمون رو ساختیم و ریختیم داخل متغییر httpd .دو تا ورودی از ما گرفته . ورودی اول یک تاپل هستش شامل یک رشته خالی و عدد ۸۰۰۰ است. به جای رشته ی خالی باید آِدرس IP لوکال سیستمی که اسکریپت روش اجرا میشه (در اینجا سیستم قربانی) رو بنویسیم که ما خالی گذاشتیم . وقتی خالی بزاریم خود پایتون به طور خودکار اینکارو برامون انجام میده . یعنی به طور خودکار آدرس آی پی لوکال سیستم رو درنظر میگیره . و عدد ۸۰۰۰ هم نشون دهنده ی پورتی هستش که میخوایم وب سرور روی اون پورت اجرا بشه . ورودی دوم هم کلاس هندلری هستش که میخوایم باهاش درخواست های http رو پردازش کنیم که ما همونSimpleHTTPRequestHandler که اول ایمپورت کردیم رو بهش دادیم .
در خط آخر با استفاده از متود serve_forever وب سرور رو راه انداختیم و عملا کار اصلی از همینجا شروع میشه .
خب این از اسکریپت . میریم برای اجرا و تست نتیجه . برای تست من یه سیستم ویندوز ۷ رو به عنوان کامپیوتر قربانی در شبکه در نظر گرفتم (اسکریپتی که نوشتیم روی این سیستم اجرا میشه) .
همچنین یک سیستم لینوکس اوبونتو رو به عنوان سیستم هکر در شبکه در نظر گرفتم .
اسکریپت رو روی سیستم قربانی اجرا میکنم :
سپس در سیستم هکر وارد مرورگر میشم و آدرس IP سیستم قربانی رو در قسمت آدرس بار مرورگر وارد میکنم (به همراه شماره پورتی که وب سرور روی اون کار میکنه) . تصویر زیر :
همینطور که در تصویر بالا میبینید ، پس از رفتن به آدرس مورد نظر لیستی از پوشه ها و فایل های سیستم قربانی به ما نشان داده میشود و ما با کلیک کردن روی هرکدام از آن ها میتوانیم وارد آن ها شویم یا محتویات آن ها را ببینیم .
نکته ی مهمی که هست اینه که همینطور که میبنید وقتی در مرورگر هکر به آدرس سیستم قربانی رفتیم ، فایل ها و پوشه های همون مسیری روی سیستم قربانی رو به ما نشون داد که اسکریپت رو اجرا کرده بودیم . بنابراین باید اسکریپت وب سرور رو روی همون مسیری که میخوایم بهش دسترسی داشته باشیم اجرا کنیم . فرض کنید ما میخواهیم به درایو C در ویندوز دسترسی داشته باشیم ، برای اینکار باید اسکریپت در مسیر درایو C اجرا شود . خب این موضوع یکم کار رو مشکل میکنه چون گاهی اوقات ما نمیدونیم قربانی اون اسکریپت رو قرار هستش در چه مسیری اجرا کنه . ما میتونیم یه ترفندی رو به کار ببریم و اونم این هستش که داخل خود اسکریپتمون کاری کنیم تا در هر مسیری که ما میخواهیم بهش دسترسی داشته باشیم اجرا بشه . درواقع برای اینکار باید دایرکتوری فعلی رو در اسکریپت تغییر بدیم . فرض کنید ما میخواهیم پس از اجرای اسکریپتمون ، به مسیر D:\musics در سیستم هدف دسترسی داشته باشیم . به صورت زیر عمل میکنیم :
from http.server import SimpleHTTPRequestHandler as handler from socketserver import TCPServer from os import chdir as chdir
chdir("D:\\musics") # Change Directory To D:\Musics
httpd = TCPServer(("" ,8000) , handler) httpd.serve_forever()
تغییراتی که در اسکریپت دادیم به این صورت هستش : در ابتدا ما از کتابخونه ی os ، تابع chdir رو ایمپورت کردیم تا بتونیم مسیر پوشه فعلی رو تغییر بدیم . سپس در خط بعد با استفاده از دستور chdir اومدیم مسیر دایرکتوری فعلی رو به مسیری که میخواستیم بهش دسترسی داشته باشیم یعنی D:\musics تغییر دادیم . میتونید به هر مسیری که نیاز دارید تغییر بدید . حتی میتونید اسم یک درایور رو بنویسید برای مثال :
chdir("C:\\")
این باعث میشه کلا به درایور مورد نظر دسترسی داشته باشیم .
به همین سادگی . میتونید این اسکریپت رو خروجی اجرایی بگیرید و با ترفندی که در پست (چگونه در پایتون اسکریپتی بنویسیم که به طور مخفیانه در پس زمینه اجرا شود ؟) یاد دادیم ، کاری کنید تا برنامه پس از اجرا به طور مخفیانه در پس زمینه اجرا شود و کاربر از وجود آن خبردار نشود .
سوالی بود در بخش نظرات مطرح کنید
یا حق !
Telegram Channel : @mrpythonblog