- Introducción
- چرا با mitmproxy ترافیک را آنلایز کنیم؟
- موارد استفاده عملی
- نصب و ابزارها
- راهاندازی بهعنوان explicit proxy (تنظیم کلاینت)
- Transparent proxy mode (بدون تنظیم دستی کلاینت)
- ضبط، ذخیره و تبدیل جریانها
- اسکریپتنویسی و افزودنیها (Addons)
- فیلترها و جستجوی Flow
- تحلیل TLS و جزئیات فنی
- مقیاسپذیری و عملکرد
- امنیت عملیاتی و حریم خصوصی
- نمونههای عملی: موبایل، API و replay
- ادغام با ابزارهای دیگر (Wireshark, Burp, CI)
- بهترین کانفیگها برحسب کاربرد
- نکات نهایی و هشدارهای حقوقی
- جمعبندی و پیشنهادات عملی
- Preguntas frecuentes
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 (تنظیم کلاینت)
مراحل کلی:
اجرای mitmproxy:
mitmproxy --listen-port 8080تولید و نصب گواهی 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
دیباگ اپ موبایل
روی لپتاپ mitmproxy اجرا کنید:
mitmweb --listen-host 0.0.0.0 --listen-port 8080لپتاپ را به همان شبکه Wi‑Fi وصل کنید؛ IP مثلاً 192.168.1.10.
در تنظیمات Wi‑Fi گوشی، Proxy را دستی کرده و IP را 192.168.1.10 و پورت 8080 Ponlo.
گواهی mitmproxy را روی گوشی نصب کنید.
ترافیک را در 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 و استقرار در لوکیشنهای نزدیک به کاربران استفاده کنید.









