ساخت آزمایشگاه و اولین Recon

Building the Laboratory and the First Recon
0 دیدگاه
۱۴۰۵-۰۶-۲۷ ۱۵:۴۹:۵۱

در قسمت قبل فهمیدیم که Pentest با Exploit شروع نمی‌شود.

قبل از هر حمله‌ای باید بدانیم:

چه چیزی داریم؟
چه چیزی در Scope است؟
و چه چیزهایی باید بررسی شوند؟

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


۱. آزمایشگاه ما

برای تمرین از یک Web Application عمداً آسیب‌پذیر استفاده می‌کنیم.

معماری آزمایشگاه:

┌─────────────────────────┐
│      Pentest Machine    │
│                         │
│  Linux / Kali Linux     │
│  Nmap                   │
│  Browser                │
└────────────┬────────────┘
             │
             │ Local Lab
             │
┌────────────▼────────────┐
│    Vulnerable Target    │
│                         │
│     OWASP Juice Shop    │
└─────────────────────────┘

هدف این است که تمام آزمایش‌ها روی سیستم خودمان انجام شوند.


۲. اجرای آزمایشگاه

اگر Docker روی سیستم نصب است، می‌توانی Juice Shop را به شکل زیر اجرا کنی:

docker run --rm -p 3000:3000 bkimminich/juice-shop

بعد مرورگر را باز کن:

http://localhost:3000

اگر صفحه Juice Shop را مشاهده کردی، آزمایشگاه آماده است.

نکته مهم:

localhost در اینجا به معنی سیستم خودت است و هدف آزمایشگاهی محسوب می‌شود.


۳. اولین قانون Recon

Recon یعنی:

جمع‌آوری اطلاعات درباره هدف

اما یک Pentester حرفه‌ای کورکورانه شروع به اسکن نمی‌کند.

ابتدا هدف را تعریف می‌کنیم.

در آزمایشگاه:

Target:
localhost

Port:
3000

Application:
Web Application

پس فعلاً Attack Surface ما بسیار کوچک است:

localhost
   │
   └── TCP/3000
          │
          └── Web Application

۴. Recon از نگاه یک Pentester

فرض کن هیچ اطلاعاتی درباره سرویس نداریم.

اولین سؤال:

«چه سرویس‌هایی روی این سیستم در دسترس هستند؟»

برای پاسخ می‌توانیم از Nmap استفاده کنیم.

در محیط آزمایشگاهی:

nmap localhost

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

PORT     STATE SERVICE
3000/tcp open  ppp

عدد دقیق یا نام سرویس نمایش‌داده‌شده ممکن است بسته به سیستم متفاوت باشد.


۵. این خروجی چه چیزی به ما می‌گوید؟

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

«پورت 3000 باز است.»

اما ما باید آن را تحلیل کنیم.

3000/tcp
   ↓
OPEN
   ↓
TCP Service
   ↓
Potential Web Application

حالا چند سؤال داریم:

  • چه برنامه‌ای روی این پورت اجرا می‌شود؟
  • چه فناوری‌هایی استفاده شده؟
  • آیا HTTP است؟
  • آیا HTTPS است؟
  • چه Web Server یا Frameworkای پشت آن قرار دارد؟

اینجاست که Enumeration از Recon اولیه جدا می‌شود.


۶. تشخیص سرویس

می‌توانیم از قابلیت Service Detection در Nmap استفاده کنیم:

nmap -sV -p 3000 localhost

گزینه‌ها:

-sV

برای تلاش جهت شناسایی Version و نوع سرویس استفاده می‌شود.

و:

-p 3000

یعنی فقط پورت 3000 را بررسی کن.

این موضوع مهم است:

اسکن هدفمند بهتر از اجرای کورکورانه ابزارهاست.


۷. حالا Web را بررسی کنیم

مرورگر را باز کن:

http://localhost:3000

حالا قبل از اینکه دنبال آسیب‌پذیری بگردیم، صفحه را مشاهده کن.

به دنبال چه چیزهایی هستیم؟

Login
Register
Search
Products
Basket
Profile
API
Upload
Admin

این‌ها می‌توانند بخشی از Attack Surface باشند.


۸. ساختن Attack Surface Map

به جای اینکه اطلاعات را در ذهن نگه داریم، آن‌ها را ثبت می‌کنیم.

مثلاً:

JUICE SHOP
│
├── Authentication
│   ├── Login
│   └── Register
│
├── Product
│   ├── Search
│   └── Product Details
│
├── User
│   ├── Profile
│   └── Basket
│
└── API
    └── Application Endpoints

این نقشه بعداً هنگام تست بسیار مهم می‌شود.


۹. Recon فقط با Nmap انجام نمی‌شود

این یک اشتباه رایج است.

Recon مجموعه‌ای از روش‌هاست:

Recon
│
├── Network Information
├── DNS
├── Domains
├── Subdomains
├── Technologies
├── Web Pages
├── API Endpoints
├── Authentication Points
└── Application Behavior

ابزار فقط یکی از روش‌های جمع‌آوری اطلاعات است.


۱۰. Passive و Active Recon

Recon را می‌توانیم به دو مفهوم مهم تقسیم کنیم.

Passive Recon

بدون تعامل مستقیم یا با حداقل تعامل با هدف، اطلاعات جمع می‌کنیم.

مثلاً:

Public DNS Records
Search Engines
Public Documentation
Certificate Information
Publicly Available Metadata

هدف این است که بدون ایجاد ترافیک قابل‌توجه روی Target اطلاعات به دست بیاوریم.


Active Recon

اینجا مستقیماً با Target تعامل داریم.

مثلاً:

Port Scanning
Service Detection
HTTP Requests
Directory Discovery

بنابراین:

Passive Recon
     ↓
اطلاعات عمومی

Active Recon
     ↓
تعامل مستقیم با Target

در محیط واقعی، تفاوت این دو از نظر Scope و Rules of Engagement اهمیت زیادی دارد.


۱۱. اشتباه خطرناک تازه‌کارها

فرض کن ابزار به تو می‌گوید:

80/tcp open
443/tcp open
8080/tcp open

نباید بلافاصله سراغ Exploit بروی.

فرآیند درست:

Open Port
    ↓
Identify Service
    ↓
Identify Technology
    ↓
Understand Function
    ↓
Find Potential Weakness
    ↓
Validate

این همان طرز فکری است که می‌خواهیم در طول این دوره ایجاد کنیم.


۱۲. یک تمرین واقعی

در آزمایشگاه خودت این دستور را اجرا کن:

nmap -sV -p 3000 localhost

سپس نتیجه را بررسی کن.

سه سؤال را جواب بده:

سؤال اول

چه پورتی باز است؟

سؤال دوم

Nmap چه سرویسی را شناسایی کرده؟

سؤال سوم

این سرویس چه نوع Attack Surfaceای در اختیار ما قرار می‌دهد؟

راهنمای ذهنی:

Port
 ↓
Service
 ↓
Application
 ↓
Functionality
 ↓
Potential Attack Surface

۱۳. تمرین دوم — مشاهده HTTP

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

curl -I http://localhost:3000

این دستور یک درخواست HTTP به برنامه آزمایشگاهی ارسال می‌کند و Headerهای پاسخ را نشان می‌دهد.

ممکن است اطلاعاتی مانند این مشاهده کنی:

HTTP/1.1 200 OK
Content-Type: text/html
...

اینجا دوباره سؤال می‌پرسیم:

چه اطلاعاتی از Response می‌توانیم استخراج کنیم؟

این سؤال پایه‌ای، بعدها در Web Pentesting بسیار مهم خواهد شد.


۱۴. Header یعنی چه؟

HTTP Headerها اطلاعاتی درباره Request و Response منتقل می‌کنند.

مثلاً:

Content-Type
Server
Set-Cookie
Location
Cache-Control

هرکدام می‌تواند سرنخی درباره رفتار برنامه به ما بدهد.

اما:

وجود یک Header خاص به‌تنهایی به معنی وجود Vulnerability نیست.

ما باید اطلاعات را در Context خودش تحلیل کنیم.


۱۵. Recon Notebook

از همین قسمت یک عادت حرفه‌ای بساز.

برای هر Target یک یادداشت داشته باش:

Target:
localhost

Open Ports:
3000/tcp

Detected Service:
Web Application

Technology:
[بعداً تکمیل می‌شود]

Endpoints:
[بعداً تکمیل می‌شود]

Authentication:
[بررسی نشده]

Potential Findings:
[هنوز بررسی نشده]

این فایل در پروژه‌های واقعی می‌تواند بسیار ارزشمند باشد.


۱۶. چیزی که امروز یاد گرفتیم

امروز هنوز هیچ Exploit پیچیده‌ای اجرا نکردیم.

اما چند مهارت مهم یاد گرفتیم:

Scope
 ↓
Target Identification
 ↓
Port Discovery
 ↓
Service Detection
 ↓
Web Enumeration
 ↓
Attack Surface Mapping

و مهم‌تر از همه:

قبل از حمله، هدف را بشناس.


چالش قسمت ۰۲

در آزمایشگاه خودت این مسیر را انجام بده:

1. Start Juice Shop

2. Verify:
   http://localhost:3000

3. Run:
   nmap localhost

4. Run:
   nmap -sV -p 3000 localhost

5. Run:
   curl -I http://localhost:3000

6. Open the application

7. Create an Attack Surface Map

سپس این سؤال را از خودت بپرس:

«اگر این برنامه را برای اولین بار ببینم، قبل از پیدا کردن آسیب‌پذیری چه اطلاعاتی باید درباره آن جمع کنم؟»

اگر جواب این سؤال را بتوانی دقیق بدهی، وارد مرحله بعد شده‌ای.

دسته بندی‌ها:

دیدگاه شما

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *