Einzelnen Beitrag anzeigen

Benutzerbild von sECuRE
sECuRE

Registriert seit: 10. Apr 2003
Ort: Heidelberg
360 Beiträge
 
Delphi 7 Professional
 

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

  Alt 30. Nov 2007, 11:04
Hi,

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.dllname '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
  Mit Zitat antworten Zitat