Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
mitm-proxy — وكيل MITM لبروتوكولي HTTP/HTTPS مبني بلغة Go، مع اعتراض لحركة المرور عبر HTTP/2 وHTTP/1.1، وتوليد شهادات CA محلية/خاصة بكل مضيف، ونفق CONNECT/WebSocket، وتخزين مؤقت على القرص، ولوحة تحكم إدارية، والتقاط حركة المرور، وسياسات حظر، وفحص تهديدات اختياري مدعوم بالذكاء الاصطناعي مع التنقيح والعزل وتسجيل التدقيق. | Kitploit
أدوات/GitHubGitHub/welfordian/mitm-proxy
بروكسيات الويب والاعتراضاختبار أمان APIمصممي الأخطاءأمن الويباختبار الاختراقاستخبارات التهديداتالتعلم والتعليمأمن الذكاء الاصطناعي
GitHubwelfordian/mitm-proxy

mitm-proxy

عرض المستودع
14144منذ 3 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →

حول

وكيل MITM لبروتوكولي HTTP/HTTPS مبني بلغة Go، مع اعتراض لحركة المرور عبر HTTP/2 وHTTP/1.1، وتوليد شهادات CA محلية/خاصة بكل مضيف، ونفق CONNECT/WebSocket، وتخزين مؤقت على القرص، ولوحة تحكم إدارية، والتقاط حركة المرور، وسياسات حظر، وفحص تهديدات اختياري مدعوم بالذكاء الاصطناعي مع التنقيح والعزل وتسجيل التدقيق.

مشاركة

Go MITM Proxy

شعار إدارة MITM Proxy

وكيل HTTP/HTTPS خفيف وسهل الاستخدام للمطورين، يعمل وفق تقنية رجل في المنتصف (MITM)، مكتوب بلغة Go. يدعم HTTP/1.1 و HTTP/2، وتوجيه CONNECT، ونفق WebSocket (ws/wss)، والتخزين المؤقت للاستجابات على القرص مع فلاتر مرنة، وإعادة تحميل الإعدادات أثناء التشغيل.

الشارات

Go Platform PRs Welcome

معاينة لوحة التحكم الإدارية

نظرة عامة على لوحة تحكم MITM Proxy الإدارية

نظرة عامة

Go MITM Proxy هو بروكسي اعتراض مخصص لتصحيح الأخطاء والاختبار والتعلم والاعتراض المتحكم به لحركة مرور HTTP(S). عند تمكين MITM، يقوم ديناميكيًا بتوليد شهادات طرفية لكل مضيف موقعة من مرجع تصديق محلي (CA)، مما يسمح للبروكسي بفك تشفير حركة HTTPS وفحصها. يمكنه أيضًا العمل كنفق TCP شفاف عند تعطيل MITM أو للنطاقات/المنافذ المستثناة.

إشعار ومتطلبات الاستخدام المسؤول

مهم: يقوم هذا التطبيق باعتراض من نوع رجل في المنتصف (MITM) فعّال، بما في ذلك توليد واستخدام شهادات TLS لفك تشفير حركة مرور HTTPS. اعتمادًا على ولايتك القضائية وبيئة الشبكة، قد يكون اعتراض حركة المرور دون موافقة مسبقة وواضحة من جميع المستخدمين المتأثرين غير قانوني وقد ينتهك الخصوصية أو سياسات مكان العمل أو المتطلبات التنظيمية.

قبل استخدام هذا البرنامج في أي بيئة غير جهازك المحلي:

1. الحصول على موافقة صريحة

يجب إعلام جميع مستخدمي أي شبكة قد يعترض فيها هذا البروكسي حركة المرور بوضوح بأن اعتراض HTTP(S) وفحصه سيحدثان. وينبغي أن تكون الموافقة صريحة وموثقة بشكل مثالي.

2. الاستخدام فقط على الشبكات المصرح بها

لا تشغّل هذا البرنامج على شبكات لا تملكها أو لا تديرها أو لا تملك إذنًا صريحًا لاختبارها أو مراقبتها.

3. احترام قوانين الخصوصية وحماية البيانات

لدى العديد من المناطق قوانين صارمة تحكم اعتراض بيانات المستخدمين وتسجيلها وتخزينها (على سبيل المثال: GDPR و CCPA وقوانين التنصت). أنت مسؤول عن ضمان امتثال استخدامك لجميع اللوائح المعمول بها.

4. تأمين مفتاح المرجع المصدق (CA) المُنشأ

مفتاح CA الخاص المُنشأ (عادةً ca-key.pem) يسمح لحامله بانتحال أي نطاق للمستخدمين الذين يثقون بالشهادة المقابلة.

  • خزّنه بأمان.
  • لا تشاركه أبدًا.
  • قم بتدوير/حذفه إذا تم اختراقه.

5. الاستخدام للاختبار والتصحيح فقط

صُمم هذا البروكسي لأغراض التطوير والتصحيح والاختبار الموجه أو التعليم — وليس للمراقبة الخفية أو التجسس غير المصرح به.


باستخدامك لهذا البرنامج، فأنت تقر وتتحمل المسؤولية الكاملة عن ضمان أن استخدامك قانوني وأخلاقي ومُبلَّغ به بشكل صحيح لجميع المستخدمين المتأثرين.

الميزات

  • دعم الوكالة لبروتوكول HTTP وHTTPS وفق دلالات البروكسي القياسية
  • اعتراض MITM لحركة HTTPS مع شهادات لكل مضيف
  • معالجة الجانب الهابط (downstream) لبروتوكولي HTTP/1.1 وHTTP/2 مع مفاوضة ALPN
  • نفق WebSocket: ws:// و wss://
  • تخزين مؤقت مرن على القرص لاستجابات GET
    • تضمين/استثناء حسب النطاق وحسب امتداد الملف
    • انتهاء الصلاحية بناءً على TTL
    • مؤشرات إصابة ذاكرة التخزين المؤقت في الاستجابات (Via وترويسة مخصصة x--uid)
  • إعادة تحميل الإعدادات أثناء التشغيل: استطلاع اختياري لملف config.json وتطبيق التغييرات فورًا
  • واجهة برمجة تطبيقات/لوحة تحكم إدارية محلية مع مصادقة عبر رمز حامل (bearer token)، ودعم رموز القراءة فقط، وسجلات أدوار مستخدمي الإدارة، ونقاط نهاية للصحة/الإصدار/التدقيق، وبث مباشر لحركة المرور عبر SSE، وبيانات تعريف CA وتنزيلها
  • سياسة حظر وقت التشغيل للمنافذ والنطاقات ونطاقات IP/CIDR
  • ماسح تهديدات اختياري مع تقييمات استدلالية (heuristic) مدعومة بالذكاء الاصطناعي، وتنقيح، وتخزين مؤقت للتقييمات، وبيانات تعريف الحجر الصحي، ونقاط نهاية للوحة التحكم
  • تحكم في التسجيل المفصّل (verbose) وتسجيل كل طلب على حدة
  • إعدادات افتراضية منطقية مع إعدادات JSON اختيارية

التثبيت

المتطلبات الأساسية:

  • Go 1.25 أو أحدث

استنساخ المستودع وبناؤه: ```bash git clone https://github.com/Welfordian/mitm-proxy.git cd mitm-proxy go build ./

root@kitploit:~
ينتج هذا ملفًا ثنائيًا باسم mitm-proxy (أو mitm-proxy.exe على ويندوز) في جذر المشروع.


## بدء سريع

1) شغّل البروكسي بالإعدادات الافتراضية (يستمع على :8080): ```bash
./mitm-proxy

عند أول تشغيل، سيتم إنشاء مرجع تصديق محلي (CA) وحفظه في ca-cert.pem و ca-key.pem.

  1. قم بتكوين متصفحك أو curl لاستخدام البروكسي على http://localhost:8080.

  2. قم بالوثوق بشهادة CA المُنشأة (ca-cert.pem) في نظام التشغيل/المتصفح لديك للسماح باعتراض HTTPS. راجع الوثوق بمرجع التصديق المحلي.

  3. قم بزيارة موقع HTTPS عبر البروكسي ولاحظ السجلات. استخدم الوضع المفصّل لمزيد من التفاصيل: ```bash ./mitm-proxy --verbose

root@kitploit:~
## الاستخدام

### خيارات سطر الأوامر

- --config string: مسار ملف config.json
- --listen string: عنوان الاستماع (يتجاوز إعدادات config)
- --ca-cert string: مسار شهادة CA موجودة (يتجاوز إعدادات config)
- --ca-key string: مسار مفتاح CA موجود (يتجاوز إعدادات config)
- --mitm bool: تفعيل اعتراض MITM (الافتراضي true؛ تعيينه إلى false يُجبر على استخدام النفق)
- --verbose bool: تفعيل التسجيل التفصيلي
- --watch-config bool: مراقبة config.json لاكتشاف التغييرات وتطبيقها تلقائيًا (الافتراضي true)
- --admin-enabled bool: تفعيل API/لوحة تحكم الإدارة المحلية (الافتراضي true)
- --admin-addr string: عنوان الاستماع لـ API/لوحة تحكم الإدارة (الافتراضي 127.0.0.1:9090)
- --admin-token string: توكن Bearer للإدارة (يتم إنشاؤه عند بدء التشغيل إذا لم يُحدَّد)
- --admin-read-token string: توكن Bearer للقراءة فقط للوصول إلى واجهة الإدارة عبر GET/HEAD/OPTIONS
- --admin-ui bool: تقديم واجهة مستخدم الإدارة المدمجة (الافتراضي true)
- --admin-store string: مسار تخزين SQLite للإدارة (الافتراضي dashboard.db)

خيارات سطر الأوامر تتجاوز قيم ملف الإعدادات في الحالات المذكورة.


### التكوين (config.json)

يتضمن المستودع مثالًا على config.json: ```json
{
 "listen_addr": ":8080",
 "proxy_name": "MITM-Proxy",
 "ca_cert_path": null,
 "ca_key_path": null,
 "ca_cert_output_path": "ca-cert.pem",
 "ca_key_output_path": "ca-key.pem",
 "enable_mitm": true,
 "admin_enabled": true,
 "admin_addr": "127.0.0.1:9090",
 "admin_token": "",
 "admin_read_token": "",
 "admin_ui": true,
 "admin_store": "dashboard.db",
 "excluded_domains": [],
 "blocked_ports": [25, 445, 3389],
 "blocked_domains": [],
 "blocked_ips": [],
 "block_action": "deny",
 "block_response_status": 403,
 "traffic_capture": {
   "store_bodies": false,
   "max_body_bytes": 32768,
   "redact_bodies": true,
   "store_headers": true,
   "redacted_headers": ["Authorization", "Cookie", "Proxy-Authorization", "Set-Cookie", "X-Api-Key"],
   "store_cookies": true,
   "redacted_cookies": []
 },
 "proxy_auth": {
   "enabled": false,
   "realm": "MITM Proxy",
   "require_auth_for_loopback": false,
   "default_action": "allow"
 },
 "verbose_logging": true,
 "log_requests": true,
 "max_idle_conns": 200,
 "idle_conn_timeout_seconds": 90,
 "tls_handshake_timeout_seconds": 10,
 "min_tls_version": "1.2",
 "tls_next_protos": ["h2", "http/1.1"],
 "cache": {
   "enabled": true,
   "directory": "/var/cache/mitm-proxy",
   "include_domains": [],
   "exclude_domains": [],
   "include_extensions": ["jpg", "png", "webp", "css", "js"],
   "exclude_extensions": [],
   "ttl": 3600
 }
}

ملاحظات:

  • إذا لم يتم توفير ca_cert_path/ca_key_path، يكتب الوكيل شهادة CA مولّدة إلى ca-cert.pem / ca-key.pem.
  • يدعم excluded_domains الأنماط البدل (انظر IsDomainExcluded في internal/config).
  • admin_addr يكون افتراضيًا على localhost. إذا كان admin_token فارغًا، يتم توليد token لكل تشغيل وطباعته عند بدء التشغيل.
  • يمكن تعيين admin_read_token لعملاء لوحة الإدارة/API للقراءة فقط.
  • traffic_capture.store_bodies معطل افتراضيًا؛ عند تفعيله، تكون عينات الجسم محدودة الحجم ويتم تنقيحها افتراضيًا.
  • يتحكم traffic_capture.store_headers و traffic_capture.store_cookies في ما إذا كانت البيانات الوصفية الملتقطة تُحفظ. ينقّح redacted_headers قيم الرؤوس بالكامل، بينما ينقّح redacted_cookies أسماء Cookie و Set-Cookie المطابقة الفردية قبل التخزين.
  • يفعّل proxy_auth مصادقة Basic لعملاء الوكيل المدعومة بمستخدمين تدار عبر SQLite وقواعد ACL مرتبة.
  • يدعم blocked_domains الأسماء الدقيقة وأنماط البدل مثل *.example.com؛ ويدعم blocked_ips عناوين IP مفردة ونطاقات CIDR.
  • cache.include_domains و cache.exclude_domains متنافيان، وكذلك include_extensions مقابل exclude_extensions.
  • يراقب المراقب الملف المحدد في --config أو الملف الافتراضي ./config.json فقط، ويطبق التغييرات مباشرة عبر Proxy.SetConfig.

لوحة الإدارة

يقدم خادم الإدارة لوحة التحكم على http://127.0.0.1:9090/admin/ افتراضيًا. تتطلب مسارات API Authorization: Bearer <token>؛ أما للاستخدام من المتصفح محليًا، فيخزن /admin/?token=<token> الـ token في التخزين المحلي للمتصفح.

تشمل التغطية الأولية للوحة الإدارة/API ما يلي:

  • GET /api/health و GET /api/version
  • GET /api/audit
  • GET /api/traffic, GET /api/traffic/stats, GET /api/traffic/{id}, GET /api/traffic/stream, DELETE /api/traffic, و POST /api/traffic/{id}/replay
  • GET /api/traffic/export?format=har للتتصدير بنمط HAR
  • GET/POST/PUT/DELETE /api/repeater/cases و POST /api/repeater/cases/{id}/send لحالات الإعادة المحفوظة القابلة للتحرير
  • GET/POST/PUT/DELETE /api/scopes بالإضافة إلى نقاط نهاية تعيين النطاقات لحركة المرور وحالات الإعادة
  • GET/POST/DELETE /api/pentest/maps بالإضافة إلى إجراءات استنساخ نقاط النهاية لخرائط الأهداف السلبية
  • GET/POST/PUT/DELETE /api/proxy-auth/users و /api/proxy-acl/rules بالإضافة إلى POST /api/proxy-acl/test للتحكم في وصول عملاء الوكيل
  • POST /api/ai/traffic/{id}/explain, POST /api/ai/traffic/{id}/suggest-tests, POST /api/ai/repeater/cases/{id}/suggest-tests, POST /api/ai/repeater/cases/{id}/compare-runs, و GET/POST/DELETE /api/ai/notes لملاحظات مساعد أبحاث الذكاء الاصطناعي
  • GET /api/certificates/ca, GET /api/certificates/ca/download, POST /api/certificates/ca/rotate, POST /api/certificates/ca/import, و GET /api/certificates/leaf
  • GET/POST/DELETE قواعد الحظر للمنافذ والنطاقات وعناوين IP
  • GET /api/deployments/current, POST /api/deployments/current/reload, GET /api/logs, GET /api/cache مع الإدخالات المخزنة وعدادات الإصابة/الخطأ, POST /api/cache/purge, و GET/PUT /api/settings
  • GET /api/threats/events, GET /api/threats/stream, GET /api/threats/config, POST /api/threats/test, ونقاط نهاية تجاوز التهديدات
  • GET /metrics لعدادات العملية/الإدارة/التهديدات المتوافقة مع Prometheus

تتضمن لوحة الإدارة تأكيدًا على الاستخدام المسؤول عند التشغيل الأول. لا يتم أبدًا كشف المفتاح الخاص لشهادة CA عبر API الإدارة. يتم تخزين حالة لوحة الإدارة في SQLite في dashboard.db افتراضيًا. تُطبَّق الإعدادات التي يتم تغييرها عبر لوحة الإدارة فورًا وتُكتب مرة أخرى إلى ملف JSON المكوَّن، أو إلى config.json عند بدء تشغيل الوكيل من الإعدادات الافتراضية.

واجهة لوحة الإدارة الأمامية هي تطبيق Vite/React داخل internal/admin/ui. يتم إصدار بنيتها الإنتاجية إلى internal/admin/ui/dist وتضمينها في ثنائي Go. لتحديث أصول لوحة الإدارة:```bash cd internal/admin/ui npm install npm run build

root@kitploit:~
### الربط عبر الوكيل العلوي

يمكن ربط حركة المرور الصادرة عبر وكيل علوي HTTP أو HTTPS، مثل Burp أو ZAP أو وكيل خروج مؤسسي. عند التفعيل، تستخدم إعادة التوجيه المعتادة HTTP(S) وأنفاق المرور المباشر CONNECT وWebSockets وإرسالات Repeater الوكيل العلوي، ما لم يطابق مضيفٌ ما `no_proxy`.```json
{
  "upstream_proxy": {
    "enabled": true,
    "url": "http://127.0.0.1:8080",
    "username": "",
    "password_env": "UPSTREAM_PROXY_PASSWORD",
    "no_proxy": ["localhost", "127.0.0.1", "*.internal"],
    "chain_tunnels": true,
    "apply_to_repeater": true
  }
}

فقط عناوين URL للوكيل العلوي http:// و https:// مدعومة في v1. إذا كانت المصادقة الأساسية (Basic auth) مطلوبة، فعيّن username وقدّم كلمة المرور عبر متغير البيئة المسمّى؛ بيانات الاعتماد المضمّنة في URL مرفوضة ولا تظهر أبدًا في إعدادات لوحة التحكم. إذا كان الوكيل العلوي مفعّلًا لكنه غير متاح، تفشل الطلبات المتأثرة بشكل مرئي بدلاً من التراجع الصامت إلى الاتصالات المباشرة.

التحكم في الوصول إلى الوكيل

تعرض عرض التحكم في الوصول (Access Control) في لوحة التحكم إدارة مستخدمي وكيل العميل وقواعد ACL المرتبة (سماح/منع). يُخزَّن مستخدمو الوكيل في SQLite مع تجزئات كلمة مرور bcrypt؛ كلمات المرور النصية الصريحة تُقبل فقط عند إنشاء مستخدم أو إعادة تعيينه ولا يتم إرجاعها أبدًا عبر API.

فعّل مصادقة الوكيل الأساسية عبر proxy_auth في config.json أو من عرض الإعدادات (Settings). عند التفعيل، يجب على العملاء إرسال Proxy-Authorization: Basic ... ما لم يكن عملاء الحلقة المحلية (loopback) معفيين. تُقيَّم قواعد ACL حسب الأولوية ويمكن أن تطابق اسم المستخدم، وعنوان IP/CIDR للمصدر، والمضيف أو مضيف البدل (wildcard)، والمنفذ أو نطاق المنفذ، والطريقة، ونطاق البحث. قوائم المطابقة الفارغة تعني "أي".

يتم إزالة Proxy-Authorization قبل التوجيه، وسلسلة الوكيل العلوي، والتقاط الحركة، والبحث في ذاكرة التخزين المؤقت، وفحص التهديدات، واستنساخ Repeater. تتضمن الحركة الملتقطة إسناد proxy_user عند توفره، ويمكن لمربع البحث في الحركة (Traffic) مطابقة أسماء مستخدمي الوكيل.

مكرر الأبحاث (Research Repeater)

يتيح عرض المكرر (Repeater) في لوحة التحكم لباحثي الأمن استنساخ حركة HTTP الملتقطة إلى حالات قابلة للتحرير ومحفوظة. تخزّن الحالة الطريقة، وعنوان URL، والترويسات، وعينة الجسم، والمهلة الزمنية، ومعرّف تدفق حركة المصدر الاختياري. يخزّن كل إرسال تشغيلة (run) بالحالة، والمدة، وترويسات الاستجابة، وعينة جسم استجابة محدودة الحجم، وأي خطأ في الوكيل العلوي.

يتم ملء أجسام الطلبات الملتقطة مسبقًا فقط عندما يكون traffic_capture.store_bodies مفعّلًا وقت الالتقاط. إذا كان تنقيح الجسم مفعّلًا، يتلقى المكرر العينة المنقّحة؛ الأجسام غير الملتقطة تبقى فارغة ويمكن تعديلها يدويًا.

تبقى نقطة النهاية القديمة POST /api/traffic/{id}/replay متاحة لإعادة التشغيل لمرة واحدة، بينما يهدف المكرر إلى تكرار تغيير الطلب ومقارنة الاستجابات.

مجموعة أدوات الاختراق (Pentest Toolkit)

يعرض عرض مجموعة أدوات الاختراق (Pentest Toolkit) في لوحة التحكم خرائط أهداف سلبية مبنية من الحركة الملتقطة. إعادة بناء خريطة تحلل فقط الحركة المخزنة للنطاق المحدد، وتجمّع نقاط النهاية حسب المسار المطبَّع، وتستخرج معاملات الاستعلام/الجسم/الكوكيز/الترويسات، وتسجّل المعاملات المنعكسة والمثيرة للاهتمام، وتضيف تلميحات سلبية مثل ترويسات الأمان المفقودة، وثغرات سمات الكوكيز، و CORS المتساهل، والأخطاء المطوّلة.

تُحفظ خرائط الاختراق في SQLite ويمكن حذفها بشكل مستقل. لا ترسل مجموعة الأدوات طلبات أبدًا، ولا تزحف، ولا تختبر بالـ fuzzing، ولا تعدّل الأهداف؛ يمكن استنساخ أدلة نقاط النهاية إلى المكرر للاختبار اليدوي.

نطاقات الأبحاث (Research Scopes)

يتيح عرض النطاقات (Scopes) في لوحة التحكم للباحثين تحديد حدود أهداف مسماة بأنماط مضيف، ونص فرعي من URL، وأنماط طريقة اختيارية. تُطابَق النطاقات المفعّلة تلقائيًا عند التقاط الحركة؛ تتلقى التدفقات المطابقة، وحالات المكرر المستنسخة، وأحداث ماسح التهديدات scope_id واحدًا.

يقوم محدد النطاق العام بتصفية عروض الحركة (Traffic)، والمكرر (Repeater)، وماسح التهديدات (Threat Scanner) عبر كل الحركة، أو نطاق مفعّل محدد، أو عناصر خارج النطاق. حذف نطاق يزيل قيم scope_id ذات الصلة دون حذف الحركة الملتقطة، أو حالات المكرر، أو التشغيلات، أو بيانات التهديدات.

فلاتر النطاق متاحة على GET /api/traffic و GET /api/repeater/cases و GET /api/threats/events مع scope_id=<id> أو scope_id=__out_of_scope__. أضف include_out_of_scope=true لتضمين الصفوف غير المصنفة بجانب نطاق محدد.

مساعد أبحاث الذكاء الاصطناعي (AI Research Copilot)

يخزّن عرض مساعد الذكاء الاصطناعي (AI Copilot) في لوحة التحكم ملاحظات بحث مولّدة بالذكاء الاصطناعي مرتبطة بالحركة، وحالات المكرر، والتشغيلات، والنطاقات، أو أحداث التهديدات. يمكن لتفاصيل الحركة أن تطلب من المساعد شرح طلب أو اقتراح اختبارات يدوية تالية؛ يمكن للمكرر اقتراح اختبارات لحالة محفوظة أو مقارنة آخر تشغيلتين.

المساعد استشاري فقط. لا يرسل حركة أبدًا، ولا يعدّل حالات المكرر، ولا يغيّر النطاقات، ولا يغيّر الإعدادات، ولا يمحو البيانات. يمكن شرح الحركة خارج النطاق، لكن اقتراحات الاختبار النشط تُمنع عمدًا.

فعّله عبر ai_copilot في config.json أو من عرض الإعدادات (Settings):```json { "ai_copilot": { "enabled": true, "provider": "openai", "model": "gpt-5.4-nano", "timeout_ms": 10000, "max_body_bytes": 32768, "redact_before_ai": true, "openai_api_key_env": "OPENAI_API_KEY" } }

root@kitploit:~
تتم قراءة مفتاح OpenAI API من متغير البيئة المُهيأ ولا يتم تخزينه في لوحة التحكم أو ملف الإعدادات. يتم تعتيم الترويسات الحساسة وعينات الجسم وقيم الاستعلام قبل إرسال سياق الذكاء الاصطناعي عند تفعيل `redact_before_ai`. تتضمن الملاحظات المحفوظة النموذج وتجزئة المطالبة والملخص ومخرجات الذكاء الاصطناعي المنظمة، وليس المطالبة الكاملة.

### فحص التهديدات بالذكاء الاصطناعي

يمكن لماسح التهديدات فحص طلبات واستجابات HTTP باستخدام استدلالات محلية، وعند تكوينه، يطلب رأيًا ثانيًا من OpenAI قبل حظر حركة المرور المشبوهة.

1. أنشئ مفتاح OpenAI API وعرّضه لعملية الوكيل:```powershell
$env:OPENAI_API_KEY = "sk-..."

على macOS/Linux:```bash export OPENAI_API_KEY="sk-..."

root@kitploit:~
2. فعّل الماسح في `config.json`:```json
{
  "threat_scanner": {
    "enabled": true,
    "mode": "suspicious_only",
    "provider": "openai",
    "model": "gpt-5.4-nano",
    "second_opinion_model": "gpt-5.4-mini",
    "scan_requests": true,
    "scan_responses": true,
    "max_body_bytes": 131072,
    "max_ai_body_bytes": 32768,
    "ai_timeout_ms": 750,
    "block_threshold": 0.85,
    "warn_threshold": 0.65,
    "require_ai_confirmation_for_block": true,
    "block_critical_local_on_ai_failure": true,
    "fail_open": true,
    "scan_content_types": [
      "text/html",
      "text/plain",
      "application/json",
      "application/javascript",
      "text/javascript",
      "application/xml"
    ],
    "skip_content_types": [
      "image/",
      "video/",
      "audio/",
      "font/",
      "application/octet-stream"
    ],
    "trusted_domains": [
      "accounts.google.com",
      "login.microsoftonline.com",
      "github.com"
    ],
    "allowlist_domains": [],
    "malicious_domains": [],
    "malicious_file_hashes": [],
    "threat_intel_updated": "",
    "quarantine_dir": "quarantine",
    "debug_log_path": "threats.log",
    "redact_before_ai": true,
    "store_bodies": false,
    "openai_api_key_env": "OPENAI_API_KEY"
  }
}
  1. ابدأ البروكسي:```bash go run . --config ./config.json
root@kitploit:~
تُظهر شاشة **Threat Scanner** في لوحة التحكم أعداد الطلبات/الاستجابات الممسوحة، وأعداد استدعاءات الذكاء الاصطناعي، والاكتشافات، وتفاصيل الأحكام، وأهم القواعد المحلية، وإجراءات التجاوز.

أوضاع الماسح:

- `suspicious_only`: الافتراضي؛ تحدد الاستدلالات المحلية متى يتم استدعاء الذكاء الاصطناعي.
- `all_text`: يستدعي الذكاء الاصطناعي لحركة المرور النصية.
- `paranoid`: يستدعي الذكاء الاصطناعي أيضًا لحركة المرور النصية وهو مخصص للاختبار عالي الحساسية.
- `metadata_only`: يستخدم الترويسات وعنوان URL والمضيف والبيانات الوصفية دون مراجعة نص الطلب بواسطة الذكاء الاصطناعي.
- `off`: يعطل المسح.

عناصر تحكم مفيدة للسلامة والخصوصية:

- `redact_before_ai`: يحذف الأسرار الشائعة والبيانات الشخصية قبل إرسال الأدلة إلى OpenAI.
- `max_ai_body_bytes`: يحد من حجم عينة النص المضمّنة في أدلة الذكاء الاصطناعي.
- `require_ai_confirmation_for_block`: يمنع الاستدلالات المحلية من الحظر ما لم يؤكد الذكاء الاصطناعي ذلك، إلا عندما يكون `block_critical_local_on_ai_failure` مفعّلاً للأدلة المحلية الحرجة.
- `fail_open`: يسمح بمرور حركة المرور عند فشل الماسح، ما لم تنطبق إعدادات حظر أكثر تشددًا.
- `trusted_domains` و`allowlist_domains`: تقللان النتائج الإيجابية الخاطئة للمضيفين المعروفين بأنهم آمنون.
- `malicious_domains` و`malicious_file_hashes`: يضيفان نتائج استخبارات التهديدات المحلية دون انتظار الذكاء الاصطناعي.
- `debug_log_path`: يكتب قرارات الماسح إلى سجل محلي بصيغة JSONL لتصحيح الأخطاء.

لاستخدام اسم متغير بيئة مختلف لمفتاح API، عيّن `openai_api_key_env` وقم بتصدير هذا المتغير قبل بدء تشغيل الوكيل. لا تضع مفاتيح API مباشرة في `config.json`.

 ### الثقة بالمرجع المصدّق المحلي

 لاعتراض حركة مرور HTTPS، استورد ca-cert.pem وثق به في نظام التشغيل/المتصفح:
 - macOS: Keychain Access ← تسجيل الدخول/النظام ← الشهادات ← استيراد ca-cert.pem ← تعيين «الوثوق دائمًا».
 - Windows: certmgr.msc ← جهات التصديق الجذرية الموثوقة ← الشهادات ← استيراد ca-cert.pem.
 - Linux (يختلف): مثل update-ca-certificates، أو مخزن خاص بالمتصفح (Firefox: الإعدادات ← الخصوصية والأمان ← الشهادات ← عرض ← الجهات ← استيراد).

 بدون الثقة بالمرجع المصدّق، ستعرض المتصفحات تحذيرات الشهادة للمواقع التي يتم اعتراضها.

 ### استخدام الوكيل

 عيّن وكيل HTTP/HTTPS على عنوان الاستماع (الافتراضي http://localhost:8080).

 أمثلة باستخدام curl: ```bash
 # HTTP
 curl -x http://localhost:8080 http://example.com/

 # HTTPS (after trusting the CA for full MITM)
 curl -x http://localhost:8080 https://example.com/

 # Disable MITM and tunnel only
 ./mitm-proxy --mitm=false

 # Change listen address
 ./mitm-proxy --listen=127.0.0.1:9090

WebSocket notes:

  • يتم التعامل مع ws:// بواسطة معالج HTTP عبر اختطاف الاتصال.
  • يتم اكتشاف wss:// في مسار HTTP/1.1 MITM ويتم نقلها عبر نفق من الطرف إلى الطرف بعد المصافحة الأولية.

التخزين المؤقت

ذاكرة التخزين المؤقت مبنية على الملفات وتنظر فقط في طلبات HTTP GET عند تفعيلها. يتم التحكم في التحديد بواسطة:

  • cache.include_domains / cache.exclude_domains (مطابقة المضيف)
  • cache.include_extensions / cache.exclude_extensions (امتداد مسار URL، غير حساس لحالة الأحرف)
  • cache.ttl (ثوانٍ)

عند حدوث إصابة في ذاكرة التخزين المؤقت، تتضمن الاستجابات:

  • Via: <proxy_name>
  • x--uid: معرّف مستقر مشتق من تجزئة ملف ذاكرة التخزين المؤقت

يتم ضمان وجود دليل ذاكرة التخزين المؤقت عند بدء التشغيل وعند تغييرات التكوين. إذا لم يتم تعيين أي دليل، فسيتم استخدام ./cache افتراضيًا.

البناء والتشغيل ```bash

go build ./ ./mitm-proxy --config ./config.json

root@kitploit:~
يرتبط الخادم بـ listen_addr المهيأ ويتعامل مع HTTP + HTTPS عبر ALPN.

## خارطة الطريق

- مصادقة الوكيل (Basic/NTLM) وقوائم التحكم في الوصول (ACLs)
- دعم الوكيل العلوي/التسلسل
- توليد ملفات PAC والسكربتات المساعدة
- واجهة مستخدم لفحص التدفقات وإدخالات الكاش
- ضوابط بصمة TLS وتنسيق JA3
- نقاط نهاية المقاييس/الصحة وتكامل Prometheus

## المساهمة

نرحب بالمشكلات (Issues) وطلبات السحب (Pull Requests). بالنسبة للتغييرات المهمة، يرجى فتح issue أولاً لمناقشة النطاق والتصميم.

أسلوب البرمجة: أبقِ التغييرات في حدها الأدنى ومركّزة؛ فضّل الوضوح والدوال الصغيرة القابلة للتركيب.
تنزيل الأداة