تحلیل ترافیک با mitmproxy: راهنمای کامل برای دیباگ و امنیت
این مقاله به بررسی ابزار میتم‌پراکسی برای تحلیل ترافیک HTTP/HTTPS و کاربردهای آن در امنیت و دیباگ می‌پردازد.

تحلیل ترافیک با mitmproxy: راهنمای کامل برای دیباگ و امنیت

در این مقاله به بررسی ابزار mitmproxy می‌پردازیم که برای تحلیل و دیباگ ترافیک HTTP/HTTPS کاربرد دارد. از نصب و راه‌اندازی گرفته تا نکات امنیتی و کاربردهای عملی، این راهنما به شما کمک خواهد کرد تا به‌صورت موثر ترافیک خود را مدیریت کنید.
0 acciones
0
0
0
0

 

Introducción

mitmproxy ابزاری قدرتمند و منعطف برای بازبینی، دستکاری و تحلیل ترافیک HTTP/HTTPS در محیط‌های توسعه، تست امنیتی و دیباگ اپلیکیشن‌های موبایل و وب است. در این راهنما قدم‌به‌قدم پیاده‌سازی، نمونه‌های عملی، کانفیگ‌های رایج (از جمله transparent proxy)، نکات امنیتی، و روش‌های مقیاس‌پذیری بررسی می‌شود.

این مقاله برای مدیران سایت، برنامه‌نویسان، DevOps و تیم‌های امنیتی نوشته شده و مثال‌ها و دستورات لینوکسی قابل اجرا ارائه می‌دهد.

 

چرا با mitmproxy ترافیک را آنلایز کنیم؟

mitmproxy امکان دیدن درخواست‌ها و پاسخ‌های رمزنگاری‌شده TLS را با نصب گواهی محلی (MITM CA) روی کلاینت فراهم می‌کند؛ این ویژگی برای اشکال‌زدایی APIها، تحلیل رفتار اپلیکیشن‌ها، تست امنیتی و ضبط/پخش ترافیک بسیار مناسب است.

مجموعه شامل ابزارهای mitmproxy (تعاملی)، mitmdump (برای اسکریپت و بک‌اند) و mitmweb (رابط وب) می‌شود.

با اسکریپت‌نویسی پایتون می‌توان فیلتر، لاگینگ و تغییر payload را خودکار کرد. این ابزار با Estibador, systemd, iptables/nftables سازگار است و قابل استفاده به‌عنوان explicit O transparent proxy Es.

 

موارد استفاده عملی

 

دیباگ API و موبایل

برای اعتراض به مشکلات JSON، خطاهای CORS یا احراز هویت OAuth، می‌توانید mitmproxy را بین موبایل و سرور قرار دهید و درخواست/پاسخ‌ها را مشاهده کنید.

روش ساده: کلاینت را به آدرس IP سرور mitmproxy تنظیم کنید (پورت پیش‌فرض 8080) و گواهی CA را روی دستگاه نصب کنید.

 

تست نفوذ و ارزیابی امنیت (با رعایت اصول قانونی)

برای تست‌های مجاز (Pentest)، mitmproxy امکان اجرای حملات منطقی، بررسی نشت توکن و تحلیل TLS را فراهم می‌کند. همیشه قرارداد و اجازه‌نامه کتبی داشته باشید و از جمع‌آوری داده‌های حساس بدون مجوز خودداری کنید.

 

ضبط و پخش ترافیک (Replay)

برای بازتولید خطاها یا تست بارگذاری، می‌توانید ترافیک ضبط‌شده را با قابلیت server-replay پخش کنید تا رفتار سرور یا کلاینت را مجدداً بسنجید.

 

نصب و ابزارها

 

نصب پایه روی Debian/Ubuntu

نصب با pip (توصیه‌شده برای آخرین نسخه):

pip3 install mitmproxy

نصب از بسته (راحت ولی قدیمی‌تر):

sudo apt update
sudo apt install mitmproxy

 

اجرای سریع

سه ابزار اصلی:

  • mitmproxy — رابط تعاملی کنسولی

  • mitmdump — مناسب برای ضبط اسکریپت‌ها و بک‌اند

  • mitmweb — رابط وب با UI گرافیکی

مثال اجرا:

mitmweb --listen-port 8080 --showhost

 

اجرای در Docker

docker run --rm -p 8080:8080 -p 8081:8081 -v $(pwd)/certs:/home/mitmproxy/.mitmproxy mitmproxy/mitmproxy mitmweb --web-host 0.0.0.0

 

راه‌اندازی به‌عنوان explicit proxy (تنظیم کلاینت)

مراحل کلی:

  1. اجرای mitmproxy:

    mitmproxy --listen-port 8080
  2. تولید و نصب گواهی CA:

    پس از اجرای mitmproxy، CA در ~/.mitmproxy/ قرار می‌گیرد (فایل mitmproxy-ca-cert.pem).

    روی مرورگر یا سیستم عامل کلاینت، گواهی را به عنوان Trust نصب کنید (Windows: MMC > Certificates; macOS: Keychain; Android: Settings > Security > Install from storage).

 

Transparent proxy mode (بدون تنظیم دستی کلاینت)

برای محیط‌هایی که نمی‌توان تنظیمات پروکسی را روی کلاینت انجام داد (مثل دستگاه‌های IoT یا شبکه داخلی)، از حالت transparent استفاده کنید. این حالت نیاز به هدایت ترافیک با iptables/nftables/TPROXY و فعال‌سازی IP forwarding در هسته دارد.

 

فعال‌سازی IP forwarding

sudo sysctl -w net.ipv4.ip_forward=1

 

مثال iptables برای هدایت HTTP/HTTPS به پورت 8080

هدایت TCP پورت 80 و 443 به پورت 8080 روی همان ماشین (برای ترافیک محلی):

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 8080

 

اجرای mitmproxy در حالت transparent

mitmproxy --mode transparent --listen-port 8080

نکته: برای ترافیک HTTPS در حالت transparent باید CA روی کلاینت‌ها نصب شده باشد. برای پیاده‌سازی مقیاس‌پذیر در لبه شبکه، از TPROXY + nftables استفاده کنید تا IP اصلی کلاینت حفظ شود.

 

ضبط، ذخیره و تبدیل جریان‌ها

 

ضبط با mitmdump

mitmdump -w flows.mitm

 

خواندن فایل ضبط‌شده

mitmproxy -r flows.mitm

 

تبدیل به HAR / pcap

mitmproxy/mitmdump قابلیت export را دارند (در mitmweb گزینه export HAR موجود است).

برای pcap می‌توانید tcpdump را همزمان اجرا کرده و سپس Wireshark با pcap آنالیز کنید:

sudo tcpdump -i eth0 -w capture.pcap port 80 or port 443

در صورت نیاز به آنالیز TLS در Wireshark، اگر کنترل مرورگر دارید می‌توانید SSLKEYLOGFILE را فعال کنید تا کلیدهای سمت کلاینت تولید و به Wireshark داده شوند.

 

اسکریپت‌نویسی و افزودنی‌ها (Addons)

mitmproxy با پایتون ادغام می‌شود و می‌توانید افزونه بنویسید. نمونه زیر لاگ کردن و تغییر بدنه JSON پاسخ را نشان می‌دهد.

from mitmproxy import http
import json

def response(flow: http.HTTPFlow):
    if "api.example.com" in flow.request.pretty_host():
        # log URL
        print(flow.request.url)
        # modify JSON response
        if "application/json" in flow.response.headers.get("content-type", ""):
            data = json.loads(flow.response.get_text())
            data["injected"] = True
            flow.response.set_text(json.dumps(data))

اجرای addon:

mitmdump -s modify_response.py

 

فیلترها و جستجوی Flow

مثال‌های مفید برای فیلترها:

  • نمایش فقط درخواست‌های به دامنه خاص: ~d example.com

  • نمایش فقط پاسخ‌های با خطای 5xx: ~s 500-599

مثال اجرای mitmproxy با تنظیمات:

mitmproxy --set stream_large_bodies=2m --showhost

 

تحلیل TLS و جزئیات فنی

mitmproxy می‌تواند TLS ClientHello، Cipher Suiteها و SNI را نمایش دهد و در فرآیند fingerprinting کمک‌کننده باشد.

برای تحلیل کامل TLS در محیط‌های توسعه‌ای، نصب CA و جمع‌آوری JA3 O UADetector به کار می‌آید.

 

مقیاس‌پذیری و عملکرد

mitmproxy مبتنی بر Python است و برای بارهای سنگین باید روی سخت‌افزار مناسب یا خوشه‌ای اجرا شود.

برای مقیاس بالا: از سرورهای اختصاصی یا cloud instances با شبکه قوی استفاده کنید، مثل سرور ابری با پورت‌های 10Gbps.

در محیط‌های تولیدی که نیاز به تحمل حمله دارند، از سرورهای ضدDDoS و Load Balancer بهره ببرید. شرکت ما با Más de 85 ubicaciones en todo el mundo امکان استقرار در نقاط لبه (edge) را دارد که برای کاهش latency در ترید و گیم مفید است.

 

امنیت عملیاتی و حریم خصوصی

فقط در شبکه‌ها و با اجازه صریح تحلیل انجام دهید. ضبط ترافیک بدون رضایت قانونی جرم است.

کلید خصوصی CA را به‌صورت سخت‌افزاری یا در کی‌منیجر ذخیره کنید و دسترسی را محدود کنید.

لاگ‌ها ممکن است حاوی داده حساس (توکن، کوکی) باشند؛ برای آن‌ها retention policy مشخص و رمزنگاری اعمال کنید.

برای محیط‌های حساس (پرداخت، کارت)، قواعد PCI/DSS را رعایت کنید و از ابزارهای MITM صرفاً در فاز تست استفاده کنید.

در صورت استفاده برای تحلیل ترید یا گیم، از VPS مخصوص ترید یا VPS گیمینگ با SLA مناسب و anti-DDoS بهره ببرید.

 

نمونه‌های عملی: موبایل، API و replay

 

دیباگ اپ موبایل

  1. روی لپ‌تاپ mitmproxy اجرا کنید:

    mitmweb --listen-host 0.0.0.0 --listen-port 8080
  2. لپ‌تاپ را به همان شبکه Wi‑Fi وصل کنید؛ IP مثلاً 192.168.1.10.

  3. در تنظیمات Wi‑Fi گوشی، Proxy را دستی کرده و IP را 192.168.1.10 و پورت 8080 Ponlo.

  4. گواهی mitmproxy را روی گوشی نصب کنید.

  5. ترافیک را در mitmweb مشاهده و فیلتر کنید.

 

ضبط و پخش ترافیک API برای تست

ضبط:

mitmdump -w api_flows.mitm

پخش:

mitmdump --server-replay api_flows.mitm --server-replay-nopop

 

ادغام با ابزارهای دیگر (Wireshark, Burp, CI)

از tcpdump برای تهیه pcap و آنالیز در Wireshark استفاده کنید.

می‌توان mitmproxy را به‌عنوان پیش‌پردازنده ترافیک برای Burp یا هر آنالایزر دیگری قرار داد.

در CI/CD: ضبط نمونه ترافیک با mitmdump و پخش آن در مراحل integration برای شبیه‌سازی شرایط واقعی مفید است.

 

بهترین کانفیگ‌ها برحسب کاربرد

برای ترید: VPS با latency پایین، سرور نزدیک به صرافی، شبکه با BGP و CDN مناسب. از یک VPS مخصوص ترید برای اجرای mitmproxy در حالت تست و ابزار لاگینگ جداگانه استفاده کنید تا تداخل با Execution Engine ترید نداشته باشد.

برای گیم: VPS گیم با پینگ کم. توجه کنید mitmproxy فقط TCP/HTTP را پشتیبانی می‌کند؛ برای آنالیز UDP باید از ابزارهای دیگری مثل tcpreplay/Wireshark y tun/tap Usar.

برای AI / رندرینگ: mitmproxy برای اشکال‌زدایی API مدل‌ها مفید است؛ برای پردازش‌های سنگین شبکه از سرور گرافیکی (GPU Cloud) استفاده کنید و mitmproxy را روی سرور محاسباتی جداگانه قرار دهید.

 

همیشه قبل از هر آنالیز از مالک سرویس یا کاربر مجوز کتبی بگیرید.

داده‌هایی مثل اطلاعات کارت، رمز عبور و توکن‌ها باید ایمن نگهداری و پس از نیاز حذف شوند.

برای تولید، از سرورهای محافظت‌شده و راهکار ضدDDoS استفاده کنید تا از سوءاستفاده جلوگیری شود.

 

جمع‌بندی و پیشنهادات عملی

Traffic analysis with mitmproxy ابزاری انعطاف‌پذیر برای دیباگ، تست امنیتی و تحلیل ترافیک است. نصب ساده، اسکریپت‌پذیری پایتون و امکانات ضبط/پخش باعث می‌شود در توسعه و QA و برخی سناریوهای امنیتی بسیار مفید باشد.

برای تولید و تحلیل در مقیاس بالا از سرورهای با شبکه قوی، ضدDDoS و استقرار در لوکیشن‌های نزدیک به کاربران استفاده کنید.

 

Preguntas frecuentes

También te puede gustar

Cómo instalar IBSng en CentOS 6/7

Tutorial de instalación de IBSng en CentOS 6/7. En este artículo se proporciona un tutorial de instalación de IBSng en CentOS 6/7 para ayudarle…