Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
PowerShellArmoury — Ein PowerShell-Arsenal für Sicherheitsleute | Kitploit
Tools/GitHubGitHub/cfalta/powershellarmoury
Verschlüsselungs-/EntschlüsselungstoolsPayload-GenerierungScripting & AutomatisierungPenetrationstestsDienstprogramme & FrameworksRed TeamingArchived
GitHubcfalta/powershellarmoury

PowerShellArmoury

Ein PowerShell-Arsenal für Sicherheitsleute

Repository anzeigen
47069vor 2 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

[!WICHTIG]
Dieses Repository ist nun archiviert. Auch wenn es eine unterhaltsame Reise war, glaube ich, dass PSArmoury seinen Nutzen überlebt hat.


PowerShellArmoury

Die PowerShell Armoury richtet sich an Pentester, "insert-color-here"-Teammitglieder und alle anderen, die während ihrer Einsätze eine Vielzahl von PowerShell-Tools verwenden. Sie ermöglicht es Ihnen, alle Ihre Lieblings-PowerShell-Skripte in einer einzigen, obfuskierten Datei herunterzuladen und zu speichern.

Sie müssen sich nicht mehr darum kümmern, Rubeus, PowerView, ... manuell zu aktualisieren. Erstellen Sie einfach einmal eine Konfigurationsdatei oder verwenden Sie die mitgelieferte Standarddatei. Von nun an brauchen Sie nur noch "New-PSArmoury" auszuführen, bevor Sie zum nächsten Einsatz aufbrechen. Zusätzlich obfuskiert PSArmoury Ihren Code und verfügt über einen integrierten AMSI-Bypass. Das modulare Design sollte es Ihnen leicht machen, den Evasion- oder Obfuskationscode zu ändern, falls es eine Erkennung gibt.



Allgemeine Struktur

Der Code ist aufgeteilt in ein Hauptskript namens New-PSArmoury.ps1, das Sie ausführen. Der Code für Evasion, Obfuskation und Deobfuskation ist in separaten .ps1-Dateien im Verzeichnis modules gespeichert. Diese separaten Dateien werden vom Hauptskript aufgerufen und sollten es Ihnen erleichtern, bestimmte Funktionen (z. B. einen AMSI-Bypass) zu ändern. Zusätzlich zum modules-Verzeichnis gibt es auch das Verzeichnis utilities. Hier finden Sie eigenständige Skripte, die in bestimmten Szenarien nützlich sein können.

Das modules-Verzeichnis

Der Standardpfad des modules-Verzeichnisses ist .\modules, wobei der Punkt das aktuelle Arbeitsverzeichnis Ihrer Shell bezeichnet. Sie können den Pfad des modules-Verzeichnisses mit dem Argument -ModulesDirectory von New-PSArmoury ändern. Die Namen der Skriptdateien selbst sind jedoch im Hauptskript fest codiert und werden immer erwartet als:

  • evasion.ps1
  • obfuscation.ps1

Werfen wir einen genaueren Blick auf diese beiden.

evasion.ps1

Dieses Skript sollte den Code enthalten, der dazu dient, das zu umgehen, was Sie umgehen möchten. Standardmäßig enthält es einen bekannten AMSI-Bypass (Dank an amsi.fail). Bitte beachten Sie:

  • Der Code hier wird AUSGEFÜHRT, BEVOR alles andere läuft (z. B. Deobfuskation)
  • Es gibt ABSOLUT KEINE ART VON VALIDIERUNG! Alles, was Sie hier ablegen, wird unverändert an IEX weitergeleitet.

obfuscation.ps1

Dieses Skript sollte den Code enthalten, der für Obfuskation und Deobfuskation verwendet wird. Die Standard-obfuscation.ps1 verwendet RC2-Verschlüsselung. Fertige Beispiele:

  • TEMPLATE_obfuscation_RC2.ps1 --> dies ist der Standard
  • TEMPLATE_obfuscation_byte_convert.ps1
  • TEMPLATE_obfuscation_empty.ps1

Beachten Sie, dass die TEMPLATE_obfuscation_empty.ps1 wirklich gar nichts tut und als Vorlage für Ihre eigene Funktion dient.

Wenn Sie eine davon verwenden möchten, benennen Sie sie einfach in "obfuscation.ps1" um und löschen Sie die Standarddatei.

Wenn Sie eine angepasste Version erstellen möchten, beachten Sie Folgendes in Bezug auf die Obfuskation:

  • Der Funktionsname MUSS immer "Get-PSArmouryObfuscation" sein, mit einem einzelnen String-Parameter namens "Code", da das Hauptskript diese Funktion für jedes Element aufruft, das Sie in die Armoury aufnehmen möchten.
  • Die Funktion SOLLTE die obfuskierte Version des Codes als einzelnen String-Wert zurückgeben. Der Hauptcode der Skripte führt eine zusätzliche base64-encode/decode-Schleife aus, um sicherzustellen, dass wir auch andere Dinge verarbeiten können, die Sie übergeben, aber es wäre einfacher, wenn Sie es einfach als String machen könnten ;-)
  • Die entsprechende Deobfuskationsfunktion MUSS unabhängig davon, was Sie hier zurückgeben, funktionieren. Das Hauptskript gibt nur Ergebnisse weiter --> keine Magie hier

Und stellen Sie sicher, dass Sie diese Dinge in Bezug auf die Deobfuskation beachten:

  • Der Funktionsname MUSS immer Get-PSArmouryDeObfuscation sein, ohne Parameter, da sie über eine feste, globale Variable iteriert.
  • Die Funktion MUSS die deobfuskierte Version des Codes als einzelnen String-Wert zurückgeben, bereit zur Ausführung. Wir leiten alles, was Sie zurückgeben, an IEX weiter, der Rest liegt bei Ihnen.

Das utilities-Verzeichnis

Das utilities-Verzeichnis enthält nützliche eigenständige Skripte.

  • ConvertTo-Powershell.ps1
    • Konvertiert eine C#-Konsolenanwendung in ein PowerShell-Skript. Weitere Details finden Sie im entsprechenden Blogbeitrag.
  • Invoke-Shuffle.ps1
    • Ein einfaches Obfuskationsskript, das eine einzelne Codezeile in mehrere Variablen umwandelt, die Teile des ursprünglichen Strings enthalten, die dann während der Ausführung zusammengeführt und aufgerufen werden.

Konfigurationsreferenz

Die Konfigurationsdatei muss ein gültiges JSON sein, das aus einem einzelnen Array mit einem oder mehreren Objekten besteht, wobei jedes Objekt als eine einzelne Skriptquelle interpretiert wird. Jedes Objekt hat die folgenden Attribute

Name (Pflichtfeld)

Ein Name Ihrer Wahl zur Identifizierung des in diesem Objekt enthaltenen Skripts. Dies dient nur als Referenz für Sie selbst.

URL (Pflichtfeld)

Der Ort, von dem der Skriptinhalt bezogen wird. Dies kann eine URL zu einer Webressource (https://) oder ein lokaler Pfad (C:) oder eine Netzwerkressource (\...) sein. Die URL wird an Net.Webclient bzw. Powershells Get-Item übergeben. Grundsätzlich sollte jedes Format funktionieren, das eines der beiden standardmäßig verarbeiten kann.

Typ (Pflichtfeld)

Dies gibt dem Armoury-Ersteller einen Hinweis auf den Skript-Speicherort. Es gibt drei gültige Typen:

  • GitHub
    • Fordert zur Eingabe von Anmeldeinformationen auf, damit wir uns gegen die GitHub-API authentifizieren können. Versucht auch, zwischen einer "raw"-URL, die direkt auf eine Datei verweist, und einer URL, die auf ein Repository verweist, zu unterscheiden. Wenn die URL auf ein Repository verweist, sucht das Skript automatisch alle PowerShell-Dateien in diesem Repository und schließt sie ein. Beispiel: "https://github.com/cfalta/PoshRandom"
  • WebDownloadSimple
    • Bedeutet eine Datei, die ohne Authentifizierung oder ähnliches mit einem HTTP-GET heruntergeladen werden kann. Beispiel: "http://mywebserver.com/file.ps1"
  • LocalFile
    • Eine Datei auf der Festplatte wie "C:\temp\test.ps1". Wenn der Pfad auf ein Verzeichnis zeigt, werden alle Dateien (rekursiv) mit der Erweiterung ".ps1" eingeschlossen.

FileInclusionFilter (Optional)

Wird nur bei einem Objekt vom Typ "GitHub" interpretiert. Wird mit dem Powershell-Vergleichsoperator "like" gegen den gesamten Dateinamen gematcht. Denken Sie daran, dass Sie die Platzhalter selbst einfügen müssen. Vergessen Sie nicht, einen Stern (*) einzufügen, wenn Sie einen Teil eines Dateinamens abgleichen möchten. "*.ps1" bedeutet alle Dateien, die mit ".ps1" enden, aber ".ps1" bedeutet nur ".ps1".

Sie müssen keinen Filter angeben, aber wenn Sie einen angeben, müssen Sie ihn auch verwenden. Ein leerer InclusionFilter bedeutet keine Dateien.

FileExclusionFilter (Optional)

Wie der InclusionFilter, aber offensichtlich umgekehrt. Ausschluss hat Vorrang.

Argumente

Siehe die Inline-PowerShell-Hilfe (man -full New-PSArmoury) für weitere Details.

-Path

Der Pfad zu Ihrer neuen Armoury-Datei. Der Standard ist ".\MyArmoury.ps1"

-FromFile

Laden Sie Ihre PowerShell-Skripte direkt von einem lokalen Ordner oder einer Datei und Sie müssen keine Konfigurationsdatei bereitstellen.

-Config

Der Pfad zu Ihrer JSON-Konfigurationsdatei. Schauen Sie sich das mitgelieferte Beispiel für Ideen an.

-ModulesDirectory

Der Pfad zum modules-Verzeichnis. Der Standard ist ".\modules". Wenn ModulesDirectory verwendet wird, können die Parameter EvasionPath und ObfuscationPath nicht verwendet werden.

-EvasionPath

Der Pfad zum Evasion-Skript. Wenn EvasionPath und ObfuscationPath verwendet werden, kann der Parameter ModulesDirectory nicht verwendet werden.

-ObfuscationPath

Der Pfad zum Obfuskations-Skript. Wenn EvasionPath und ObfuscationPath verwendet werden, kann der Parameter ModulesDirectory nicht verwendet werden.

-ValidateOnly

Verwenden Sie dies zusammen mit "-Config", um das Skript die grundlegende Syntax Ihrer JSON-Konfigurationsdatei überprüfen zu lassen, ohne es auszuführen.

-GithubCredentials

Übergeben Sie GitHub-Benutzernamen und Zugriffstoken als Credential-Objekt, damit das Skript nicht danach fragt. Nützlich, wenn Sie wiederholt eine Armoury zum Testen erstellen.

Verwendung wie folgt:

root@kitploit:~
$c = get-credential
New-PSArmoury -GithubCredentials $c

GitHub-Zugriffstoken

Sie müssen einen gültigen GitHub-Benutzernamen sowie ein persönliches Zugriffstoken angeben, damit das Skript die GitHub-API ordnungsgemäß verwenden kann. Verwenden Sie kein Benutzername/Passwort, da dies ohnehin nicht funktioniert, wenn Sie MFA aktiviert haben (und Sie sollten MFA aktivieren). Auch der Zugriff auf die API mit grundlegendem Benutzername/Passwort ist veraltet.

Folgen Sie dieser Anleitung, um ein persönliches Zugriffstoken zu erstellen.

Bitte beachten: die einzige Berechtigung, die wir auf dem Zugriffstoken benötigen, ist public_repo im Bereich repo.

Dies liegt daran, dass Sie das Token nur benötigen, damit GitHub uns nicht blockiert, wenn Sie größere Repositories (wie PowerSploit) nach .ps1-Dateien durchsuchen, um sie einzubinden.

Beispielverwendung

Beispiel 1 – Alle Standardeinstellungen

Wenn Sie eine Armoury mit den Standardeinstellungen erstellen möchten (Hinweis: dies obfuskiert außer der base64-Kodierung gar nicht), führen Sie einfach Folgendes aus.

root@kitploit:~
. .\New-PSArmoury.ps1
New-PSArmoury

Dies erstellt eine .ps1-Datei namens "MyArmoury.ps1" im aktuellen Arbeitsverzeichnis, wobei verwendet werden:

  • die Standardkonfiguration ".\PSArmoury.json"
  • der standardmäßige AMSI-Bypass unter ".\modules\evasion.ps1"
  • die standardmäßige Obfuskation/Deobfuskation (base64) unter ".\modules\obfuscation.ps1" bzw. ".\modules\deobfuscation.ps1".

Sie können die Armoury in Ihre aktuelle Sitzung laden mit

root@kitploit:~
cat -raw .\MyArmoury.ps1 | iex

Das Laden Ihrer Armoury führt die folgenden Schritte aus:

  • Evasion-Code ausführen
  • Kontrolle an die Deobfuskationsfunktion übergeben, die wiederum
  • jedes obfuskierte Element durchgeht und
    • deobfuskiert
    • an IEX weiterleitet

Danach stehen alle PowerShell-Codes, die Sie in die Armoury aufgenommen haben, zur Verfügung. Rufen Sie die Cmdlets einfach wie gewohnt auf, z.B.

root@kitploit:~
Invoke-Rubeus -Command "kerberoast /stats"
Get-DomainGroupMember -Identity "Domain Admins" -Recurse

Falls Sie vergessen haben, was Sie in die Armoury gepackt haben, laden Sie sie einfach und rufen Sie das Inventar auf :-)

root@kitploit:~
Get-PSArmoury

Beispiel 2 – Verwendung der Byte-Konvertierungs-/JSON-Format-Obfuskationstechnik, die mit PSArmoury ausgeliefert wird, und einer anderen Konfigurationsdatei

Starten Sie New-PSArmoury mit den Parametern -EvasionPath und -ObfuscationPath wie folgt:

root@kitploit:~
New-PSArmoury -Config C:\myarmouryconfig.json -ObfuscationPath .\modules\TEMPLATE_obfuscation_byte_convert.ps1 -EvasionPath .\modules\evasion.ps1

Beispiel 3 – Erstellen einer Armoury aus einem lokalen Ordner mit PowerShell-Skripten

Hinweis: In diesem Fall werden alle .ps1-Dateien im Ordner hinzugefügt, da wir einen Ordnerpfad angeben. Wenn wir den Pfad zu einer einzelnen Datei angeben, wird nur diese Datei verarbeitet.

root@kitploit:~
New-PSArmoury -FromFile C:\myscriptfolder
Tool herunterladen