بازگشت به وبلاگ

پروکسی برای هک اخلاقی و پنتست: چگونه IP را مخفی کرده و به طور ایمن از حفاظت عبور کنیم

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

📅۱۳ اسفند ۱۴۰۴
```html

هنگام انجام تست نفوذ (پنتست) و هک اخلاقی، پنهان کردن آدرس IP واقعی خود بسیار مهم است — نه تنها برای شبیه‌سازی حملات از مکان‌های مختلف، بلکه برای حفاظت از زیرساخت‌های خود. سیستم‌های حفاظتی مانند WAF، IDS و IPS به سرعت فعالیت‌های مشکوک را از یک IP مسدود می‌کنند و ادامه تست را غیرممکن می‌سازند. در این مقاله بررسی خواهیم کرد که چه پروکسی‌هایی برای پنتست استفاده کنیم، چگونه چرخش IP را تنظیم کنیم و از سیستم‌های حفاظتی مدرن عبور کنیم.

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

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

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

2. دور زدن محدودیت نرخ و مسدودیت IP. WAF (Firewall برنامه وب) و IDS (سیستم تشخیص نفوذ) مدرن تعداد درخواست‌ها از یک IP را پیگیری می‌کنند. هنگام اسکن پورت‌ها، brute force یا fuzzing، به سرعت از محدودیت‌ها فراتر می‌روید و مسدود می‌شوید. چرخش IP از طریق پروکسی به شما این امکان را می‌دهد که بار را توزیع کنید و تست را ادامه دهید.

3. شبیه‌سازی حملات از مکان‌های جغرافیایی مختلف. برخی از سیستم‌های حفاظتی از geo-blocking استفاده می‌کنند یا قوانین متفاوتی برای مناطق مختلف دارند. برای تست کامل، باید بررسی کنید که سیستم چگونه به درخواست‌ها از ایالات متحده، اروپا و آسیا واکنش نشان می‌دهد. پروکسی‌هایی با IP از کشورهای مختلف این امکان را فراهم می‌کنند که بدون جابجایی فیزیکی چنین تستی را انجام دهید.

4. تست حملات توزیع‌شده (شبیه‌سازی DDoS). هنگام تست مقاومت در برابر حملات DDoS، باید ترافیک را از چندین آدرس IP شبیه‌سازی کنید. استخرهای پروکسی به شما این امکان را می‌دهند که بار واقعی‌تری ایجاد کنید و بررسی کنید که سیستم‌های کاهش آسیب چگونه با حمله توزیع‌شده مقابله می‌کنند.

5. دور زدن fingerprinting و تحلیل TLS. سیستم‌های حفاظتی پیشرفته نه تنها IP را تحلیل می‌کنند بلکه fingerprintهای TLS، User-Agent و هدرهای HTTP را نیز بررسی می‌کنند. استفاده از پروکسی در کنار تنظیمات صحیح کلاینت به دور زدن چنین تحلیلی کمک می‌کند و امکان تست عمیق‌تری را فراهم می‌آورد.

کدام نوع پروکسی برای هک اخلاقی مناسب است

برای پنتست از انواع مختلف پروکسی بسته به وظیفه استفاده می‌شود. بیایید گزینه‌های اصلی و کاربردهای آن‌ها را بررسی کنیم:

نوع پروکسی مزایا معایب کاربرد
HTTP/HTTPS تنظیم ساده، کار در سطح برنامه فقط ترافیک وب، هدرها قابل مشاهده‌اند تست برنامه‌های وب، اسکن سایت‌ها
SOCKS5 هر پروتکل، پشتیبانی از UDP، احراز هویت تنظیم کمی پیچیده‌تر اسکن پورت‌ها، کار با هر پروتکلی
مسکونی IPهای واقعی ارائه‌دهندگان، امتیاز اعتماد پایین گران‌تر، سرعت متغیر دور زدن WAFهای سخت‌گیر، تست محدودیت‌های جغرافیایی
دیتاسنترها سرعت بالا، ثبات، قیمت پایین به راحتی به عنوان پروکسی شناسایی می‌شوند اسکن انبوه، brute force، fuzzing
موبایل بالاترین امتیاز اعتماد، IPهای دینامیک گران‌ترین، سرعت کمتر تست برنامه‌های موبایل، دور زدن مسدودیت‌های سخت‌گیر

پروتکل SOCKS5 در مقابل HTTP/HTTPS. برای پنتست، SOCKS5 ترجیح داده می‌شود زیرا در سطح پایین‌تری کار می‌کند و هر نوع ترافیکی — TCP، UDP، درخواست‌های DNS را عبور می‌دهد. این موضوع در استفاده از ابزارهایی مانند Nmap، Metasploit، sqlmap که ممکن است فقط با HTTP کار نکنند، حیاتی است. پروکسی‌های HTTP فقط برای تست وب از طریق مرورگر یا اسکنرهای تخصصی برنامه‌های وب (Burp Suite، OWASP ZAP) مناسب هستند.

تونل‌های SSH و VPN. برخی از پنتسترها از تونل‌های SSH (پورت forwarding دینامیک) یا VPN به جای پروکسی استفاده می‌کنند. تونل SSH مانند پروکسی SOCKS عمل می‌کند و برای اکثر وظایف مناسب است، اما نیاز به وجود یک سرور SSH دارد. VPN تمام ترافیک را رمزگذاری کرده و IP را تغییر می‌دهد، اما برای چرخش آدرس‌ها کمتر انعطاف‌پذیر است — با تغییر سرور VPN، تمام اتصالات قطع می‌شود.

پروکسی‌های مسکونی در مقابل دیتاسنترها: چه چیزی را انتخاب کنیم

انتخاب بین پروکسی‌های مسکونی و پروکسی‌های دیتاسنتر بستگی به سیستم هدف و سطح حفاظت آن دارد.

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

  • تست سیستم‌هایی با تشخیص بات پیشرفته (Cloudflare، Akamai، PerimeterX)
  • بررسی محدودیت‌های جغرافیایی و نسخه‌های منطقه‌ای برنامه‌ها
  • تست برنامه‌های موبایل و API که دیتاسنترها را مسدود می‌کنند
  • برنامه‌های پاداش باگ که در آن‌ها حداکثر عدم شناسایی مهم است
  • مهندسی اجتماعی و جمع‌آوری اطلاعات OSINT از طریق شبکه‌های اجتماعی

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

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

  • اسکن انبوه پورت‌ها و سرویس‌ها (Nmap، Masscan)
  • Brute force رمزها و دایرکتوری‌ها (Hydra، Gobuster، ffuf)
  • Fuzzing برنامه‌های وب (Burp Intruder، wfuzz)
  • تست سیستم‌های داخلی بدون حفاظت سخت‌گیر
  • وظایفی که در آن‌ها سرعت و حجم ترافیک مهم است

پروکسی‌های دیتاسنتر 5 تا 10 برابر سریع‌تر از پروکسی‌های مسکونی کار می‌کنند و هزینه کمتری دارند. برای اکثر وظایف پنتست که نیاز به دور زدن سیستم‌های حفاظتی پیچیده ندارند، آن‌ها انتخاب بهینه‌ای هستند. سرعت در اسکن هزاران پورت یا تلاش برای هزاران مسیر در سرور وب حیاتی است.

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

تنظیم زنجیره‌های پروکسی (proxy chains)

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

نصب و تنظیم proxychains در Linux:

# نصب
sudo apt-get install proxychains4

# ویرایش پیکربندی
sudo nano /etc/proxychains4.conf

مثال پیکربندی proxychains4.conf:

# حالت کار: dynamic (پروکسی‌های غیرقابل دسترس را عبور می‌دهد)
dynamic_chain

# حالت ساکت (اطلاعاتی درباره پروکسی نمایش نمی‌دهد)
quiet_mode

# درخواست‌های DNS از طریق پروکسی (مهم برای ناشناسی)
proxy_dns

# لیست پروکسی‌ها (به صورت متوالی اضافه می‌شوند)
[ProxyList]
socks5  192.168.1.100  1080  username  password
socks5  45.67.89.123   1080
http    34.56.78.90    8080  user      pass

حالت‌های کار proxychains:

  • dynamic_chain — از تمام پروکسی‌های موجود به ترتیب استفاده می‌کند و پروکسی‌های غیرقابل دسترس را عبور می‌دهد. برای پنتست بهینه است.
  • strict_chain — از تمام پروکسی‌ها به ترتیب استفاده می‌کند و در صورت عدم دسترسی یکی، اتصال را قطع می‌کند.
  • random_chain — برای هر اتصال تعدادی تصادفی از پروکسی‌ها را انتخاب می‌کند.

استفاده با ابزارهای پنتست:

# Nmap از طریق زنجیره پروکسی
proxychains4 nmap -sT -Pn target.com

# Metasploit
proxychains4 msfconsole

# Sqlmap
proxychains4 sqlmap -u "http://target.com/page?id=1" --dbs

# Gobuster (brute force دایرکتوری‌ها)
proxychains4 gobuster dir -u http://target.com -w wordlist.txt

# Curl
proxychains4 curl https://target.com

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

  • هر پروکسی در زنجیره تأخیری اضافه می‌کند — زنجیره‌ای از 3 پروکسی می‌تواند ping را از 50ms به 500ms افزایش دهد
  • درخواست‌های DNS باید از طریق پروکسی (proxy_dns) انجام شوند، در غیر این صورت IP واقعی شما از طریق DNS نشت می‌کند
  • همه ابزارها به درستی از طریق proxychains کار نمی‌کنند — برخی از آن‌ها از سوکت‌های خام استفاده می‌کنند
  • برای Nmap فقط از اسکن TCP (-sT) استفاده کنید، اسکن SYN (-sS) از طریق پروکسی کار نمی‌کند

جایگزین: Tor + proxychains. می‌توان Tor را با پروکسی‌های اضافی برای تقویت ناشناسی ترکیب کرد. Tor از قبل از زنجیره‌ای از 3 گره استفاده می‌کند، اضافه کردن پروکسی قبل از ورود به Tor یا بعد از خروج، یک سطح حفاظتی اضافی ایجاد می‌کند:

# پیکربندی: پروکسی → Tor → هدف
[ProxyList]
socks5  45.67.89.123   1080  # پروکسی خارجی
socks5  127.0.0.1      9050  # Tor محلی

چرخش IP: چگونه از مسدود شدن جلوگیری کنیم

چرخش آدرس‌های IP یک تکنیک کلیدی برای دور زدن محدودیت‌های نرخ و مسدودیت‌های مبتنی بر IP است. WAFهای مدرن تعداد درخواست‌ها از یک IP را در یک دوره مشخص (به عنوان مثال، 100 درخواست در دقیقه) پیگیری می‌کنند. فراتر رفتن از حد مجاز منجر به مسدودیت موقت یا دائمی می‌شود.

نوع‌های چرخش پروکسی:

1. چرخش در سطح ارائه‌دهنده پروکسی (Rotating proxies). برخی از ارائه‌دهندگان یک endpoint (IP:پورت) ارائه می‌دهند که به طور خودکار IP خروجی را در هر درخواست یا از طریق یک بازه زمانی مشخص تغییر می‌دهد. این ساده‌ترین گزینه است — نیازی به تغییر در کد ندارد، فقط یک آدرس پروکسی مشخص می‌کنید.

# مثال با rotating proxy (Python + requests)
import requests

proxies = {
    'http': 'http://user:pass@rotating.proxy.com:8080',
    'https': 'http://user:pass@rotating.proxy.com:8080'
}

# هر درخواست با یک IP جدید انجام می‌شود
for i in range(100):
    response = requests.get('https://api.ipify.org', proxies=proxies)
    print(f"Request {i}: IP = {response.text}")

2. چرخش در سطح برنامه (Proxy pool). شما یک لیست پروکسی دریافت می‌کنید و منطق تغییر را در کد خود پیاده‌سازی می‌کنید. این کنترل بیشتری به شما می‌دهد: می‌توانید فرکانس تغییر را مدیریت کنید، پروکسی‌های غیرقابل دسترس را حذف کنید و بار را توزیع کنید.

# مثال با proxy pool و چرخش (Python)
import requests
import random
from itertools import cycle

# لیست پروکسی
proxy_list = [
    'http://user:pass@45.67.89.1:8080',
    'http://user:pass@45.67.89.2:8080',
    'http://user:pass@45.67.89.3:8080',
    'http://user:pass@45.67.89.4:8080',
]

# تکرارگر چرخه‌ای برای چرخش متوالی
proxy_cycle = cycle(proxy_list)

def get_with_rotation(url):
    proxy = next(proxy_cycle)
    proxies = {'http': proxy, 'https': proxy}
    
    try:
        response = requests.get(url, proxies=proxies, timeout=10)
        return response
    except requests.exceptions.RequestException as e:
        print(f"Error with proxy {proxy}: {e}")
        return None

# استفاده
for i in range(20):
    response = get_with_rotation('https://httpbin.org/ip')
    if response:
        print(f"Request {i}: {response.json()}")

3. چرخش مبتنی بر نشست (Session-based). برای وظایفی که نیاز به حفظ وضعیت (کوکی‌ها، نشست‌ها) دارند، از پیوند پروکسی به نشست استفاده می‌شود. یک پروکسی برای تمام درخواست‌ها در یک نشست استفاده می‌شود و سپس برای نشست جدید تغییر می‌کند.

# چرخش مبتنی بر نشست
import requests

class ProxySession:
    def __init__(self, proxy_list):
        self.proxy_list = proxy_list
        self.current_proxy_index = 0
    
    def new_session(self):
        session = requests.Session()
        proxy = self.proxy_list[self.current_proxy_index]
        session.proxies = {'http': proxy, 'https': proxy}
        
        # برای نشست بعدی به پروکسی بعدی تغییر می‌دهیم
        self.current_proxy_index = (self.current_proxy_index + 1) % len(self.proxy_list)
        
        return session

# استفاده
proxy_manager = ProxySession(proxy_list)

# نشست 1 با پروکسی 1
session1 = proxy_manager.new_session()
session1.get('https://target.com/login')
session1.post('https://target.com/api', data={'key': 'value'})

# نشست 2 با پروکسی 2
session2 = proxy_manager.new_session()
session2.get('https://target.com/login')

استراتژی‌های چرخش بسته به وظیفه:

  • Brute force رمزها — IP را هر 5-10 تلاش تغییر دهید تا از حد مجاز ورود ناموفق فراتر نروید
  • اسکن پورت‌ها — IP را هر 100-500 پورت تغییر دهید تا IDS اسکن را از یک منبع شناسایی نکند
  • Fuzzing فرم‌های وب — چرخش هر 20-50 درخواست، شبیه‌سازی کاربران مختلف
  • جمع‌آوری داده‌های OSINT — چرخش در هر درخواست به API شبکه‌های اجتماعی یا موتورهای جستجو

نظارت بر کارایی پروکسی. در فرآیند چرخش، برخی از پروکسی‌ها ممکن است از کار بیفتند. مهم است که بررسی و حذف پروکسی‌های غیرقابل دسترس را پیاده‌سازی کنید:

# بررسی و فیلتر کردن پروکسی
def check_proxy(proxy):
    try:
        response = requests.get(
            'https://httpbin.org/ip',
            proxies={'http': proxy, 'https': proxy},
            timeout=5
        )
        return response.status_code == 200
    except:
        return False

# فیلتر کردن لیست
working_proxies = [p for p in proxy_list if check_proxy(p)]
print(f"پروکسی‌های کارآمد: {len(working_proxies)}/{len(proxy_list)}")

ادغام پروکسی با ابزارهای پنتست

بیشتر ابزارهای پنتست از کار با پروکسی پشتیبانی می‌کنند. بیایید تنظیمات را برای ابزارهای محبوب بررسی کنیم:

Burp Suite. یکی از ابزارهای اصلی برای تست برنامه‌های وب. تنظیم پروکسی:

  • گزینه‌های کاربر → اتصالات → سرورهای پروکسی بالادستی
  • اضافه کردن → آدرس پروکسی، پورت، نوع (HTTP/SOCKS) را مشخص کنید
  • برای چرخش می‌توانید از افزونه‌هایی مانند "Proxy Rotator" استفاده کنید

OWASP ZAP. جایگزینی برای Burp Suite با کد منبع باز:

  • ابزارها → گزینه‌ها → اتصال → استفاده از سرور پروکسی خروجی
  • آدرس، پورت و احراز هویت را مشخص کنید
  • از پروکسی SOCKS برای همه نوع ترافیک پشتیبانی می‌کند

Nmap. اسکنر پورت‌ها و سرویس‌ها. پشتیبانی مستقیم از پروکسی وجود ندارد (به جز HTTP CONNECT برای برخی از اسکریپت‌های NSE)، از طریق proxychains استفاده می‌شود:

# فقط اسکن TCP از طریق پروکسی کار می‌کند
proxychains4 nmap -sT -Pn -p 80,443,8080 target.com

# اسکن SYN نیاز به سوکت‌های خام دارد و از طریق پروکسی کار نمی‌کند
# nmap -sS target.com  # از طریق proxychains کار نمی‌کند

Sqlmap. ابزاری برای جستجوی خودکار و بهره‌برداری از SQL injection:

# پروکسی واحد
sqlmap -u "http://target.com/page?id=1" --proxy="socks5://user:pass@45.67.89.1:1080"

# فایل با لیست پروکسی (چرخش)
sqlmap -u "http://target.com/page?id=1" --proxy-file=proxies.txt

# از طریق Tor
sqlmap -u "http://target.com/page?id=1" --tor --tor-type=SOCKS5

Metasploit Framework. پلتفرمی برای توسعه و اجرای اکسپلویت‌ها:

# اجرای از طریق proxychains
proxychains4 msfconsole

# یا تنظیم درون Metasploit
msf6 > setg Proxies socks5:45.67.89.1:1080
msf6 > setg ReverseAllowProxy true

# برای یک ماژول خاص
msf6 exploit(windows/smb/ms17_010_eternalblue) > set Proxies socks5:45.67.89.1:1080

Gobuster / ffuf. ابزارهایی برای brute force دایرکتوری‌ها و پارامترها:

# Gobuster
gobuster dir -u http://target.com -w wordlist.txt -p socks5://45.67.89.1:1080

# ffuf با پروکسی
ffuf -u http://target.com/FUZZ -w wordlist.txt -x socks5://45.67.89.1:1080

# ffuf با چرخش از طریق replay-proxy
ffuf -u http://target.com/FUZZ -w wordlist.txt -replay-proxy http://rotating.proxy.com:8080

Hydra. brute force رمزها برای پروتکل‌های مختلف:

# از طریق proxychains (برای همه پروتکل‌ها)
proxychains4 hydra -l admin -P passwords.txt ssh://target.com

# پشتیبانی بومی برای HTTP (محدود)
hydra -l admin -P passwords.txt target.com http-get -s 8080 -m /admin

Nuclei. اسکنر آسیب‌پذیری مدرن مبتنی بر الگو:

# پروکسی HTTP
nuclei -u https://target.com -proxy-url http://user:pass@45.67.89.1:8080

# SOCKS5
nuclei -u https://target.com -proxy-url socks5://user:pass@45.67.89.1:1080

# چند پروکسی (چرخش)
nuclei -list targets.txt -proxy-url http://proxy1.com:8080,http://proxy2.com:8080

دور زدن WAF، IDS و دیگر سیستم‌های حفاظتی

سیستم‌های حفاظتی مدرن از روش‌های مختلفی برای شناسایی حملات استفاده می‌کنند. پروکسی تنها بخشی از استراتژی دور زدن است. بیایید یک رویکرد جامع را بررسی کنیم:

1. دور زدن مسدودیت‌های مبتنی بر IP. ساده‌ترین سطح حفاظت — مسدودیت بر اساس IP است. این مشکل با چرخش پروکسی با رعایت محدودیت‌های نرخ حل می‌شود:

  • از تأخیرها بین درخواست‌ها استفاده کنید (time.sleep در Python)
  • IP را هنگام دریافت HTTP 429 (بسیاری از درخواست‌ها) تغییر دهید
  • رفتار انسانی را شبیه‌سازی کنید — فواصل تصادفی بین درخواست‌ها

2. دور زدن geo-blocking. برخی از سیستم‌ها کشورهای کامل یا مناطق را مسدود می‌کنند. از پروکسی‌های مسکونی کشور مورد نظر استفاده کنید:

# مثال: تست از کشورهای مختلف
countries = ['US', 'GB', 'DE', 'FR']

for country in countries:
    proxy = f'http://user-country-{country}:pass@proxy.com:8080'
    response = requests.get('https://target.com', proxies={'http': proxy, 'https': proxy})
    print(f"{country}: Status {response.status_code}")

3. دور زدن fingerprinting (اثر انگشت مرورگر). WAFهای پیشرفته fingerprintهای TLS، هدرهای HTTP و ترتیب هدرها را تحلیل می‌کنند. از کتابخانه‌هایی استفاده کنید که مرورگرهای واقعی را شبیه‌سازی می‌کنند:

# curl-impersonate — شبیه‌سازی fingerprintهای TLS مرورگرها
curl_chrome116 --proxy socks5://45.67.89.1:1080 https://target.com

# Python: requests + curl_cffi (دور زدن Cloudflare)
from curl_cffi import requests

response = requests.get(
    'https://target.com',
    proxies={'https': 'socks5://45.67.89.1:1080'},
    impersonate='chrome116'
)

4. دور زدن تشخیص بات (Cloudflare، PerimeterX، Akamai). این سیستم‌ها از فراخوانی‌های JavaScript، fingerprinting canvas، WebGL و تحلیل حرکت ماوس استفاده می‌کنند. راه‌حل‌ها:

  • از مرورگرهای headless با تنظیمات صحیح استفاده کنید (Playwright، Puppeteer)
  • تکنیک‌های ضد تشخیص را اعمال کنید: تغییر WebGL، Canvas، AudioContext
  • پروکسی‌های مسکونی را با User-Agentهای واقعی ترکیب کنید
  • از راه‌حل‌های آماده استفاده کنید: undetected-chromedriver، playwright-stealth
# Playwright با پروکسی و ضد تشخیص
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(
        proxy={
            'server': 'socks5://45.67.89.1:1080',
            'username': 'user',
            'password': 'pass'
        }
    )
    
    context = browser.new_context(
        user_agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
        viewport={'width': 1920, 'height': 1080},
        locale='en-US',
        timezone_id='America/New_York'
    )
    
    # مخفی کردن webdriver
    context.add_init_script("""
        Object.defineProperty(navigator, 'webdriver', {get: () => undefined})
    """)
    
    page = context.new_page()
    page.goto('https://target.com')
    # ... اقدامات بعدی

5. دور زدن IDS/IPS (سیستم‌های تشخیص/پیشگیری نفوذ). این سیستم‌ها ترافیک شبکه را برای شناسایی امضاهای حمله تحلیل می‌کنند:

  • تکه‌تکه کردن بسته‌ها — بار مفید را به قسمت‌های کوچک تقسیم کنید
  • Obfuscation — payload را رمزگذاری کنید (base64، URL-encoding، Unicode)
  • توزیع حمله در زمان — اسکن آهسته با فواصل بزرگ
  • چرخش پروکسی — هر مرحله از حمله با IPهای مختلف
# Nmap: اسکن آهسته برای دور زدن IDS
proxychains4 nmap -sT -Pn -T2 --scan-delay 5s -p- target.com

# -T2: الگوی زمان‌بندی آهسته
# --scan-delay 5s: 5 ثانیه بین تلاش‌های پورت
# ترکیب با چرخش پروکسی اسکن را تقریباً نامحسوس می‌کند

6. دور زدن CAPTCHA. هنگام تست‌های تهاجمی ممکن است با CAPTCHA مواجه شوید. گزینه‌ها:

  • کاهش تهاجم — درخواست‌های کمتر، تأخیر بیشتر
  • استفاده از خدمات حل CAPTCHA (2captcha، Anti-Captcha) — برای برنامه‌های پاداش باگ
  • جستجوی endpointهای جایگزین بدون CAPTCHA (API، نسخه‌های موبایل)

امنیت عملیاتی (OPSEC) هنگام استفاده از پروکسی

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

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

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

# بررسی نشت DNS
dig @8.8.8.8 target.com  # درخواست DNS به طور مستقیم به Google DNS می‌رود

# راه‌حل: استفاده از DNS از طریق پروکسی
# در proxychains: proxy_dns
# در درخواست‌های Python: از IP به جای دامنه‌ها استفاده کنید یا DNS over HTTPS را تنظیم کنید

2. نشت WebRTC (برای ابزارهای مرورگر). WebRTC ممکن است IP واقعی شما را حتی از طریق پروکسی فاش کند:

  • WebRTC را در مرورگر غیرفعال کنید یا از افزونه‌ها استفاده کنید (WebRTC Leak Shield)
  • هنگام استفاده از Playwright/Puppeteer — WebRTC را از طریق مجوزها مسدود کنید

3. نشت‌های منطقه زمانی و محلی. منطقه زمانی و تنظیمات زبانی شما ممکن است با IP پروکسی مطابقت نداشته باشد:

# تنظیم صحیح منطقه زمانی در Playwright
context = browser.new_context(
    proxy={'server': 'socks5://us-proxy.com:1080'},
    locale='en-US',  # مطابقت با پروکسی US
    timezone_id='America/New_York',  # منطقه زمانی ایالات متحده
    geolocation={'latitude': 40.7128, 'longitude': -74.0060}  # مختصات NY
)

4. نشت‌های کوکی و نشست. از استفاده از یکسان کوکی‌ها با پروکسی‌های مختلف خودداری کنید — این کار درخواست‌های شما را به هم پیوند می‌دهد:

  • هر پروکسی = یک نشست جدید با کوکی‌های تمیز
  • بدون نیاز، با یک حساب کاربری از IPهای مختلف وارد نشوید
  • از کانتینرهای مرورگر یا پروفایل‌های جداگانه استفاده کنید

5. ثبات fingerprinting. اثر انگشت مرورگر باید با IP پروکسی مطابقت داشته باشد:

  • پروکسی US + زبان روسی مرورگر = مشکوک
  • پروکسی موبایل + User-Agent دسکتاپ = عدم تطابق
  • از ابزارهای تولید اثر انگشت‌های سازگار استفاده کنید

توصیه‌هایی برای OPSEC برای پنتسترها:

  • از یک VM اختصاصی برای پنتست استفاده کنید — آن را از سیستم اصلی ایزوله کنید
  • لاگ‌ها و آثار — آن‌ها را در دیسک‌های رمزگذاری شده ذخیره کنید و پس از اتمام پروژه حذف کنید
  • تفکیک پروکسی — از استخرهای پروکسی مختلف برای پروژه‌های مختلف استفاده کنید
  • ترافیک قانونی و غیرقانونی را از طریق یک پروکسی مخلوط نکنید
  • پروکسی‌ها را برای نشت بررسی کنید — به طور منظم از طریق ipleak.net، browserleaks.com تست کنید
  • مستندسازی — سوابق استفاده از پروکسی را برای گزارش به مشتریان نگه دارید (کدام IP، چه زمانی)

جنبه‌های قانونی. حتی در پنتست قانونی، مهم است:

  • اجازه کتبی (scope of work) از مشتری داشته باشید
  • از محدوده توافق شده فراتر نروید — فقط سیستم‌های مجاز را تست کنید
  • مشتری را از IPهای پروکسی استفاده شده برای whitelist در سیستم‌های آن‌ها مطلع کنید
  • قوانین کشور محل سیستم‌های تست شده را رعایت کنید

نتیجه‌گیری

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

نکات کلیدی هنگام استفاده از پروکسی برای پنتست: تنظیم صحیح چرخش IP برای دور زدن محدودیت‌های نرخ، ادغام با ابزارها از طریق proxychains یا پشتیبانی بومی، رعایت امنیت عملیاتی برای جلوگیری از نشت IP واقعی از طریق DNS، WebRTC یا fingerprinting. ترکیب اقدامات فنی (زنجیره‌های پروکسی، تکنیک‌های ضد تشخیص، obfuscation) و OPSEC صحیح، تست مؤثر و ایمنی را تضمین می‌کند.

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

```