[Administratorübersicht] Was ist, wenn das Programm Administratorrechte benötigt und Sie dies nicht tun?


(c) Vasya Lozhkin.


Leider ist in der Arbeit des Systemadministrators nein, nein, und Sie müssen den Benutzern erlauben, jede Software mit Administratorrechten auszuführen. In den meisten Fällen handelt es sich dabei um seltsame chinesische Programme für die Arbeit mit Geräten. Es gibt aber auch andere Situationen wie die berüchtigte bnk.exe.


Dem Benutzer Administratorrechte zu erteilen, um das Problem schnell und einfach zu lösen, verstößt gegen die Standards der Informationssicherheit. Sie können ihm natürlich einen separaten Computer geben und ihn in ein isoliertes Netzwerk stellen, aber - es ist teuer und im Allgemeinen ...


Versuchen wir, Entscheidungen zu treffen, die die Ausführung des Programms ermöglichen, und den Sicherheitsbeauftragten gegenüber dem Finanzier nicht zu ärgern.


Nun, warum hast du recht?


Ein Programm kann in zwei Fällen unter bestimmten Bedingungen Administratorrechte anfordern:


  1. Wenn er Zugriff erhalten möchte, wo "reine Sterbliche" keine Dateien erstellen können, z. B. in Systemverzeichnissen.
  2. Wenn das Programm mit dem speziellen Flag "Administratorrechte erforderlich" kompiliert wurde.

Beim ersten Fall ist alles klar: Wir nehmen das wundervolle Programm von Mark Russinovich Process Monitor in die Hand, schauen, was gerade passiert und wo das Programm Einzug hält:



Wohin geht dieses 7Zip?


Den Ergebnissen der Studie zufolge erteilen wir dem Benutzer die Rechte für das gewünschte Verzeichnis oder den gewünschten Registrierungszweig.


Es ist schwieriger, wenn es sich um einen klinischen Fall handelt, und es ist nicht einfach, Rechte zu vergeben. Beispielsweise erfordert ein Programm einen starken Eingriff in den Systembetrieb, z. B. die Installation von Treibern. Dann müssen Sie sich jeden Kollektivbetrieb ausdenken, der im letzten Abschnitt des Artikels besprochen wird. Im Moment werde ich den zweiten Fall genauer behandeln - wenn das Kontrollkästchen aktiviert ist.


Um es viel zu vereinfachen, kann es in einem speziellen Manifest des Programms (übrigens sind Installer auch Programme) drei Startoptionen geben:


  • asInvoker . Das Programm startet mit denselben Rechten wie der Prozess, der es generiert hat (in der Regel handelt es sich um explorer.exe mit Benutzerrechten).
  • höchstverfügbar . Das Programm fragt nach den maximalen Berechtigungen, die dem Benutzer zur Verfügung stehen (der Administrator wird in einem Fenster aufgefordert, die Benutzerkontensteuerung zu erhöhen, der Benutzer wird dies nicht tun).
  • requireAdministrator . Für das Programm sind in jedem Fall Administratorrechte erforderlich.

Wenn der Entwickler entschieden hat, Administratorrechte einzufordern, auch wenn diese nicht benötigt werden, können Sie dies mit ein wenig Blut umgehen.


Nein, du wirst nicht recht haben


In Windows ist ab Vista der UAC-Dienst erschienen, der unter anderem für die Anforderung von Höhenprogrammen zuständig ist. Nicht alle Programme "verdauten" die Arbeit mit diesem Dienst. Daher wurde der Anwendungskompatibilitätsmechanismus des Systems verbessert, sodass Sie das Verhalten des Programms direkt festlegen können, um Rechte anzufordern oder nicht.


Der einfachste Weg, mit diesem Mechanismus zu arbeiten, ist die Verwendung von Umgebungsvariablen.


Betrachten Sie das Beispiel des Registrierungseditors. Wenn wir regedit.exe unter dem Administrator ausführen, erhalten wir eine Anfrage zur Erhöhung der Rechte:



Erhebung anfordern.


Wenn wir den Registrierungseditor von der Konsole aus starten, nachdem wir den Wert der Umgebungsvariablen __COMPAT_LAYER in Folgendes geändert haben :


set __COMPAT_LAYER=RUNASINVOKER 

Dann gibt es keine UAC-Anforderung sowie Administratorrechte für die Anwendung:



Entrechteter Registrierungseditor.


Dies kann durch Starten von Programmen mit Batchdateien oder durch Hinzufügen eines Kontextmenüs über die Registrierung verwendet werden. Weitere Informationen finden Sie unter Ausführen eines Programms ohne Administratorrechte und Umgehen der UAC-Eingabeaufforderung.


Ein konkretes Beispiel für ein solches unangenehmes Programm ist das Herunterladen von Bankklassifikatoren von 1C von der RBC-Website unter http://cbrates.rbc.ru/bnk/bnk.exe . Wenn die Aktualisierung der Klassifikatoren den Benutzern selbst überlassen bleibt und es keine Möglichkeit gibt, den Download auf bnk.zip zu ändern (und dies wird von modernem 1C unterstützt), müssen Sie sich Krücken ausdenken. Schließlich ist bnk.exe ein selbstextrahierendes Archiv, in dem aus irgendeinem Grund "Administratorrechte erforderlich" steht.


Da Verknüpfungen hier nicht funktionieren, weil 1C die Datei selbst herunterlädt und startet, müssen Sie schwere Artillerie einsetzen - das Microsoft Application Compatibility Toolkit.


Die Dokumentation für die Software ist wie gewohnt auf der offiziellen Website verfügbar. Sie können sie als Teil des Windows Assessment and Deployment Kit herunterladen. Das Lösen des Problems ist einfach.


Sie müssen das Dienstprogramm installieren, Compatibility Administrator ausführen und Application Fix in einer neuen oder vorhandenen Datenbank erstellen:



Erstellen Sie eine Anwendungskorrektur.


Name und Herausgeber spielen keine Rolle. Es kommt nur auf den Speicherort der Datei an - hier muss das eigentliche Problem bnk.exe angegeben werden (wo es tatsächlich liegen wird - es spielt keine Rolle).


Wählen Sie als Nächstes RunAsInvoker aus der Liste der Fixes aus.



Wählen Sie den gewünschten Fix aus.


Wir lassen den Rest standardmäßig, speichern Sie die Datenbank. Es sollte ungefähr so ​​aussehen:



Fix für bnk.exe erstellt.


Danach reicht es aus, die Datenbank zu installieren, indem Sie mit der rechten Maustaste darauf klicken und Installieren auswählen. Jetzt können Benutzer Bankklassifikatoren selbst laden.


Es wird schlimmer, wenn die Anwendung wirklich Administratorrechte benötigt. Dann hilft das Hinzufügen von Rechten zu Systemobjekten und Korrekturen nicht.


Okay, mach weiter so


Es scheint, dass die naheliegendste Lösung zum Starten unserer seltsamen Software die Verwendung des integrierten Dienstprogramms Runas ist. Die Dokumentation ist auf der Microsoft- Website verfügbar.


Mal sehen, was passiert.


Team:


 runas /savecred /user: "C:\Program Files\7-Zip\7zFM.exe" 

In der Tat führt RunAs 7zip mit Administratorrechten aus, fragt nach einem Kennwort und speichert es. Dann startet eine Verknüpfung mit einer solchen Startzeile 7zip ohne Frage unter dem Administrator.


)


Geben Sie das Passwort ein.


Es gibt einen wesentlichen Nachteil: Das Kennwort wird auf Systemebene gespeichert, und jetzt können Sie mit dem Befehl Runas absolut jedes Programm starten. Dies ist nicht anders als die direkte Gewährung von Administratorrechten an Mitarbeiter. Daher sollten Sie diese Lösung nicht verwenden.


Runas können jedoch nützlich sein, wenn ein Mitarbeiter das Administratorkennwort kennt, aber unter einem eingeschränkten Konto arbeitet (im Prinzip sollte dies jeder Systemadministrator tun).

Wenn wir mit Konsolenbefehlen begonnen haben, werden wir zu übergeordneten Skripten übergehen. Eine interessante Lösung wurde im Artikel „ Plankton Windows “ vorgeschlagen, in dem die oben genannten Runas mit einem js-Skript gebunden und durch einen Verschleierer geleitet wurden. Die Lösung hat ein offensichtliches Minus - das Skript kann dekodiert werden.


Eine etwas interessantere Methode in 2k20 sind die PowerShell-Funktionen und ihre Arbeit mit Kennwörtern. Weitere Informationen finden Sie im Artikel „ Kennwortschutz und Verschlüsselung in PowerShell-Skripten “.


Kurz gesagt: In PS erfolgt die Arbeit mit Kennwörtern über einen speziellen SecureString-Datentyp und ein PSCredential-Objekt. Beispielsweise können Sie das Passwort interaktiv eingeben:


 $Cred = Get-Credential 

Speichern Sie dann das Passwort in verschlüsselter Form in einer Datei:


 $Cred.Password | ConvertFrom-SecureString | Set-Content c:\pass.txt 

Und jetzt benutze diese Datei für nicht interaktives Arbeiten:


 $username = "Domain\" $pass = Get-Content C:\pass.txt | ConvertTo-SecureString $creds = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $username, $pass 

Leider kann diese Datei nur auf dem PC verwendet werden, auf dem sie erstellt wurde. Um dies zu vermeiden, können Sie einen separaten Verschlüsselungsschlüssel erstellen. Zum Beispiel so:


 $AESKey = New-Object Byte[] 32 [Security.Cryptography.RNGCryptoServiceProvider]::Create().GetBytes($AESKey) $AESKey | out-file C:\password_aes.key 

Mit diesem Schlüssel kann nun das Passwort verschlüsselt werden:


 $Cred.Password| ConvertFrom-SecureString -Key (get-content C:\password_aes.key )| Set-Content C:\pass.txt 

Und entschlüsseln:


 $pass = Get-Content C:\pass.txt | ConvertTo-SecureString -Key (get-content C:\password_aes.key) 

Leider sieht es mit der Sicherheit genauso traurig aus: Es ist nicht schwierig, ein Kennwort zu entfernen, wenn Sie Zugriff auf eine Datei mit einem Verschlüsselungsschlüssel und einem verschlüsselten Kennwort haben. Ja, Sie können eine Verschleierung hinzufügen und das Skript in .exe zusammen mit den erforderlichen Dateien kompilieren. Aber Sie müssen verstehen, dass dies die halben Sachen sind.


Einmal habe ich mein LieblingsautoIt verwendet, um solche Probleme zu lösen. Dabei habe ich mit dem RunAs- Team ein Skript kompiliert und mich gefreut ... Bis ich herausfand, dass AutoIt (insbesondere ältere Versionen) ein- oder zweimal dekompiliert wurde.

Eine weitere interessante Option kann die Verwendung zugewiesener Aufgaben sein. Wenn Sie eine geplante Aufgabe über das Administratorkonto erstellen, muss der Benutzer sie nur starten. Leider ist diese Lösung nicht für das interaktive Arbeiten mit der Anwendung geeignet.


Auf der Welt gibt es mehrere Lösungen von Drittanbietern, mit denen das Problem gelöst werden kann. Ich werde auf ein paar von ihnen eingehen.


Eines der bekanntesten Hilfsprogramme ist AdmiLink , das von Alexei Kuryakin für die Anforderungen der Kernphysik entwickelt wurde. Das Programm und die Grundsätze seiner Arbeit sind auf der offiziellen Website beschrieben . Ich erlaube mir wie immer eine kurze Beschreibung.


Das Programm besteht aus drei Modulen. AdmiLink ist ein grafisches Fenster, in dem Sie eine Verknüpfung zu der gewünschten Anwendung erstellen können (im Prinzip ist dies in einigen Fällen nur ausreichend).



Das Hauptfenster des Programms.


Zusätzlich zum direkten Erstellen einer Verknüpfung (und ja, die UAC-Anforderung kann auch unterdrückt werden) gibt es zusätzliche Funktionen wie einen Taschenrechner, ein Terminal und praktische Einstellungen für Sicherheitsrichtlinien. Mit allen Funktionen des Programms wird der Leser aufgefordert, es selbstständig herauszufinden.


Das zweite Modul heißt AdmiRun und ist ein Konsolendienstprogramm. Sie kann Anwendungen im Auftrag des Administrators ausführen und erhält als einen der Parameter eine Zeichenfolge, die über AdmiLink erstellt wurde. Der Benutzername und das Kennwort werden in der Zeile verschlüsselt, und der Pfad zum Programm ist ebenfalls beteiligt.


Auf den ersten Blick sieht alles sicher aus, aber leider ist der Programmcode geschlossen und es ist eine Frage, wie viel Sie dem Entwickler vertrauen können.


Das dritte Modul - AdmiLaunch - ist für das Starten von Fenstern in verschiedenen Modi verantwortlich und wird zum Starten von AdmiRun verwendet, wenn Sie eine Verknüpfung über AdmiLink erstellen.


Im Allgemeinen wurde die Lösung im Laufe der Jahre und Generationen von inländischen Systemadministratoren getestet. Aber ich werde eine Alternative aus dem Ausland hinzufügen.


RunAsRob ist eine interessante Software des deutschen Entwicklers Oliver Hessing. Im Gegensatz zu AdmiLink wird die Software als Dienst installiert, der unter einem privilegierten Konto (Administrator oder System) ausgeführt wird. Infolgedessen verweist die vorbereitete Verknüpfung auf den Dienst, der wiederum die angegebene Software bereits startet.


Ein Merkmal des Programms ist, dass es möglich ist, nicht nur Programme, sondern auch Ordner (einschließlich Netzwerkordner) zu autorisieren. Das Speichern der Einstellungen in der Registrierung ermöglichte das Hinzufügen von Gruppenrichtlinienvorlagen, etwa wie im Artikel „ Eintauchen in Vorlagen und Bändigen von Windows-Gruppenrichtlinienobjekten “ beschrieben. Dadurch können Einstellungen bei Bedarf direkt aus Active Directory übernommen werden.



Das Hauptfenster des Programms.


Das Programm ist auf der offiziellen Website ausführlich dokumentiert.


Dieser Autor verfügt auch über ein RunAsSpc- Programm, mit dem Sie ausführbare Dateien unter den Rechten eines anderen Benutzers ausführen und Anmeldeinformationen über eine verschlüsselte Datei übertragen können.


Ich kann nur hinzufügen, dass diese Software nur für den persönlichen Gebrauch kostenlos ist.


Beachten Sie jedoch, dass Sie mit einem Programm, das unter Administratorrechten ausgeführt wird, Unheil anrichten können. Starten Sie beispielsweise eine privilegierte Befehlskonsole über das Dialogfeld "Datei - Öffnen".



Führen Sie cmd.exe direkt im Registrierungseditor aus.


Richtlinien zum Sperren des Kontextmenüs und anderer Task-Manager, von denen einige AdmiLink konfigurieren können, tragen dazu bei, sich ein wenig zu schützen. Aber auf jeden Fall sollten Sie vorsichtig sein.


Hast du jemals seltsame Krücken gemacht? Ich schlage vor, Geschichten in den Kommentaren zu teilen.

Source: https://habr.com/ru/post/de485958/


All Articles