
المجموعة التعاونية لاختبار اختراق تطبيقات الويب
الوكيل الوسيط (MITM) التعاوني لمختبرات الاختراق الأمني.
التقط حركة HTTP، وأضف تعليقات توضيحية للطلبات باستخدام الذكاء الاصطناعي، ونفذ جلسات صيد (hunt)، وأعد تشغيل حركة المرور، وتتبع النتائج من واجهة واحدة.
بداية سريعة · الميزات · لقطات الشاشة · الإعدادات · الأمان · المساهمة
git clone https://github.com/synlace/ferret.git
cd ferret
cp .env.example .env # اختياري
just up
أو استخدم Docker Compose مباشرة:
docker compose up --build -d
| الخدمة | الرابط |
|---|---|
| الواجهة (UI) | http://localhost:3000 |
| API | http://localhost:8000 |
| الوكيل (Proxy) | 127.0.0.1:1337 |
افتح:
http://localhost:3000
سيطلب منك معالج الإعداد الأولي تعيين كلمة مرور واختيار مزود ذكاء اصطناعي.
justFerret هو وكيل اعتراض HTTP بمساعدة الذكاء الاصطناعي، مصمم لمختبرات الاختراق الأمني.
وجّه متصفحك أو أداة سطر الأوامر أو سير عمل الاختبار إلى:
127.0.0.1:1337
يلتقط Ferret الطلبات والاستجابات، ويخزنها محلياً، ويضيف تعليقات توضيحية لحركة المرور باستخدام الذكاء الاصطناعي، ويمنحك أدوات لإعادة التشغيل والتعديل والاختبار وتحويل السلوك المثير للاهتمام إلى نتائج.
إنه مصمم لسير العمل حيث تريد أكثر من مجرد وكيل سلبي: تريد شيئاً يساعدك على التفكير والاختبار والتوثيق أثناء العمل.

الصيد (Hunts) - جلسات صيد بمساعدة الذكاء الاصطناعي تبحث في سجل الطلبات، وتكتب وتشغل الاختبارات، وتنشئ النتائج.

السجل (History) - سجل كامل لطلبات الوكيل مع تعليقات AI والتوقيت ورموز الحالة ومحررين مدمجين للطلب/الاستجابة.

النتائج (Findings) - متتبع للثغرات مع درجة الخطورة والمضيف والنوع والأوصاف التي يولدها AI ومقتطفات الأدلة.

الإعدادات (Settings) - إدارة شهادة CA وكلمة المرور والمصادقة الثنائية (2FA) ومزود AI ومفاتيح API وحالة الوكيل.

معالج الإعداد (Setup wizard) - الإعداد الأولي لإنشاء كلمة المرور وتكوين مزود AI.
قم بتكوين متصفحك أو أداة سطر الأوامر أو عميل الاختبار لاستخدام:
HTTP proxy: 127.0.0.1:1337
HTTPS proxy: 127.0.0.1:1337
لاعتراض HTTPS، قم بتنزيل وتثبيت شهادة CA الخاصة بـ mitmproxy من صفحة الإعدادات (Settings).
يتطلب Ferret المصادقة في كل تثبيت.
/login.HttpOnly و SameSite=Strict لمدة 24 ساعة.يمكن تفعيل 2FA القائمة على TOTP من صفحة الإعدادات.
بمجرد التفعيل، يلزم إدخال رمز مصادقة صالح عند تسجيل الدخول.
قم بتعيين مفتاح API ثابت في .env:
FERRET_API_KEY=مفتاح-سري-عشوائي-خاص-بك
ثم استخدمه كرمز حامل (Bearer token):
curl -H "Authorization: Bearer مفتاح-سري-عشوائي-خاص-بك" \
http://localhost:8000/api/requests
يتم فحص ملفات تعريف الارتباط للجلسة ورموز الحامل بشكل مستقل.
انسخ .env.example إلى .env لتكوين Ferret مسبقاً.
يمكن أيضاً تكوين معظم إعدادات مزود AI من معالج الإعداد.
يمكن إكمال إعداد المزود من معالج التشغيل الأول.
justمتصفح / أداة
│
▼
127.0.0.1:1337
│
▼
ferret-api :8000 / :1337
FastAPI + mitmproxy + SQLite
│
├── docker exec
▼
ferret-lab
pytest, ffuf, sqlmap, scripts, tests, notes
│
▼
ferret-ui :3000
Next.js
يتم تخزين جميع البيانات الدائمة تحت:
${FERRET_DATA_DIR:-./data}
يستخدم Ferret روابط ربط (bind mounts) بدلاً من وحدات تخزين Docker المسماة.
لمسح الحالة المحلية وإعادة تشغيل معالج الإعداد:
just reset
يؤدي هذا إلى إزالة قاعدة البيانات المحلية، بما في ذلك بيانات الاعتماد.
يمكنك أيضاً إعادة تعيين الإعداد عبر API عند المصادقة:
curl -X DELETE \
-H "Authorization: Bearer مفتاح-سري-عشوائي-خاص-بك" \
http://localhost:8000/api/setup
لتطوير الواجهة محلياً مع إعادة تحميل فوري (hot reload):
just dev
يؤدي هذا إلى تشغيل حاويات API و lab في Docker مع خدمة الواجهة على المضيف عبر npm run dev. يلزم تثبيت Node.js على المضيف لهذا الوضع.
قم بتشغيل الاختبارات باستخدام:
just test api # اختبارات وحدة API (داخل حاوية api قيد التشغيل)
just test ui # اختبارات Playwright للواجهة (يبدأ تلقائياً خادم Next.js dev + API وهمي)
just test shim # اختبارات وحدة docker-shim للسماح/المنع (لا يحتاج Docker)
just test all # تشغيل جميع المجموعات الثلاث بالتسلسل
تم تصميم Ferret لسير عمل اختبار الأمان المحلي وليس مقواه للتعرض العام.
قبل تعريض Ferret خارج localhost، افهم ما يلي:
| المخاطر | التفاصيل |
|---|---|
| حركة مرور الوكيل | يلتقط الوكيل جميع حركة HTTP/HTTPS التي تمر من خلاله، بما في ذلك بيانات الاعتماد. |
| تعرض API | يعرض API سجل الطلبات والنتائج وملفات مساحة العمل. |
| تنفيذ lab | يمكن لحاوية lab تنفيذ أدوات الاختبار نيابة عنك. |
| بيانات الاعتماد | يتم تخزين مفاتيح API وبيانات اعتماد مزود AI محلياً ويجب التعامل معها كأسرار. |
استخدم كلمة مرور قوية وقم بتفعيل 2FA من صفحة الإعدادات.
لا تفتح مشكلة عامة للثغرات الأمنية.
راجع .github/SECURITY.md لسياسة الإفصاح الكاملة وتعليمات الإبلاغ.
يتم نشر الإفصاحات السابقة في security/ بمجرد توفر الإصلاحات.
شكر للباحثين التاليين على الإبلاغ المسؤول عن الثغرات الأمنية:
| الباحث | المشكلة | العام |
|---|---|---|
| Trent (@AzureADTrent) | DISC-2026-001 - تنفيذ أوامر عن بعد غير مصادق عليه (RCE) عبر SSRF + سوء تكوين docker-socket-proxy | 2026 |
يتم تطوير Ferret بنشاط.
نرحب بالأفكار وتقارير الأخطاء وطلبات الميزات والمساهمات.
هل تريد المساعدة في بنائه؟
البريد الإلكتروني: [email protected]
MIT - انظر LICENSE.
| الميزة | الوصف |
|---|
| وكيل اعتراض | التقاط حركة HTTP وHTTPS عبر mitmproxy. |
| سجل الطلبات | تصفح وتصفية وفحص وإعادة تشغيل حركة المرور الملتقطة. |
| تعليقات AI | إثراء الطلبات بسياق ذي صلة بالأمان. |
| صيد (Hunts) | تشغيل جلسات صيد بمساعدة الذكاء الاصطناعي عبر حركة المرور الملتقطة. |
| نتائج (Findings) | تتبع الثغرات مع درجة الخطورة والمضيف والنوع والدليل والحالة. |
| Snare | اعتراض وتعديل الطلبات أو الاستجابات أثناء التدفق. |
| Gnaw | علامات تبويب على نمط المكرر لتعديل وإعادة إرسال طلبات HTTP. |
| مساحات العمل (Workspaces) | أدلة scripts/ و tests/ و notes/ لكل جلسة. |
| المشاريع (Projects) | فصل سجل الطلبات والنتائج ومساحات العمل ومفاتيح API. |
| المصادقة | تسجيل الدخول بكلمة مرور، وملفات تعريف الارتباط للجلسة، ووصول اختياري عبر مفتاح API، وTOTP 2FA. |
| تخزين محلي أولاً | بيانات مدعومة بقاعدة SQLite مخزنة في دليل محلي مربوط (bind-mounted). |
| المتغير | القيمة الافتراضية | الوصف |
|---|
FERRET_API_KEY | - | رمز حامل ثابت للوصول البرمجي إلى API |
OPENROUTER_MODEL | google/gemini-3-flash-preview | نموذج OpenRouter الافتراضي |
PROXY_HOST | 0.0.0.0 | عنوان ربط الوكيل |
PROXY_PORT | 1337 | منفذ الوكيل |
UI_PORT | 3000 | منفذ الواجهة |
FERRET_DATA_DIR | ./data | دليل البيانات الدائم |
NEXT_PUBLIC_API_URL | http://localhost:8000 | رابط API المستخدم من قبل المتصفح |
NEXT_PUBLIC_SIGINT_URL | - | رابط JSON اختياري لخلاصة SIGINT/الأخبار |
| المزود | النوع |
|---|
| OpenRouter | سحابي - واجهة موحدة عبر العديد من النماذج |
| OpenAI | سحابي - GPT-4o, o1 وغيرها |
| Anthropic | سحابي - نماذج Claude |
| Gemini | سحابي - نماذج Google Gemini |
| DeepSeek | سحابي - نماذج DeepSeek |
| Mistral | سحابي - نماذج Mistral |
| Ollama | محلي - تشغيل النماذج على جهازك |
| LM Studio | محلي - تشغيل النماذج على جهازك |
| الأمر | الوصف |
|---|
just up | سحب الصور المبنية مسبقاً من GHCR وبدء جميع الخدمات |
just down | إيقاف جميع الخدمات |
just dev | تشغيل API/lab في Docker وإعادة تحميل الواجهة (UI) على المضيف (يتطلب Node.js) |
just logs | متابعة سجلات الخدمات |
just test api | تشغيل اختبارات الوحدة لـ API (داخل حاوية api قيد التشغيل) |
just test ui | تشغيل اختبارات Playwright للواجهة |
just test shim | تشغيل اختبارات وحدة docker-shim للسماح/المنع (لا يحتاج Docker) |
just test all | تشغيل جميع مجموعات الاختبار بالتسلسل |
just reset | مسح قاعدة البيانات المحلية |
just shell | فتح شل في حاوية lab |