Warum ein neues Dateiformat?
Microsoft hat den Release Candidate 2 für Vista veröffentlicht. Neben zahlreichen Neuerungen enthält Vista ein neues Format für Ereignisprotokolle. Dieser Beitrag ist der erste in einer Reihe, die zu einem besseren Verständnis des neuen Formats beitragen soll.
Die vielleicht wichtigste Frage ist: Warum benötigt man überhaupt ein neues Format? Das "alte" Format hat immerhin rund ein Jahrzehnt überdauert, von Windows NT 3.5 bis zum Windows Server 2003. Natürlich gab es im Lauf der Zeit kleinere Verbesserungen, das Dateiformat blieb jedoch unverändert.
NT: Ein wesentlicher Nachteil des alten NT Eventlogs ist seine Eigenschaft, die Protokolldateien vollständig in den Arbeitsspeicher einzublenden. Große Dateien verschwenden deshalb wertvollen Adressraum in einem Bereich, der auch für die Interprozesskommunikation und Shared Memory genutzt wird. Bedenken Sie, was dies für einen Exchange-Server oder das Sicherheitsprotokoll auf einem stark frequentierten Domain-Controller bedeutet.
Vista: Protokolldateien bestehen nun aus einem kleinen Header, dem eine Reihe so genannter Chunks folgen. Chunks sind in sich geschlossen. Ereignis-Einträge können sich nicht über die Grenze zwischen zwei Chunks erstrecken. Deshalb muss nun auch nur noch der aktuelle Chunk (64 kiB) und der Header der Logdatei (4 kiB) im Speicher gehalten werden. Dies mindert deutlich den Einfluss auf die Systemressourcen.
NT: Von Haus aus gibt es keine Möglichkeit, Protokolle auf einem zentralen Überwachungsplatz zusammenzufassen. Natürlich kann man eine RPC-Verbindung über das Netz aufbauen und die Protokolle der entfernten Maschinen in die Ereignisanzeige einbinden. Es gibt aber keine Möglichkeit, die einzelnen Protokolle zu konsolidieren und zum Beispiel die Anwendungsprotokolle aller Maschinen im Zusammenhang darzustellen. Produkte von Fremdanbietern habe diese Marktlücke geschlossen. Üblicherweise müssen werden sie über Callbacks in den Systemdienst eingebunden, was den Overhead des Protokoll-Subsystems noch vergrößert.
Vista: Das neue Ereignisprotokoll ermöglicht von Haus aus die Weiterleitung von Ereignismeldungen an andere Systeme.
NT: Die Ereignisanzeige kann nur nach dem Typ und der Quelle eines Ereignisses, der ID-Nummer, dem betreffenden Benutzer und Computer sowie einem Zeitintervall filtern. Filter auf der Basis des Meldungstextes oder der beigefügten binären Daten gibt es nicht. Zudem lässt sich die Darstellung kaum an die Bedürfnisse des Benutzers anpassen. Man kann die Reihenfolge der Felder und die Sortierung ändern, das war es dann aber auch schon. Die Detailanzeige einer Ereignismeldung erfordert einen Doppelklick. Protokolldateien lassen sich im proprietären EVT Format oder als Text (CSV) speichern.
Vista: Die Protokolle basieren auf XML Technologie. Abfragen lassen sich mittels XPath über Protokolle hinweg formulieren. Das Erscheinungsbild der Meldungen kann durch XML Stylesheets (XSL) und XML Transformationen (XSLT) angepasst werden. Folgerichtig sind die Daten in einem XML-Format gespeichert. Da XML sehr "geschwätzig" ist, entschied sich Microsoft für eine Umwandlung in Token und eine Kompression redundanter Strukturen. Das Ergebnis ist ein proprietäres und (zumindest bislang) undokumentiertes Format.
Was bedeutet all das nun für die tägliche Arbeit als IT-Forensiker? Zunächst einmal ist das neue Format vorteilhaft für den IT-Betrieb. Es ist zu erwarten, dass das neue Ereignisprotokoll die überwachten Systeme in einem geringeren Maße beeinträchtigt als sein Vorgänger. Es besteht also die Hoffnung, dass zukünftig auf mehr Systeme eine ausführlichere Protokollierung wird. Die Ereignis-Meldungen lassen sich zudem einfach auf einen zentralen, vertrauenswürdigen Loghost übermitteln. So weit, so gut.
Auf der anderen Seite müssen nun die üblichen Werkzeuge an ein neues und undokumentiertes Dateiformat angepasst werden. Das erinnert mich an die Zeiten, als es noch keine forensisch einwandfreien Parser für das alte EVT Format gab. Aber es ist nicht nur eine Frage der Verfügbarkeit von Tools. Einige der Probleme scheinen mir systemimmanent zu sein. Beispielsweise werden im neuen Format wichtige Informationen wie häufige Zeichenfolgen und XML-Strukturen im Kopf eines Chunks abgelegt. Finden Sie nun im Schlupfspeicher einer Datei noch einen Datensatz, dann wird dies eher das Ende des Chunks gewesen sein. Die wichtigen Informationen am Anfang wurden wahrscheinlich längst mit anderen Daten überschrieben. Damit ist der gesamte Datensatz bedeutungslos.
Ich beabsichtige, in der nächsten Zeit hier weitere Details zu veröffentlichen. Einstweilen empfehle ich einen Blick in die Dokumentation des Microsoft Developer Networks zu werfen. Achtung: Der neue Protokoll-Dienst nennt sich "Windows Event Log" , während der alte als "Event Logging" bezeichnet wird.

Kommentare
Die Dokumentation für das Event Log ist nun hier zu finden: http://msdn2.microsoft.com/en-us/library/aa385772.aspx. Ansonsten guter Artikel, danke dafür :-)!
Von: Richard | 08.09.07 13:19
Danke für die aktualisierte URL.
Leider beschränkt sich die Dokumentation immer noch auf das API. Das ist aus Sicht eines SOftwareherstellers verständlich, für die Zwecke der digitalen Forensik jedoch nicht eben hilfreich.
Von: Andreas Schuster | 15.09.07 11:25