Administratorrechte programmieren
-
Mach ich sicherlich nicht. Dafür gibt es google oder die Suchfunktion hier.
-
Direkt kann man sowas nicht sagen. Man kann ja als "normaler" Benutzer nicht einfach einen Prozess als Adminuser erstellen ohne das Passwort zu haben. Wär ja ziemlich unsicher.
Der einzige User der das kann, ist der System-User oder mit ein paar Tricks ein Benutzer mit Adminrechten bzw. ein Benutzer der das SE_CREATE_TOKEN_NAME Privileg besitzt.Der Benutzer, der dein Programm starten kann aber ein Prozess unter einem anderen Namen starten. Natürlich mit dessen Passwort.
-
@ScriptGod: Ich glaube wir meinen beide das selbe.
-
Das Passwort is ja kein Problem, das hab ich ja. Das läuft ja auf meinem Rechner --> Ich hab auch das Adminpasswort. Ich brauch nur was, mit dem ich dem Os das Passwort geben kann und das Prog dafür Adminrechte "bekommt"(ihr wisst ja was ich meine)
MfG Red
-
Red{C++} schrieb:
Das Passwort is ja kein Problem, das hab ich ja. Das läuft ja auf meinem Rechner --> Ich hab auch das Adminpasswort. Ich brauch nur was, mit dem ich dem Os das Passwort geben kann und das Prog dafür Adminrechte "bekommt"(ihr wisst ja was ich meine)
MfG Red
Genau da liegt das Problem...
Die Administrator-Rechte (oder Rechte allgemein) werden durch ein Token repräsentiert, das der Prozess besitzt. Ein neues Token zu erstellen oder den Benutzer eines Tokens zu ändern, hat standardmäßig nur der "System"-User. CreateProcessAsUser rufte deshalb intern einen Dienst auf (Diensete laufen ja unter dem "System"-User) dieser erstellt dann das Token und den Prozess.
Solltest du aber einstellen, dass der User auch dieses Rechte besitzt, kannst du mit LogonUser ein Token erstellen und dieses setzen. Dabei schalltest du aber sämtliche Sicherheitsvorkehrungen für den User ab. Den mit den internen APIs kann man auch ein Token erstellen ohne das Passwort zu kennen. Dadurch kann dann der User die Identität aller anderen User annehmen. Deshalb ist das normalweise auf den "System"-User beschrängt.
-
OK, danke für alle Antworten!
Ich kapier jetzt das Prinzip auf jeden Fall mal.
Ich probier einfach so lange bis es klappt.NfG Red
-
ScriptGod das interressiert mich jetzt aber, also es kann jedes Programm egal unter welchen Rechten es läuft sich ein Token "besorgen" mit welchem man uneingeschränkten Zugriff hat?
-
SirLant schrieb:
ScriptGod das interressiert mich jetzt aber, also es kann jedes Programm egal unter welchen Rechten es läuft sich ein Token "besorgen" mit welchem man uneingeschränkten Zugriff hat?
nein, nur mit Debug-Rechten kann man sich ein System-Token hohlen
-
ScriptGod schrieb:
SirLant schrieb:
ScriptGod das interressiert mich jetzt aber, also es kann jedes Programm egal unter welchen Rechten es läuft sich ein Token "besorgen" mit welchem man uneingeschränkten Zugriff hat?
nein, nur mit Debug-Rechten kann man sich ein System-Token hohlen
Ich kann doch auch als Gast in den Debug-Mode wechseln, nur habe ich eben weniger Rechte als nen Administrator im Debug-Mode
-
Debug-Mode und Debug-Recht sind 2 verschiedene Sachen, unter Windows hat normalerweise, soviel ich weiß, standardmäßig nur der Administrator das Recht Prozesse zu debuggen. Zumindest bei Prozesse die nicht vom User selbest gestartet werden.
Der Benutzer muss das Recht dazu haben einen System-Process (z.B. winlogon) mit RPROCESS_DUP_HANDLE Recht zu öffnen. Dazu ist das Debug-Recht notwendig.