heim · Sicherheit · Eine Erhöhung der Zugriffsrechte ist erforderlich. Erhöhen der Benutzerrechte in Windows

Eine Erhöhung der Zugriffsrechte ist erforderlich. Erhöhen der Benutzerrechte in Windows

Viele Programme erfordern beim Start eine Erhöhung der Rechte (ein Schildsymbol neben dem Symbol), aber tatsächlich benötigen sie für ihren normalen Betrieb keine Administratorrechte (Sie haben den Benutzern beispielsweise manuell die erforderlichen Rechte für das Programmverzeichnis in „Programme“ und „Programme“ gewährt). die vom Programm verwendeten Registrierungszweige). Wenn Sie ein solches Programm als einfacher Benutzer ausführen und die Benutzerkontensteuerung auf dem Computer aktiviert ist, wird dementsprechend eine UAC-Eingabeaufforderung angezeigt und der Benutzer wird aufgefordert, das Administratorkennwort einzugeben. Um diesen Mechanismus zu umgehen, deaktivieren viele einfach die Benutzerkontensteuerung oder gewähren dem Benutzer Administratorrechte auf dem Computer, indem sie ihn zur lokalen Administratorengruppe hinzufügen. Natürlich sind beide Methoden unsicher.

Warum eine reguläre Anwendung möglicherweise Administratorrechte benötigt

Das Programm benötigt möglicherweise Administratorrechte, um bestimmte Dateien (Protokolle, Konfigurationen usw.) in seinem eigenen Ordner unter C:\Programme (x86)\SomeApp) zu ändern. Standardmäßig haben Benutzer keine Rechte zum Bearbeiten dieses Verzeichnisses. Für den normalen Betrieb eines solchen Programms sind daher Administratorrechte erforderlich. Um dieses Problem zu lösen, müssen Sie dem Benutzer (oder der Benutzergruppe) als Administrator auf NTFS-Ebene manuell Änderungs-/Schreibrechte für den Programmordner zuweisen.

Notiz. Tatsächlich ist die Praxis, sich ändernde Anwendungsdaten in einem eigenen Verzeichnis unter C:\Programme zu speichern, falsch. Korrekter ist es, Bewerbungsdaten im Benutzerprofil zu speichern. Aber das ist eine Frage der Faulheit und Inkompetenz der Entwickler.

Ausführen eines Programms, das Administratorrechte von einem Standardbenutzer erfordert

Wir haben zuvor beschrieben, wie Sie den RunAsInvoker-Parameter verwenden können. Allerdings ist diese Methode nicht flexibel genug. Sie können es auch mit dem Speichern des Admin-Passworts /SAVECRED verwenden (ebenfalls unsicher). Betrachten wir eine einfachere Möglichkeit, den Start eines Programms ohne Administratorrechte (und ohne Eingabe des Administratorkennworts) mit aktivierter Benutzerkontensteuerung (4.3 oder Stufe 2) zu erzwingen.

Nehmen wir zum Beispiel das Dienstprogramm zum Bearbeiten der Registrierung: regedit.exe(es befindet sich im Verzeichnis C:\windows\system32). Wenn Sie regedit.exe ausführen, wird ein UAC-Fenster angezeigt und der Registrierungseditor wird nicht gestartet, es sei denn, Sie bestätigen die Erhöhung der Berechtigungen.

Lassen Sie uns eine Datei auf dem Desktop erstellen run-as-non-admin.bat mit folgendem Text:

cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" %1"

Um nun die Ausführung der Anwendung ohne Administratorrechte zu erzwingen und die UAC-Eingabeaufforderung zu unterdrücken, ziehen Sie einfach die gewünschte exe-Datei auf diese bat-Datei auf dem Desktop.

Danach sollte der Registrierungseditor starten, ohne dass die UAC-Eingabeaufforderung erscheint. Öffnen Sie den Prozessmanager und fügen Sie eine Spalte hinzu Erhöht(Mit höheren Berechtigungen) werden Sie sehen, dass das System über einen regedit.exe-Prozess mit einem nicht erhöhten Status verfügt (wird mit Benutzerrechten ausgeführt).

Versuchen Sie, einen beliebigen Parameter im HKLM-Zweig zu bearbeiten. Wie Sie sehen, ist der Zugriff zum Bearbeiten der Registrierung in diesem Zweig verweigert (dieser Benutzer hat keine Schreibrechte für die Zweige der Systemregistrierung). Sie können jedoch Schlüssel im eigenen Registrierungszweig des Benutzers – HKCU – hinzufügen und bearbeiten.

Auf die gleiche Weise können Sie eine bestimmte Anwendung über eine Bat-Datei starten. Geben Sie einfach den Pfad zur ausführbaren Datei an.

run-app-as-non-admin.bat

Setze ApplicationPath="C:\Programme\MyApp\testapp.exe"
cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" %ApplicationPath%"

Sie können auch ein Kontextmenü hinzufügen, das allen Anwendungen die Möglichkeit gibt, ohne Erhöhung gestartet zu werden. Erstellen Sie dazu die folgende Reg-Datei und importieren Sie diese in die Registry.

Windows-Registrierungseditor Version 5.00


@="cmd /min /C \"set __COMPAT_LAYER=RUNASINVOKER && start \"\" \"%1\"\""

Um anschließend eine Anwendung ohne Administratorrechte zu starten, wählen Sie einfach den Eintrag „“ im Kontextmenü.

__COMPAT_LAYER-Umgebungsvariable und RunAsInvoker-Parameter

Mit der Umgebungsvariablen __COMPAT_LAYER können Sie verschiedene Kompatibilitätsstufen für Anwendungen festlegen (Tab Kompatibilität in den Eigenschaften der exe-Datei). Mithilfe dieser Variable können Sie die Kompatibilitätseinstellungen festlegen, mit denen das Programm ausgeführt werden soll. Um die Anwendung beispielsweise im Windows 7-Kompatibilitätsmodus und mit einer Auflösung von 640 x 480 auszuführen, legen Sie Folgendes fest:

setze __COMPAT_LAYER=Win7RTM 640x480

Unter den für uns interessanten Optionen der Variablen __COMPAT_LAYER heben wir die folgenden Parameter hervor:

  • RunAsInvoker- Starten einer Anwendung mit den Berechtigungen des übergeordneten Prozesses ohne UAC-Anfrage.
  • RunAsHighest- Starten der Anwendung mit den maximalen Rechten, die dem Benutzer zur Verfügung stehen (die UAC-Anfrage erscheint, wenn der Benutzer über Administratorrechte verfügt).
  • Als Administrator ausführen- Starten Sie die Anwendung mit Administratorrechten (die AUC-Eingabeaufforderung wird immer angezeigt).

Diese. Der RunAsInvoker-Parameter stellt keine Administratorrechte bereit, sondern blockiert nur das Erscheinen des UAC-Fensters.

UAC(User Account Control) ist eine Kontokontrolltechnologie, die erstmals in erschien Windows Vista und älter. Diese Technologie verhindert, dass Programme Aktionen ausführen, die Administratorrechte erfordern. Wenn das Programm solche Aktionen ausführt, wird seine Arbeit unterbrochen und dem Benutzer wird ein Anforderungsfenster auf dem geschützten Desktop angezeigt (so dass es unmöglich ist, die Schaltfläche „OK“ programmgesteuert zu drücken). Wenn Ihr Programm beispielsweise Änderungen am Registrierungsschlüssel vornehmen muss HKEY_LOCAL_MACHINE, dann benötigt sie Administratorrechte.
Um dieses Problem zu lösen, können Sie die Implementierung einer Manifestdatei im Projekt verwenden, die das Betriebssystem liest und automatisch die für den Start erforderlichen Parameter ermittelt.
Betrachten wir die Einführung einer Manifestdatei in die Anwendung. Windows Form" Öffnen Sie dazu Visual Studio (in diesem Beispiel wird Version 2012 verwendet) und erstellen Sie ein Projekt „ Windows Form" Offen " Lösungsforscher(Projektmappen-Explorer), das eine organisierte Ansicht der Projekte und ihrer Dateien bietet, rufen Sie das Menü auf Sicht» - « Lösungsforscher" Klicken Sie mit der rechten Maustaste auf „ Lösungsforscher„Nach Projektnamen und wählen Sie aus dem Kontextmenü“ Hinzufügen» - « Element erstellen...».

Es öffnet sich ein neues Fenster „ Ein neues Element hinzufügen -...„Suchen Sie nach dem Visual C#-Element mit dem Namen „“ Anwendungsmanifestdatei", wählen Sie es aus und klicken Sie auf die Schaltfläche " Hinzufügen».

IN " Lösungsforscher„Sie erhalten ein neues Element mit dem Namen der Manifestdatei. Es wird auch automatisch im Code-Editor geöffnet.

Um die zum Ausführen der Anwendung erforderlichen Rechte zu konfigurieren, müssen Sie die Sicherheitsstufe bestimmen und das Element beschreiben „ requestExecutionLevel" Dieses Element hat keine untergeordneten Elemente und verfügt über die folgenden Attribute:
1) Ebene- Erforderlich. Legt die für die Anwendung erforderliche Sicherheitsstufe fest. Für dieses Attribut stehen folgende Werte zur Verfügung:
  • asInvoker- Die Anwendung startet mit den Rechten des übergeordneten Prozesses. Das heißt, wenn Sie ein Programm aus einer Anwendung ausführen, die bereits mit Administratorrechten ausgeführt wird, verfügt diese automatisch über dieselben Rechte. Dieser Modus wird in den meisten Fällen von Microsoft empfohlen. Diese. Dabei handelt es sich um Programme, für die keine Administratorrechte erforderlich sind;
  • höchsteVerfügbar— Die Anwendung wird mit höheren Rechten gestartet, als der aktuelle Benutzer hat. Regedit.exe und Mmc.exe werden mit diesen Rechten gestartet;
  • requireAdministrator- Es werden volle Administratorrechte angefordert. Diese. erforderlich für Anwendungen, die ohne Administratorrechte nicht ausgeführt werden können.

Anwendungen installieren " Klicken Sie einmal" ist nur mit dem Wert "asInvoker" möglich. Bei anderen Werten ist die Installation nicht möglich.

2) uiAccess- Optional. Gibt an, ob die Anwendung Zugriff auf geschützte Elemente der Benutzeroberfläche benötigt, um Barrierefreiheitsfunktionen zu implementieren. Verfügbare Werte“ WAHR" Und " FALSCH", Standardwert ist " FALSCH". Bedeutung " WAHR" darf nur signierte Anwendungen enthalten und aus den Ordnern „\Programme\“ und „\windows\system32\“ gestartet werden. In den meisten Fällen ist dies nicht erforderlich.
Damit das Programm beim Start eine Erhöhung der Rechte auf die Administratorebene erfordert, ersetzen Sie das Attribut „ Ebene" Standardwert " asInvoker" An " requireAdministrator».

Konstruieren Sie eine Lösung, indem Sie die Taste „ drücken. F6" Wenn Sie alles richtig gemacht haben, erscheint in den Betriebssystemen Windows Vista und älter ein Schildsymbol auf dem Symbol der ausführbaren Datei des Programms, das darauf hinweist, dass für dieses Programm eine Rechteerhöhung erforderlich ist.

Um die Berechtigungen Ihrer Anwendung zu überprüfen, können Sie die folgende Auflistung verwenden.
string s = new WindowsPrincipal(WindowsIdentity.GetCurrent()).IsInRole(WindowsBuiltInRole.Administrator) ? „Administrator“: „Normaler Benutzer“; Wenn Sie eine Konsolenanwendung haben, ist das Funktionsprinzip dasselbe.

Hmm, der Unterschied zwischen dem einen und dem anderen besteht nur darin, wie die Kompatibilitätsparameter eingestellt werden, im ersten Fall manuell, im zweiten Fall dasselbe, nur über den Assistenten. Aber trotzdem danke für die ausführliche Antwort))

Danke, ich weiß))))))))))))))))))

Ok, ich bin ein Administrator (vielleicht ein bisschen Analphabet, aber ich hoffe, dass ich aufholen kann ...) Wie kann ich diese Anwendung (und nur diese) ausführen dürfen? Gleichzeitig, um nicht ständig zu seinem Computer zu rennen (um das lokale Administratorkennwort einzugeben, das er nicht kennen sollte), wenn er diese Anwendung starten muss.

Ich bin Ihnen sehr dankbar, dass Sie mich an einen Teil der Vorlesung zum Thema „Betriebssysteme“ erinnert haben. Lassen Sie mich Ihnen ein weiteres, mittlerweile klassisches Beispiel geben:

Manchmal muss ein Benutzer sein Anmeldekennwort ändern. Der Benutzer selbst hat keine Rechte, auf die Passwortdatenbank zuzugreifen. Allerdings läuft das Programm, mit dem er das Passwort ändert, mit erhöhten Rechten. Dadurch kann er schließlich sein Passwort ändern.

Mein Fall ist also ähnlich. Wie „teile“ ich dem System mit, dass ein Programm mit erhöhten Rechten ausgeführt werden soll? In diesem Fall wird es von einem Benutzer aus der Gruppe „Benutzer“/„Hauptbenutzer“ gestartet.

Dies kann tatsächlich dadurch erreicht werden, dass das Programm als „geplante Aufgabe“ unter einem anderen Benutzer ausgeführt wird. Alles wäre gut - es startet sogar, aber die grafische Oberfläche (Programmfenster) wird nicht auf dem Desktop des Benutzers angezeigt ...

Konzeptioneller Widerspruch??? Ich habe oben ein Beispiel gegeben – die Aufgabe ist für jedes Betriebssystem Standard. Ich möchte es einfach nicht mit Tools von Drittanbietern lösen (nicht in Windows Vista enthalten). UAC habe ich bereits deaktiviert – auf jeden Fall funktioniert die Anwendung nur mit Admin-Rechten korrekt, so ist es – spezifisch.... Es scheint aus Sicherheitsgründen nicht möglich zu sein, diesen Benutzer in die lokale Gruppe „Administratoren“ aufzunehmen .

Bezüglich des Drehbuchs - für Rennen wie Es gibt ein Flag, das es Ihnen ermöglicht, sich das Passwort zu merken, aber in diesem Fall kann der Benutzer es ausführen beliebig Programm mit Admin-Rechten.

Das heißt, ich möchte keine Software auf den Markt bringen, deren Quellcode niemand gesehen hat, über den Anbieter nichts bekannt ist und deren Website „in den Händen der Menschen“ ist. Was ist mit den Benutzern? Wenn das genug wäre, wäre diese Diskussion nicht im Forum erschienen..... =(

Ich würde gerne glauben, dass nicht alles so schlecht ist.

Die Erhöhung von Privilegien ist möglicherweise einer der Schlüsselpunkte, von denen das Szenario für weitere Pentests oder Angriffe abhängt. Sehr oft endet in dieser Phase alles, wenn es nicht möglich ist, „die eigenen Kräfte zu erweitern“. Deshalb werden wir heute ein wenig über Möglichkeiten sprechen, die es einem Benutzer ermöglichen, seine Berechtigungen nicht nur für den Administrator, sondern auch für das System zu erhöhen.

Einführung

Die Rechteausweitung unterscheidet sich geringfügig zwischen Windows und Linux. Obwohl beide Betriebssysteme die übliche Anzahl an Schwachstellen aufweisen, stellen Forscher fest, dass ein vollständig gepatchter Windows-Server weitaus häufiger vorkommt als ein Linux-Server, der auf den neuesten Stand gebracht wurde. Darüber hinaus ist die Veröffentlichungszeit für Windows-Patches oft kürzer, was die Erhöhung der Berechtigungen unter Windows zu einer recht interessanten und ehrgeizigen Aufgabe macht. Ihr werden wir unsere Geschichte widmen.

Optionen

Welche Möglichkeiten haben wir also, in der Windows-Welt aufzusteigen? Erstens wurden in letzter Zeit genügend Schwachstellen im Zusammenhang mit dem Parsen von Schriftarten im Betriebssystemkernel gefunden, was den Prozess der Eskalation von Berechtigungen recht einfach macht, wenn man über einen geeigneten Exploit verfügt. Wenn Sie Metasploit verwenden, reicht ein einziger Befehl aus, um eine System-Shell zu erhalten. All dies dürfte jedoch nur dann erfolgreich funktionieren, wenn das System nicht vollständig gepatcht ist. Wenn alle Updates auf dem Computer installiert sind, ist es im Gegensatz zu Linux nicht möglich, SUID-Binärdateien zu finden, und Umgebungsvariablen werden normalerweise nicht an Dienste oder Prozesse mit höheren Berechtigungen übergeben. Was bleibt uns dadurch übrig?

Vom Admin bis zum System, oder was jeder weiß

Wenn Sie an die Eskalation von Berechtigungen denken, fällt Ihnen normalerweise sofort die Verwendung des Taskplaners ein. In Windows können Sie eine Aufgabe mit zwei Dienstprogrammen hinzufügen: at und schtasks. Der zweite führt die Aufgabe im Namen des Benutzers aus, der die Aufgabe hinzugefügt hat, während der erste im Namen des Systems ausgeführt wird. Ein Standardtrick, von dem Sie wahrscheinlich schon gehört haben, ermöglicht es Ihnen, die Konsole mit Systemrechten auszuführen:

Um 13:01 Uhr /interaktiver Befehl

Das zweite, was mir in den Sinn kommt, ist das Hinzufügen eines Dienstes, der die erforderliche Datei startet/den Befehl ausführt:

@echo off @break off title root Cls echo Dienst wird erstellt. sc create evil binpath= "cmd.exe /K start" type= own type= interagieren > nul 2>&1 echo Startet den Dienst. sc start evil > nul 2>&1 echo In Bereitschaft... ping 127.0.0.1 -n 4 > nul 2>&1 echo Dienst wird entfernt. Echo. sc delete evil > nul 2>&1

Die dritte Methode besteht darin, das Systemdienstprogramm C:\windows\system32\sethc.exe beispielsweise durch cmd zu ersetzen. Wenn Sie sich danach abmelden und mehrmals die Umschalttaste drücken, erscheint eine Konsole mit Systemrechten.

Was automatisierte Methoden angeht, fallen mir sofort Metasploit und sein Getsystem ein. Eine alternative Option ist PsExec von Sysinternals (psexec -i -s -d cmd.exe).

Wir gehen einen anderen Weg

Alle diese Methoden haben einen gemeinsamen Nachteil: Es sind Administratorrechte erforderlich. Das bedeutet, dass wir die Berechtigungen eines privilegierten Kontos erweitern. Wenn Sie Administratorrechte erhalten haben, haben Sie in den meisten Fällen eine Reihe von Möglichkeiten, wie Sie noch weiter aufsteigen können. Es ist also keine sehr schwierige Aufgabe. Heute werden wir über Methoden zur Eskalation von Berechtigungen sprechen, die keine 0-Tage-Schwachstellen ausnutzen, vorausgesetzt, wir haben ein normales System und ein Konto eines gewöhnlichen unprivilegierten Benutzers.

Suchen Sie nach Referenzen

Eine der zuverlässigsten und stabilsten Möglichkeiten, die Berechtigungen zu erhöhen und im System Fuß zu fassen, besteht darin, die Passwörter von Administratoren oder Benutzern mit höheren Berechtigungen zu erhalten. Und jetzt ist es an der Zeit, sich an die automatisierte Softwareinstallation zu erinnern. Wenn Sie eine Domäne verwalten, die eine große Flotte von Maschinen umfasst, möchten Sie auf keinen Fall die Software auf jedem einzelnen Rechner manuell installieren. Und es wird so viel Zeit in Anspruch nehmen, dass es für andere Aufgaben nicht mehr reicht. Daher kommen unbeaufsichtigte Installationen zum Einsatz, die Dateien erzeugen, die Admin-Passwörter in reinster Form enthalten. Was sowohl für Pentester als auch für Angreifer einfach ein Schatz ist.

Unbeaufsichtigte Installationen

Bei einer automatisierten Installation verbleibt die für uns durchaus interessante Datei Unattended.xml auf dem Client, die sich üblicherweise entweder in %WINDIR%\Panther\Unattend\ oder in %WINDIR%\Panther\ befindet und kann Speichern Sie das Administratorkennwort im Klartext. Um diese Datei hingegen vom Server zu erhalten, ist nicht einmal eine Authentifizierung erforderlich. Sie müssen nur den Server „Windows Deployment Services“ finden. Dazu können Sie das Skript „auxiliary/scanner/dcerpc/windows_deployment_services“ von Metasploit verwenden. Obwohl die Windows-Bereitstellungsdienste nicht die einzige Möglichkeit zur Durchführung automatisierter Installationen sind, gilt die Datei „Unattended.xml“ als Standard, sodass ihre Entdeckung als Erfolg gewertet werden kann.

GPP

XML-Dateien mit Gruppenrichtlinieneinstellungen enthalten häufig eine Reihe verschlüsselter Anmeldeinformationen, die zum Hinzufügen neuer Benutzer, zum Erstellen von Freigaben usw. verwendet werden können. Glücklicherweise ist die Verschlüsselungsmethode dokumentiert, sodass Sie Passwörter problemlos in reiner Form erhalten können. Darüber hinaus hat das Metasploit-Team bereits alles für Sie erledigt – verwenden Sie einfach das Modul /post/windows/gather/credentials/gpp.rb. Wenn Sie sich für Details interessieren, finden Sie alle notwendigen Informationen unter diesem Link.

Nutzerrechte

Sehr oft ist die Eskalation von Berechtigungen eine Folge falsch konfigurierter Benutzerrechte. Wenn beispielsweise ein Domänenbenutzer ein lokaler Administrator (oder Hauptbenutzer) auf dem Host ist. Oder wenn Domänenbenutzer (oder Mitglieder von Domänengruppen) lokale Administratoren auf allen Hosts sind. In diesem Fall müssen Sie eigentlich nichts tun. Aber solche Optionen kommen nicht sehr oft vor.

AlwaysInstallElevated

Manchmal gestatten Administratoren normalen Benutzern, Programme selbst zu installieren, normalerweise über die folgenden Registrierungsschlüssel:

HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer\AlwaysInstallElevated

HKCU\SOFTWARE\Policies\Microsoft\Window s\Installer\AlwaysInstallElevated

Sie teilen dem System mit, dass jede MSI-Datei mit erhöhten Rechten (NT AUTHORITY\SYSTEM) installiert werden muss. Dementsprechend können Sie mithilfe einer speziell erstellten Datei erneut Aktionen im Namen des Systems ausführen und Ihre Berechtigungen aktualisieren.

Metasploit enthält ein spezielles Modul Exploit/windows/local/always_install_elevated, das eine MSI-Datei mit einer darin eingebetteten speziellen ausführbaren Datei erstellt, die vom Installationsprogramm mit Systemrechten extrahiert und ausgeführt wird. Nach der Ausführung bricht die MSI-Datei die Installation ab (indem sie ein speziell gestaltetes ungültiges VBS aufruft), um zu verhindern, dass die Aktion auf dem System protokolliert wird. Wenn Sie die Installation außerdem mit dem Schalter /quiet starten, wird dem Benutzer nicht einmal eine Fehlermeldung angezeigt.

Fehlender Autostart

Es kommt oft vor, dass das System eine Datei speichert, die automatisch gestartet werden muss, selbst wenn die Datei selbst bereits in Vergessenheit geraten ist. Möglicherweise wurde ein Dienst fälschlicherweise entfernt – es gibt keine ausführbare Datei, aber der Registrierungseintrag bleibt bestehen, und jedes Mal, wenn Sie das System starten, versucht es erfolglos, es zu starten, und füllt das Ereignisprotokoll mit Meldungen über Fehler. Diese Situation kann auch genutzt werden, um Ihre Kräfte zu erweitern. Der erste Schritt besteht darin, alle verwaisten Datensätze zu finden. Verwenden Sie beispielsweise das Dienstprogramm autorunsc von Sysinternals.

Autorunsc.exe -a | findstr /n /R „Datei\ nicht\ gefunden“

Danach bleibt Ihnen, wie Sie vermutet haben, nur noch, Ihren Kandidaten irgendwie an die Stelle der fehlenden Akte zu stecken.

Die Magie der Zitate

Ja, ja, Anführungszeichen können in SQL-Abfragen nicht nur einen grausamen Scherz spielen, indem sie Injektionen ermöglichen, sondern auch dabei helfen, Privilegien zu erhöhen. Das Problem ist ziemlich alt und seit NT-Zeiten bekannt. Der Punkt ist, dass die Pfade zu den ausführbaren Dateien einiger Dienste nicht in Anführungszeichen gesetzt sind (z. B. ImagePath=C:\Programme\Gemeinsame Dateien\Network Associates\McShield\McShield.exe) und Leerzeichen darin enthalten sind Weg. Wenn der Angreifer in diesem Fall eine Datei erstellt, die neue Administratoren zum System hinzufügt oder andere Aktionen ausführt, und sie C:\Program Files\common.exe nennt, wird der Dienst beim nächsten Start als normal angezeigt. exe, die gestartet wird, und der verbleibende Teil des Pfads wird als Argument(e) verwendet. Es ist klar, dass ein unprivilegierter Benutzer nichts in die Programmdateien einfügen kann, aber die ausführbare Datei des Dienstes kann sich in einem anderen Verzeichnis befinden, das heißt, der Benutzer hat die Möglichkeit, seine eigene Datei einzufügen.

Um diese Technik nutzen zu können, müssen Sie einen anfälligen Dienst finden (der im Pfad zu seiner Binärdatei keine Anführungszeichen verwendet). Dies geschieht wie folgt:

Wmic-Dienst erhält Name, Anzeigename, Pfadname, Startmodus |findstr /i „auto“ |findstr /i /v „c: \windows\\“ |findstr /i /v „““

Allerdings erfordert dies unter XP Administratorrechte, daher ist es dort besser, die folgende Methode zu verwenden: Rufen Sie eine Liste der Dienste ab – sc query , und sehen Sie sich dann die Informationen für jeden Dienst an – sc qc servicename .

Alles nach Plan

Ein weiterer Mechanismus, der dabei helfen kann, Rechte zu erhöhen und der normalerweise vergessen wird, ist der Taskplaner. Mit dem Dienstprogramm schtasks können Sie Aufgaben bestimmten Ereignissen zuweisen. Am interessantesten sind für uns ONIDLE, ONLOGON und ONSTART. Wie der Name schon sagt, wird ONIDLE jedes Mal ausgeführt, wenn der Computer inaktiv ist, ONLOGON und ONSTART – wenn sich der Benutzer anmeldet bzw. wenn das System startet. Somit kann jedem der Ereignisse eine eigene Aufgabe zugeordnet werden. Kopieren Sie beispielsweise beim Systemstart eine bösartige Binärdatei/einen Keylogger/... irgendwohin und führen Sie sie aus. Wenn sich Benutzer anmelden, führen Sie einen Kreditkarten-Dumper aus. Kurz gesagt, alles ist nur durch Ihre Vorstellungskraft und die anstehende Aufgabe begrenzt.

Tricks mit Berechtigungen

Dateiberechtigungen sind normalerweise der erste Schutz, der uns daran hindert, unsere Privilegien zu erweitern. Es wäre verlockend, einfach eine Systemdatei zu überschreiben (z. B. dieselbe sethc.exe, die ganz am Anfang des Artikels erwähnt wurde) und sofort Systemprivilegien zu erlangen. Aber das sind alles nur Träume; tatsächlich haben wir nur die Erlaubnis, es zu lesen, was uns absolut nichts gibt. Allerdings sollte man nicht die Nase hängen lassen, denn auch bei Genehmigungen läuft nicht alles so glatt – hier wie anderswo gibt es Fallstricke, deren Kenntnis es einem ermöglicht, das Unmögliche möglich zu machen.

Eines der durch diesen Mechanismus geschützten Systemverzeichnisse ist aus Sicht der Rechteausweitung besonders interessant: Programme. Unprivilegierten Benutzern wird dort der Zugriff verwehrt. Es kommt jedoch manchmal vor, dass Installationsprogramme während des Installationsvorgangs Dateiberechtigungen falsch festlegen, was dazu führt, dass allen Benutzern uneingeschränkter Zugriff auf ausführbare Dateien gewährt wird. Was daraus folgt – Sie haben es bereits erraten.

Eine weitere Einschränkung besteht darin, dass ein Normalsterblicher nicht in das Stammverzeichnis der Systemfestplatte schreiben darf. Wenn jedoch beispielsweise unter XP ein neues Verzeichnis im Stammverzeichnis der Festplatte erstellt wird, erhält die Gruppe BUILTIN\Users die Berechtigungen FILE_APPEND_DATA und FILE_WRITE_DATA (auch wenn der Besitzer des Ordners ein Administrator ist):

BUILTIN\Benutzer:(OI)(CI)R BUILTIN\Benutzer:(CI)(spezieller Zugriff:) FILE_APPEND_DATA BUILTIN\Benutzer:(CI)(spezieller Zugriff:) FILE_WRITE_DATA

Bei den „Sieben“ passiert fast das Gleiche, nur die Gruppe AUTHENTIFIZIERTE BENUTZER erhält die Erlaubnis. Wie kann dieses Verhalten zum Problem werden? Es ist nur so, dass sich einige Anwendungen außerhalb geschützter Verzeichnisse installieren, was das Ersetzen ihrer ausführbaren Dateien erleichtert. Ein solcher Vorfall ereignete sich beispielsweise beim Metasploit Framework im Fall seiner Mehrbenutzerinstallation. Dieser Fehler wurde in Version 3.5.2 behoben und das Dienstprogramm in die Programme verschoben.


So suchen Sie nach solchen Verzeichnissen/Dateien

Das Auffinden eines Verzeichnisses mit falschen Berechtigungen ist bereits die halbe Miete. Sie müssen es jedoch zuerst finden. Dazu können Sie die folgenden beiden Tools verwenden: AccessChk und Cacls/ICacls. Um „schwache“ Verzeichnisse mit AccessChk zu finden, benötigen Sie diese Befehle:

Accesschk.exe -uwdqs Benutzer c:\ accesschk.exe -uwdqs „Authentifizierte Benutzer“ c:\

Um nach Dateien mit „schwachen“ Berechtigungen zu suchen, verwenden Sie Folgendes:

Accesschk.exe -uwqs Benutzer c:\*.* accesschk.exe -uwqs „Authentifizierte Benutzer“ c:\*.*

Das Gleiche kann mit Cacls/ICacls gemacht werden:

Cacls „c:\Programme“ /T | findstr-Benutzer

Tricks mit Dienstleistungen

Eine weitere Möglichkeit, im System aufzusteigen, besteht darin, Fehlkonfigurationen und Servicefehler auszunutzen. Wie die Praxis zeigt, können nicht nur Dateien und Ordner, sondern auch im System laufende Dienste falsche Berechtigungen haben. Um diese zu erkennen, können Sie das AccessChk-Dienstprogramm des bekannten Mark Russinovich verwenden:

Accesschk.exe –uwcqv *

Es wird sehr ermutigend sein, die Berechtigung SERVICE_ALL_ACCESS für authentifizierte Benutzer oder Hauptbenutzer zu sehen. Aber auch Folgendes kann als großer Erfolg gewertet werden:

  • SERVICE_CHANGE_CONFIG – wir können die ausführbare Datei des Dienstes ändern;
  • WRITE_DAC – Berechtigungen können geändert werden, was dazu führt, dass die Berechtigung SERVICE_CHANGE_CONFIG erhalten wird;
  • WRITE_OWNER – Sie können Eigentümer werden und Berechtigungen ändern;
  • GENERIC_WRITE – erbt Berechtigungen SERVICE_CHANGE_CONFIG ;
  • GENERIC_ALL – erbt die Berechtigungen SERVICE_CHANGE_CONFIG.

Wenn Sie feststellen, dass eine (oder mehrere) dieser Berechtigungen auf unprivilegierte Benutzer festgelegt sind, erhöhen sich Ihre Chancen auf eine Ausweitung Ihrer Berechtigungen erheblich.

Wie erhöhen?

Nehmen wir an, Sie haben einen geeigneten Dienst gefunden und es ist Zeit, daran zu arbeiten. Dabei hilft das Konsolen-Utility sc. Zuerst erhalten wir vollständige Informationen über den Dienst, an dem wir interessiert sind, sagen wir, es ist upnphost:

Sc qc upnphost

Lassen Sie es uns mit demselben Dienstprogramm konfigurieren:

Sc config vulnsrv binpath= „net user john hello /add && net localgroup Administrators john /add“ type= interagieren sc config upnphost obj= „.\LocalSystem“ passwort=““

Wie Sie sehen, wird beim nächsten Start des Dienstes anstelle seiner ausführbaren Datei der Befehl net user john hello /add && net localgroup Administrators john /add ausgeführt, wodurch ein neuer Benutzer john mit dem Passwort hello zum System hinzugefügt wird. Es bleibt nur noch ein manueller Neustart des Dienstes:

Net stop upnphost net start upnphost

Das ist die ganze Magie.

Was ist das Ergebnis?

Es war einmal, als ich einen Zeitschriftenartikel las, in dem grundlegende Techniken zur Eskalation von Berechtigungen in Windows beschrieben wurden. Ich habe damals nicht viel Wert darauf gelegt, aber die Theorie blieb in meinem Kopf hängen und hat mir einmal sehr weitergeholfen. Ich hoffe also, dass Sie in diesem Artikel etwas Neues für sich finden, das Ihnen eines Tages dabei helfen wird, eine weitere Hürde zu überwinden.

Heute werden wir über die Eskalation von Windows-Berechtigungen sprechen. Sie erfahren, wie ein Angreifer seine Privilegien ausweiten kann und wie Sie sich davor schützen können.

Alle Angaben dienen ausschließlich Informationszwecken. Weder die Herausgeber der Website noch der Autor des Artikels haften für deren missbräuchliche Verwendung.

Erweitern Sie Ihre Privilegien mit BeRoot

Die meisten Methoden zur Erhöhung von Berechtigungen sind mit Fehlern in der Konfiguration der installierten Software verbunden, sei es beim Pfad zur ausführbaren Datei des Dienstes, der nicht in Anführungszeichen gesetzt ist und ein Leerzeichen enthält (diese Situation wird von Windows recht interessant gehandhabt) oder falsch Rechte für das Verzeichnis mit der Anwendung festlegen.

Der Mensch ist ein faules Wesen und möchte dies nicht jedes Mal manuell überprüfen. Daher musste früher oder später ein Tool auf den Markt kommen, das diese Routine automatisiert.

Sekundäres Anmeldehandle

Ein weiterer interessanter Trick ist die Nutzung des Secondary Login-Dienstes. Mit diesem Dienst können Sie Programme, Microsoft Management-Konsolen und Elemente der Systemsteuerung als Administrator ausführen, auch wenn der aktuelle Benutzer nur zur Gruppe „Benutzer“ oder „Hauptbenutzer“ gehört. Der Punkt ist, dass dieser Dienst beim Erstellen neuer Prozesse keine Handles löscht.

Wichtig für uns ist, dass nahezu alle Windows-Versionen (x32 und x64) anfällig für diese Schwachstelle sind: von Vista bis Windows 2012 Server. Es gibt aber auch Einschränkungen: Um die Berechtigungen erfolgreich zu erweitern, müssen auf dem System PowerShell 2.0 oder höher sowie zwei oder mehr CPU-Kerne installiert sein. Metasploit Framework verfügt über ein spezielles Modul: Exploit/windows/local/ms16_032_secondary_logon_handle_privesc.

Seine Verwendung impliziert, dass wir bereits über eine Meterpreter-Sitzung verfügen, die wir in den Parametern angeben müssen: set SESSION 1. Nun, im Falle einer erfolgreichen Ausnutzung werden wir eine weitere Sitzung mit erhöhten Rechten haben.

\ pentestlab > wmic qfe list | finde „3139914“

Abschluss

Egal wie sehr ich versuche, alle möglichen Optionen zur Erhöhung der Privilegien in einem Artikel unterzubringen, es ist unwahrscheinlich, dass dies funktioniert, oder der Artikel wird gigantische Ausmaße annehmen und für Sie uninteressant werden. Es ist also an der Zeit, Schluss zu machen. Wir werden in einem separaten Artikel über den Schutz sprechen.