AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Lokal Adminrechte erlangen

Ein Thema von Hobbycoder · begonnen am 30. Apr 2020 · letzter Beitrag vom 1. Mai 2020
Antwort Antwort
Seite 3 von 3     123   
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#21

AW: Lokal Adminrechte erlangen

  Alt 30. Apr 2020, 19:51
Ganz konkret:
  • Zwei Benutzer, "localUser" und "localAdmin". Ersterer gehört nicht zur Gruppe "Administratoren", letzterer schon
  • Eine aktive Sitzung im Benutzer "localUser". Der Benutzer doppelklickt unseren Prozess
  • Der Prozess hat in seinem Manifest, wie wohl so ziemlich jeder,
    Delphi-Quellcode:
    requestedExecutionLevel
    level="asInvoker"
  • Der Prozess soll nun das Verzeichnis C:\Program Files\Watzn erstellen.

Kann er das?
asInvoker bezieht sich auf UAC, welches bekanntlich nur wenig mit Sicherheit zu tun hat (siehe auch hier).

Bei standardmäßig gesetzten Zugriffslisten (ACLs) sollte das nicht erfolgreich sein. Aaaaber, es gibt noch die UAC File Virtualization (der entsprechende Minifilter kann per fltmc unter dem Eintrag luafv gefunden werden), welche den Zugriff transparent auf einen anderen Ordner umleitet auf den der (unprivilegierte) Anwender sehr wohl Zugriff hat (UAC muß dafür natürlich aktiviert sein).

Ich weiß also noch immer nicht, ob es dir um Admin (entsprechende Benutzerrechte und Gruppenzugehörigkeit), oder um Elevation (UAC) oder um Mandatory Integrity Control (MIC) geht.

Dein Beitrag liest sich so als ginge das.
Unter der genannten Bedingung kann das gehen, ja.

Dein Delphicode sollte auch das tun was man annimmt, da sich der Admin ja über LogonUser dem System gegenüber ausweist. Kommt natürlich auf die involvierten Integrity-Level an. Sprich: zwar kann ein einzelner Thread "Admin werden", aber er unterliegt trotzdem noch MIC.

Selbst bei TeamViewer kann man das beobachten: Der Benutzer führt einen TeamViewer-QuickSupport aus. Authentifiziert sich jemand von außen mit den Kontodaten eines Administrator-Accounts startet TeamViewer sich selbst noch einmal und beendet sich dann. So kannte ich es bislang.
Genau, das klingt jetzt wiederum stark nach MIC.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#22

AW: Lokal Adminrechte erlangen

  Alt 30. Apr 2020, 20:39
Ich weiß also noch immer nicht, ob es dir um Admin (entsprechende Benutzerrechte und Gruppenzugehörigkeit), oder um Elevation (UAC) oder um Mandatory Integrity Control (MIC) geht.
Mir geht es eigentlich nur um die Frage des Themen-Erstellers.

Wir sind mittlerweile angekommen bei wilden Abkürzungen wie MIC, UAC, ACL, RID und was weiß ich noch, aber wenn es um das eigentliche Problem geht kommt wieder "kann gehen", "sollte" und "müsste".

Ich bekomme es nicht hin, ohne Neustarten des "normal doppelgeklickten" Prozesses ein Verzeichnis unter C:\Programme anzulegen. Vielleicht du? Dann könnten wir alle davon lernen.
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#23

AW: Lokal Adminrechte erlangen

  Alt 30. Apr 2020, 21:20
Wir sind mittlerweile angekommen bei wilden Abkürzungen wie MIC, UAC, ACL, RID und was weiß ich noch, aber wenn es um das eigentliche Problem geht kommt wieder "kann gehen", "sollte" und "müsste".
Wenn man mit den Sicherheitsmechanismen von Windows umgehen will, sollten diese "wilden Abkürzungen" eben geläufig sein. Ich hab ja auch absichtlich verlinkt, damit man sich notfalls schlaulesen kann.

Und ja, es kommt der Konjunktiv, weil der Fragesteller eben nicht relevante Fragen beantwortet ala UAC File Virtualization; sprich ob UAC nun aktiv ist oder nicht. Das spielt nunmal hier rein. Genauso wie MIC reinspielt, welches ja wiederum über "Elevation" mit UAC verbunden ist.

Ich bekomme es nicht hin, ohne Neustarten des "normal doppelgeklickten" Prozesses ein Verzeichnis unter C:\Programme anzulegen.
Liegt nah und weist auf MIC in Aktion hin.

Ich hab kein Windows zur Hand um das auf die Schnelle selbst zu testen, zumal ich aktuell auf Linux unterwegs bin und komplett andere Dinge im Kopf hab. Um das zu testen empfehle ich euch mal den Process Explorer zur Hand zu nehmen, da kann man die Spalten Virtualization (da geht's um die UAC File Virtualization) und Integrity Level aktivieren. Zusammen mit Process Monitor sieht man dann sehr schnell warum es nicht klappt.

Das Problem ist, daß du gleich mehrere Dimensionen mit folgender Aussage

Das Impersonate gibt dem Prozess nicht plötzlich Adminrechte. Entweder ein Prozess wird mit Adminrechten gestartet, oder ohne. Das lässt sich nicht nachträglich ändern.
total verkürzt. Und daher ja meine Frage an dich, was du unter Admin-Fähigkeiten bzw. Adminrechten verstehst.

Je nachdem was man darunter faßt, stimmt deine Aussage eben oder nicht. So allgemein stimmt die Aussage aber eben nicht.

Oder um es anders auszudrücken: deine Diagnose hat fachliche Schwächen, aber dein Fazit dürfte weiterhin gelten.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
961 Beiträge
 
#24

AW: Lokal Adminrechte erlangen

  Alt 1. Mai 2020, 13:38
Okay, ich bin durch eure Diskussion leicht verwirrt. Soll/muss/kann es jetzt gehen oder nicht?

In meinem o.g. Code hier bekomme ich ja bei korrekten Anmeldedaten (in meinem Fall vom lokalen Administrator) vom Impersonate ein True zurück, was ja nun bedeutet, dass diese Anmeldung korrekt war. Das darauf folgende ForceDirectories im Programme-Order schlägt jedoch fehl mit "Zugriff verweigert".

Heißt das jetzt, dass die Funktion Impersonate lediglich dazu verwendet werden kann ein fremden Userkontext zu laden, oder könnte man tatsächlich systemweit als dieser Benutzter handeln, sprich eben Dinge tun, die dem Administrator vorbehalten sind.

Denn das:
Öhm ... also MSDN-Library durchsuchenImpersonateLoggedOnUser gibt in der Tat dem Thread die Rechte des Nutzers dessen Identität man annimmt. Himitsu erwähnte es bereits.
widerspricht dem:
Man durch diese "Impersonation" sich als anderer Benutzer ausgeben, auf dessen Resourcen (z.B. Registry oder Dateien) zugreifen, aber die Admin-Fähigkeiten kommen dadurch nicht nach.
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.

Geändert von Hobbycoder ( 1. Mai 2020 um 13:41 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#25

AW: Lokal Adminrechte erlangen

  Alt 1. Mai 2020, 19:07
Denn das:
Öhm ... also MSDN-Library durchsuchenImpersonateLoggedOnUser gibt in der Tat dem Thread die Rechte des Nutzers dessen Identität man annimmt. Himitsu erwähnte es bereits.
widerspricht dem:
Man durch diese "Impersonation" sich als anderer Benutzer ausgeben, auf dessen Resourcen (z.B. Registry oder Dateien) zugreifen, aber die Admin-Fähigkeiten kommen dadurch nicht nach.
Nein, es widerspricht sich nicht. Beide Aussagen - wie ich in meiner (vorletzten?) Antwort herausgearbeitet habe, haben ihre Berechtigung. Sie beziehen sich auf verschiedene Aspekte.

MIC ist der Grund warum du scheiterst. Somit ist der Rat vom schönen Günter korrekt, daß du es in einen anderen Prozeß auslagern mußt, um diese "Security Boundary" zu überbrücken.

Die Frage, der bisher alle geflissentlich ausgewichen sind, ist: wie definiert ihr Adminrechte/Admin-Fähigkeiten. Denn auch mit Impersonate lassen sich durchaus noch diverse Dinge tun, die vor dem Annehmen der Adminidentität so nicht möglich gewesen wären. Daß das für die Erstellung eines Verzeichnisses an dem besagten Ort nicht reicht, hat mit MIC zu tun.

Heißt das jetzt, dass die Funktion Impersonate lediglich dazu verwendet werden kann ein fremden Userkontext zu laden, oder könnte man tatsächlich systemweit als dieser Benutzter handeln, sprich eben Dinge tun, die dem Administrator vorbehalten sind.
MIC gibt es "erst" seit Vista oder so. Davor reichte Impersonate durchaus um so gut wie alles als der jeweilige Benutzer zu machen.

Kurzfassung: starte die Erstellung des Verzeichnisses in einem anderen Prozeß mit höherem Integritätslevel. Es reicht dazu, wenn du bspw. dein Programm über eine Befehlszeilenoption nochmal selbst - diesmal als Admin auf entsprechendem Integritätslevel - startest.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
961 Beiträge
 
#26

AW: Lokal Adminrechte erlangen

  Alt 1. Mai 2020, 22:53
Danke, dass du dir nochmal die Mühe gemacht hast, dieses mir so ausführlich klar zu machen. Jetzt ist der Groschen gefallen.
Natürlich auch Dank an alle anderen.
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz