اگر عبارت هک قانونمند (Ethical Hacking) را شنیده باشی، احتمالاً اولین چیزی که به ذهنت میرسد ابزارهایی مثل Nmap، Burp Suite یا Metasploit است.
اما یک Pentester حرفهای کارش را با ابزار شروع نمیکند.
کار او با یک سؤال شروع میشود:
«قرار است چه چیزی را، تحت چه محدودهای و با چه مجوزی بررسی کنم؟»
این تفاوت بین کسی است که فقط چند ابزار امنیتی بلد است و کسی که واقعاً تست نفوذ انجام میدهد.
۱. تست نفوذ چیست؟
Penetration Testing یا Pentest یک ارزیابی امنیتی کنترلشده است که در آن متخصص امنیت تلاش میکند ضعفهای امنیتی یک سامانه را در محدوده و شرایط از پیش تعیینشده پیدا و، در صورت مجاز بودن، اثبات کند.
هدف اصلی این نیست که صرفاً بگوییم:
«این سیستم آسیبپذیر است.»
هدف این است که بتوانیم مشخص کنیم:
- آسیبپذیری دقیقاً کجاست؟
- مهاجم چگونه میتواند از آن سوءاستفاده کند؟
- چه سطحی از دسترسی یا تأثیری ایجاد میشود؟
- احتمال سوءاستفاده چقدر است؟
- چگونه باید مشکل را برطرف کرد؟
بنابراین خروجی یک Pentest خوب فقط یک اسکنر یا یک Screenshot نیست؛ یک ارزیابی قابلاتکا از ریسک امنیتی سیستم است.
۲. هک قانونی با هک غیرمجاز چه تفاوتی دارد؟
از نظر تکنیکی ممکن است بعضی از ابزارها و تکنیکها مشابه باشند.
تفاوت اساسی در مجوز و محدوده است.
در یک تست نفوذ قانونی باید مشخص باشد:
- چه داراییهایی در Scope هستند؟
- چه داراییهایی خارج از Scope هستند؟
- چه تکنیکهایی مجاز هستند؟
- چه زمانهایی برای تست تعیین شده؟
- آیا Exploitation مجاز است؟
- آیا تست Denial-of-Service ممنوع است؟
- اطلاعات حساس چگونه مدیریت میشوند؟
- در صورت مشاهده یک آسیبپذیری بحرانی چه کسی باید مطلع شود؟
برای مثال، فرض کن یک شرکت اجازه داده است:
example.com
بررسی شود.
این مجوز لزوماً به معنی مجاز بودن تست روی تمام زیرساختهای متعلق به همان شرکت نیست.
Scope را باید دقیقاً همانطور که در مجوز تعریف شده رعایت کرد.
۳. Pentest با Vulnerability Assessment فرق دارد
این دو اصطلاح گاهی به جای یکدیگر استفاده میشوند، اما دقیقاً یکی نیستند.
Vulnerability Assessment
تمرکز اصلی روی:
پیدا کردن و شناسایی آسیبپذیریها
است.
برای مثال:
Server A
├── Outdated Software
├── Weak Configuration
└── Missing Security Patch
Penetration Testing
یک مرحله جلوتر میرود.
Pentester تلاش میکند مشخص کند:
«این ضعف در یک سناریوی واقعی چه تأثیری میتواند داشته باشد؟»
مثلاً یک آسیبپذیری را شناسایی میکنیم و سپس در یک محیط مجاز بررسی میکنیم که آیا واقعاً میتواند به دسترسی غیرمجاز منجر شود یا خیر.
بنابراین:
Vulnerability Assessment → شناسایی ضعف
Pentest → ارزیابی عملی امکان سوءاستفاده و اثر آن
۴. فرآیند یک Pentest حرفهای
یک تست نفوذ معمولاً به چند مرحله تقسیم میشود.
Authorization
↓
Scoping
↓
Reconnaissance
↓
Enumeration
↓
Vulnerability Discovery
↓
Validation / Exploitation
↓
Post-Exploitation
↓
Risk Analysis
↓
Reporting
↓
Remediation & Retesting
حالا هر مرحله را بررسی کنیم.
۵. Authorization — مجوز
قبل از هر کاری باید بدانیم:
آیا اجازه داریم این سیستم را آزمایش کنیم؟
اگر پاسخ مشخص نیست، تست را شروع نمیکنیم.
این اصل را همیشه به خاطر داشته باش:
بدون مجوز، تست نفوذ نیست؛ دسترسی غیرمجاز است.
۶. Scoping — تعیین محدوده
در این مرحله مشخص میشود چه چیزی باید تست شود.
برای مثال:
IN SCOPE
example.com
api.example.com
10.10.10.20
OUT OF SCOPE
mail.example.com
third-party.example.net
Production Database
همچنین ممکن است محدودیتهای دیگری تعیین شوند:
Allowed:
- Port Scanning
- Web Testing
- Authentication Testing
Not Allowed:
- DoS
- Destructive Exploitation
- Data Deletion
این اطلاعات معمولاً در مستنداتی مانند Rules of Engagement ثبت میشوند.
۷. Reconnaissance — شناسایی
حالا وارد بخش فنی میشویم.
در Recon هدف این است که بفهمیم با چه محیطی روبهرو هستیم.
سؤالهایی مثل:
- چه دامنههایی وجود دارد؟
- چه سرویسهایی در دسترس هستند؟
- چه فناوریهایی استفاده شده؟
- چه نقاط ورودی وجود دارد؟
- ساختار کلی Attack Surface چگونه است؟
در این مرحله هنوز لزوماً دنبال Exploit نیستیم.
ابتدا باید زمین بازی را بشناسیم.
۸. Attack Surface چیست؟
Attack Surface مجموعه نقاطی است که مهاجم بالقوه میتواند از طریق آنها با سیستم تعامل داشته باشد.
برای یک وبسایت ممکن است شامل این موارد باشد:
Web Application
│
├── Login
├── Registration
├── API
├── File Upload
├── Admin Panel
└── Static Files
برای یک زیرساخت شبکه ممکن است شامل موارد زیر باشد:
Internet
│
├── Web Server
├── VPN
├── DNS
├── Mail Server
└── Remote Services
هرچه Attack Surface بزرگتر و پیچیدهتر باشد، احتمال وجود نقاط ضعف نیز میتواند افزایش پیدا کند.
۹. Enumeration — جزئیات بیشتر
بعد از شناسایی اولیه، باید اطلاعات دقیقتری جمع کنیم.
فرض کنیم در یک آزمایشگاه مجاز، نتیجه اولیه چنین باشد:
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
443/tcp open https
یک فرد تازهکار ممکن است فقط بگوید:
«سه پورت باز است.»
اما Pentester سؤالهای بیشتری میپرسد:
22 → چه سرویس SSH؟
80 → چه Web Server؟
443 → چه فناوری؟
نسخه سرویسها چیست؟
آیا Authentication وجود دارد؟
آیا Configuration غیرعادی است؟
Enumeration یعنی تبدیل یک مشاهده ساده به اطلاعات قابل استفاده برای تحلیل امنیتی.
۱۰. Vulnerability Discovery
حالا اطلاعات جمعشده را با دانش امنیتی ترکیب میکنیم.
مثلاً:
Service
↓
Version
↓
Configuration
↓
Known Weakness
↓
Security Hypothesis
یک یافته ممکن است چنین باشد:
Finding:
ضعف در کنترل دسترسی
Impact:
کاربر عادی میتواند به دادهای دسترسی پیدا کند
که متعلق به کاربر دیگری است.
اینجا هنوز باید یافته را اعتبارسنجی کنیم.
۱۱. Validation و PoC
هر چیزی که ابزار امنیتی گزارش میکند الزاماً یک آسیبپذیری واقعی و قابلاستفاده نیست.
بنابراین Pentester باید Finding را بررسی کند.
هدف PoC این است که با کمترین اثر مخرب ممکن نشان دهد مشکل واقعاً وجود دارد.
مثلاً به جای استخراج حجم زیادی از اطلاعات، در یک آزمایشگاه میتوانیم صرفاً نشان دهیم:
User A
↓
Request
↓
Object belonging to User B
↓
Unauthorized Access
این اثبات برای گزارش امنیتی بسیار ارزشمندتر از یک خروجی خام اسکنر است.
۱۲. Post-Exploitation
اگر در Scope تست اجازه داده شده باشد، بعد از بهدستآوردن دسترسی اولیه ممکن است بررسی کنیم:
- سطح دسترسی فعلی چیست؟
- آیا امکان افزایش سطح دسترسی وجود دارد؟
- چه منابعی در دسترس هستند؟
- آیا این دسترسی میتواند به سیستمهای دیگر منجر شود؟
هدف این مرحله معمولاً پاسخ دادن به این سؤال است:
«اگر مهاجم به این نقطه برسد، واقعاً چقدر میتواند پیش برود؟»
در یک Pentest حرفهای، این مرحله باید کاملاً کنترلشده باشد.
۱۳. Reporting — مهمترین خروجی Pentest
یکی از اشتباهات رایج این است که تصور کنیم کار Pentester با پیدا کردن آسیبپذیری تمام میشود.
در واقع بخش بسیار مهم کار، گزارشنویسی است.
یک Finding حرفهای معمولاً شامل موارد زیر است:
Title
Severity
Affected Asset
Description
Technical Details
Evidence
Impact
Reproduction / PoC
Recommendation
References
مثلاً:
ضعف کنترل دسترسی
Severity: High
Affected Asset:
/api/users/profile
Description:
سامانه در بررسی مالکیت منبع، کنترل دسترسی کافی اعمال نمیکند.
Impact:
یک کاربر احراز هویتشده ممکن است بتواند به اطلاعات کاربر دیگری دسترسی پیدا کند.
Recommendation:
سرور باید مالکیت منبع را در سمت Backend بررسی کند و صرفاً به شناسه ارسالشده توسط Client اعتماد نکند.
۱۴. Remediation و Retest
بعد از ارائه گزارش، تیم توسعه یا زیرساخت مشکل را اصلاح میکند.
اما کار هنوز تمام نشده است.
Pentester باید دوباره بررسی کند:
Vulnerability
↓
Fix
↓
Retest
↓
Confirmed Fixed?
اگر مشکل واقعاً برطرف شده باشد، Finding بسته میشود.
اگر نه، باید مشخص شود که اصلاح انجامشده ناقص بوده است.
۱۵. ابزار مهمتر است یا دانش؟
ابزار مهم است؛ اما ابزار بهتنهایی Pentester نمیسازد.
برای مثال:
Nmap
میتواند به تو بگوید:
پورت 80 باز است.
اما این دانش توست که تعیین میکند:
حالا چه چیزی باید بررسی شود؟
همین موضوع درباره ابزارهای دیگر هم صدق میکند.
ابزار:
داده تولید میکند.
Pentester:
داده را تفسیر میکند.
۱۶. اولین آزمایشگاه ما
از قسمت بعدی، آموزش را کاملاً عملی میکنیم.
اما یک قانون مهم داریم:
تمام تمرینها روی محیطهایی انجام میشوند که عمداً برای آموزش آسیبپذیر ساخته شدهاند یا مجوز صریح تست آنها را داریم.
برای شروع میتوانیم یک آزمایشگاه ساده داشته باشیم:
┌─────────────────────┐
│ Pentester Machine │
│ │
│ Linux + Tools │
└──────────┬──────────┘
│
│ Isolated Network
│
┌──────────▼──────────┐
│ Vulnerable Target │
│ │
│ Training Lab │
└─────────────────────┘
در این محیط میتوانیم بدون آسیبزدن به سیستمهای واقعی، کل فرآیند Pentest را تمرین کنیم.
تمرین قسمت اول
قبل از رفتن سراغ ابزارها، به این سناریو فکر کن:
یک شرکت به تو اجازه داده است فقط وباپلیکیشن آزمایشگاهی target.lab را بررسی کنی.
محدوده:
IN SCOPE:
target.lab
OUT OF SCOPE:
mail.target.lab
vpn.target.lab
10.10.10.50
سؤال:
اگر در فرآیند Recon متوجه شوی vpn.target.lab هم وجود دارد، آیا میتوانی آن را تست کنی؟
پاسخ:
خیر.
وجود یک Asset به معنی مجاز بودن تست آن نیست.
آن Asset خارج از Scope تعریفشده است و باید قبل از هرگونه تست، مجوز آن دریافت شود.
جمعبندی
یک Pentester حرفهای این مسیر را دنبال میکند:
مجوز
↓
Scope
↓
Recon
↓
Enumeration
↓
Vulnerability Discovery
↓
Validation
↓
Exploitation کنترلشده
↓
Impact Analysis
↓
Reporting
↓
Remediation
↓
Retest
پس اولین مهارت یک Pentester، حفظ کردن دستورات نیست.
اول باید یاد بگیری چگونه فکر کنی.
در قسمت بعد، وارد آزمایشگاه میشویم و اولین مرحله عملی را انجام میدهیم

دیدگاه شما