
Rosemary: تنقّل (Pivoting) على مستوى النواة عبر منصات متعددة باستخدام QUIC. بدون TUN/TAP. بدون proxychains. بدون إعدادات وكيل.
منصة تنقّل (pivoting) متعددة المنصات على مستوى نواة النظام عبر QUIC. بدون TUN/TAP. بدون proxychains. بدون إعدادات وكيل.
تعترض Rosemary حركة المرور على المضيفين البعيدين بشكل شفاف على مستوى نواة النظام: لا إعدادات وكيل، ولا أجهزة TUN/TAP، ولا proxychains. تتصل الوكلاء (Agents) بالخادم عبر QUIC. وتصل إلى الشبكة البعيدة بأكملها كما لو كنت متصلًا بها مباشرة.
شغّل الخادم (server) على جهازك وانشر وكيلًا (agent) على أي مضيف بعيد. يتصل الوكيل بالخادم عبر QUIC، ويقوم الخادم بتثبيت قواعد اعتراض على مستوى النواة لشبكات الوكيل الفرعية، ومن تلك اللحظة تُوجَّه كل حركة المرور إلى تلك الشبكات الفرعية، بما في ذلك DNS، بشكل شفاف عبر الوكيل، دون إعدادات وكيل، دون جهاز TUN، دون تغيير إعدادات DNS، ودون أي تغييرات على تطبيقاتك.
curl http://192.168.1.50 ───► agent dials 192.168.1.50 and bridges it back
ssh [email protected]
ping 192.168.1.1
اربط عدة وكلاء في نفس الوقت، وسيتم توجيه حركة المرور تلقائيًا إلى الوكيل الذي يملك الوجهة.
الوكيل (Agent) يعمل على جميع المنصات المذكورة أعلاه. لا يتطلب صلاحيات root من جانب الوكيل.
رسم بياني تفاعلي للشبكة يعرض الوكلاء المتصلين وعلاقاتهم
معلومات تفصيلية عن الوكيل تشمل نظام التشغيل واسم المضيف والشبكات الفرعية وحالة الاتصال
إضافة متصفح للوصول السهل وتوجيه حركة المرور عبر النفق
التثبيت:
chrome://extensions/extension/ من المستودعستظهر أيقونة الإضافة في شريط أدوات المتصفح.
أنشئ وأدر إعادة توجيه منافذ TCP/UDP عبر أي وكيل
ملاحظة: يعمل عرض الرسم البياني على تخطيط الوكلاء تلقائيًا وتصوّر علاقات الشبكات الفرعية. تشير الحواف بين الوكلاء إلى الشبكات الفرعية المشتركة، ما يتيح تصوّر التنقّل متعدد القفزات.
# Install via go install
go install github.com/blue0x1/rosemary/rosemary@latest
go install github.com/blue0x1/rosemary/agent@latest # For install agent
# Copy to system path for sudo use
sudo cp ~/go/bin/rosemary /usr/local/bin/
أو حمّل الملفات الثنائية المُجمّعة مسبقًا من الإصدارات.
# Auto-generate a key
sudo rosemary
# Or provide your own
sudo rosemary -key YOUR_BASE64_KEY
لوحة التحكم متاحة على http://server-ip:1024: سجّل الدخول بمفتاحك.
# Standard QUIC/UDP mode (agent connects to server)
./agent-linux-amd64 -s server-ip:2048 -k YOUR_KEY
# Background mode
./agent-linux-amd64 -b -s server-ip:2048 -k YOUR_KEY
# Windows
agent-windows-amd64.exe -s server-ip:2048 -k YOUR_KEY
بمجرد الاتصال، تُوجَّه الشبكات الفرعية للوكيل تلقائيًا عبره.
# On the agent host: agent listens for the server to connect
./agent-linux-amd64 -m agent-bind -l 0.0.0.0:9001 -k YOUR_KEY
# On the server CLI
rosemary> connect agent-ip:9001
يدعم Invoke-Rosemary.ps1 وضع الوكيل الصادر ووضع bind معًا. يعمل وضع bind على مضيفات Windows PowerShell القديمة. يستخدم وضع الوكيل الصادر QUIC ويتطلب PowerShell 7 مع بيئة تشغيل .NET تتوفر فيها System.Net.Quic وlibmsquic.
# Import
. .\Invoke-Rosemary.ps1
# Help
Invoke-Rosemary -Help
Invoke-Rosemary -Mode agent -Server 192.168.1.10:2048 -Key YOUR_KEY
Invoke-Rosemary -Mode agent-bind -Listen 0.0.0.0:9001 -Key YOUR_KEY
Invoke-Rosemary -Mode agent -Server 192.168.1.10:2048 -Key YOUR_KEY -Background
Invoke-Rosemary -Mode agent -Server 192.168.1.10:2048 -Key YOUR_KEY -Verbose
تحقق من دعم QUIC قبل استخدام وضع الصادر في PowerShell:
[type]::GetType('System.Net.Quic.QuicConnection, System.Net.Quic') -ne $null
[System.Net.Quic.QuicConnection]:https://raw.githubusercontent.com/blue0x1/rosemary/HEAD/:IsSupported
إذا فشل أي من الفحصين، استخدم وكيل Windows بلغة Go لوضع الصادر أو شغّل وكيل PowerShell في وضع agent-bind.
rosemary> egress agent-1
[+] Default egress set to agent-1
جميع حركة المرور إلى عناوين IP خارج الشبكات الفرعية المعروفة للوكلاء تمر الآن عبر agent-1. يستمر DNS في العمل للنطاقات الخاصة والعامة على حد سواء.
ينقل هذا الإصدار الوكلاء الصادرين إلى ناقل QUIC/UDP، ويُبقي وكلاء bind على تأطير TCP المشفّر، ويحدّث وكيل PowerShell لكلا الوضعين، ويجدّد مخرجات قوائم CLI بجداول متسقة المحاذاة للوكلاء والمسارات وإعادة التوجيه وإعادة التوجيه العكسية وخوادم SOCKS5 ورموز API.
ملاحظات التوافق:
اكتب help أو help <command> داخل REPL للحصول على التفاصيل الكاملة.
agents List all connected agents
disconnect <agent-id|all> Disconnect agent(s)
reconnect <agent-id> Force agent to reconnect
connect <ip:port> Connect to a bind-mode agent
routes Show routing table
routes enable <subnet> Re-enable a disabled route
routes disable <subnet> Disable a route without disconnecting
routes default <agent-id> Set default egress agent
routes default off Clear default egress
egress <agent-id> Alias: set default egress agent
egress none Alias: clear default egress
forward add <local-port> <agent-id> <host> <port> [tcp|udp]
forward del <id>
forwards List active forwards
rforward add <listen-port> <agent-id> <host> <port>
rforward del <id>
rforward list
socks <agent-id> <port> [username] [password]
socks list
socks stop <id>
ping <agent-id> <target> [count]
discover <agent-id> <subnet> [timeout_ms] [workers]
portscan <agent-id> tcp|udp <target> [ports]
settings Show current config
verbose Toggle debug logging
rotate-key Regenerate encryption key
save-config <path> Export config to JSON
load-config <path> Import config from JSON
token list|create|view|revoke Manage API tokens
exit Shutdown
مرجع API الكامل
تتوفر وثائق كاملة لنقاط النهاية مع أمثلة على:
http://<server>:1024/docs
وثّق هويتك مرة واحدة للحصول على رمز مميز، ثم استخدمه في جميع الطلبات.
# Authenticate
curl -X POST http://server:1024/api/v1/auth \
-H "Content-Type: application/json" \
-d '{"key":"YOUR_KEY"}'
# List agents
curl -H "Authorization: Bearer tun_xxx" \
http://server:1024/api/v1/agents
# Port forward
curl -X POST http://server:1024/api/v1/forwards \
-H "Authorization: Bearer tun_xxx" \
-H "Content-Type: application/json" \
-d '{"action":"add","agent_id":"agent-1","local_port":8080,"target_host":"192.168.1.10","target_port":80}'
# SOCKS5 proxy
curl -X POST http://server:1024/api/v1/socks \
-H "Authorization: Bearer tun_xxx" \
-H "Content-Type: application/json" \
-d '{"agent_id":"agent-1","port":1080}'
# Run any CLI command
curl -X POST http://server:1024/api/v1/cli \
-H "Authorization: Bearer tun_xxx" \
-H "Content-Type: application/json" \
-d '{"command":"discover agent-1 10.10.10.0/24"}'
نقاط النهاية: /api/v1/auth · /api/v1/agents · /api/v1/routes · /api/v1/forwards · /api/v1/rforwards · /api/v1/socks · /api/v1/cli · /api/v1/settings · /api/v1/tokens · /api/v1/shutdown
مستويات صلاحية الرموز: read · write · admin
git clone https://github.com/blue0x1/rosemary.git
cd rosemary
# Build all platforms and architectures
bash build.sh
# Build specific target
bash build.sh rosemary linux amd64
bash build.sh agent windows arm64
# Output goes to dist/
البنى المدعومة:
amd64 arm64 arm 386amd64 arm64 386amd64 arm64يستخدم خادم Windows برنامج WinDivert لاعتراض الحزم على مستوى النواة. قبل البناء:
rosemary/يتم تضمينهما في الملف التنفيذي وقت البناء.
read / write / adminGNU General Public License v3.0: انظر LICENSE
blue0x1 (Chokri Hammedi)
استخدم الأداة فقط على الأنظمة التي تملكها أو لديك إذن كتابي صريح لاختبارها. الاستخدام غير المصرح به محظور.
| الفئة | الإمكانية |
|---|
| الاعتراض | اعتراض شفاف لـ TCP · UDP · ICMP · DNS دون الحاجة إلى تهيئة من جانب العميل |
| الخروج (Egress) | وكيل الخروج الافتراضي يوجّه كل حركة مرور الإنترنت عبر وكيل مُختار |
| SOCKS5 | وكيل SOCKS5 لكل وكيل مع مصادقة اختيارية باسم مستخدم/كلمة مرور |
| إعادة التوجيه | إعادة توجيه منافذ TCP/UDP · إعادة توجيه عكسية للمنافذ (يستمع الخادم ويتصل الوكيل) |
| الاكتشاف | Ping · مسح Ping شامل · فحص منافذ TCP/UDP عبر الوكيل |
| DNS | يعترض DNS ويحل أسماء النطاقات عبر الوكلاء، للنطاقات الخاصة والعامة |
| التنقّل (Pivoting) | قفز متعدد عبر عدة وكلاء (تم اختبار 5+ قفزات) |
| النقل | وكلاء صادرون عبر QUIC/UDP · وكلاء bind عبر TCP مشفّر |
| لوحة التحكم | واجهة ويب مع رسم بياني للوكلاء في الوقت الفعلي، وجدول توجيه، وعارض سجلات |
| API | واجهة REST API كاملة مع مصادقة قائمة على الرموز (read/write/admin) |
| CLI | REPL تفاعلي + لوحة CLI عبر الويب |
| الإضافة | إضافة Chrome للوصول السريع |
| الوكلاء | وضع الخلفية · وضع bind · اكتشاف تلقائي للشبكات الفرعية · كشف الاتصال بالإنترنت |
| الإعدادات | استيراد/تصدير JSON · تدوير المفاتيح أثناء التشغيل · تهيئة لكل منفذ |
| المنصة | TCP | UDP | DNS | ICMP | SOCKS5 | Egress |
|---|
| Linux | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Windows | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| macOS | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| FreeBSD | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| OpenBSD | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |

اعرض مسارات الشبكات الفرعية وفعّلها/عطّلها مع حالة في الوقت الفعلي

REPL مدمج للتحكم الكامل بالخادم


بث مباشر للأحداث في الوقت الفعلي مع خيارات تصفية وتصدير

شغّل/أوقف خوادم SOCKS5 عبر أي وكيل مع مصادقة اختيارية

اضبط منافذ الخادم ومفاتيح التشفير ورموز API

أنشئ وأدر رموز REST API بصلاحيات دقيقة

إجراءات سريعة: وسم، إعادة توجيه، ping، فحص منافذ، إعادة اتصال، قطع اتصال

| المعامل | الوصف |
|---|
-Key | مفتاح تشفير Base64 - يجب أن يطابق مفتاح الخادم |
-Mode | agent (صادر) أو agent-bind (وارد) |
-Server | عنوان الخادم host:port - مطلوب في وضع agent |
-Listen | عنوان الربط لوضع agent-bind (الافتراضي 0.0.0.0:9001) |
-Background | إعادة تشغيله كعملية خلفية مخفية والعودة فورًا |
-Verbose | عرض مخرجات التشخيص الخاصة بالاتصال والجلسة |