AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi [gelöst]Impersonate in TService
Thema durchsuchen
Ansicht
Themen-Optionen

[gelöst]Impersonate in TService

Ein Thema von Tonic1024 · begonnen am 21. Aug 2013 · letzter Beitrag vom 3. Sep 2013
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Tonic1024
Tonic1024

Registriert seit: 10. Sep 2003
Ort: Cuxhaven
559 Beiträge
 
RAD-Studio 2009 Ent
 
#11

AW: [gelöst]Impersonate in TService

  Alt 3. Sep 2013, 08:03
Nachmal ein Nachtrag von mir. Ich hab noch Probleme gehabt mich auf eine Samba-Freigabe zu verbinden nachdem das Impersonate erfolgreich verlaufen ist.

Windows prüft über die API nur die Korrektheit des Passworts als Hashwert, merkt es sich aber nicht in Klartext. Darum ist es ihm nicht möglich das Passwort bei der Anmeldung am Samba-Dienst zu übergeben. Kein Bug, ein "Sicherheitsfeature", dass sich gottseidank sehr leicht umgehen lässt (Was bringt das dann? ).

Will man sich mit seinem Benutzernamen an einem Server anmelden (das wird nicht nur für Samba zutreffen nehme ich an) muss man eine Konstante verwenden, die zumindest in D2k9, in der Windows.pas fehlt. So hab ich's dennoch hin bekommen:

Delphi-Quellcode:
function Impersonate(const aUser, aPass: string): Boolean;
var
  LogonType: Integer;
  LogonProvider: Integer;
  User: String;
  Pass: String;
  Token: THandle;
const
  LOGON32_LOGON_NETWORK_CLEARTEXT = 8; // Fehlt in der Windows.pas
begin
  LogonType := LOGON32_LOGON_NETWORK_CLEARTEXT; //LOGON32_LOGON_INTERACTIVE;
  LogonProvider := LOGON32_PROVIDER_DEFAULT;
  User := aUser;
  Pass := aPass;
  Result := LogonUser(PChar(User), nil {Domain}, PChar(Pass), LogonType, LogonProvider, Token);
  if Result then
    Result := ImpersonateLoggedOnUser(Token);
end;
Diese Vorgehensweise ist im MSDN dokumentiert. Dort hab ichs gefunden.

Gruß,

Toni
Der frühe Vogel fängt den Wurm, richtig.
Aber wird nicht auch der frühe Wurm vom Vogel gefressen?

Geändert von Tonic1024 ( 3. Sep 2013 um 08:07 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.013 Beiträge
 
Delphi 12 Athens
 
#12

AW: [gelöst]Impersonate in TService

  Alt 3. Sep 2013, 08:10
Kein Bug, ein "Sicherheitsfeature", dass sich gottseidank sehr leicht umgehen lässt (Was bringt das dann? ).
Sicherheit kann man immer umgehen. Ob du nun deine Haustür offen stehen lässt (was bringt dann das Schloss?) oder Samstag Vormittag auf dem Stachus den Inhalt deines PasswordSafe laut vorsingst - jedes dieser Sicherheitsfeatures funktioniert nur, wenn man es richtig einsetzt.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Tonic1024
Tonic1024

Registriert seit: 10. Sep 2003
Ort: Cuxhaven
559 Beiträge
 
RAD-Studio 2009 Ent
 
#13

AW: [gelöst]Impersonate in TService

  Alt 3. Sep 2013, 08:40
Stimmt schon. Aber würde ich jetzt mit bösen Absichten hier sitzen, hätte ich den Abschnitt im MSDN auch gefunden. Darum leuchtet mir nicht ein in wie fern das die API oder Das Betriebsystem im Ganzen jetzt sicherer gemacht hat. Aber darüber ließe sich sicher vortrefflich Tagelang diskutieren...

[Edit]Der Grundgedanke dahinter wird wohl sein dass das Passwort nicht unnötigerweise in Klartext irgendwo im Speicher steht von wo es ein böser Mensch evtl auslesen kann. Die Frage ist aber doch ob ein Haus besser geschützt ist, um bei deiner Analogie zu bleiben, wenn von vielen vorhanden Türen nur noch der Haupteingang offen steht?[/Edit]

Toni
Der frühe Vogel fängt den Wurm, richtig.
Aber wird nicht auch der frühe Wurm vom Vogel gefressen?

Geändert von Tonic1024 ( 3. Sep 2013 um 08:47 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.013 Beiträge
 
Delphi 12 Athens
 
#14

AW: [gelöst]Impersonate in TService

  Alt 3. Sep 2013, 10:05
Der Grundgedanke dahinter wird wohl sein dass das Passwort nicht unnötigerweise in Klartext irgendwo im Speicher steht von wo es ein böser Mensch evtl auslesen kann.
Genau so ist es! Die API forciert diese Sicherheit nicht, bietet sie aber an. Natürlich muss das auch an allen Stellen verwendet werden. Es macht eben keinen Sinn die Haustür zu verriegeln wenn die Terrassentür offen bleibt. Insofern definiert immer das schwächste Glied den Grad der Sicherheit.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 21:04 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