Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi [Vista] Prozess mit Low-Integrity-Rechten starten? (https://www.delphipraxis.net/104217-%5Bvista%5D-prozess-mit-low-integrity-rechten-starten.html)

sECuRE 29. Nov 2007 11:46


[Vista] Prozess mit Low-Integrity-Rechten starten?
 
Hi,

um auf die Cookies des Internet Explorers zugreifen zu können, muss man einen Prozess mit Low-Integrity-Rechten starten, sofern ich die MSDN richtig verstanden habe. Allerdings bereitet mir das Portieren des C-Codes, der als Beispiel in der MSDN angegeben wurde, leichte Schwierigkeiten, da die entsprechenden Konstanten für Vista wohl gar nicht zur Verfügung stehen (und laut Google noch niemand ein ähnliches Problem hatte).

Besagter Code lässt sich hier finden:
http://msdn.microsoft.com/library/de...tectedmode.asp (recht weit unten, der Sample-Code)

Besonders für TOKEN_MANDATORY_LABEL TIL = {0}; und TokenIntegrityLevel (als Argument bei SetTokenInformation) sind wohl noch nicht portiert. Die Funktionen an sich (SetTokenInformation etc...) sind anscheinend alle verfügbar.

Was tun? Woher kriegt man entsprechende Informationen?

Danke schonmal

OregonGhost 29. Nov 2007 12:17

Re: [Vista] Prozess mit Low-Integrity-Rechten starten?
 
Ein Blick in die Jedi Security Library (oder wie die heißt) vom Dezipaitor wäre in diesem Zusammenhang sicherlich einen Versuch wert.

sECuRE 29. Nov 2007 17:19

Re: [Vista] Prozess mit Low-Integrity-Rechten starten?
 
Hi,

Zitat:

Zitat von OregonGhost
Ein Blick in die Jedi Security Library (oder wie die heißt) vom Dezipaitor wäre in diesem Zusammenhang sicherlich einen Versuch wert.

Danke, das hat mich weiter gebracht. Der Code an sich funktioniert nun.


Blöderweise funktioniert FindFirstURLCacheEntry immer noch nicht richtig - es sucht einfach im falschen Pfad (%APPDATA%\Internet Explorer statt %APPDATA%\Microsoft\Windows\Internet Explorer). Muss man das Behandeln der Cookies tatsächlich selbst in die Hand nehmen?

Danke schonmal

sakura 29. Nov 2007 21:04

Re: [Vista] Prozess mit Low-Integrity-Rechten starten?
 
Aus Interesse, würdest Du Deine Ergebnisse bitte posten - mich interessiert das mal rein so :)

...:cat:...

sECuRE 30. Nov 2007 11:04

Re: [Vista] Prozess mit Low-Integrity-Rechten starten?
 
Hi,

Zitat:

Zitat von sakura
Aus Interesse, würdest Du Deine Ergebnisse bitte posten - mich interessiert das mal rein so :)

Na klar:
Delphi-Quellcode:
function ConvertStringSidToSid(StringSid: PWideChar; var Sid: PSID): Boolean; stdcall; external 'advapi32.dll' name 'ConvertStringSidToSidW';

procedure VistaLowerPrivileges;
var pIntegritySid: PSID;
    processToken, newToken: cardinal;
    MandatoryLabel: TOKEN_MANDATORY_LABEL;
begin
  if (OpenProcessToken(GetCurrentProcess, MAXIMUM_ALLOWED, processToken)) then begin
    if (ConvertStringSidToSid(PWideChar(WideString('S-1-16-4096')), pIntegritySid)) then begin
      MandatoryLabel.Label_.Sid:=pIntegritySid;
      MandatoryLabel.Label_.Attributes:=SE_GROUP_INTEGRITY;
      if (SetTokenInformation(processToken, Windows.TTokenInformationClass(TokenIntegrityLevel),
          @MandatoryLabel, SizeOf(PTokenMandatoryLabel)+GetLengthSid(pIntegritySid))) then begin
        ShowMessage('Privileges lowered');
      end;
    end;
  end;
end;
Das setzt nun die Privileges runter (low integrity), für den ganzen Prozess. Ich denke, via TThread könnte man das nur für einen Thread machen, aber da ich momentan ohnehin noch im Proof-of-concept-Status bin, hab ich das noch nicht implementiert.

Benötigt wird übrigens JwaVista.pas aus diesem JEDI Security / WinAPI-Projekt, was im Thread erwähnt wurde. Siehe http://www.delphipraxis.net/internal...t.php?p=803238

Um zum eigentlichen Problem zu kommen:
FindFirstURLCacheEntry funktioniert nicht. Mittels Process Explorer (www.sysinternals.com) sieht man, dass die API-Funktion nicht auf die "Low-Pfade" zurückgreift, die der IE nutzt.

cu

Luckie 30. Nov 2007 11:40

Re: [Vista] Prozess mit Low-Integrity-Rechten starten?
 
Zitat:

Zitat von sECuRE
Um zum eigentlichen Problem zu kommen:
FindFirstURLCacheEntry funktioniert nicht. Mittels Process Explorer (www.sysinternals.com) sieht man, dass die API-Funktion nicht auf die "Low-Pfade" zurückgreift, die der IE nutzt.

Erstell für eine neue Frage bitte einen neuen Thread.

sECuRE 30. Nov 2007 11:52

Re: [Vista] Prozess mit Low-Integrity-Rechten starten?
 
Zitat:

Zitat von Luckie
Erstell für eine neue Frage bitte einen neuen Thread.

OK, Siehe http://www.delphipraxis.net/internal...t.php?p=813587


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:25 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