لینوکس ۳۰۳؛ شب ۳۸: Nmap؛ موجودی سرویسها را با حدس اشتباه نگیر
فهرست نوشته
قرار بود فقط SSH دیده شود؛ از بیرون چه چیزی واقعاً دیده میشود؟ امشب Nmap را برای inventory و بررسی اثر policy بهکار میبریم و معنی open، closed و filtered را از هم جدا میکنیم.
این جلسه بخشی از دورهٔ لینوکس ۳۰۳ در ۴۰ شب است.
محیط تمرین: client Ubuntu 24.04؛ nmap؛ هدف فقط srv و IPهای lab؛ سرویسهای فعال و مجوز scope ثبتشده.
جایگاه در دوره: هدفهای 335.2 آزمون 303-300.
اول سؤال، بعد گزینه#
Active reconnaissance با هدف ارتباط میگیرد؛ passive reconnaissance از دادههای موجود و منابع دیگر استفاده میکند. حتی lookup عمومی DNS میتواند با زیرساخت طرف تماس داشته باشد؛ «passive» را بدون توضیح نقطهٔ مشاهده به کار نبر. جزوههای گردآوری اطلاعات را برای روش فکر کردن میخوانیم و بهجای هدف واقعی بیرونی، کتابخانهٔ ساختگی را بررسی میکنیم.
ابتدا از ss -lntup سرور یک فهرست محلی بگیر؛ سپس از client:
mkdir -p ~/lpic303/nmap
nmap -sT -Pn -p 22,80,443 --reason \
-oA ~/lpic303/nmap/srv-baseline 192.168.56.10
TCP connect scan با حساب عادی کار میکند. -Pn discovery را کنار میگذارد و فرض بررسی هدف را میگیرد؛ وجود هدف را اثبات نمیکند. -oA چند قالب خروجی برای گزارش و مقایسه میسازد. یک IP و سه پورت، scope این تمرین است.
تفسیر نتیجه#
open یعنی رفتار یک listener مشاهده شده؛ closed یعنی معمولاً پاسخ رد وجود دارد؛ filtered یعنی فیلتر یا نبود پاسخ کافی، تصمیم را محدود کرده است. این حالتها به نقطهٔ مشاهده و نوع scan وابستهاند. نبودن سرویس در فهرست از یک client، نبودن آن روی سرور را ثابت نمیکند.
nmap -sT -sV -Pn -p 22,80,443 192.168.56.10
sudo nmap -sS -Pn -p 22,80,443 192.168.56.10
-sV تلاش برای شناخت سرویس میکند؛ banner میتواند گمراهکننده یا نشانهٔ نسخهٔ دارای backport باشد. SYN scan به دسترسی مناسب نیاز دارد. تشخیص سیستمعامل با -O هم استنباط است و شرایط شبکه و پورتهای در دسترس بر آن اثر دارند؛ بهصورت نتیجهٔ قطعی گزارش نکن.
NSE با انتخاب آگاهانه#
NSE یعنی Nmap Scripting Engine؛ scriptها سطح تماس و اثر متفاوت دارند. قبل از اجرا، help همان script را بخوان:
nmap --script-help ssl-cert
nmap -sT -Pn -p 443 --script ssl-cert 192.168.56.10
اگر TLS درس ششم فعال باشد، انتظار مشخصات گواهی داریم؛ در حالت mTLS یا policy متفاوت، نتیجه میتواند محدود شود. مجموعههای all یا vuln را کور اجرا نکن. script انتخابشدهٔ این تمرین برای مشاهدهٔ گواهی است؛ اعتبار زنجیره و نام را همچنان با آزمونهای TLS بررسی میکنیم.
در آزمایش dual-stack شب سیام، از nmap -6 -sT -Pn -p 22 fd30:303::10 هم استفاده کن. اسکن UDP با -sU حالتهایی مثل open|filtered دارد؛ سکوت UDP با بسته بودن قطعی یک پورت یکی نیست.
مأموریت امشب#
پیش و پس از policy فایروال، از دو client با نقش متفاوت inventory بگیر. هر اختلاف را با counter rule، capture و listener توضیح بده. فایل خروجی شامل آدرس و نسخه است؛ فقط نمونهٔ lab را عمومی کن.
مرجع: راهنمای Nmap ، port states و NSE .