20 درصد تخفیف ویژه دوره های جامع آکادمی تکوان24!

فقط 0 روز و 0 ساعت و 0 دقیقه و 0 ثانیه باقی مانده!

آموزش ساخت پورت اسکنر با پایتون

زمان مطالعه: 6 دقیقه

آنچه در این مقاله می‌خوانید

آموزش ساخت پورت اسکنر با پایتون

در این مقاله اموزشی قصد داریم تا شما را با نحوه ساخت پورت اسکنر با پایتون آشنا کنیم پورت اسکنرها ابزارهایی برای شناسایی پورت های یک سیستم یا سرور می باشد و می توان از پورت اسکنرها در شبکه و در تست نفوذ استفاده کرد.اسکن پورت ممکن است به عنوان یک تکنیک نظارتی تعریف شود که به منظور تعیین  پورت های باز موجود در یک هاست خاص استفاده می شود. مدیر شبکه، Pen Tester یا یک هکر می توانند از این تکنیک استفاده کنند. ما می‌توانیم اسکنر پورت را با توجه به نیازهایمان پیکربندی کنیم تا حداکثر اطلاعات را از سیستم هدف دریافت کنیم.

اطلاعاتی را که می توانیم پس از اجرای اسکن پورت به دست آوریم:

  • اطلاعات در مورد پورت های باز.
  • اطلاعات مربوط به سرویس های در حال اجرا در هر پورت.
  • اطلاعات مربوط به سیستم عامل و آدرس MAC میزبان هدف.

اسکن پورت درست مانند دزدی است که می خواهد با بررسی هر در و پنجره ای وارد خانه شود تا ببیند کدام یک باز است. همانطور که می‌دانید، مجموعه پروتکل TCP/IP که برای ارتباط از طریق اینترنت استفاده می شود، از دو پروتکل به نام های TCP و UDP تشکیل شده است. هر دو پروتکل دارای پورت های ۰ تا ۶۵۵۳۵ هستند. همانطور که همیشه توصیه می شود پورت های غیر ضروری سیستم خود را ببندید، بنابراین اساساً بیش از ۶۵۰۰۰ (پورت) برای بستن وجود دارد. این پورت ۶۵۵۳۵ را می توان به سه محدوده زیر تقسیم کرد:

  • پورت های well known از ۰ تا ۱۰۲۳
  • پورت های register شده از ۱۰۲۴ تا ۴۲۱۵۱
  • پورت های خصوصی از ۴۲۱۵۲ تا ۶۵۵۳۵ (source ports)

پورت اسکن با استفاده از سوکت

پورت اسکنر با پایتون

هنگامی که اسکریپت بالا را اجرا می کنیم، نام هاست را درخواست می کند، شما می توانید هر نام هاست را مانند نام هر وب سایتی ارائه دهید، اما مراقب باشید زیرا اسکن پورت را می توان به عنوان یک جرم  تعبیر کرد. ما هرگز نباید یک پورت اسکنر را برای  هر وب سایت یا آدرس IP بدون اجازه صریح و کتبی صاحب سرور یا رایانه ای که شما هدف قرار داده اید اجرا کنیم. اسکن پورت شبیه به رفتن به خانه شخصی و بررسی درها و پنجره های آنها است. به همین دلیل است که توصیه می شود از پورت اسکنر در لوکال هاست یا وب سایت خود (در صورت موجود بودن) استفاده کنید.

خروجی اسکنر پورت

اسکن پورت با استفاده از ICMP

icmp schema

ICMP اسکن پورت نیست اما برای پینگ کردن میزبان برای بررسی اینکه آیا هاست فعال است یا خیر استفاده می شود. این اسکن زمانی مفید است که باید تعدادی میزبان زنده در یک شبکه را بررسی کنیم. که شامل ارسال یک  ICMP ECHO Request به یک هاست است و اگر آن هاست فعال باشد، یک  ICMP ECHO Reply را برمی‌گرداند.

مفاهیم Ping Sweep

در واقع  Ping Sweep به عنوان Ping Sweeping نیز شناخته می شود. تنها تفاوت این است که Ping Sweeping روشی برای یافتن بیش از یک دستگاه در دسترس در محدوده شبکه ای خاص است. برای مثال، فرض کنید می‌خواهیم فهرست کاملی از آدرس‌های IP را آزمایش کنیم، سپس با استفاده از پینگ اسکن، یعنی دستور پینگ سیستم عامل، اسکن آدرس‌های IP یک به یک بسیار زمان‌بر است. به همین دلیل است که باید از اسکریپت Ping Sweep استفاده کنیم. در زیر یک اسکریپت پایتون برای یافتن میزبان های زنده با استفاده از Ping Sweep آمده است:

ping sweep_1

 

ping_sweep_2

اسکریپت فوق در سه قسمت کار می کند. ابتدا محدوده آدرس IP را برای اسکن ping sweep با تقسیم آن به قسمت هایی انتخاب می کند. به دنبال آن از تابعی استفاده می‌شود که دستور ping sweep را با توجه به سیستم عامل انتخاب می‌کند و در آخر پاسخی در مورد هاست و زمان صرف شده برای تکمیل فرآیند اسکن می‌دهد.

خروجی ping_sweep

خروجی بالا هیچ پورت فعالی را نشان نمی دهد زیرا فایروال روشن است و تنظیمات ورودی ICMP نیز غیرفعال هستند. پس از تغییر این تنظیمات می توانیم لیست پورت های زنده در بازه ۱ تا ۱۰۰ ارائه شده در خروجی را دریافت کنیم.

اسکن پورت با استفاده از TCP

برای ایجاد یک ارتباط TCP باید tree-way-handshake انجام شود.

  1. Packet with SYN flag set

در این مرحله، سیستمی که سعی در راه اندازی یک اتصال دارد، با بسته ای شروع می شود که دارای پرچم SYN است.

  1. Packet with SYN-ACK flag set

در این مرحله، سیستم مقصد بسته ای را با مجموعه پرچم های SYN و ACK برمی گرداند.

  1. Packet with ACK flag set

در نهایت، سیستم فرستنده بسته ای را با مجموعه پرچم ACK به سیستم مقصد اصلی باز می گرداند.

نیاز به اسکن TCP زمانی جلوه می‌کند که پروتکل ICMP در سیستم های امنیتی مانند فایروال غیر مجاز تنظیم شده باشد.

Tcp_Port_Scanner

TCP_Port_Scanner

اسکریپت فوق در سه قسمت کار می کند. محدوده آدرس IP را برای اسکن Ping Sweep با تقسیم آن به قطعات انتخاب می کند. به دنبال آن از یک تابع برای اسکن آدرس استفاده می شود که بیشتر از سوکت استفاده می کند. و پاسخ هاست و زمان صرف شده برای تکمیل فرآیند اسکن را برمی‌گرداند.

result = s.connect_ex((addr,135))  خطا را برمی گرداند. در صورت موفقیت آمیز بودن عملیات،  خطا ۰ است، به عبارت دیگر، مقدار متغیر errno است. در اینجا از پورت ۱۳۵ استفاده کردیم. این اسکنر برای سیستم ویندوز کار می کند. پورت دیگری که در اینجا کار می کند ۴۴۵ (Microsoft-DSActive Directory) است که معمولاً باز است.

خروجی Tcp_Port_scanner

اسکنر پورت با multithread برای افزایش سرعت اسکن

همانطور که در موارد فوق دیدیم، اسکن پورت می تواند بسیار کند باشد. به عنوان مثال، می توانید مدت زمان اسکن پورت ها از ۵۰ تا ۵۰۰ را مشاهده کنید، در حالی که از اسکنر سوکت پورت استفاده می کنید، ۴۵۴.۱۰۱۴۹۸۸۴۲۲۳۹۴ است. برای بهبود سرعت می توانیم از threading استفاده کنیم. در زیر نمونه ای از پورت اسکنر با استفاده از threading آورده شده است:

1_Multi_Threading_Port Scanner

1_Multi_Threading_Port Scanne2

خروجی 1_Multi_Threading_Port Scanner

در اسکریپت بالا باید ماژول threading را که در Python تعبیه شده است Import کنیم. ما از مفهوم Thread locking و ایجاد یک متغییر از تغییرات متعدد در یک زمان جلوگیری میکنیم   ()thread_lock = threading.Lock. اساساً،  ()threading.Lock به تک رشته اجازه می دهد تا به متغیر در یک زمان دسترسی داشته باشد. از این رو، هیچ تغییر مضاعفی رخ نمی دهد.

بعد از آن یک تابع ()threader تعریف می کنیم که  پورت را از worker  برای حلقه می گیرد. سپس متد ()portscan برای اتصال به پورت و چاپ نتیجه فراخوانی می شود. شماره پورت به عنوان پارامتر ارسال می شود. پس از اتمام کار، متد ()q.task_done فراخوانی می شود.

حال پس از اجرای اسکریپت فوق، تفاوت سرعت را برای اسکن ۵۰ تا ۵۰۰ پورت مشاهده می کنیم. تنها ۱.۳۴۲۶۴۵۱۶۸۳۰۴۴۴۳۴ ثانیه طول کشید که بسیار کمتر از ۴۵۴.۱۰۱۴۹۸۸۴۲۲۳۹۴ است، زمانی که اسکنر پورت سوکت برای اسکن همان تعداد پورت لوکال هاست صرف کرده است.

این مقاله از این منبع ترجمه شده است.

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

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.

20 درصد تخفیف ویژه دوره های جامع آکادمی تکوان24!

فقط 0 روز و 0 ساعت و 0 دقیقه و 0 ثانیه باقی مانده!