تغییرات اخیر

در اینجا اطلاعیه‌ها، نسخه‌ها و تغییرات جدید لیارا فهرست می‌شوند.

نحوه بررسی و تست پیکربندی فایروال با Nmap و Tcpdump


۲۲ بهمن ۱۴۰۳

مقدمه

راه‌اندازی یک فایروال (Firewall) برای زیرساخت شما، یک روش عالی برای افزایش امنیت خدماتی است که به کاربران‌تان، ارائه می‌دهید. پس از ایجاد یک سیاست امنیتی (policy) که از آن به اندازه کافی، راضی هستید؛ گام بعدی، آزمایش قوانین firewall شماست. خیلی مهم است که بررسی کنید قوانین فایروال دقیقاً همان کاری را انجام می‌دهند که انتظار دارید و همچنین متوجه شوید که زیرساخت شما از دید دنیای بیرون چگونه به نظر می‌رسد.

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

پیش‌نیازها

در این راهنما، فرض می‌کنیم که شما یک فایروال (Firewall) را روی سرور مجازی خود تنظیم کرده‌اید. می‌توانید با دنبال کردن راهنمای زیر، در ابتدا سرور مجازی خود را تنظیم و بعد از آن، سیاست فایروال خود را ایجاد کنید:

در این راهنما، سروری که شامل سیاست‌های فایروالی موردنظر شما برای تست است، هدف (Target) نامیده می‌شود. علاوه بر سرور هدف، باید به سرور دیگری که خارج از شبکه محافظت‌شده توسط فایروال قرار دارد، دسترسی داشته باشید تا آزمایشات خود را انجام دهید. در این راهنما، از یک سرور Ubuntu 22.04 به‌عنوان Auditing Machine (ماشین حمله‌کننده) استفاده خواهیم کرد.

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

شما باید فعالیت‌های مطرح‌شده در این راهنما را فقط روی زیرساختی انجام دهید که تحت کنترل شماست و صرفاً برای این کارها مورد استفاده قرار می‌گیرد. قوانین مربوط به Port Scanning در بسیاری از حوزه‌های قضایی نامشخص هستند. برخی از ارائه‌دهندگان خدمات اینترنت (ISP)‌ و سایر شرکت‌های میزبانی، کاربرانی که Port Scanning انجام می‌دهند را مسدود می‌کنند.

ابزارهای مورد نیاز برای تست policyهای فایروال

ابزارهای متعددی برای تست سیاست‌های فایروال (Firewall Policies) وجود دارند که برخی از آن‌ها قابلیت‌های مشترکی دارند. در این راهنما، به همه ابزارهای ممکن نمی‌پردازیم، بلکه برخی از دسته‌بندی‌های کلی ابزارهای Auditing را بررسی کرده و ابزارهایی که در این راهنما استفاده خواهیم کرد را معرفی می‌کنیم.

تحلیل‌گرهای بسته (Packet Analyzers)

تحلیلگرهای بسته (Packet Analyzers) به شما امکان می‌دهند تمام ترافیک شبکه که از یک interface عبور می‌کند را با جزئیات کامل مشاهده کنید. بیشتر تحلیلگرهای بسته دارای دو حالت هستند:

  • حالت بلادرنگ (Real-time Mode): نمایش بسته‌ها در لحظه ارسال یا دریافت
  • حالت ضبط و پردازش بعدی: ذخیره اطلاعات بسته‌ها در یک فایل برای تحلیل در آینده

تحلیل بسته‌ها به شما کمک می‌کند تا به‌صورت دقیق و جزئی ببینید که ماشین هدف (Target Machine) چه نوع پاسخ‌هایی را به میزبان‌های موجود در شبکه عمومی ارسال می‌کند.

در این راهنما، از ابزار tcpdump استفاده خواهیم کرد. این ابزار به دلیل قدرت، انعطاف‌پذیری و دردسترس بودن در اکثر سیستم‌های لینوکس، انتخاب مناسبی است. از این ابزار برای ضبط بسته‌های خام (Raw Packet) در حین آزمایش استفاده خواهیم کرد تا در صورت نیاز بتوانیم لاگ‌ها را برای تحلیل‌های بعدی بررسی کنیم. سایر گزینه‌های محبوب شامل Wireshark (یا tshark که نسخه خط فرمان آن است) و tcpflow هستند که می‌توانند مکالمات کامل TCP را به‌صورت سازمان‌یافته بازسازی کنند.

Port Scannerها

برای ایجاد ترافیک و دریافت پاسخ‌هایی که تحلیلگر بسته قرار است آن‌ها را ضبط کند، از یک Port Scanner استفاده خواهیم کرد. Port Scannerها می‌توانند بسته‌های مختلفی را به میزبان‌های ریموت ارسال کنند تا بررسی کنند که سرور چه نوع ترافیکی را می‌پذیرد. هکرها اغلب از این ابزارها به‌عنوان ابزار شناسایی برای یافتن سرویس‌های آسیب‌پذیر و سوءاستفاده از آن‌ها استفاده می‌کنند. این یکی از دلایل اصلی استفاده از فایروال (Firewall) است. بنابراین، ما نیز از این ابزار برای مشاهده آنچه که یک مهاجم می‌تواند شناسایی کند، بهره خواهیم برد.

در این راهنما، از ابزار nmap برای نگاشت شبکه (network mapping) و Port Scanning استفاده خواهیم کرد. این ابزار به شما امکان می‌دهد بسته‌هایی از انواع مختلف را ارسال کنید تا بررسی کنید که چه سرویس‌هایی روی ماشین هدف فعال هستند و چه قوانین فایروالی، از ماشین هدف، محافظت می‌کند.

راه‌اندازی ماشین حمله‌کننده (Auditing Machine)

پیش از شروع، باید اطمینان حاصل کنید که ابزارهای مورد نیاز نصب شده‌اند. می‌توانید tcpdump و nmap را از repositoryهای ubuntu دریافت کنید. برای به‌روزرسانی لیست پکیج‌های local و نصب ابزارها، دستورات زیر را اجرا کنید:

sudo apt update
sudo apt install tcpdump nmap

برای نگهداری نتایج اسکن، یک دایرکتوری ایجاد کنید:

mkdir ~/scan_results

پیش از اجرای آزمایش‌ها، از تمام sessionهای باز (Active) بین ماشین حمله‌کننده و ماشین هدف خارج شوید. این شامل اتصالات SSH، اتصالات HTTP(S) در مرورگر و سایر ارتباطات باز، می‌شود.

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

اکنون که سرور و فایل‌ها آماده هستند، اسکن پورت‌های باز TCP را آغاز می‌کنیم. ابزار nmap چندین نوع اسکن TCP دارد، اما SYN Scan (که به‌عنوان “نیمه‌باز” نیز شناخته می‌شود) یکی از رایج‌ترین گزینه‌هاست. در SYN Scan، اتصال TCP کامل (Three-Way Handshake) انجام نمی‌شود، به همین دلیل برخی سیستم‌های تشخیص نفوذ (IDSها)، قادر به شناسایی آن نیستند. این روش معمولاً توسط مهاجمان استفاده می‌شود، اما ما از آن برای ارزیابی امنیتی استفاده خواهیم کرد.

راه‌اندازی ضبط بسته‌ها با tcpdump

قبل از اجرای اسکن، باید ابزار tcpdump را برای ضبط ترافیک تنظیم کنیم. این کار به ما کمک می‌کند بسته‌های ارسال‌شده (Sent) و دریافت‌شده (Received) را برای تحلیل‌های بعدی ذخیره کنیم. برای راه‌اندازی ضبط بسته‌ها با tcpdump، در ابتدا با اجرای دستور زیر، یک دایرکتوری برای ذخیره نتایج اسکن SYN ایجاد کنید:

mkdir ~/scan_results/syn_scan

اکنون، می‌توانید یک ضبط tcpdump را شروع کنید و نتایج را در یک فایل در دایرکتوری ~/scan_results/syn_scan ذخیره کنید:

sudo tcpdump host target_ip_addr -w ~/scan_results/syn_scan/packets

به‌صورت پیش‌فرض، tcpdump در پیش زمینه، اجرا می‌شود. برای اجرای nmap در همان پنجره، باید فرآیند tcpdump را متوقف کرده و سپس آن را در پس زمینه اجرا کنید. برای متوقف کردن فرآیند در حال اجرا، کلیدهای ترکیبی CTRL+Z را فشار دهید:

^Z
[1]+  Stopped                 sudo tcpdump host target_ip_addr -w ~/scan_results/syn_scan/packets

اکنون می‌توانید فرآیند را در پس‌زمینه اجرا کنید:

bg

باید خروجی مشابهی دریافت کنید، این بار بدون برچسب “Stopped” و با یک & در انتها که نشان می‌دهد فرآیند در پس‌زمینه اجرا خواهد شد:

[1]+ sudo tcpdump host target_ip_addr -w ~/scan_results/syn_scan/packets &

این فرمان، اکنون در پس‌زمینه اجرا شده و تمام بسته‌هایی که بین ماشین حمله‌کننده و ماشین هدف ارسال می‌شود را نظارت می‌کند. اکنون می‌توان SYN Scan را اجرا کرد.

اجرای SYN Scan

با اجرای tcpdump که ترافیک شما را ضبط می‌کند، اکنون می‌توانید nmap را اجرا کنید. از این فلگ‌ها برای اجرای nmap استفاده کنید:

  • -sS: این فلگ، SYN Scan را شروع می‌کند. این گزینه به‌طور پیش‌فرض در nmap اعمال می‌شود، اما برای توضیحات بیشتر، مشخص شده است.
  • -Pn: این فلگ، از مرحله کشف میزبان صرف‌نظر می‌کند، که در غیر این صورت اگر میزبان به ping پاسخ ندهد، تست را متوقف می‌کند. از آنجایی که می‌دانید هدف آنلاین است، می‌توان این مرحله را نادیده گرفت.
  • -p-: به‌طور پیش‌فرض، اسکن SYN فقط ۱۰۰۰ پورت پرکاربرد را بررسی می‌کند. این گزینه باعث می‌شود nmap همه پورت‌های موجود را بررسی کند.
  • -T4: این پرچم، یک پروفایل زمانی برای nmap تنظیم می‌کند تا سرعت تست را افزایش دهد، با ریسک کاهش کمی در دقت. مقدار ۰ کندترین و ۵ سریع‌ترین است. از این مقدار به‌عنوان مقدار پایه استفاده کنید و در صورت نیاز، پورت‌های شناسایی‌شده را مجدداً بررسی کنید.
  • -vv: این فلگ، سطح جزئیات خروجی را افزایش می‌دهد.
  • --reason: این پرچم، دلیل مشخص شدن وضعیت هر پورت را نمایش می‌دهد.
  • -oN: این فلگ، نتایج را در یک فایل ذخیره می‌کند که می‌توان بعداً تجزیه و تحلیل کرد.

توجه: برای بررسی IPv6، باید فلگ -6 را به دستورات خود اضافه کنید.

ترکیب گزینه‌های فوق، دستور زیر را ایجاد می‌کند:

sudo nmap -sS -Pn -p- -T4 -vv --reason -oN ~/scan_results/syn_scan/nmap.results target_ip_addr

حتی با تنظیم T4، این اسکن احتمالاً مدت زیادی طول خواهد کشید، زیرا باید ۶۵,۵۳۵ پورت را بررسی کند. نتایج به‌صورت مرحله‌ای نمایش داده می‌شوند:

Starting Nmap 6.49BETA4 ( https://nmap.org ) at 2022-12-19 16:54 EDT
Initiating Parallel DNS resolution of 1 host. at 16:54
Completed Parallel DNS resolution of 1 host. at 16:54, 0.12s elapsed
Initiating SYN Stealth Scan at 16:54
Scanning 198.51.100.15 [65535 ports]
Discovered open port 22/tcp on 198.51.100.15
Discovered open port 80/tcp on 198.51.100.15
SYN Stealth Scan Timing: About 6.16% done; ETC: 17:02 (0:07:52 remaining)
SYN Stealth Scan Timing: About 8.60% done; ETC: 17:06 (0:10:48 remaining)

. . .

توقف ضبط بسته‌ها با tcpdump

پس از اتمام اسکن، می‌توان tcpdump را به پیش‌زمینه برگرداند و متوقف کرد. برای بازگرداندن به پیش‌زمینه، این دستور را اجرا کنید:

fg

سپس، فرآیند را با فشردن Ctrl+C متوقف کنید.

تجزیه و تحلیل نتایج

اکنون دو فایل در مسیر ~/scan_results/syn_scan دارید:

  • packets: فایل ضبط‌شده توسط tcpdump
  • nmap.results: فایل خروجی nmap

برای مشاهده فایل nmap.results، دستور زیر را اجرا کنید:

less ~/scan_results/syn_scan/nmap.results

خروجی نمونه:

# Nmap 6.49BETA4 scan initiated Mon Dec 19 17:05:13 2022 as: nmap -sS -Pn -p- -T4 -vv --reason -oN /home/user/scan_results/syn_scan/nmap.results 198.51.100.15
Increasing send delay for 198.51.100.15 from 0 to 5 due to 9226 out of 23064 dropped probes since last increase.
Increasing send delay for 198.51.100.15 from 5 to 10 due to 14 out of 34 dropped probes since last increase.
Nmap scan report for 198.51.100.15
Host is up, received user-set (0.00097s latency).
Scanned at 2022-12-19 17:05:13 EDT for 2337s
Not shown: 65533 closed ports
Reason: 65533 resets
PORT   STATE SERVICE REASON
22/tcp open  ssh     syn-ack ttl 63
80/tcp open  http    syn-ack ttl 63

Read data files from: /usr/local/bin/../share/nmap
# Nmap done at Mon Dec 19 17:44:10 2022 -- 1 IP address (1 host up) scanned in 2336.85 seconds

این نتایج نشان می‌دهند که پورت‌های ۲۲ و ۸۰ روی میزبان هدف، باز هستند و برای SSH و HTTP استفاده می‌شوند. همچنین ۶۵,۵۳۳ پورت بسته، شناسایی شده‌اند. برای مشاهده بسته‌های ضبط‌شده، دستور زیر را اجرا کنید:

sudo tcpdump -nn -r ~/scan_results/syn_scan/packets | less

برای مشاهده ترافیک ارسالی به ماشین هدف به صورت مجزا، دستور زیر را اجرا کنید:

sudo tcpdump -nn -r ~/scan_results/syn_scan/packets 'dst target_ip_addr' | less

برای مشاهده ترافیک پاسخ دریافتی از هدف به صورت مجزا، دستور زیر را اجرا کنید:

sudo tcpdump -nn -r ~/scan_results/syn_scan/packets 'src target_ip_addr' | less

برای نمایش پاسخ‌های SYN-ACK که نشان‌دهنده پورت‌های باز هستند، دستور زیر را اجرا کنید:

sudo tcpdump -nn -r ~/scan_results/syn_scan/packets 'src target_ip_addr and tcp[tcpflags] & tcp-syn != 0' | less

خروجی نمونه:

reading from file packets, link-type EN10MB (Ethernet)
17:05:13.557597 IP 198.51.100.15.22 > 198.51.100.2.63872: Flags [S.], seq 2144564104, ack 4206039348, win 29200, options [mss 1460], length 0
17:05:13.558085 IP 198.51.100.15.80 > 198.51.100.2.63872: Flags [S.], seq 3550723926, ack 4206039348, win 29200, options [mss 1460], length 0

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

اکنون که با نحوه اجرای این تست‌ها آشنا شدید، می‌توانید فرآیند مشابهی را برای اسکن پورت‌های باز UDP انجام دهید.

تنظیم Packet Capture

ابتدا یک دایرکتوری برای ذخیره نتایج ایجاد کنید:

mkdir ~/scan_results/udp_scan

سپس مجدداً tcpdump را برای ضبط ترافیک راه‌اندازی کنید. این بار خروجی را در مسیر ~/scan_results/udp_scan ذخیره کنید:

sudo tcpdump host target_ip_addr -w ~/scan_results/udp_scan/packets

فرآیند را با Ctrl + Z متوقف کرده و به پس‌زمینه بفرستید:

bg

اجرای UDP Scan

اکنون آماده اجرای UDP scan هستید. به دلیل ماهیت پروتکل UDP، این اسکن معمولاً بسیار طولانی‌تر از اسکن SYN خواهد بود و ممکن است بیش از یک روز طول بکشد، به‌خصوص اگر تمام پورت‌های سیستم را بررسی کنید. پروتکل UDP یک پروتکل بدون اتصال (connectionless) است، بنابراین، عدم دریافت پاسخ ممکن است به این معنا باشد که پورت هدف مسدود شده، بسته پذیرفته شده در مسیر گم شده است. nmap برای تفکیک این حالات، مجبور به ارسال مجدد بسته‌ها برای دریافت پاسخ خواهد بود.

بیشتر فلگ‌ها مشابه فلگ‌هایی هستند که در SYN scan استفاده کردید. تنها فلگ جدیدی که اضافه می‌شود، مورد زیر است:

  • -sU: این گزینه به nmap می‌گوید که یک UDP scan انجام دهد.

افزایش سرعت تست UDP

اگر زمان اجرای تست برای شما اهمیت دارد، می‌توانید ابتدا فقط ۱۰۰۰ پورت پرکاربرد را بررسی کنید. این کار با حذف فلگ -p- امکان‌پذیر است و می‌تواند زمان اسکن را به‌شدت کاهش دهد.

همچنین اگر در حال اسکن زیرساخت خود هستید، می‌توانید موقتاً ICMP rate limiting (محدودیت نرخ پاسخ ICMP) را روی سیستم هدف، غیرفعال کنید. معمولاً سرورهای Linux تعداد پاسخ‌های ICMP را به ۱ پاسخ در ثانیه محدود می‌کنند، که این امر باعث می‌شود یک اسکن کامل UDP بیش از ۱۸ ساعت طول بکشد. برای بررسی مقدار محدودیت نرخ ICMP در سیستم هدف، از دستور زیر استفاده کنید:

sudo sysctl net.ipv4.icmp_ratelimit

خروجی نمونه:

net.ipv4.icmp_ratelimit = 1000

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

sudo sysctl -w net.ipv4.icmp_ratelimit=0

نکته مهم: پس از اتمام تست، حتماً مقدار icmp_ratelimit را به مقدار اولیه برگردانید.

اجرای تست

مطمئن شوید که نتایج را در دایرکتوری ~/scan_results/udp_scan ذخیره می‌کنید. دستور کامل برای اجرای UDP scan مانند زیر است:

sudo nmap -sU -Pn -p- -T4 -vv --reason -oN ~/scan_results/udp_scan/nmap.results target_ip_addr

پس از تکمیل اسکن، مقدار ICMP rate limit را به مقدار قبلی برگردانید:

sudo sysctl -w net.ipv4.icmp_ratelimit=1000

متوقف کردن tcpdump Packet Capture

فرآیند tcpdump را از پس‌زمینه به محیط پیش‌زمینه بیاورید:

fg

سپس، ضبط بسته‌های شبکه را با Ctrl+C متوقف کنید.

تجزیه و تحلیل نتایج

اکنون می‌توانید فایل‌های ایجادشده را بررسی کنید. برای مشاهده خروجی nmap scan، دستور زیر را اجرا کنید:

less ~/scan_results/udp_scan/nmap.results

خروجی نمونه:

# Nmap 6.49BETA4 scan initiated Mon Dec 19 12:42:42 2022 as: nmap -sU -Pn -p- -T4 -vv --reason -oN /home/user/scan_results/udp_scan/nmap.results 198.51.100.15
Increasing send delay for 198.51.100.15 from 0 to 50 due to 10445 out of 26111 dropped probes since last increase.
Increasing send delay for 198.51.100.15 from 50 to 100 due to 11 out of 23 dropped probes since last increase.
Increasing send delay for 198.51.100.15 from 100 to 200 due to 3427 out of 8567 dropped probes since last increase.
Nmap scan report for 198.51.100.15
Host is up, received user-set (0.0010s latency).
Scanned at 2022-12-19 12:42:42 EDT for 9956s
Not shown: 65532 closed ports
Reason: 65532 port-unreaches
PORT    STATE         SERVICE REASON
22/udp  open|filtered ssh     no-response
80/udp  open|filtered http    no-response
443/udp open|filtered https   no-response

Read data files from: /usr/local/bin/../share/nmap
# Nmap done at Mon Dec 19 15:28:39 2022 -- 1 IP address (1 host up) scanned in 9956.97 seconds

تفاوت کلیدی بین این نتیجه و اسکن SYN در تعداد پورت‌هایی است که به‌عنوان open | filtered علامت‌گذاری شده‌اند. این یعنی nmap نتوانسته تشخیص دهد که عدم دریافت پاسخ به دلیل پذیرش یا به دلیل مسدود شدن توسط فایروال بوده است.

تحلیل خروجی tcpdump سخت‌تر است، زیرا هیچ connection flagی در UDP وجود ندارد و باید پاسخ‌های ICMP را با درخواست‌های UDP تطبیق دهید. برای مشاهده تعداد بسته‌هایی که nmap به پورت‌هایی که open | filtered گزارش شده‌اند ارسال کرده است، می‌توانید دستور زیر را اجرا کنید:

sudo tcpdump -nn -Q out -r ~/scan_results/udp_scan/packets 'udp and port 22'

خروجی نمونه:

reading from file /home/user/scan_results/udp_scan/packets, link-type EN10MB (Ethernet)
14:57:40.801956 IP 198.51.100.2.60181 > 198.51.100.15.22: UDP, length 0
14:57:41.002364 IP 198.51.100.2.60182 > 198.51.100.15.22: UDP, length 0
14:57:41.202702 IP 198.51.100.2.60183 > 198.51.100.15.22: UDP, length 0
14:57:41.403099 IP 198.51.100.2.60184 > 198.51.100.15.22: UDP, length 0
14:57:41.603431 IP 198.51.100.2.60185 > 198.51.100.15.22: UDP, length 0
14:57:41.803885 IP 198.51.100.2.60186 > 198.51.100.15.22: UDP, length 0

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

sudo tcpdump -nn -Q out -r ~/scan_results/udp_scan/packets 'udp and port 53'

خروجی نمونه:

reading from file /home/user/scan_results/udp_scan/packets, link-type EN10MB (Ethernet)
13:37:24.219270 IP 198.51.100.2.60181 > 198.51.100.15.53: 0 stat [0q] (12)

برای مشاهده همه پورت‌هایی که بسته‌های UDP برای آن‌ها ارسال شده است، دستور زیر را اجرا کنید:

sudo tcpdump -nn -Q out -r ~/scan_results/udp_scan/packets "udp" | awk '{print $5;}' | awk 'BEGIN { FS = "." } ; { print $5 +0}' | sort -u | tee outgoing

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

sudo tcpdump -nn -Q in -r ~/scan_results/udp_scan/packets "icmp" |  awk '{print $10,$11}' | grep unreachable | awk '{print $1}' | sort -u | tee response

برای مشاهده پورت‌هایی که هیچ پاسخ ICMP دریافت نکرده‌اند، دستور زیر را اجرا کنید:

comm -3 outgoing response

این لیست باید تقریباً با خروجی nmap مطابقت داشته باشد.

کشف میزبان‌ها و سرویس‌ها

می‌توانید آزمایش‌های اضافی روی هدف خود انجام دهید تا بررسی کنید آیا nmap قادر به شناسایی سیستم‌عامل (Operating System) اجراشده یا نسخه‌های سرویس‌های مختلف است یا خیر. ابتدا یک دایرکتوری برای ذخیره نتایج Versioning ایجاد کنید:

mkdir ~/scan_results/versions

کشف نسخه‌های سرویس‌های موجود روی سرور

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

برای انجام اسکن nmap جهت شناسایی نسخه‌های سرویس‌ها، باید از فلگ -sV استفاده کنید. از آنجایی که قبلاً اسکن‌های SYN و UDP را انجام داده‌اید، می‌توانید مستقیماً پورت‌های موردنظر را با فلگ -p مشخص کنید. در اینجا، پورت‌های ۲۲ و ۸۰ را که در اسکن SYN مشاهده کردید، بررسی می‌کنیم:

sudo nmap -sV -Pn -p 22,80 -vv --reason -oN ~/scan_results/versions/service_versions.nmap target_ip_addr

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

less ~/scan_results/versions/service_versions.nmap

خروجی نمونه:

# Nmap 6.49BETA4 scan initiated Mon Dec 19 15:46:12 2022 as: nmap -sV -Pn -p 22,80 -vv --reason -oN /home/user/scan_results/versions/service_versions.nmap 198.51.100.15
Nmap scan report for 198.51.100.15
Host is up, received user-set (0.0011s latency).
Scanned at 2022-12-19 15:46:13 EDT for 8s
PORT   STATE SERVICE REASON         VERSION
22/tcp open  ssh     syn-ack ttl 63 OpenSSH 6.6.1p1 Ubuntu 2ubuntu2 (Ubuntu Linux; protocol 2.0)
80/tcp open  http    syn-ack ttl 63 nginx 1.4.6 (Ubuntu)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Read data files from: /usr/local/bin/../share/nmap
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Mon Dec 19 15:46:21 2022 -- 1 IP address (1 host up) scanned in 8.81 seconds

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

شناسایی سیستم‌عامل میزبان

می‌توانید از nmap بخواهید سیستم‌عامل میزبان را بر اساس ویژگی‌های نرم‌افزاری و پاسخ‌های آن حدس بزند. این فرآیند مشابه versioning سرویس‌هاست. در اینجا نیز اجرای tcpdump را کنار می‌گذاریم، اما در صورت نیاز، می‌توانید آن را اجرا کنید. فلگ مورد نیاز برای شناسایی سیستم‌عامل، -O (حرف بزرگ O) است. یک دستور کامل ممکن است به این شکل باشد:

sudo nmap -O -Pn -vv --reason -oN ~/scan_results/versions/os_version.nmap target_ip_addr

برای مشاهده‌ی خروجی، دستور زیر را اجرا کنید:

less ~/scan_results/versions/os_version.nmap

خروجی نمونه:

# Nmap 6.49BETA4 scan initiated Mon Dec 19 15:53:54 2022 as: nmap -O -Pn -vv --reason -oN /home/user/scan_results/versions/os_version.nmap 198.51.100.15
Increasing send delay for 198.51.100.15 from 0 to 5 due to 65 out of 215 dropped probes since last increase.
Increasing send delay for 198.51.100.15 from 5 to 10 due to 11 out of 36 dropped probes since last increase.
Increasing send delay for 198.51.100.15 from 10 to 20 due to 11 out of 35 dropped probes since last increase.
Increasing send delay for 198.51.100.15 from 20 to 40 due to 11 out of 29 dropped probes since last increase.
Increasing send delay for 198.51.100.15 from 40 to 80 due to 11 out of 31 dropped probes since last increase.
Nmap scan report for 198.51.100.15
Host is up, received user-set (0.0012s latency).
Scanned at 2022-12-19 15:53:54 EDT for 30s
Not shown: 998 closed ports
Reason: 998 resets
PORT   STATE SERVICE REASON
22/tcp open  ssh     syn-ack ttl 63
80/tcp open  http    syn-ack ttl 63
No exact OS matches for host (If you know what OS is running on it, see https://nmap.org/submit/ ).
TCP/IP fingerprint:
OS:SCAN(V=6.49BETA4%E=4%D=8/27%OT=22%CT=1%CU=40800%PV=N%DS=2%DC=I%G=Y%TM=55
OS:DF6AF0%P=x86_64-unknown-linux-gnu)SEQ(SP=F5%GCD=1%ISR=106%TI=Z%CI=Z%TS=8
OS:)OPS(O1=M5B4ST11NW8%O2=M5B4ST11NW8%O3=M5B4NNT11NW8%O4=M5B4ST11NW8%O5=M5B
OS:4ST11NW8%O6=M5B4ST11)WIN(W1=7120%W2=7120%W3=7120%W4=7120%W5=7120%W6=7120
OS:)ECN(R=Y%DF=Y%T=40%W=7210%O=M5B4NNSNW8%CC=Y%Q=)T1(R=Y%DF=Y%T=40%S=O%A=S+
OS:%F=AS%RD=0%Q=)T2(R=N)T3(R=N)T4(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)
OS:T5(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=40%W=0%S=A%A
OS:=Z%F=R%O=%RD=0%Q=)T7(R=N)U1(R=Y%DF=N%T=40%IPL=164%UN=0%RIPL=G%RID=G%RIPC
OS:K=G%RUCK=G%RUD=G)U1(R=N)IE(R=N)

Uptime guess: 1.057 days (since Mon Dec 12 14:32:23 2022)
Network Distance: 2 hops
TCP Sequence Prediction: Difficulty=245 (Good luck!)
IP ID Sequence Generation: All zeros

Read data files from: /usr/local/bin/../share/nmap
OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Mon Dec 12 15:54:24 2022 -- 1 IP address (1 host up) scanned in 30.94 seconds

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

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

نتیجه‌گیری

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

اگر به دنبال یک سرور مجازی (VPS) با زیرساخت قدرتمند و قابل اعتماد هستید، سرور مجازی لیارا گزینه‌ای عالی برای شماست. لیارا با استفاده از بهترین تکنولوژی‌های روز دنیا و دیتاسنترهای معتبر، سرورهایی با عملکرد بالا و امنیت بی‌نظیر ارائه می‌دهد. این سرویس با پشتیبانی ۲۴ ساعته و قابلیت مقیاس‌پذیری به شما این امکان را می‌دهد که هر زمان نیاز داشتید، منابع سرور خود را بدون دغدغه افزایش دهید. با سرورهای VPS لیارا می‌توانید از سرعت بالا، آپ‌تایم پایدار و خدمات تخصصی بهره‌مند شوید. این ویژگی‌ها، لیارا را به یکی از بهترین انتخاب‌ها برای کسانی تبدیل کرده که به دنبال یک سرویس هاستینگ حرفه‌ای و مقیاس‌پذیر هستند.