TrackLoginEvents

VBScript und 64Bit !
Viele 32bit COM-Objekte lassen sich auf einem 64bit System nur instanziieren, wenn die 32bit Version von CSCRIPT/WSCRIPT genutzt wird, welcher unter C:\Windows\SysWOW64\cscript.exe liegt.

Dieses Skript deckt noch nicht die Windows 2012 Events ab.

Account Lockout and Management Tools
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=18465
Diese Werkzeugkiste von Microsoft könnte interessant sein.
Account Lockout Status (LockoutStatus.exe)
http://www.microsoft.com/download/en/details.aspx?id=15201

Was machen meine user ist nur eine Frage in einem Netzwerk. Viel dringender sind Fragen, wie man Eindringlinge erkennt oder wie man Zugriffe nachverfolgen kann, die ja auf vielen Servern und Systemen passieren können. Allerdings kann ich hier kein komplettes "Auditsystem" liefern, welches Revisionssicher und fälschungssicher wäre. Das Skript TrackLoginEvents ist aus der Notwendigkeit entstanden, zu Erfahren, welche Accounts sich wo wie anmelden. Das ist z.B. erforderlich, wenn man ein Dienstkennwort ändern möchte und eigentlich nicht genau weiß, wo es denn überall eingesetzt wird. Das Skript DumpServiceAccounts hilft bei Dienstkonten schon gut aus, aber übersieht doch einige andere Anmeldedaten, die in den Tiefen von Systemen versteckt sind.

Mit TrackLoginEvents versuche ich auf Domain Controllern die Anmeldungen zu erhalten, um in der ersten Stufe eben eine Zuordnung von Anmeldungen zu Clients machen zu können. Dafür gibt es mehrere legitime Gründe, z.B.:

  • Fehlerhafte Anmeldungen
    Es ist schon wichtig, welche Anmeldungen fehlschlagen. Das können einfache Tippfehler von Anwendern sein aber auch eine Fehlkonfiguration von Dienstkonto oder Einbruchsversuche (Besonders bei Häufung). Aber auch Computer, die nicht mehr "richtig" in der Domäne sind (z.B.: Restore eines Image) , fallen hier auf.
  • Erfolgreiche Anmeldungen
    Wenn das Security Log die Daten von vielen Wochen enthält, dann kann man eine sehr vollständige Liste erstellen, welches Konto sich auf welchen Systemen anmeldet. Das hilft z.B.: die Verwendung von Dienstkonten zu überwachen oder auch nachzuvollziehen wo sich ein Anwender anmeldet, um die Systeme bei einer Migration (ADMT) bei den Profilen zu beRücksichtigen.

Sicher ist das Skript erst eine Grundversion, die man um weitere Events (z.B. Account Locked out) erweitern kann und je nach Event sogar eine Eskalation (z.B. Mail senden) anstoßen kann. Es ist immer von Vorteil, wenn der Helpdesk schon vor dem Anruf des Anwender schon das Problem kennt und nicht erst lange suchen muss. Der Helpdesk könnte ja auch aktiv den Anwender anrufen.

Da mit diesem Skript in Grenzen sogar Aktivitäten von Benutzern aufgezeichnet werden könnten, weise ich vorsorglich auf Datenschutz und Mitbestimmungsrichtlinien hin.

Logging aktivieren

Ehe Sie etwas auswerten, muss man Windows dazu überreden, auch etwas zu protokollieren. Das erfolgt am einfachsten in der "Default Domain Controllers Policy". Hier sind die beiden relevanten Einträge "Anmeldeversuche überwachen" und "Anmeldeereignisse überwachen".

für beide Einstellungen können Sie konfigurieren, ob nur erfolgreiche, fehlerhafte oder beide Vorgänge protokolliert werden sollen. Etwas verwirrend ist natürlich die Bezeichnung und damit die Frage, was denn nun zu aktivieren ist.

  • Anmeldeereignisse überwachen
    Hiermit werden die Anmeldungen auf der Maschine protokolliert, auf der die Einstellung aktiv ist. Dies hat aber keinen Einfluss auf die Domain Controller. Ein Zugriff auf einen Mitgliedsserver wird also hier nur im Eventlog des Mitgliedsserver selbst aufgeschrieben. Da dies aber auch für die "Fileserverfunktion" (NETLOGON/SYSVOL) eines Domain Controllers gilt, erwischen Sie so schon sehr viele "normale" Anwender.
  • Anmeldeversuche überwachen
    Diese Events erscheinen nicht im Eventlog des Servers, auf den der Anwender zugreift, sondern nur auf dem Domain Controller, welcher den Zugriff autorisiert, z.B. indem er ein Kerberos Ticket ausstellt oder der Memberserver die Anmeldung beim Domain Controller überprüft.

Danach landen im Eventlog jede Menge Events.

Die Beschränkung der Überwachung auf ausgewählte Server ist für den Server zwar hinreichend, aber liefert kein Gesamtbild. Selbst die Protokollierung auf dem DC liefert keinen vollständigen aber sehr umfangreichen Überblick über Anmeldungen im Netzwerk. für eine komplette Lösung müssten alle Security Events aller Server an einer zentralen Stelle konsolidiert werden.

Zwei Dinge sollten Sie bei der Protokollierung beachten. Zum einen sollte ihre Eventlog eine ausreichend Größe haben, damit Sie Einträge auch wirklich lesen können und sie sollten wachsam sein, wenn der Event 517 erscheint. Dieser besagt, dass jemand das Eventlog gelöscht hat.

SecEvent gelöscht

Die Größe des Eventlogs sollten Sie auch am besten über eine Gruppenrichtlinie konfigurieren, damit alle Server einheitlich eingestellt sind.

Relevante Windows 2003 Events

Die Frage ist gar nicht so einfach zu beantworten, da Windows je nach Version mehrere Events generiert und es den klassischen "ich melde mich an "-Event so nicht gibt. Es ist schon ein unterschied, ob ich mich auf dem DC anmelde oder auf einem Client. Wenn ich auf einem Clients angemeldet bin, dann ist es noch ein unterschied, ob ich mir vom DC nur ein Kerberos-Ticket für den Zugriff auf einen anderen Server besorge oder per Netzwerk auf eine Freigabe auf dem DC selbst zugreife. Ich habe einige Zeit gesucht und mich auf den Event 540 konzentriert, auch wenn dieser erst seit Windows 2000 verfügbar ist. Wenn Sie also Windows NT4 überwachen wollten, dann wäre Event 528 besser. Ein 540er Event hat etwa folgendes Layout:

Ereignistyp:	Erfolgsüberw.
Ereignisquelle:	Security
Ereigniskategorie:	An-/Abmeldung 
Ereigniskennung:	540
Benutzer:		MSXFAQ\Administrator
Computer:	SRV01
Beschreibung:
Erfolgreiche Netzwerkanmeldung:
 	Benutzername:	Administrator
 	Domäne:		MSXFAQ
 	Anmeldekennung:		(0x0,0x159D6BD)
 	Anmeldetyp:	3
 	Anmeldevorgang:	Kerberos
 	Authentifizierungspaket:	Kerberos
 	Arbeitsstationsname:	
 	Anmelde-GUID:	{2af799e2-2c94-40cb-fb15-a89f33a4619c}
 	Aufruferbenutzername:	-
 	Aufruferdomäne:	-
 	Aufruferanmeldekennung:	-
 	Aufruferprozesskennung: -
 	Übertragene Dienste: -
 	Quellnetzwerkadresse:	10.1.1.10
 	Quellport:	0


Weitere Informationen über die Hilfe- und Supportdienste erhalten Sie un...

Sie erkennen zum einen eine gewisse Struktur, die aber Sprachabhängig ist, so dass ein Parsen nicht ganz trivial ist. Der 528er Event ist vergleichbar aufgebaut und kann mit dem gleichen Parser behandelt werden

Ereignistyp:	Erfolgsüberw.
Ereignisquelle:	Security
Ereigniskategorie:	An-/Abmeldung 
Ereigniskennung:	528
Benutzer:		MSXFAQ\Administrator
Computer:	SRV01
Beschreibung:
Erfolgreiche Anmeldung:
 	Benutzername:	Administrator
 	Domäne:		MSXFAQ
 	Anmeldekennung:		(0x0,0x162721E)
 	Anmeldetyp:	2
 	Anmeldevorgang: user32  
 	Authentifizierungspaket:	Negotiate
 	Name der Arbeitsstation:	SRV01
 	Anmelde-GUID:	{5f871070-97d1-ca03-2298-5e0c730d9f3a}
 	Aufruferbenutzername:	SRV01$
 	Aufruferdomäne:	MSXFAQ
 	Aufruferanmeldekennung:	(0x0,0x3E7)
 	Aufruferprozesskennung: 3792
 	Übertragene Dienste: -
 	Quellnetzwerkadresse:	127.0.0.1
 	Quellport:	0


Weitere Informationen über die Hilfe- und Supportdienste erhalten Sie un...

Da die Texte aber je nach Sprache unterschiedlich sein können, kann man eigentlich nur auf die Form gehen, d.h. basiert der Parser auf der Position und der Trennung durch das ":"-Zeichen. Interessant sind aber auch noch die fehlgeschlagenen Anmeldeversuche:

Ereignistyp:	Fehlerüberw.
Ereignisquelle:	Security
Ereigniskategorie:	An-/Abmeldung 
Ereigniskennung:	529
Benutzer:		NT-AuTORITäT\SYSTEM
Computer:	SRV01
Beschreibung:
Fehlgeschlagene Anmeldung:
 	Grund: unbekannter Benutzername oder falsches Kennwort
 	Benutzername:	fcarius
 	Domäne:		NETATWORK
 	Anmeldetyp:	3
 	Anmeldevorgang:	NtLmSsp 
 	Authentifizierungspaket:	NTLM
 	Name der Arbeitsstation:	FC-MOBIL
 	Aufruferbenutzername:	-
 	Aufruferdomäne:	-
 	Aufruferanmeldekennung:	-
 	Aufruferprozesskennung:	-
 	Übertragene Dienste:	-
 	Quellnetzwerkadresse:	10.1.1.254
 	Quellport:	0


Weitere Informationen über die Hilfe- und Supportdienste erhalten Sie un...

Besonders interessant können auch Kontoaussperrungen sein. Der Event 539 erscheint, wenn sich ein Benutzer versucht an einem gesperrten Konto anzumelden. Das wäre für einen Helpdesk oder einen SMS-Versand an den Anwender schon interessant. Viel nützlicher ist aber den eigentlichen Sperr-Event" mit der Nummer 644 zu ermitteln und darauf zu reagieren

Ereignistyp:	Erfolgsüberw.
Ereignisquelle:	Security
Ereigniskategorie:	Kontenverwaltung 
Ereigniskennung:	644
Benutzer:		NT-AuTORITäT\SYSTEM
Computer:	DC1
Beschreibung:
Gesperrtes Benutzerkonto:
 	Zielkontoname: uSER
 	Zieldomäne:	Clientname
 	Aufrufercomputername:	DOMAIN\USER
 	Aufruferbenutzername:	DC1$
 	Aufruferdomäne:	DOMAIN
 	Aufruferanmeldekennung:	(0x0,0x3E7)


Weitere Informationen über die Hilfe- und Supportdienste erhalten Sie unter http://go.microsoft.com/fwlink/events.asp.

Diese Event zeigt nämlich auch den Client, von dem die Anmeldung versucht wurde und letztlich zur Sperrung führte. Das ist ein sehr nützlicher Event um im Helpdesk "Proaktiv" zu arbeiten aber noch mehr um Einbruchversuche zu ermitteln.

Es gibt jede Menge weitere Events, die alle ähnlich aber doch nicht gleich aussehen und daher im Skript individuell zu behandeln sind.

Leider scheinen unterschiedliche Windows Versionen unterschiedliche Events zu verwenden. Die Liste ist nicht vollständig

Event-Typ Event ID Bedeutung Parser

Erfolgsüberwachung

528

Erfolgreiche Anmeldung

 

Fehlerüberwachung

529

Fehlerhafte Anmeldung, Falscher user oder Kennwort

 

 

530

außerhalb der erlaubten Anmeldezeiten

 

 

531

Konto deaktiviert oder ausgesperrt

 

 

532

Konto ist abgelaufen

 

 

533

Konto darf sich nicht an dem PC anmelden (Beschränkung am AD-Konto users hinterlegt )

 

 

534

Falsche Anmeldetyp, z.B. wenn ein Benutzer sich nicht über das Netzwerk anmelden darf und versucht ein Laufwerk oder die Registrierung über LAN zu verbinden oder "Anmelden als Service" oder "Anmelden als Batch"

 

 

535

Kennwort ist abgelaufen

 

 

537

unbekannte Anmeldefehler. Mehr sollte im Text stehen

 

 

539

Konto ist noch ausgesperrt, daher keine Anmeldung

 

Erfolgsüberwachung

540

Erfolgreiche Anmeldung

 

 

644

Konto wurde gesperrt (Zu viele Fehlversuche)

 

 

675

Versuch sich an einem bereits gesperrten Konto anzumelden

 

 

681

ungültiges Kennwort

 

Erfolgsüberwachung

4740

Win2008: Account wurde gesperrt

 

Folgende Artikel enthalten weitere Informationen.

Speziell aus Aussperren von Konten muss nicht allein über die Eventlogs aller DCs erfolgen, sondern kann auch über Änderungen im Active Directory nachverfolgt werden.

Noch ein Wort zum Anmeldetyp, welcher in jedem Event enthalten ist.

  • 2 Interaktive Anmeldung
  • 3 Netzwerk
  • 4 Batch
  • 5 Service
  • 7 PC entsperren
  • 8 Netzwerk mit unsicherem Klartextkennwort
  • 9 impersonated logons

Relevante Windows 2008 Events

Dieses Skript deckt noch nicht die Windows 2008 Events ab

Seit Windows gibt es neue Events, die auszuwerten sind.

Event-Typ Event ID Bedeutung Parser

Erfolgsüberwachung

4624

An account was successfully logged on

 

 

4625

An account failed to login.

 

 

4634

An account was logged off

 

 

4740

A user account was locked out

 

 

4767

A user account was unlocked

 

 

4768

A Kerberos authentication ticket (TGT) was requested

 

 

4769

A Kerberos service ticket was requested.

 

 

4776

The domain controller attempted to validate the credentials für an account.

 

 

4672

Special privileges assigned to new logon

 

Relevant sind hier die 4624 und 4625

  • 947226 Description of security events in Windows Vista and in Windows Server 2008

Hier zwei Musterevents

Ereignistyp:          Erfolgsüberw.
Ereignisquelle:       Microsoft-Windows-Security-Auditing
Ereigniskategorie:    (12544)
Ereigniskennung:      4624
Datum:                30.11.2010
Zeit:                 10:41:56
Benutzer:             Nicht zutreffend
Computer:             srv01.msxfaq.de
Beschreibung:
An account was successfully logged on.
 
Subject:
                Security ID:                 S-1-0-0
                Account Name:                -
                Account Domain:              -
                Logon ID:                    0x0
 
Logon Type:                                  3
 
New Logon:
                Security ID:                 S-1-5-21-330543478-484051587-682003330-1005
                Account Name:                fcarius
                Account Domain:              MSXFAQ
                Logon ID:                    0x97140f6
                Logon GUID:                  {004FFC01-84AA-6608-6312-6501C0BD37D8}
 
Process Information:
                Process ID:                   0x0
                Process Name:                 -
 
Network Information:
                Workstation Name:       
                Source Network Address:        -
                Source Port:                   -
 
Detailed Authentication Information:
                Logon Process:                 Kerberos
                Authentication Package:        Kerberos
                Transited Services:            -
                Package Name (NTLM only):      -
                Key Length:                    0

nachfolgende noch eine Erklärung der Felder
Ereignistyp:        Erfolgsüberw.
Ereignisquelle:     Microsoft-Windows-Security-Auditing
Ereigniskategorie:  (12545)
Ereigniskennung:    4634
Datum:              30.11.2010
Zeit:               11:23:29
Benutzer:           Nicht zutreffend
Computer:           srv01.msxfaq.de
Beschreibung:       
An account was logged off.
 
Subject:
                Security ID:                        S-1-5-21-330543478-484051587-682003330-1005
                Account Name:                       fcarius
                Account Domain:                     msxfaq.de
                Logon ID:                           0x9aa8517
 
Logon Type:                                      3

Skript

Das Skript ist relativ einfach gestrickt und verbindet sich mittels WMI auf den lokalen Server und liest das Security Eventlog aus. Per Default liest es das bestehende Eventlog aus, schreibt die Daten in eine CSV-Datei und beendet sich dann wieder. Alternativ kann man im Skript über Konstanten einen Monitorbetrieb aktivieren, damit das Skript aktiv auf neue Events wartet. Das macht Sinn, wenn Sie im Skript weiteren Code addiert haben um beim Eintreffen eines bestimmten Events (z.B. Anmeldung eines Dienstkontos) eine Mail bekommen oder andere Aktionen ausgelöst werden sollen.

trackloginevents.1.1.vbs
Nach dem Download als VBS-Datei umbenennen und auf dem Server ablegen

Aufruf:

CSCRIPT trackloginevents.1.1.vbs

Das Skript schreibt ein Log-File für die Fehlersuche, welches Sie später natürlich reduzieren oder ganz deaktivieren sollten. Die Events selbst landen in einer CSV-Datei, die Sie einfach mit Excel oder anderen Programmen verwenden können.

TrackLoginvents CSV-Datei

Denkbar ist auch die direkte Weitergabe an z.B. einen SQL-Server. Das Skript liegt ja im Source Code vor.

Trigger

Schon seit Windows 2003 gibt es das Programm "EventTriggers", mit welchem auf bestimmte Events entsprechende Aktionen ausgelöst werden können. Seit Windows 2008 kann dies direkt über den Taskmanager durchgeführt werden.

Sobald also nun ein 644-Event im Security-Eventlog dieses Servers erscheint, kann eine Aktion ("Programm starten", "E-Mail senden", "Messagebox anzeigen") ausgelöst werden. Leider konnte ich nicht ermitteln, ob der Taskmanager den auslösenden Event an das gestartet Programm weiter gibt. Es bleibt also die Programm überlassen, nach dem Start im Eventlog nach seinem Auslöser zu suchen. Zudem müsste so eine Logik natürlich auf jedem DC installiert werden.

PowerShell Version ?

Ich plane die nächste Version als PowerShell Skript zu schreiben. Bis dahin hier schon ein paar Links

Kommerzielle Tools

Das Feld des "Einsammelns von Security und Audit-Events" wird natürlich von verschiedenen Herstellern beackert. Teilweise komplett kommerziell, teilweise als "Lite-Version" sogar kostenfrei oder für kleines Geld. Die Links hier können keinen Marktüberblick geben.

Weitere Links