درس آموزشی درس ۲ از ۶

اسکن پورت چیست؟ پورت باز در هک شبکه چه خطری دارد؟

پورت باز یعنی سیستم هک‌شدنیه؟ با داستان یک رصدخانه و آزمایش روی کامپیوتر خودت یاد بگیر اسکن پورت، Nmap و وضعیت Open و Filtered واقعاً چی می‌گن.

مقدماتی ۲۵ دقیقه مطالعه بروزرسانی ۲۵ مهر ۱۴۰۵
فهرست این درس

ببین، فرض کن یکی بهت می‌گه «پورت ۲۲ این سرور بازه». اولین چیزی که به ذهنت می‌رسه چیه؟ اینکه سیستم راه نفوذ داره؟ یا اینکه یک سرویس روی اون پورت منتظر اتصاله؟ فرق این دو تا خیلی مهمه. اسکن پورت کمک می‌کنه وضعیت ارتباط رو بررسی کنیم، ولی به‌تنهایی به ما نمی‌گه سرویسی امنه یا آسیب‌پذیر. اتفاقاً خیلی از گزارش‌های اشتباه امنیتی از همین برداشت عجولانه شروع می‌شن.

توی این درس اول یاد می‌گیری پورت دقیقاً چیه و ابزارهایی مثل Nmap چه اطلاعاتی بهت می‌دن. بعد با ماجرای یک رصدخانه فرضی می‌فهمی چرا باز بودن یک سرویس ممکنه کاملاً طبیعی باشه، شش وضعیت پورت در Nmap رو بررسی می‌کنیم و آخرش روی سیستم خودت پورت باز و بسته رو عملاً می‌بینی. همه تمرین‌ها محلی‌ان؛ لازم نیست به شبکه یا سرور هیچ‌کس دیگه‌ای درخواست بفرستی.

اسکن پورت چیست؟ جواب کوتاهی که باید قبل از هر ابزار بلد باشی

اسکن پورت یا Port Scanning یعنی از یک میزبان درباره یک یا چند پورت مشخص پرس‌وجو کنیم و براساس جواب‌ها بفهمیم ارتباط در اون شرایط چه وضعیتی داره. مدیر شبکه ممکنه برای عیب‌یابی اتصال این کار رو انجام بده و متخصص امنیت برای پیدا کردن سرویس‌های در معرض دسترس. اما هیچ‌کدوم فقط با دیدن «پورت باز» نمی‌تونن ادعا کنن وارد سیستم شدن یا یک ضعف امنیتی قطعی پیدا کردن.

مثلاً اگه نتیجه بررسی پورت 443/tcp به شکل open باشه، می‌فهمی از همون نقطه‌ای که تست کردی یک سرویس TCP اتصال رو پذیرفته. ممکنه پشتش وب‌سرور HTTPS باشه، ولی شماره پورت به‌تنهایی هویت نرم‌افزار رو ثابت نمی‌کنه. حتی از داخل شرکت و از اینترنت هم احتمال داره دو نتیجه مختلف بگیری. پس نتیجه اسکن پورت رو مثل یک عکس از وضعیت ارتباط در زمان و مسیر مشخص ببین، نه حکم نهایی امنیت.

اسکن پورت

پورت در شبکه چیست و چه فرقی با IP داره؟

بیا از پایه شروع کنیم. IP رو فعلاً شبیه نشونی یک ساختمون تصور کن و شماره پورت رو مثل شماره واحد. این مثال کمک می‌کنه بفهمی چطور یک کامپیوتر می‌تونه هم‌زمان به چند برنامه شبکه‌ای سرویس بده. البته پورت واقعاً سوراخی روی دستگاه نیست؛ یک شماره منطقی در پروتکل‌هایی مثل TCP و UDP هست که سیستم‌عامل برای هدایت ارتباط بین برنامه‌ها ازش استفاده می‌کنه.

وقتی با مرورگر به یک وب‌سایت HTTPS معمولی وصل می‌شی، مقصد اغلب 443/tcp هست. اما در HTTP/3 ممکنه 443/udp استفاده بشه. کامپیوتر خودت هم معمولاً یک پورت موقت برای سمت کلاینت انتخاب می‌کنه. برای همین نوشتن «پورت ۴۴۳ بازه» دقیق نیست؛ بهتره مشخص کنی کدوم پروتکل، کدوم میزبان و از چه مسیری بررسی شده.

تفاوت پورت نرم‌افزاری با پورت فیزیکی

اگه پشت لپ‌تاپ درگاه USB یا روی روتر سوکت LAN می‌بینی، داری درباره پورت فیزیکی حرف می‌زنی. ولی وقتی می‌گیم پورت ۲۲ برای SSH یا ۳۳۸۹ برای RDP، منظورمون شماره‌پورت نرم‌افزاریه. این دو موضوع فقط اسم مشترک دارن. قاطی کردنشون موقع یادگیری شبکه باعث می‌شه از همین قدم اول تصویر غلطی از ارتباطات داشته باشی.

سه بازه شماره پورت از نگاه IANA

شماره پورت‌ها از صفر تا ۶۵۵۳۵ تعریف می‌شن و مرجع رسمی IANA اون‌ها رو برای ثبت خدمات به سه بازه تقسیم کرده. این تقسیم‌بندی رو یاد بگیر، ولی خیال نکن پورت‌های بزرگ‌تر امن‌ترن. اگه سرویس آسیب‌پذیر باشه، جابه‌جاش کردن از ۲۲ به یک عدد ناشناخته مشکل اصلی رو حل نمی‌کنه.

محدودهعنوان رایجتوضیح عملی
۰ تا ۱۰۲۳System / Well-Knownشماره‌های شناخته‌شده برای سرویس‌ها و پروتکل‌های رایج
۱۰۲۴ تا ۴۹۱۵۱User / Registeredمحدوده ثبت‌شده برای کاربردهای مختلف
۴۹۱۵۲ تا ۶۵۵۳۵Dynamic / Privateاغلب برای ارتباطات موقت یا استفاده خصوصی؛ تخصیص ثابت IANA نداره

یه نکته ریز هم این وسط هست: پورت صفر در فهرست تخصیص‌ها قرار داره ولی مثل پورت معمول یک سرویس عمومی استفاده نمی‌شه. ضمن اینکه برنامه‌ها می‌تونن روی شماره‌ای غیر از پورت پیش‌فرض اجرا بشن. پس وقتی ابزار کنار عدد ۸۰ برچسب http نشون می‌ده، تا وقتی تشخیص واقعی سرویس انجام نشده، این برچسب رو فقط یک سرنخ بدون.

چرا موضوع پورت باز در هک شبکه مهم می‌شود؟

حالا تصور کن یک رصدخانه محلی به اسم «آسمان روشن» داریم. بازدیدکننده‌ها باید صفحه نمایش آنلاین رصد رو ببینن، اپراتور از پشت سیستم خودش تلسکوپ رو کنترل می‌کنه و عکس‌های پژوهشی هم روی یک دستگاه جدا نگهداری می‌شن. طبیعیه سرویس عمومی باز باشه؛ اما آیا مهمان‌ها هم باید بتونن به پنل کنترل تلسکوپ وصل بشن؟ اینجا بحث «پورت باز» تبدیل می‌شه به بحث دسترسی لازم و دسترسی اضافی.

فرض کن در گزارش رصدخانه نوشته شده روی سیستم اپراتور یک پورت مدیریتی بازه. عجله نکن بگی هک شده! شاید فقط از همون سیستم قابل دسترسیه و پشت احراز هویت مناسب قرار داره. شاید هم اشتباهی روی تمام رابط‌های شبکه فعال شده و مهمان‌ها هم می‌تونن بهش برسن. عدد پورت در هر دو حالت یکسانه، اما ریسک این دو وضعیت اصلاً یکی نیست.

توی داستان ما قرار نیست دانشجو راه مخفی نفوذ پیدا کنه. قراره بررسی کنه سرویس موردنظر برای چه کاری فعاله، چه کسی بهش نیاز داره، کدوم مسیرها بهش می‌رسن و چه چیزی هنوز مشخص نشده. این نگاه هم برای مسئول شبکه کاربردیه، هم برای کسی که می‌خواد بعدها وارد تست نفوذ قانونی بشه.

پنج سؤال که بعد از دیدن هر پورت باز باید بپرسی

برای اینکه بعد از هر اسکن پورت سردرگم نشی، یک روش ساده داریم: «پرونده پنج‌سؤالی پورت». این اسم فقط برای آموزش همین درس انتخاب شده و استاندارد رسمی نیست. وقتی نتیجه‌ای دیدی، پنج سؤال جدول رو جواب بده؛ جایی هم اطلاعات نداری، به‌جای حدس‌زدن واضح بنویس «هنوز بررسی نشده».

سؤالچرا مهمه؟نمونه در رصدخانه
چه ارتباطی؟پروتکل و شماره پورت را جدا می‌کند8765/tcp
از کجا قابل دسترسه؟دید شبکه داخلی با اینترنت یکسان نیستفقط روی خود رایانه اپراتور
چه سرویسی واقعاً پاسخ می‌ده؟اسم پیش‌فرض پورت اثبات هویت سرویس نیستیک وب‌سرور آموزشی موقت
این دسترسی برای چه کسی لازمه؟اصل حداقل دسترسی را وارد تحلیل می‌کنداپراتور، نه مهمان
چه شواهدی از ضعف داریم؟باز بودن را از آسیب‌پذیری جدا می‌کندهنوز هیچ ضعفی اثبات نشده

گاهی جواب این سؤال‌ها اینه که پورت باید باز بمونه؛ چون مشتری واقعاً به اون سرویس احتیاج داره. گاهی هم متوجه می‌شی یک سرویس قدیمی بدون صاحب مشخص فعاله و می‌شه حذفش کرد. هدف امن‌سازی این نیست که همه پورت‌ها رو کورکورانه ببندیم؛ باید برای هر ارتباط دلیل، محدوده و کنترل مشخص داشته باشیم.

تفاوت Open و Closed و Filtered در اسکن پورت

بذار این قسمت رو خیلی دقیق بگم: وقتی برای اسکن پورت از Nmap استفاده می‌کنی و نتیجه رو open یا filtered معرفی می‌کنه، درباره یک ویژگی ابدیِ دستگاه حرف نمی‌زنه؛ داره نتیجه مشاهده خودش رو گزارش می‌ده. هم نوع اسکن مهمه و هم جایی که ازش تست می‌کنی. ممکنه همون پورت روی یک سیستم از داخل شبکه open باشه و از اینترنت filtered دیده بشه.

وضعیت Open یعنی چه؟

اگه می‌پرسی «پورت باز چیست؟»، جوابش رو توی وضعیت open می‌بینی، یعنی Nmap شواهدی دریافت کرده که یک سرویس روی اون پورت برای پروتکل بررسی‌شده ارتباط رو می‌پذیره. همین. هنوز نمی‌دونی چه کسی اجازه ورود داره، چه نسخه‌ای اجرا می‌شه یا اصلاً ضعفی وجود داره یا نه. یک وب‌سرور کاملاً سالم هم برای پاسخ دادن به کاربران به پورت باز نیاز داره.

وضعیت Closed یعنی چه؟

وضعیت closed یعنی از مسیر بررسی‌شده پاسخ دریافت شده، ولی روی اون شماره‌پورت سرویس گوش‌دهنده‌ای دیده نشده. پس سیستم لزوماً خاموش نیست؛ ممکنه ده‌ها پورت دیگه‌اش در دسترس باشن. برای درک تفاوتش با فیلترشدن، به این دقت کن که در حالت بسته معمولاً پاسخ مشخصی درباره نپذیرفتن ارتباط داریم.

وضعیت Filtered یعنی چه؟

اما filtered داستان دیگه‌ایه. اینجا اسکنر به‌خاطر فیلتر یا محدودیت مسیر نتونسته با قطعیت بگه پورت بازه یا بسته. ممکنه فایروال بسته‌ها رو کنار گذاشته باشه یا پاسخ‌ها به اسکنر نرسیده باشن. حواست باشه این نتیجه هم به معنی «سرویس صددرصد امنه» نیست؛ شاید همین پورت از مسیر مجاز دیگری در دسترس باشه.

سه وضعیت کمتر گفته‌شده Nmap

در مستندات رسمی Nmap سه حالت دیگه هم داریم. unfiltered یعنی در نوع خاصی از بررسی، مسیر قابل دسترس بوده اما باز یا بسته بودن معلوم نشده؛ open|filtered یعنی ابزار بین باز بودن و فیلترشدن مردده؛ closed|filtered هم یعنی نمی‌تونه بین بسته و فیلترشده تفکیک کنه. این حالت آخر مخصوص روش Idle Scan گزارش می‌شه. قرار نیست ابهام رو با حدس به جواب قطعی تبدیل کنیم.

وضعیت در Nmapبرداشت قابل دفاعبرداشت اشتباه
openسرویسی برای آن پروتکل و پورت پاسخ قابل قبول دادهسیستم هک‌شدنی است
closedمقصد پاسخ داده ولی سرویس گوش‌دهنده دیده نشدهکل رایانه خاموش است
filteredاسکنر نتوانسته وضعیت قطعی را مشخص کندفایروال قطعاً همه حمله‌ها را می‌گیرد
unfilteredمسیر قابل دسترس است، وضعیت نهایی روشن نیستپورت حتماً باز است
open|filteredباز یا فیلترشده؛ عدم قطعیت باقی ماندهپورت قطعاً باز است
closed|filteredبسته یا فیلترشده؛ عدم قطعیت باقی ماندهپورت قطعاً بسته است

تفاوت TCP و UDP در اسکن پورت

فرق اسکن پورت TCP و اسکن پورت UDP فقط عوض شدن یک اسم نیست. در TCP معمولاً می‌تونیم از رفتار برقراری اتصال و پاسخ‌های برگشتی سرنخ بگیریم، ولی UDP اتصال‌محور نیست و بعضی سرویس‌ها اصلاً به داده نامعتبر جواب نمی‌دن. نتیجه؟ وقتی پاسخی نیاد، Nmap در بعضی روش‌های اسکن UDP ممکنه open|filtered گزارش بده. این ابهام رو باید موقع تحلیل جدی بگیری.

مثلاً DNS معمولاً روی 53/udp و در شرایط لازم روی 53/tcp کار می‌کنه، ولی SSH معمولاً از 22/tcp استفاده می‌کنه. پس به‌جای اینکه بگی «پورت ۵۳ بازه»، بگو کدوم پروتکل رو بررسی کردی. اسم سرویس و شماره پورت هم همیشه رابطه یک‌به‌یک ندارن؛ یک سرویس می‌تونه روی شماره متفاوت اجرا بشه.

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

پورت‌های مهم در هک و تست نفوذ شبکه کدام‌اند؟

توی آموزش اسکن پورت با Nmap معمولاً چند پورت رو بیشتر می‌بینی؛ چون سرویس‌های شناخته‌شده زیادی از اون‌ها استفاده می‌کنن. جدول بعدی صرفاً کمک می‌کنه حدس اولیه بزنی دنبال چه سرویسی بگردی. اسم رایج پورت، تشخیص قطعی نرم‌افزار نیست؛ بعد از اسکن باید پروتکل، کاربرد واقعی و سطح دسترسی سرویس رو جدا بررسی کنی.

پورت معمولکاربرد رایجسؤال امنیتی منطقی
21/tcpFTPآیا انتقال فایل بدون رمزگذاری یا سرویس قدیمی لازم است؟
22/tcpSSHچه کسانی باید مدیریت از راه دور داشته باشند؟
23/tcpTelnetچرا سرویس مدیریتی قدیمی و بدون رمزگذاری فعال مانده؟
53/udp و 53/tcpDNSاین سرویس برای چه شبکه‌هایی پاسخ‌گو است؟
80/tcpHTTPآیا هدایت مناسب به HTTPS انجام می‌شود؟
443/tcp و گاهی 443/udpHTTPS / HTTP/3آیا دسترسی عمومی واقعاً لازم است؟
445/tcpSMBآیا اشتراک فایل فقط از شبکه‌های مجاز قابل دسترس است؟
3389/tcpRDPآیا دسترسی مدیریتی محدود و محافظت‌شده است؟
3306/tcpMySQLچرا دیتابیس باید از این مسیر دیده شود؟
5432/tcpPostgreSQLآیا اتصال فقط برای برنامه‌های مجاز فراهم است؟

برگردیم به رصدخانه: باز بودن وب‌سایت عمومی روی 443/tcp ممکنه دقیقاً چیزی باشه که لازم داریم. اما اگر پایگاه داده تصاویر روی 5432/tcp بدون دلیل برای بازدیدکننده‌ها در دسترس باشه، باید بررسیش کنیم. برای همین فهرستی به اسم «پورت‌های خطرناک شبکه» رو نباید حکم قطعی بدونی. خطر از خود عدد نمیاد؛ از ترکیب سرویس، داده حساس و مسیری میاد که نباید آزاد می‌بود.

آیا هر پورت باز یک راه نفوذ یا آسیب‌پذیری است؟

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

بعد از پیدا کردن پورت، تازه کار تحلیل شروع می‌شه: باید هویت سرویس، تنظیمات، نسخه، مسیر دسترسی و مجوزها رو در محدوده آزمون بررسی کنی. حتی دیدن شماره نسخه قدیمی هم به‌تنهایی به معنی وجود ضعف قابل بهره‌برداری نیست؛ بعضی سازنده‌ها اصلاح امنیتی رو Backport می‌کنن. خوبه تفاوت «مشاهده»، «احتمال» و «اثبات» رو توی گزارش از هم جدا نگه داری.

آزمایش عملی و امن : خودمان یک پورت باز بسازیم

بریم سراغ تمرین عملی اسکن پورت. این بار قرار نیست هیچ IP عمومی یا دستگاه دیگه‌ای رو اسکن کنیم. فقط روی آدرس 127.0.0.1، یعنی خود کامپیوترت، یک سرویس موقت بالا می‌آریم. بعد می‌بینیم وقتی سرویس اجرا می‌شه ارتباط چه وضعی داره و وقتی می‌بندیمش چی عوض می‌شه. از یک پوشه خالی استفاده کن تا فایل شخصی ناخواسته در دسترس همون سیستم هم قرار نگیره.

گام اول : یک وب‌سرور موقت روی کامپیوتر خودت

اگه Python 3 روی سیستم داری، فرمان زیر رو در ترمینال اجرا کن. گزینه --bind 127.0.0.1 باعث می‌شه این وب‌سرور فقط روی رابط Loopback گوش بده، نه روی همه آدرس‌های شبکه. حواست باشه وب‌سرور ساده پایتون برای آموزش مناسبه، نه استفاده واقعی در Production.

python3 -m http.server 8765 --bind 127.0.0.1

روی ویندوز شاید فرمان python3 کار نکنه. در این حالت می‌تونی py -m http.server 8765 --bind 127.0.0.1 رو امتحان کنی. بعد آدرس http://127.0.0.1:8765/ رو در مرورگر خودت باز کن. اگر شماره ۸۷۶۵ قبلاً استفاده شده بود، یک پورت آزاد دیگه انتخاب کن و در فرمان اسکن هم همون رو بذار.

گام دوم : با Nmap فقط میزبان محلی را بررسی کنیم

حالا یک ترمینال دوم باز کن. اگر Nmap نصب داری، دستور زیر رو اجرا کن تا فقط پورت ۸۷۶۵ روی کامپیوتر خودت بررسی بشه. گزینه -sT روش اتصال TCP هست و -p شماره پورت موردنظر رو تعیین می‌کنه. این تمرین رو برای آشنایی با نتیجه ابزار انجام می‌دیم، نه پیدا کردن سرویس دیگران.

nmap -sT -p 8765 127.0.0.1

توی آزمایش اسکن پورت، تا وقتی وب‌سرور محلی فعاله و مانعی سر راه اتصال نیست، انتظار داریم Nmap وضعیت open نشون بده. اگه نتیجه متفاوت شد، اول ببین سرور هنوز اجراست یا نه، پورت رو درست نوشتی و محدودیت محلی وجود نداره. اسم ستون SERVICE رو هم با هویت قطعی نرم‌افزار اشتباه نگیر؛ در این آزمایش خودمون می‌دونیم چه برنامه‌ای اجرا شده.

گام سوم : برنامه را ببند و دوباره بررسی کن

حالا به ترمینالی که وب‌سرور رو اجرا کردی برگرد و Ctrl+C بزن. دوباره همون دستور اسکن پورت رو اجرا کن. اگر برنامه دیگه‌ای روی ۸۷۶۵ گوش نده و تنظیمات محلی مانع نشه، نتیجه معمولاً closed می‌شه. با همین آزمایش ساده می‌بینی که تغییر وضعیت پورت می‌تونه صرفاً به روشن یا خاموش بودن یک برنامه مربوط باشه.

اگر Nmap نصب نباشد، چه؟

اگه Nmap نصب نیست، هنوز می‌تونی وضعیت شنونده‌های محلی رو ببینی. در لینوکس فرمان ss -lnt رو اجرا کن؛ در PowerShell ویندوز هم Get-NetTCPConnection -State Listen کاربرد داره. فرق این مشاهده با اسکن از بیرون رو فراموش نکن: ابزارهای سیستم‌عامل می‌گن روی خود دستگاه چه چیزی گوش می‌ده، نه اینکه از اینترنت چه چیزی قابل دسترسه.

ss -lnt

تمرین دوم : با Python فرق شنونده و ارتباط واقعی را ببین

برای اینکه موضوع رو دقیق‌تر لمس کنی، این بار با Python و کتابخانه استاندارد socket یک شنونده خیلی کوچک می‌سازیم. برنامه فقط به 127.0.0.1 متصل می‌شه، از سیستم یک پورت موقت آزاد می‌گیره، یک اتصال به خودش برقرار می‌کنه و بعد از بستن شنونده دوباره تلاش می‌کنه. این آزمایش هیچ شبکه بیرونی رو بررسی نمی‌کنه و جای اسکن واقعی Nmap رو هم نمی‌گیره.

import socket

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as server:
    server.bind(("127.0.0.1", 0))
    server.listen(1)
    server.settimeout(2)
    port = server.getsockname()[1]

    with socket.create_connection(("127.0.0.1", port), timeout=2):
        print("Before close: reachable")

    conn, _address = server.accept()
    conn.close()

try:
    with socket.create_connection(("127.0.0.1", port), timeout=2):
        print("After close: reachable")
except ConnectionRefusedError:
    print("After close: connection refused")

در اجرای معمول، اول عبارت Before close: reachable و بعد After close: connection refused دیده می‌شه. علتش ساده‌ست: بار اول یک برنامه منتظر ارتباطه؛ بار دوم شنونده بسته شده. شماره پورت در هر بار اجرا ممکنه فرق داشته باشه و اگر یک برنامه دیگر خیلی سریع همون پورت رو بگیره، نتیجه دوم هم متفاوت می‌شه. بنابراین این خروجی، نتیجه مورد انتظار آزمایش محلیه نه قول قطعی برای تمام سیستم‌ها.

چرا ممکنه پورت روی خود سرور باز باشد اما از اینترنت دیده نشود؟

اینجا یک سوءتفاهم رایج داریم: ممکنه برنامه روی 127.0.0.1 در حال گوش دادن باشه، ولی از هیچ دستگاه دیگه‌ای نتونی بهش وصل بشی. یا برنامه روی یک آدرس داخلی فعال باشه و فایروال اتصال از اینترنت رو ببنده. NAT، مسیریابی، VPN و تنظیمات Bind هم روی این موضوع اثر دارن. پس «روی سرور Listen است» رو با «از اینترنت قابل دسترسه» یکی نکن.

مثلاً اپراتور رصدخانه می‌تونه از رایانه خودش پنل تلسکوپ رو باز کنه، اما مهمان‌ها نباید به اون پنل برسن. اگر جداسازی درست کار می‌کنه، این تفاوت طبیعی و حتی مطلوبه. ولی اگر مهمان هم تونست اتصال برقرار کنه، هنوز باید بررسی کنیم چه مجوز و احراز هویتی وجود داره؛ اتصال موفق به معنی نفوذ موفق نیست.

فرق Listening و Reachable و Vulnerable : سه کلمه‌ای که نباید قاطی کنی

سه عبارت رو همیشه جدا نگه دار: Listening یعنی برنامه محلی منتظر اتصاله؛ Reachable یعنی از مسیر آزمایش تونستی بهش برسی؛ Vulnerable یعنی یک ضعف امنیتی با شواهد مناسب تأیید شده. ممکنه هر سه درباره یک سرویس مطرح باشن، اما از اولی نمی‌شه مستقیم به سومی پرید.

عبارتچه چیزی می‌دانیم؟چه چیزی هنوز نمی‌دانیم؟
Listeningبرنامه محلی آماده دریافت ارتباط استآیا دستگاه دیگری به آن دسترسی دارد؟
Reachableارتباط از مسیر مورد آزمایش برقرار شدهآیا احراز هویت و کنترل‌های امنیتی درست‌اند؟
Vulnerableضعف امنیتی با شواهد متناسب تأیید شدهاثر کامل و اولویت اصلاح ممکن است به تحلیل بیشتر نیاز داشته باشد

توی کار واقعی همین دقت جلوی دردسر زیادی رو می‌گیره. اگه به مدیر بگی «ده تا پورت باز پیدا کردم»، هنوز معلوم نیست کاری باید انجام بده یا نه. ولی اگه بگی «پنل مدیریت از شبکه مهمان قابل اتصال بود؛ احراز هویت هنوز بررسی نشده»، هم مشاهده رو روشن گفتی و هم چیزی رو که هنوز نمی‌دونی پنهان نکردی. گزارش خوب باید به تصمیم‌گیری کمک کنه.

چطور اسکن پورت را به گزارش امنیتی قابل استفاده تبدیل کنیم؟

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

فیلد پرونده فرضیمقدار نمونهیادداشت
داراییرایانه اپراتور رصدخانهمورد تأیید مالک شبکه
پروتکل/پورت8765/tcpنمونه آزمایشگاهی
نقطه بررسی127.0.0.1 روی همان دستگاهنه شبکه مهمان و نه اینترنت
وضعیت مشاهده‌شدهopen هنگام اجرای وب‌سرورپس از توقف تغییر می‌کند
سرویس واقعیوب‌سرور موقت Pythonدر آزمایش می‌دانیم چه برنامه‌ای اجرا شده
آسیب‌پذیری تأییدشدههیچ موردی در این آزمایشصرف باز بودن ضعف محسوب نمی‌شود
اقدام پیشنهادیمحدود کردن سرویس آزمایش به محیط محلیعدم استفاده از وب‌سرور ساده در تولید

هدف گزارش این نیست که مسئول شبکه رو با اسم ابزارها بترسونی. باید بتونه بفهمه کدوم سرویس لازم بوده، چرا باز شده، چه کسی مسئولشه و آیا سطح دسترسیش با نیاز کاری سازگاره. بعضی وقت‌ها نتیجه درست اینه که «تغییری لازم نیست»؛ بعضی وقت‌ها هم باید یک مسیر اضافی رو ببندیم. این تصمیم رو شواهد مشخص می‌کنن، نه تعداد پورت‌ها.

چه اشتباه‌هایی در آموزش هک شبکه با Nmap تکرار می‌شوند؟

اشتباه اول : پورت باز مساوی هک شدن

این اشتباه رو بارها می‌بینی: ابزار open نشون می‌ده و کسی نتیجه می‌گیره هک موفق بوده. نه؛ سرویس سالم هم می‌تونه باز باشه. باید بفهمیم چرا اون سرویس فعاله، چه کسانی مجازن ازش استفاده کنن و چه دفاع‌هایی جلوی دسترسی اضافی رو می‌گیرن.

اشتباه دوم : اسم ستون SERVICE را حقیقت قطعی بدانیم

اشتباه بعدی اعتماد بی‌چون‌وچرا به ستون SERVICE هست. Nmap ممکنه بسته به روش بررسی، نام پیش‌فرض مربوط به شماره پورت رو نشون بده. این اطلاعات برای شروع خوبه، اما جای شناسایی واقعی نرم‌افزار و نسخه‌اش رو نمی‌گیره. توی گزارش ننویس «Apache نصب شده» فقط چون ۸۰ باز بوده.

اشتباه سوم : تفاوت دیدگاه محلی و خارجی را نادیده بگیریم

اگه روی خود سرور عبارت LISTEN می‌بینی، هنوز چیزی درباره دسترسی از اینترنت ثابت نشده. Bind Address، فایروال و مسیر شبکه می‌تونن نتیجه رو عوض کنن. پس بدون ثبت نقطه مشاهده، جمله «این پورت برای همه بازه» پشتوانه کافی نداره.

اشتباه چهارم : از نبود پاسخ، بسته بودن قطعی نتیجه بگیریم

در اسکن UDP یا شبکه‌ای که پاسخ‌ها رو فیلتر می‌کنه، سکوت همیشه معنی «بسته» نمی‌ده. ممکنه سرویس باز باشه ولی جوابی به پیام موردنظر نده، یا پاسخ در مسیر حذف بشه. اگه ابزار open|filtered می‌گه، عین همین عدم قطعیت رو گزارش کن.

اشتباه پنجم : بدون محدوده و مجوز اسکن کنیم

نکته بعدی مجوزه. حتی اسکنِ صرف هم ممکنه روی تجهیزات حساس بار ترافیکی ایجاد کنه یا هشدار امنیتی راه بندازه. در شبکه واقعی باید از قبل محدوده، زمان، نرخ درخواست و روش توقف رو با مالک مشخص کنی. برای این درس نیازی به چنین ریسکی نداریم، چون تمرین‌ها فقط روی کامپیوتر خودته.

اگر پورت ناخواسته‌ای باز بود، از کجا شروع کنیم؟

اگر توی اسکن پورت یک سرویس غیرمنتظره دیدی، از شناسایی سرویس شروع کن. چه برنامه‌ای گوش می‌ده؟ متعلق به چه تیمیه؟ واقعاً باید از این مسیر در دسترس باشه؟ اگه لازم نیست، بعد از هماهنگی می‌شه سرویس یا مسیر اضافی رو غیرفعال کرد. اگه لازمه، سراغ محدودیت دسترسی، احراز هویت، وصله امنیتی و ثبت رخداد برو؛ راه‌حل یکسان برای همه سرویس‌ها نداریم.

مثلاً عوض کردن پورت پنل تلسکوپ از یک شماره معروف به ۸۷۶۵ ممکنه بعضی اسکن‌های سطحی رو کم کنه، اما محافظت اصلی ایجاد نمی‌کنه. کسی که مجاز به استفاده نیست نباید صرفاً با پیدا کردن شماره جدید به پنل دسترسی بگیره. از اون طرف، خاموش کردن سرویس لازم هم ممکنه کار رصدخانه رو بخوابونه. پس همیشه اثر عملیاتی رو کنار امنیت ببین.

آموزش هک شبکه

آیا اسکن پورت همان اسکن آسیب‌پذیری یا تست نفوذ است؟

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

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

نقش Nmap، کالی لینوکس و مهارت تحلیل در هک شبکه

شاید اولین بار آموزش Nmap و اسکن پورت با Nmap رو داخل ویدیوهای هک شبکه با کالی لینوکس دیده باشی. ابزار جذابیه، اما اصل مهارت اینه که بتونی خروجی رو درست تفسیر کنی. نصب کالی یا اجرای یک فرمان قرار نیست خودش بهت بگه شبکه امنه یا نه؛ باید TCP/IP، سرویس‌ها، فایروال و محدودیت‌های دید اسکنر رو هم بفهمی.

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

سه تمرین تحلیلی برای اینکه مطمئن بشی درس رو فهمیدی

تمرین اول : دو نتیجه متفاوت از یک دستگاه

فرض کن در تمرین اسکن پورتِ آزمایشگاه خودت پورت ۸۷۶۵ از داخل میزبان open گزارش می‌شه، ولی از شبکه مهمان filtered. چه توضیح‌هایی ممکنه وجود داشته باشه؟ Bind روی Loopback، قانون فایروال یا تفاوت مسیر شبکه رو بررسی کن؛ اما تا وقتی واقعاً آزمون مجاز انجام ندادی، هیچ‌کدوم رو نتیجه قطعی معرفی نکن.

تمرین دوم : تشخیص سرویس یا حدس از روی شماره

حالا یکی توی گزارش نوشته «پورت ۸۰ بازه، پس Apache روی سرور نصبه». مشکلش چیه؟ تنها از روی شماره پورت نمی‌شه برنامه پشت اون رو شناخت. خودت جمله رو به شکل دقیق‌تر بازنویسی کن؛ مثلاً «پورت 80/tcp از این مسیر باز مشاهده شد؛ هویت سرویس هنوز تأیید نشده».

تمرین سوم : انتخاب اقدام اصلاحی

در تمرین آخر فرض کن پنل کنترل تلسکوپ فقط برای اپراتورها لازمه ولی مهمان‌ها هم می‌تونن بهش وصل بشن. آیا بدون هماهنگی سرویس رو خاموش می‌کنی؟ بهتره سه راه رو مقایسه کنی: محدود کردن مسیر شبکه، تقویت مجوز و احراز هویت، و بررسی نیاز واقعی سرویس. هدف اینه که هم خطر کم بشه و هم کار اصلی مختل نشه.

چه زمانی باید سراغ آموزش عملی و تخصصی تست نفوذ شبکه برویم؟

وقتی می‌تونی فرق open و filtered رو توضیح بدی، متوجه بشی یک سرویس از دو مسیر نتایج متفاوت می‌ده و درباره آسیب‌پذیری عجولانه حرف نزنی، وقتشه آموزش تخصصی‌تر رو شروع کنی. از اینجا به بعد شناسایی سرویس، تحلیل تنظیمات و نوشتن گزارش به مهارت شبکه و کار آزمایشگاهی منظم احتیاج داره.

درس‌های رایگان نابغه‌ها برای همین ساخته شدن که قبل از حفظ دستورها، مفهوم رو درست بفهمی. اگه به تمرین‌های منظم و مسیر پیشرفته علاقه داری، می‌تونی سرفصل‌های پکیج متخصص تست نفوذ نابغه‌ها رو ببینی و با هدفت مقایسه کنی. عجله‌ای برای خرید نیست؛ اول مطمئن شو همین مفاهیم پایه رو درست یاد گرفتی.

هک شبکه با کالی لینوکس

جمع‌بندی : از دیدن یک عدد تا فهمیدن یک مسیر دسترسی

بذار جمع‌بندی کنیم: اسکن پورت یعنی مشاهده وضعیت ارتباط، نه اثبات امکان نفوذ. یک شماره پورت بدون دانستن پروتکل، سرویس، نقطه مشاهده و مجوزها اطلاعات ناقصیه. در رصدخانه فرضی دیدیم باز بودن یک سرویس عمومی می‌تونه کاملاً طبیعی باشه و در آزمایش Loopback هم یاد گرفتیم شروع و توقف یک برنامه چطور نتیجه اتصال رو تغییر می‌ده.

دفعه بعد که Nmap کنار پورتی open چاپ کرد، فقط دنبال «راه ورود» نگرد. از خودت بپرس این سرویس چیه، چه کسی باید بهش برسه و کدوم شواهد نشون می‌دن واقعاً مشکلی وجود داره. همین سؤال‌های ساده نقطه شروع تحلیل درست هک شبکه و تست نفوذ حرفه‌ایه.

سؤالات متداول درباره اسکن پورت و پورت‌های باز

اسکن پورت چیست و برای چه کاری استفاده می‌شود؟

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

آیا باز بودن پورت یعنی سیستم هک شده است؟

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

تفاوت پورت باز، بسته و فیلترشده در Nmap چیست؟

در Nmap، حالت open نشونه پذیرش ارتباط توسط یک سرویسه؛ closed یعنی مقصد پاسخ داده ولی شنونده‌ای روی اون پورت دیده نشده؛ و filtered یعنی ابزار به‌خاطر فیلتر مسیر نمی‌تونه وضعیت دقیق رو مشخص کنه.

با کالی لینوکس و Nmap می‌شود پورت‌های باز را پیدا کرد؟

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

آیا تغییر شماره پورت باعث جلوگیری از هک می‌شود؟

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

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

ممکنه سرویس فقط روی Loopback گوش بده یا فایروال و مسیر‌یابی دسترسی بیرونی رو محدود کرده باشن. بنابراین دید یک اسکنر محلی لزوماً با دید اسکنر روی اینترنت یکسان نیست.

تفاوت اسکن پورت TCP و UDP چیست؟

TCP اتصال‌محوره و خیلی وقت‌ها جواب مشخص‌تری برای تشخیص وضعیت می‌ده. در UDP بعضی سرویس‌ها به داده نامعتبر پاسخ نمی‌دن، برای همین نتیجه‌هایی مثل open|filtered بیشتر دیده می‌شن.

اسکن پورت چه فرقی با اسکن آسیب‌پذیری و تست نفوذ دارد؟

اسکن پورت درباره وضعیت ارتباطه؛ اسکن آسیب‌پذیری نشانه‌های ضعف رو دنبال می‌کنه؛ و تست نفوذ مجاز می‌تونه اثر ضعف رو در محدوده توافق‌شده بررسی کنه. هر کدوم سطح ادعا و هدف متفاوتی دارن.

منابع معتبر برای مطالعه بیشتر

برای اینکه توضیح‌ها رو از خود سازنده‌ها هم دنبال کنی، مستند رسمی شش وضعیت Nmap، راهنمای TCP Connect Scan و فهرست شماره‌پورت‌های IANA رو ببین. برای تمرین Python هم مستند http.server و مستند socket مرجع مناسبی هستن. داستان رصدخانه و پرونده پنج‌سؤالی، مثال‌های آموزشی همین درس هستن، نه روایت یک حادثه واقعی.

می‌خواهی عمیق‌تر جلو بروی؟

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

اگر می‌خواهی مباحث را به‌ترتیب، همراه تمرین و پروژه دنبال کنی، مسیر کامل دوره را ببین.

مشاهده پکیج تست نفوذ