Laden...

Unerlaubte PC Zugriffe überwachen (oder verhindern)

Erstellt von inflames2k vor 13 Jahren Letzter Beitrag vor 13 Jahren 2.217 Views
inflames2k Themenstarter:in
2.298 Beiträge seit 2010
vor 13 Jahren
Unerlaubte PC Zugriffe überwachen (oder verhindern)

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 |

1.130 Beiträge seit 2007
vor 13 Jahren

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.

Projekte:Jade, HttpSaver
Zum Rechtschreiben gibts doch schon die Politiker. Aber die bauen auch nur mist!

inflames2k Themenstarter:in
2.298 Beiträge seit 2010
vor 13 Jahren

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 |

1.361 Beiträge seit 2007
vor 13 Jahren

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

inflames2k Themenstarter:in
2.298 Beiträge seit 2010
vor 13 Jahren

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:

  • Mauseklick realisieren
  • Prozesse auslesen
  • neue Prozesse -> nach Mausklick auf berechtigungen prüfen
  • Aktion der Berechtigung ausführen

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 |

2.760 Beiträge seit 2006
vor 13 Jahren

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.

inflames2k Themenstarter:in
2.298 Beiträge seit 2010
vor 13 Jahren

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 |

699 Beiträge seit 2007
vor 13 Jahren

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

U
1.688 Beiträge seit 2007
vor 13 Jahren

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.