WinRM und PSExec: Remote-Management und -Ausführung unter Windows

Überblick über WinRM und PSExec

WinRM (Windows Remote Management)

Windows Remote Management (WinRM) ist die Microsoft-Implementierung des WS-Management-Protokolls, das auf SOAP (Simple Object Access Protocol) basiert. Es ermöglicht die Remote-Verwaltung von Windows-Systemen und den Zugriff auf Informationen in einem standardisierten Format. WinRM nutzt HTTP und HTTPS für die Kommunikation und ist eng mit PowerShell integriert.

Hauptmerkmale von WinRM

  • Standardisiertes Protokoll: Basierend auf dem WS-Management-Standard für Interoperabilität.
  • Sichere Kommunikation: Unterstützung von HTTP und HTTPS mit Verschlüsselung.
  • PowerShell-Remoting: Ermöglicht Remote-Ausführung von PowerShell-Befehlen und -Skripten.
  • Firewall-freundlich: Verwendet Ports 5985 (HTTP) und 5986 (HTTPS), die leicht konfiguriert werden können.

PSExec

PSExec ist ein Tool aus der Sysinternals Suite von Microsoft, das eine einfache Möglichkeit bietet, Prozesse auf entfernten Systemen zu starten. Es benötigt keine Installation auf dem Zielsystem und nutzt SMB (Server Message Block) für die Kommunikation.

Hauptmerkmale von PSExec

  • Agentenlos: Keine zusätzliche Softwareinstallation auf dem Remote-System erforderlich.
  • Flexibilität: Ausführung von Anwendungen unter verschiedenen Benutzerkonten.
  • Einfachheit: Kommandozeilenbasiert und leicht in Skripte integrierbar.
  • Direkte Prozessausführung: Startet Prozesse ohne zusätzliche Protokollschichten.

Vergleich von WinRM und PSExec

Kommunikationsprotokolle

  • WinRM: Verwendet HTTP/HTTPS und ist dadurch besser für Firewall-Umgebungen geeignet.
  • PSExec: Nutzt SMB, was in restriktiven Netzwerkumgebungen problematisch sein kann.

Sicherheit

  • WinRM: Bietet integrierte Authentifizierungs- und Verschlüsselungsmechanismen (Kerberos, NTLM, SSL).
  • PSExec: Überträgt Anmeldeinformationen und Daten über SMB, was anfälliger für Abhörversuche sein kann.

Anwendungsfälle

  • WinRM: Ideal für Script-basierte Administration und Automatisierung mit PowerShell.
  • PSExec: Nützlich für schnelle, einmalige Aufgaben oder wenn PowerShell nicht verfügbar ist.

Remote-Ausführung mit WinRM

Einrichtung von WinRM

Um WinRM zu nutzen, muss es auf dem lokalen und entfernten System konfiguriert sein.

# WinRM auf dem lokalen System aktivieren
Enable-PSRemoting -Force
 
# Remote-Computer zu TrustedHosts hinzufügen (wenn nicht in derselben Domäne)
Set-Item WSMan:\localhost\Client\TrustedHosts "RemoteComputerName"
 
# Überprüfen der WinRM-Konfiguration
Get-Item WSMan:\localhost\Client\TrustedHosts

Ausführen von Befehlen auf einem Remote-System

# Einzelnen Befehl auf einem Remote-System ausführen
Invoke-Command -ComputerName RemoteComputerName -ScriptBlock { Get-Service }
 
# Interaktive Remote-Sitzung starten
Enter-PSSession -ComputerName RemoteComputerName
 
# Remote-Sitzung beenden
Exit-PSSession

Remote-Ausführung mit PSExec

Verwendung von PSExec

PSExec kann direkt über die Kommandozeile aufgerufen werden.

# Befehl auf Remote-System ausführen
psexec \\RemoteComputerName -u Username -p Password cmd.exe
 
# Programm auf Remote-System starten
psexec \\RemoteComputerName notepad.exe

Parameter von PSExec

  • -s: Ausführung mit Systemrechten.
  • -d: Prozess nicht warten lassen (nicht blockierend).
  • -i: Interaktive Sitzung mit dem Desktop des Benutzers.

Sicherheitsaspekte und Best Practices

WinRM

  • SSL/TLS nutzen: Konfiguration von HTTPS für verschlüsselte Kommunikation.
  • Eingeschränkte Berechtigungen: Nur benötigte Rechte vergeben.
  • Firewall-Konfiguration: Sicherstellen, dass die notwendigen Ports offen sind.

PSExec

  • Sichere Anmeldeinformationen: Vermeiden, Passwörter in Klartext anzugeben.
  • Aktuelle Version verwenden: Sicherheitsupdates berücksichtigen.
  • Zugriff beschränken: PSExec nur für autorisierte Benutzer bereitstellen.

Tags
WinRMPSExecRemoteManagementPowerShellWindowsAdministrationSysinternalsSicherheitRemoteExecution

Gehacktes-Overview