PsExec und die Fiesen Dinge, die Sie Tun Können
die Meisten der Werkzeuge, die wir zum verwalten von Netzwerken sind in der Regel ein zweischneidiges Schwert. Diese Tools bieten viel Flexibilität und ermöglichen eine einfachere Verwaltung von Geräten, Diensten und Software. In den richtigen Händen haben wir nichts zu befürchten, aber in den falschen Händen werden unsere Remote-Verwaltungstools zu mächtigen Waffen, mit denen Angreifer eine Vielzahl böswilliger Aktivitäten ausführen können., In diesem Artikel werde ich über ein Tool sprechen, das zu dieser Beschreibung passt. Dieses Tool ist das Microsoft Sysinternals PsExec-Tool. In diesem Artikel habe ich“m werde Ihnen einen überblick verschaffen, was PsExec ist und was seine Fähigkeiten sind aus administrativer Sicht. Danach werde ich die Rolle eines Gegners übernehmen und einige der bösen Dinge demonstrieren, für die es in einem Netzwerk verwendet werden kann.
Dieser Artikel zielt darauf ab, zwei Zielgruppen zu bedienen., Die erste Zielgruppe besteht aus den Systemadministratoren, die für den Schutz ihrer Netzwerke vor der Verwendung von Tools wie PsExec für böswillige Zwecke verantwortlich sind. Die andere Zielgruppe besteht aus ethischen Hackern und professionellen Penetrationstestern, die möglicherweise davon profitieren, etwas mehr über einige der Dinge zu wissen, für die PsExec verwendet werden kann., Unabhängig davon, in welches Publikum Sie fallen, ist es wichtig, dass ich den Haftungsausschluss gebe, dass einige der Befehle und Techniken, die ich hier diskutiere, abhängig von den Umständen, in denen sie verwendet werden, ziemlich illegal sein können, Daher fordere ich Sie auf, mit Vorsicht vorzugehen, wenn irgendwelche Maßnahmen, die Sie ergreifen, fragwürdig sein können.
Was ist PsExec?
Das Dienstprogramm PsExec wurde als Teil der PsTools-Suite entwickelt, die ursprünglich von Mark Russinovich von Sysinternals entwickelt wurde und jetzt Microsoft gehört., Das Tool wird als Kommandozeilen-basiertes Remote-Verwaltungstool geprägt und ermöglicht die Remote-Ausführung von Prozessen auf anderen Systemen. Es ist sehr flexibel, da es die Verwendung alternativer Authentifizierungsanmeldeinformationen anstelle derjenigen des Benutzers ermöglicht, der es ausführt, was bedeutet, dass Sie Geräte verwalten können, die durch Domänen-und Site-Grenzen getrennt sind. PsExec kann nicht nur Programme auf einem Remote-System ausführen, sondern auch Konsoleneingaben und-ausgaben zwischen Systemen umleiten, sodass Sie interaktive Tools remote verwenden können.,
Im Gegensatz zu den meisten Microsoft assoziierten Software, das Innenleben der PsExec sind kein Geheimnis und sind ziemlich einfach. PsExec ermöglicht die Weiterleitung der Eingabe und Ausgabe einer remote gestarteten ausführbaren Datei mithilfe von SMB und der versteckten $ADMIN-Freigabe auf dem Remote-System. Mit dieser Freigabe verwendet PsExec die Windows Service Control Manager-API, um den PsExecsvc-Dienst auf dem Remote-System zu starten, der eine benannte Pipe erstellt, mit der PsExec kommuniziert. Diese benannte Pipe ermöglicht die Eingabe / Ausgabe-Umleitung zurück zu dem System, das PsExec gestartet hat.,
Schön spielen mit PsExec
Gemäß seinem ursprünglichen Design kann PsExec verwendet werden, um eine Reihe sehr nützlicher Dinge zu tun, die Systemadministratoren unterstützen können. Ein solches Szenario, in dem ich mich mehrmals befunden habe, ist eines, in dem ich den DNS-Namen eines Computers kenne, aber nicht die genauen IP-Konfigurationseinstellungen (DNS-Server, Standardgateway usw.). Unter normalen Umständen würde ich ipconfig auf dem lokalen System verwenden, um diese Informationen zu ermitteln., In den allermeisten Fällen jedoch könnte dies bedeuten, dass ich an einen anderen Ort fahren oder einen Computer des Benutzers leihen würde, von Natur aus ihre Produktivität für den Tag zu reduzieren. Da ipconfig nicht für die Ausführung auf einem nicht lokalen Computer geeignet ist, kann ich PsExec verwenden, um es erfolgreich zu starten, wie in Abbildung 1 gezeigt.
Abbildung 1: Verwenden von PsExec zum Starten von ipconfig auf einem Remote-System
Nach dem Aufruf von PsExec wird der Remote-Computer nach dem doppelten Schrägstrich ( \ \ ) und anschließend mit dem Befehl ipconfig bezeichnet., Wenn Sie PsExec ausführen, wird standardmäßig das Verzeichnis %SYSTEM% auf dem Remotesystem verwendet, auf dem Sie versuchen, den Befehl auszuführen, weshalb ich hier keinen vollständigen Pfad angeben musste. Zuletzt wird der Schalter / all für ipconfig angegeben, um alle verfügbaren ipconfig-Informationen auszugeben.
Eine weitere gängige Implementierung von PsExec ist die Verwendung für die Bereitstellung von Updates, Patches und Hotfixes. Obwohl die typische bevorzugte Methode hierfür die Gruppenrichtlinie ist, kann es Fälle geben, in denen diese Methode zu langsam ist., Ich habe in vielen Situationen gewesen, wo ich einen High-Priority-Sicherheits-Patch bereitstellen musste, die die Dauer der Standard-Gruppenrichtlinie Aktualisierungszeit nicht warten kann, so habe ich mich an PsExec gedreht, um die Datei in einer schnelleren Art und Weise bereitzustellen. Ein Beispiel hierfür ist in Abbildung 2 zu sehen.
Abbildung 2: Starten eines ausführbaren Patches aus der Ferne
Das obige Befehlsbild verwendet einige zusätzliche Funktionen. Beachten Sie zunächst, dass nach dem doppelten Schrägstrich (\\) zwei Computernamen durch Kommas getrennt sind., Mit PsExec können Sie hier mehrere Zielgeräte oder alternativ eine Datei mit einer Liste von Gerätenamen oder-adressen angeben. Der Befehl enthält auch den Schalter /c, der verwendet wird, wenn Sie eine Datei auf dem lokalen System angeben möchten, die auf dem Remote-System ausgeführt werden soll. In diesem Fall habe ich die Datei Patch angegeben.exe. Die Datei befindet sich auf meinem lokalen System im Stammverzeichnis des Laufwerks C, daher musste ich den vollständigen Dateipfad angeben. Der Schalter /c sucht standardmäßig im Verzeichnis %SYSTEM% auf dem lokalen System., Wie Sie sehen, wird die Datei erfolgreich ausgeführt und die Ausgabe an die lokale Konsole umgeleitet, auf der PsExec ausgeführt wird.
Eine letzte freundliche Nutzung von PsExec ich sehr bequem gefunden habe, ist es aus der Ferne Systeme einer höheren privilegierten Ebene zu verwalten, während ein System unter einem niedrigeren privilegierten Konto verwenden. Ich kann“t die Anzahl der Male, die ich“ve gewesen, die arbeiten vor Ort auf einem Benutzer-computer und ich“ve bekommen einen Anruf, der mich verpflichtet, führen Sie eine administrative Funktion wie die Passwort-änderung., Na sicher,in einer Active Directory-Umgebung könnte ich nur RDP in einen Domänencontroller und führen Sie diese Änderung, aber ich habe mehrere Clients hatte, die nicht Active Directory oder RDP aus verschiedenen Gründen verwenden. Wenn das der Fall ist, ist es ziemlich einfach, ein USB-Flash-Laufwerk einzulegen und auf die Kopie von PsExec zuzugreifen, die ich darauf installiert habe. Im Fall von Abbildung 3 habe ich PsExec verwendet, um ein Benutzerkennwort auf einem System zurückzusetzen, indem ich die Berechtigungen des von PsExec ausgeführten Net-Tools erhöht habe.,
Abbildung 3: Ändern des Passworts eines Benutzers durch Erhöhen der PsExec-Berechtigungen
Böse Dinge mit PsExec
Machen wir jetzt einen Spaziergang auf der dunklen Seite und schauen uns einige Dinge an, die mit PsExec gemacht werden können von denen mit potenziell bösen Absichten. Betrachten wir zunächst ein Szenario, in dem ein Angreifer Anmeldeinformationen für ein System erhalten hat, aber keinen direkten Zugriff darauf hat., In diesem Fall zielt der Angreifer darauf ab, die GUI-oder Befehlszeilensteuerung des Systems zu erlangen, aber die Möglichkeiten für die Verwendung dieser Anmeldeinformationen können begrenzt sein. Eine Methode, die in dieser Situation nützlich sein kann, ist die Verwendung von PsExec zum Ausführen einer ausführbaren Backdoor-Datei auf dem System, wie in Abbildung 4 gezeigt.
Abbildung 4: Eine bösartige ausführbare Datei, die aus der Ferne gestartet wird
Im Falle dieses Screenshots verwendet ein entfernter Angreifer den PsExec mit dem Schalter /c, um die lokale Datei auszuführen nc.exe-Datei auf dem remote-system., Gleichzeitig werden die Schalter-u und-p verwendet, um den kompromittierten Benutzernamen und das Kennwort anzugeben, damit die Datei mit Root-Rechten ausgeführt werden kann. Ohne Wissen des Opfers wird die Datei, die stillschweigend in einer Hintertür ausgeführt wird, die es dem Angreifer ermöglicht, eine Verbindung zum System herzustellen und eine administrative Eingabeaufforderung zu erhalten.
Eine interessante Sache über den Angriff, den wir gerade angeschaut haben, ist, dass Sie tatsächlich nicht einmal ein Benutzer-Passwort benötigen, um es auszuführen. In der Realität benötigen Sie lediglich den Benutzernamen und den Passwort-Hash des Benutzers., In Windows werden mathematische Berechnungen auf vom Benutzer bereitgestellte Kennwörter angewendet, um diese Kennwörter zu einer verschlüsselten Zeichenfolge fester Länge zu machen, die als Hash bezeichnet wird. Diese Hashes sind eine Sicherheitsfunktion, mit der Klartext-Passwörter nicht über ein Netzwerk übertragen werden können. Wenn die Authentifizierung erfolgt, werden diese Passwort-Hashes von einem Host an einen anderen gesendet. Mit PsExec kann dies ausgenutzt werden, indem einfach der Passwort-Hash anstelle des Passworts angegeben wird, wie in Abbildung 5 gezeigt.,
Abbildung 5: Verwenden eines Passwort-Hash zum Ausführen einer Datei aus der Ferne
Dieses Beispiel ist das gleiche wie in Abbildung 4, der einzige Unterschied besteht darin, dass anstelle des Passworts ein Passwort-Hash verwendet wird. Das empfangende System hat kein Problem damit, diesen Hash für Authentifizierungszwecke zu akzeptieren. Es gibt eine Vielzahl von Methoden zum Abrufen von Passwort-Hashes, die etwas über den Rahmen dieses Artikels hinausgehen. Ich habe geschrieben, ein weiterer Artikel zu diesem Thema, die hier eingesehen werden.,
Ein weiterer netter Trick, den PsExec ermöglicht, ist der Zugriff auf Dateien und Spawnprozesse mit dem integrierten Systemkonto. Das Systemkonto auf einem Windows-Computer ist das leistungsfähigste Konto und ermöglicht den Zugriff auf so ziemlich alles, einschließlich einiger Elemente, die nicht durch das Administratorkonto und Benutzer erstellte Konten zugänglich sind.. Abbildung 6 zeigt ein Beispiel für den Zugriff auf die Regedit-Anwendung.,
Abbildung 6: Zugriff auf die Registrierung des Opfers
Der obige Befehl wird direkt auf einem lokalen System ausgeführt, gibt jedoch den Schalter-s an, um das lokale Systemkonto zu verwenden. Dies wird mit der Option-I (interactive) kombiniert, mit der regedit im interaktiven Modus ausgeführt wird. Wenn Sie diesen Befehl ausführen, wird regedit mit Systemzugriff gestartet, der zusätzlichen Zugriff auf einige interessante Dateien bietet. Ein solches Beispiel hierfür ist die SAM-Datei, die Benutzerpasswort-Hashes enthält., Angesichts der richtigen Motivation kann ein Angreifer mit Zugriff auf ein System und PsExec mit dieser Technik problemlos alle Passwort-Hashes aus dem System extrahieren und ihm möglicherweise Informationen zur Verfügung stellen, die den Kompromiss anderer Systeme oder Konten ermöglichen.
Ein paar Vorbehalte
Anmeldeinformationen im Klartext – Wenn Sie sich Sorgen darüber machen, wer Ihre Netzwerkaktivität überwacht, ist PsExec wahrscheinlich nicht das beste Tool., PsExec überträgt alle ihm angegebenen Benutzeranmeldeinformationen im Klartext, was bedeutet, dass jeder, der eine Kopie von Wireshark oder Tcpdump ausführt, die Anmeldeinformationen abfangen kann, wenn Sie einen Benutzernamen und ein Kennwort für den Remote-Zugriff auf ein System angeben.
Antivirus – Erkennung-Früher war dies kein so großes Problem, aber jetzt, da die meisten Virenscanninganwendungen eine gewisse System-und Speicherüberwachung durchführen, werden die meisten von ihnen PsExec abfangen, das auf dem System verwendet wird, das sie überwachen., Wenn Sie einen Penetrationstest auf einem Windows-System tun und PsExec nicht funktioniert, wie es sein sollte, dann sind die Chancen, dass Sie durch Antivirus blockiert werden, und noch schlimmer, können Sie den Endbenutzer wissen lassen, dass Sie mit ihrem System spielen.
PsExec und Metasploit – Wenn möglich, verwende ich PsExec nie mehr alleine. Eine modifizierte Version von PsExec ist jetzt im Metasploit Framework enthalten. Metasploit ist ein Penetrationstest-Framework, das ziemlich viel Funktionalität bietet., Wenn Sie PsExec für eine Art Sicherheitsbewertung verwenden möchten, sollten Sie sich die hinzugefügte Funktionalität ansehen, die Metasploit damit bietet. Ich habe diese Version von PsExec tatsächlich in einem Artikel verwendet, den ich zuvor über die Weitergabe der Hash-Techniken geschrieben habe.
Schlussfolgerung
Das PsExec-Tool hat viele Anwendungen für eine Vielzahl von Absichten des Benutzers. Hoffentlich hat dieser Artikel dazu beigetragen, Sie über einige seiner Funktionen aufzuklären und darüber, wie sie für Fehlverhalten verwendet werden können. PsExec ist die Art von Tool, mit dem ein Angreifer kreativ sein kann., Obwohl ich hier nur einige einzigartige Anwendungen des Tools behandelt habe, würde ich es wagen zu sagen, dass Dutzende oder sogar Hunderte von interessanten Angriffsvektoren mit seinem Funktionsumfang verfügbar sind. Irgendwann werde ich planen, einen Folgeartikel zu schreiben, der interessantere und erweiterte Anwendungen für PsExec enthält. Wenn Sie in der Zwischenzeit interessante PsExec-Tricks haben, können Sie mir direkt schreiben, um sie in den nächsten Artikel aufzunehmen.