Hallo,
und zwar ersteinmal zu dem was ich vorhabe:
Ich möchte ein Programm schreiben, welches Grundlegend folgende Funktionen bieten soll:
1.Computerinformationen anzeigen (erledigt)
1.Verändern von Systemeinstellungen
1.Überwachen der Zugriffe auf dem PC, das heißt: Protokollieren wann ein Programm geöffnet wurde
1.Verwalten von Optionen was bei Zugriff auf den PC passieren soll (Je nach Programm, Beispielsweise: Firefox öffnen->Computer sperren)
1.Versandt einer Email (Je nach Programm)
Nun stellt sich mir aber die Frage, wie ich es am besten anstelle, ohne dauerhaft die Prozesse zu überwachen welches Programm gerade geöffnet wurde und in eine Logdatei / Datenbank die Uhrzeit sowie den Programmnamen zu speichern.
Das ist der einzige Punkt, wo ich momentan noch keinen Ansatz habe. - Alles weitere ergibt sich ja dann aus dem Punkt.
Zum Schluss soll das so eine Art Security Tool werden, das heißt: Der Benutzer kann festlegen welche Anwendungen an seinem PC gestartet werden dürfen und welche Aktion ausgeführt werden soll, wird eine Anwendung gestartet die nicht erlaubt ist.
Nun aber zurück zu meiner Frage, gibt es eine einfache Möglichkeit festzustellen dass ein Fenster geöffnet wurde?
Wissen ist nicht alles. Man muss es auch anwenden können.
PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |
Zum Schluss soll das so eine Art Security Tool werden, das heißt: Der Benutzer kann festlegen welche Anwendungen an seinem PC gestartet werden dürfen und welche Aktion ausgeführt werden soll, wird eine Anwendung gestartet die nicht erlaubt ist.
berechtigungen könntest versuchen zu setzen
ansonsten sindkernelmode hooks das einzige, was halbwegs zuverlässifg läuft.
es geht unter umständen auch usermode, aber das hat seit uac ein paar zusätzliche komplikationen und sollte man auf keinen fall in .net machen (habe es versucht mit .net und das prog hat den pc geschrottet, sobald gestartet) : ntcreateprocess hooken, da kann man auch den befehl abfangen
kernelmode geht in x64 nur eingeschränkt, wegen signierung.
Naja, ich glaub du hast ein wenig weiter gedacht als ich. Das Programm kann sich gern starten, ich möcht das nur in meinem Programm mitbekommen. Damit ich darüber das Programm wieder beenden kann und loggen kann, dass es geöffnet wurde und wann.
Möglich wäre ja der Weg alle Prozesse auszulesen und anhand des Programmnamens zu schauen, ob es vorhanden ist und dies zyklisch wiederholen. Aber dachte, da gibt es einen anderen Weg.
Wissen ist nicht alles. Man muss es auch anwenden können.
PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |
Hi inflames,
mal in eine andere Richtung gedacht:
Mit den Software-Einschränkungen mit gpedit lässt sich in gewisserweise das Starten von Programmen verhindern. Zugleich sollte dann auch ein Eintrag im Eventlog hinterlegt werden.
Vielleicht kannst du auch irgendwo einstellen, dass du gerne jeden Application-Start in den Windows-Ereignisprotokollen geloggt haben möchtest.
Mit nem .Net Tool kannst du dann auch auf solche Events warten.
Siehe EventLog-Klasse
beste Grüße
zommi
Naja, die Sache ist ja dass ich wie oben genannt noch andere Dinge vorhab. - Hab das auch noch nicht ganz ausgesponnen.
Definitiv möglich sein soll am Ende das loggen (in einer Datenbank, da ich von extern Zugriff über ein Webinterface bieten möchte), und das versenden per Email.
Mir kam da jedoch gerade noch eine Idee. - Die das ganze vereinfacht und nicht zyklisch abfragen muss, ob etwas zu den Prozessen hinzukam.
Ich könnte die Mauseingaben per Hook abfangen, und sofern klicks ausgeführt wurden die Prozessliste nach Prozessen ≥ Klickzeitpunkt durchgehen.
Was ich mir allgemein vorgestellt hatte was bei Prozessstart passiert ist folgendes:
Es gibt 3 Stati, die ein Programm haben kann, Allowed, DefinitlyUnallowed (PC wird gesperrt), AllowedByPassword(Es wird nach einem Passwort gefragt, ist dieses falsch, wird der PC gesperrt).
Bei ersterem, wird keine Aktion ausgeführt, der Benutzer kann standartmäßig weiterarbeiten. DefinitlyUnallowed löst das sperren des PC, das schreiben in die Datenbank sowie eine Email aus.
AllowedByPassword arbeitet ähnlich, allerdings wird die Email nur bei falscher Passwort Eingabe versandt.
Allowed muss nicht explizit angegeben werden über die Administrationsoberfläche, gilt also ersteinmal für alle Programme.
AllowedByPassword kann durch den Administrator aktiviert werden und dieser setzt auch ein Passwort für die Anwendung. - Dieses wird in der Datenbank hinterlegt.
DefinitlyUnallowed wird ebenfalls durch den Administrator gesetzt, Passwort gibt es keines, da der PC direkt gesperrt wird.
Außerdem gibt es für den Administrator die Möglichkeit den Schutz zu aktivieren / deaktivieren.
Mal sehen, ob es so klappt wie ich es mir gerade ausgemalt habe.
Nochmal kurz gefasst:
Falls jemand eine andere / bessere Idee hat bin ich natürlich offen dafür. 😃
// Edit:
Hallo Zommi, erst jetzt habe ich deinen Beitrag richtig verstanden, dass wäre natürlich auch eine Möglichkeit.
Werd mir das Programm mal ansehen, und schauen ob sich darauf etwas aufbauen lässt.
Wissen ist nicht alles. Man muss es auch anwenden können.
PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |
Darf man fragen welchen Zweck dein Programm nachher erfüllen soll (also jetzt nicht aus technischer Sicht)?
Einen Benutzer Programme starten zu lassen um sie nachher wieder zu beenden und dann jemanden per Mail darauf aufmerksam zu machen scheint mir jetzt nicht so sinnvoll außer du möchtest eine Art "Honeypot" bauen.
Die nicht erlaubten Anwendungen gar nicht erst zu installieren oder mit Gruppenrichtlinien zu Arbeiten würde in meinen Augen mehr Sinn ergeben.
Da hast du natürlich recht, allgemein würden Gruppenrichtlinien mehr Sinn ergeben.
Lach ein Honeypot könnte nach meinen Anforderungen fast passen. - Nur dass ich keine Angriffe protokollieren möchte und die Rechner nicht ungenutzt sind, sondern normalerweise wirklich durch Benutzer gesteuert werden & deren aktivitäten geloggt werden sollen.
Wobei ich nun nach deinem Post auch nicht mehr den Sinn darin sehe, soetwas wirklich zu entwickeln. - Denn an und für sich hast du für mich das beste gegenargument geliefert. - Gruppenrichtlinien sollten völlig ausreichen.
Wissen ist nicht alles. Man muss es auch anwenden können.
PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |
Nur dass ich keine Angriffe protokollieren möchte und die Rechner nicht ungenutzt sind, sondern normalerweise wirklich durch Benutzer gesteuert werden & deren aktivitäten geloggt werden sollen.
Na ich finde das alles nicht so prickelnd. Wenn man nun auch noch am Rechner komplett ausspioniert wird, durch Logging der aktivitäten, können die einem wirklich gleich einen Chip in Arm hauen. So haben die dann wenigstens auch gleich eine Lückelose kontrolle, wo zu welchen Zeiten und wie lange man sich aufgehalten hat.
Bei so einem Arbeitgeber, würde ich nicht arbeiten, welcher mich da überwachen will.
Grüße Stephan
Hallo,
Allowed muss nicht explizit angegeben werden über die Administrationsoberfläche, gilt also ersteinmal für alle Programme.
abgesehen von der in mehr als einer Hinsicht fragwürdigen Überwachung ist das natürlich auch Unsinn. Zumindest solange der Status anhand des Prozessnamens bzw. dem der .Exe ermittelt wird.