AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Konzept: UAC 'Sicher' umgehen / Dienstesteuerung: RFC
Thema durchsuchen
Ansicht
Themen-Optionen

Konzept: UAC 'Sicher' umgehen / Dienstesteuerung: RFC

Ein Thema von Phoenix · begonnen am 2. Sep 2007 · letzter Beitrag vom 26. Feb 2008
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#1

Konzept: UAC 'Sicher' umgehen / Dienstesteuerung: RFC

  Alt 2. Sep 2007, 20:23
Jo, ich bastel gerade an einem kleinen Tool zur Produktivitätssteiergung, und ich hätte da gerne etwas Feedback.

Man nehme folgendes als gegeben hin:
Plattform: Vista x64 (Ultimate)
Installierte Datenbanken: MySQL, SQL Server 2005 Express, Oracle 10g XE, Firebird 2.0.1.

Alle Datenbanken laufen als Dienst. Aber - das ist ja allgemein bekannt - man braucht nicht immer alle Datenbanken gleichzeitig. Auf meiner alten XP-Kiste hatte ich Batch-Files, die die Services starten und beendet haben. So konnte ich mit einem Doppelklick die nötige Datenbank hochfahren. (Ja, ich gestehe zu meiner Schande, dort war mein Entwickler-Account lokaler Admin).

Unter Vista schlägt da aber nun die UAC in diese Kerbe. Das heisst, bei meinen Batch-Files müsste ich diese als Admin ausführen und dann jedesmal die UAC bestätigen. Ergo: Ich will das ein wenig vereinfachen.

Meine aktuelle Idee ist folgende:

Ich schreibe einen Service, der diese Dienste startet und beendet. Die nötigen Rechte hat ein System-Dienst dazu ja.

Dazu schreibe ich ein Gui, welches im Userkontext läuft. Dieses Gui kommuniziert mit dem Service und gibt ihm Kommandos, welcher Dienst gestartet / gestoppt / pausiert / fortgesetzt werden soll.

Als Kommunikationsmittel würde ich zur Zeit Named Pipes bevorzugen (da gibts schon nettes Zeug in der WCF, da muss man nicht mehr viel selber machen).

Was ich jedoch nicht möchte ist, dass dieses Tool dazu verwendet werden kann, andere als vorher festgelegte Dienste zu steuern. Ich dachte da an ein Configfile im Dienst-Installationsverzeichnis, welches die zu steuernden Dienste auflistet - und ggf. auch auf bestimmte User einschränkt. Nur ein Benutzer, der tatsächlich Admin-Rechte auf dem jeweiligen Rechner hat, hat auch die Berechtigung ins Programme-Verzeichnis zu schreiben. Der Service liefert also auf Anfrage der GUI die Liste der erlaubten Services zurück, und diese können vom GUI aus dann gestartet / gestoppt werden.

Was haltet ihr von der Idee?
Wo seht ihr da Schwachstellen / Angriffspunkte?
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#2

Re: Konzept: UAC 'Sicher' umgehen / Dienstesteuerung: RFC

  Alt 5. Sep 2007, 10:14
*push*
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von f.siebler
f.siebler

Registriert seit: 15. Jan 2007
Ort: Hamburg
170 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Konzept: UAC 'Sicher' umgehen / Dienstesteuerung: RFC

  Alt 5. Sep 2007, 10:43
Die Idee klingt gut, aber ich denke es wird ein Problem bei der Kommunikation zwischen Benutzer und Service geben... ich kann mir nicht vorstellen, das die UAC da nicht einspringt... Wenn nicht wäre es ja ein riesen "Loch" im System. Des weiteren würde ich davon ausgehen, dass sich eine Config Datei zumindest wenn die Daten im Klartext drin stehen immer irgendwie bearbeiten lässt, was das ganze System noch unsicherer machen würde als es sowieso schon erscheint...
Aber es wäre spannend zu sehen ob es klappt...
Viele Grüße aus Hamburg
Fabian
sql-praxis.net: sql von der Theorie in die Praxis...
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#4

Re: Konzept: UAC 'Sicher' umgehen / Dienstesteuerung: RFC

  Alt 5. Sep 2007, 10:55
Hrm. Also Kommunikation User / Service geht imho immer. Eine Datenbank ist auch nur ein Service, und da kann auch jeder Benutzer mit kommunizieren, ohne dass die UAC da reinsaut. Genauso Virenscanner, die auch eine Gui haben zum aktivieren / deaktivieren. z.B. der von Avast.

Und wie willst Du eine Textdatei bearbeiten, wenn Dir das Betriebssystem die Schreibrechte auf der Partition verweigert? Ich kann - wenn ich nicht admin bin - zumindest mal keine Dateien im Programmordner verändern. Auch nicht, wenn es Textdateien sind. Also ich bin immernoch überzeugt davon, dass man mit sowas keine Sicherheitslücken einreisst
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von f.siebler
f.siebler

Registriert seit: 15. Jan 2007
Ort: Hamburg
170 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Konzept: UAC 'Sicher' umgehen / Dienstesteuerung: RFC

  Alt 5. Sep 2007, 11:14
ja... ok. bei Virenscanner klappt es ohne Probleme. Datenbanken stellen ja eine Schnittstelle (TCP Port usw.) zur Verfügung...
Bei den Textdateien meinte ich eigentlich, dass eine Anwendung die auch entsprechende Rechte hat, deinem Programm unterjubeln kann was es will... das sehe ich als Problem. Weil die Quelle dann nicht mehr zu erkennen ist...
Hast du schon mit der Entwicklung angefangen? Welche Sprache willst du verwenden?
Viele Grüße aus Hamburg
Fabian
sql-praxis.net: sql von der Theorie in die Praxis...
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#6

Re: Konzept: UAC 'Sicher' umgehen / Dienstesteuerung: RFC

  Alt 5. Sep 2007, 11:26
Hrm. Also wenn ein fremdes Programm die entsprechenden Rechte hat, dann kann es Schlimmeres anstellen, als meinem Tool irgendwelche Dienste unterzujubeln, die der User dann beenden / starten darf. Zum Beispiel diese Dienste gleich selber deaktivieren *g*.

So richtig angefangen habe ich noch nicht, das gibt aber auf jeden Fall ein .NET Projekt - wohl in Chrome.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von f.siebler
f.siebler

Registriert seit: 15. Jan 2007
Ort: Hamburg
170 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Konzept: UAC 'Sicher' umgehen / Dienstesteuerung: RFC

  Alt 5. Sep 2007, 11:30
ich bin gespannt...
Viele Grüße aus Hamburg
Fabian
sql-praxis.net: sql von der Theorie in die Praxis...
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Konzept: UAC 'Sicher' umgehen / Dienstesteuerung: RFC

  Alt 6. Sep 2007, 11:52
Zitat von Phoenix:
So richtig angefangen habe ich noch nicht, das gibt aber auf jeden Fall ein .NET Projekt - wohl in Chrome.
Jupp, klingt nach der klassischen IPC (Pipe) Lösung für .Net Remoting.[1]
Allerdings würde ich höllisch aufpassen was man wie welchem User erlauben soll.
Du kannst in deinem Service prüfen welche Rechte der User hat, ob er Admin ist zum Beispiel.
Und erst dann würde ich es gestatten weitere Dienste hinzuzufügen oder vielleicht sogar nur für Admins die Möglichkeit geben zur bestimmen wer welche Dienste starten/beenden/auf auto setzen darf.
Ein Normalsterblicher kann dann nur das was ihm der Admin erlaubt hat und somit ist es nur der Admin, der die Sicherheit einreißen lassen kann.

[1] WCF wäre kompletter Blödsinn.
WCF braucht .Net 3.0, wobei schon Remoting mehr als gut genug dafür wäre.
Außerdem könnte die App auch für andere Win-Versionen als Vista benutzt werden, mit einem klitzekleinem bisschen dynamischen Entscheidungen könntest du es sogar für Linux und Linux Deamons laufen lassen.
(Sogar von einem Win client aus Linux deamons hoch/runterfahren und vice versa)
Robert Giesecke
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#9

Re: Konzept: UAC 'Sicher' umgehen / Dienstesteuerung: RFC

  Alt 6. Sep 2007, 12:04
Es geht drum, bestimmte Dienste beenden / starten / pausieren / neu starten zu lassen. Nix mit Dienste hinzufügen oder so. Von daher schonmal Entwarnung.

Es soll eine Konfiguration geben, die nur ein Admin bearbeiten kann (Config-File im Service-Anwendungsverzeichnis). Wer Admin ist, darf da rein schreiben. Wer nicht Admin ist, darf nix ändern. In der Config steht drin, welcher User welche Dienste handeln darf. Somit kann nur ein Admin bestimmen, welcher User welche Dienste stoppen können darf. Ausser er gibt dem User Schreibrechte in dem Anwendungsverzeichnis.

@WCF: Ich wills aber mal ausprobieren

Ne normale Named Pipe würde auch reichen. Aber das ist halt ein Stream, da muss ich mich um den Content selber kümmern. Bei WCF kann ich einen Service anbieten, der alle erlaubten Dienste zurückliefert und dann ein paar Methoden zum starten / stoppen etc. anbietet.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#10

Re: Konzept: UAC 'Sicher' umgehen / Dienstesteuerung: RFC

  Alt 6. Sep 2007, 12:11
Zitat von Phoenix:
Es geht drum, bestimmte Dienste beenden / starten / pausieren / neu starten zu lassen. Nix mit Dienste hinzufügen oder so. Von daher schonmal Entwarnung.

Es soll eine Konfiguration geben, die nur ein Admin bearbeiten kann (Config-File im Service-Anwendungsverzeichnis). Wer Admin ist, darf da rein schreiben. Wer nicht Admin ist, darf nix ändern. In der Config steht drin, welcher User welche Dienste handeln darf. Somit kann nur ein Admin bestimmen, welcher User welche Dienste stoppen können darf. Ausser er gibt dem User Schreibrechte in dem Anwendungsverzeichnis.
Das meinte ich mit "Hinzufügen", also das hinzufügen in der Liste von Diensten für die user, nicht von Diensten im System. (Die könnte man ja sonst als Admin selbst deaktiviert in Windows registrieren.

Zitat:
Ne normale Named Pipe würde auch reichen. Aber das ist halt ein Stream, da muss ich mich um den Content selber kümmern. Bei WCF kann ich einen Service anbieten, der alle erlaubten Dienste zurückliefert und dann ein paar Methoden zum starten / stoppen etc. anbietet.
Hast du schonmal mit Remoting gearbeitet? Remoting erlaubt dir, ähnlich wie DCOM, client aktivierte Serverobjekte zu haben. Das heißt du kannst eine "Verbindung" öffnen, die eine Liste von verfügbaren Diensten hat, und auf diesen Diensten führst du die Methoden Start, Restart, ... aus.
Im Server liegt dann die wirkliche Implementierung der Klassen und die machen dann das was du ihnen sagst.
WCF ist eher vergleichbar mit Webservices, nur dass du bei der Serialisierung und Übertragung mehr Freiheiten hast.
Robert Giesecke
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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:35 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