Der Standardansatz für die Sitzungsaufzeichnung ist, alle paar Sekunden einen Screenshot aufzunehmen. Das Ergebnis ist ein Verzeichnis voller einander ähnelnder Frames — der Benutzer liest die Seite, der Benutzer liest die Seite, der Benutzer liest immer noch die Seite — durchsetzt mit den eigentlichen wichtigen Ereignissen, irgendwo zwischen zwei Momentaufnahmen, die zu spät kommen und nur das Ergebnis zeigen.
Die periodische Erfassung verfehlt außerdem die Antwort auf die wichtigste Frage für jedes Audit oder jede Untersuchung: Was hat der Benutzer getan? Eine Momentaufnahme, die 1,5 Sekunden nach einem Klick aufgenommen wird, zeigt nicht, worauf geklickt wurde. Eine Momentaufnahme, die 3 Sekunden nach einer Formularübermittlung aufgenommen wird, zeigt nicht, was geschrieben wurde. In der Audit-Aufzeichnung gibt es Ereignisse ohne Kontext; in den Screenshots gibt es Kontext ohne Ereignisse. Sie zu verbinden ist manuelle Arbeit, die mit der Anzahl der Sitzungen schlecht skaliert.
ZeroLeak verwendet einen anderen Ansatz. Screenshots werden nicht durch einen Timer, sondern durch die Ereignisse selbst ausgelöst. Navigationen erfassen zwei Screenshots — die Seite vor dem Klick und das Danach nach dem Laden der neuen Seite — sodass Ursache und Wirkung als Paar erhalten bleiben. In jede Erfassung wird die Mausposition gezeichnet, sodass sichtbar ist, worauf geklickt wurde. Tastatureingaben werden zu lesbaren Wörtern gepuffert. Darunter wird kontinuierlich Video aufgezeichnet, sodass die Lücken zwischen den erfassten Ereignissen bei Bedarf weiterhin abgespielt werden können.
Für jede Sitzung arbeiten drei Aufzeichnungs-Subsysteme parallel: ereignisgesteuerte Screenshots in kritischen Momenten, kontinuierliches FFmpeg-Video mit konfigurierter Bildrate und strukturierte Ereignisaufzeichnung mit wortgepufferter Tastatureingabe und vollständiger Zwischenablageaktivität. Jedes kann pro geschütztem Service aktiviert und deaktiviert werden; standardmäßig arbeiten alle drei gemeinsam, sodass eine Rekonstruktion immer möglich ist.
Erfassungen werden durch die tatsächlichen Aktionen des Benutzers ausgelöst — Klicks, Seitennavigationen, Tasteneingaben, Formularübermittlungen, Zwischenablageoperationen. Kein zeitbasiertes Polling, das die Festplatte mit leeren Frames füllt. Jeder Screenshot erfasst einen wichtigen Moment; das Verzeichnis ist nicht lang und verrauscht, sondern kurz und informativ.
In jedem erfassten Screenshot ist die Mausposition mit einem sichtbaren Indikator markiert — ein roter Punkt an den genauen Koordinaten des Klicks oder Hovers. Sie sehen nicht die aus dem Klick resultierende Seite, sondern worauf der Benutzer geklickt hat. Rekonstruktion der Absicht in einem einzigen Frame, kein mehrteiliges Rätsel.
Wenn der Benutzer navigiert, werden zwei Screenshots erfasst — einer mit der Seite vor dem Klick, der andere mit der Zielseite nach dem vollständigen Laden des neuen Inhalts. Ursache und Wirkung bleiben als Paar erhalten. Der Prüfer sieht 'der Benutzer hat auf Link X geklickt, die nächste geladene Seite war Y' als zwei nebeneinanderliegende Frames.
Einzelne Tastenereignisse sammeln sich in einem Puffer, der bei Leerzeichen, Enter, Tab oder kurzer Pause geleert wird. Das Ergebnis liest sich wie der vom Benutzer geschriebene Text, kein Taste-für-Taste-Ereignis-Dump. Backspaces bleiben als [BS]-Markierung erhalten, sodass Korrekturen sichtbar sind. Wiederholte Tasten (gedrückt gehalten) werden gefiltert. Zwischenablageoperationen werden mit ihrem tatsächlichen Inhalt separat aufgezeichnet.
Jeder Erfassungsmechanismus kann pro geschütztem Service unabhängig konfiguriert werden und läuft ohne Leistungseinfluss auf die Benutzersitzung. Die drei Streams (Screenshots, Video, Ereignisaufzeichnung) sind zeitstempelmäßig ausgerichtet, sodass der Prüfer nahtlos zwischen ihnen wechseln kann.
Screenshots werden ausgelöst bei Benutzerklicks, Navigationen (mit Vor-und-Nach-Paar), Formularübermittlungen, Tasteneingaben (Enter), Zwischenablageoperationen (Kopieren, Ausschneiden, Einfügen), von der Operatorkonsole manuell ausgelösten Erfassungen und einigen weiteren wichtigen Ereignistypen. Die vollständige Ereignisliste ist pro geschütztem Service konfigurierbar.
Bei einer Navigation wird der Ziel-Screenshot erst aufgenommen, nachdem die neue Seite das Laden beendet hat — es wird auf Netzwerk-Leerlauf plus eine kurze zusätzliche Rendering-Verzögerung gewartet. Der erfasste Screenshot zeigt die Seite so, wie der Benutzer sie tatsächlich sehen würde, nicht als halb geladenen Zwischenzustand.
Unter den ereignisgesteuerten Screenshots wird die Sitzung mit FFmpegs x11grab kontinuierlich als Video aufgezeichnet. Die Bildrate ist konfigurierbar (Standard 10 fps für kompakte Dateien; höhere Raten für detailreiche Erfassung verfügbar). Das Video wird für sicheres Streaming und Replay in Segmente unterteilt; die Segmente sind zeitgestempelt, um sich mit den Screenshot- und Ereignisaufzeichnungsströmen auszurichten.
Tastenereignisse sammeln sich in einem Puffer, der an Wortgrenzen (Leerzeichen, Enter, Tab) oder nach einer kurzen leeren Pause geleert wird. Die geleerte Zeichenkette liest sich wie Text — 'hallo welt [BS][BS][BS][BS]welt' — und bewahrt die Absicht und Korrekturen des Benutzers, ohne das Rauschen jedes einzelnen Keydown-Ereignisses.
Kopieren-, Ausschneiden- und Einfügen-Operationen werden einschließlich des tatsächlichen relevanten Zwischenablageinhalts getrennt von den Tastatureingaben aufgezeichnet. Ein Prüfer sieht genau, was kopiert und was eingefügt wurde, nicht nur, dass ein Zwischenablageereignis stattgefunden hat.
Screenshots werden sequenziell nummeriert (0001, 0002, ...) und mit Zeitstempel und Ereignis-Metadaten gespeichert. Die Operatorkonsole listet sie zusammen mit dem auslösenden Ereignis auf, sodass der Prüfer direkt zum interessierenden Moment springen kann — zum Beispiel alle zwischenablage-ausgelösten Erfassungen einer Sitzung oder das Navigationspaar rund um eine bestimmte URL.
Über Screenshots und Video hinaus erfasst eine strukturierte Ereignisaufzeichnung den Interaktionsverlauf des Benutzers mit vollem Kontext. Jedes Ereignis hat einen Typ, einen Zeitstempel, eine zugehörige Screenshot-Referenz (sofern zutreffend) und seine relevante Nutzlast. Das macht die Aufzeichnung nicht nur visuell durchsuchbar, sondern such- und analytisch nützlich.
Jedes Klickereignis zeichnet die x/y-Koordinaten und das DOM-Element unter dem Zeiger auf (Tag, Klasse, ID, Textinhalt, sofern vorhanden). Der Prüfer kann in der Sitzungsaufzeichnung nach Klicks auf eine bestimmte Schaltfläche oder einen bestimmten Link suchen, ohne die Screenshots durchsuchen zu müssen, um einen zu finden.
Änderungen der Scroll-Position werden gedrosselt aufgezeichnet, um Log-Spam zu vermeiden. Auflösung, die ausreicht, um zu rekonstruieren, wohin der Benutzer auf langen Seiten geschaut hat, aber ohne Tausende unnötige Scroll-Ereignisse pro Minute zu erzeugen.
Jede Navigation — vollständige Seitenladungen, Single-Page-Application-pushState-Änderungen, programmatische Standortänderungen — wird mit Quell-URL, Ziel-URL, Auslöser (Linkklick, manuell, programmatisch) und Abschlusszeit protokolliert. SPA-Navigationen, die die herkömmliche Protokollierung verpasst, werden von der URL-Polling-Schicht von ZeroLeak erfasst.
Wenn der Benutzer ein Formular übermittelt, erfasst die Ereignisaufzeichnung die Action-URL, die Methode und die Feldnamen des Formulars. Die tatsächlichen Feldwerte werden über die Tastatureingabeaufzeichnung erfasst (sodass der Schreibverlauf erhalten bleibt) und nicht im Formularereignis wiederholt.
Die Sitzung überwacht die Benutzeraktivität auf der Eingabeschicht. Übergänge zwischen aktiven und Leerlaufzuständen werden mit Zeitstempeln aufgezeichnet, sodass Prüfer Aufmerksamkeitsphasen und Inaktivität sehen können — nützlich für Compliance-Prüfungen und zeitbasierte Audit-Fragen.
Am Sitzungsende werden zusammenfassende Metadaten aufgezeichnet: Gesamtdauer, Leerlauf-Aktiv-Verteilung, Gesamtzahl der Ereignisse jedes Typs, erzeugte Screenshots, Videodatei-Referenzen und der Beendigungsgrund (Timeout, manuelle Beendigung, Fehler). Wenn ein Koordinator-Webhook konfiguriert ist, wird diese Zusammenfassung auch an ihn ausgelöst.
Regulatoren, die fragen, was bestimmte Benutzer in bestimmten Sitzungen getan haben — HIPAA-Prüfung des Zugriffs auf Patientenakten, Compliance des Finanz-Investment-Desks, behördliche Audits der Datenverarbeitung. Die ereignisgesteuerte Erfassung erzeugt pro Sitzung eine kurze und informative Spur, die Prüfer schnell durchsuchen können.
Wenn ein Leck oder ein Richtlinienverstoß vermutet wird, muss der Ermittler genau wissen, was der Benutzer getan hat — nicht nur wann. Sequenzielle Screenshots mit Mausmarkierung, wortgepufferte Tastatureingaben und vollständiger Zwischenablageinhalt machen die Sitzung detailliert wieder abspielbar, ohne stundenlang Video anzusehen.
Externe Benutzer, denen reine Anzeigeberechtigung in Ihrer Umgebung gewährt wird. Vollständige Aufzeichnung pro Sitzung — zusammen mit dem sichtbaren Wasserzeichen, das den Benutzer identifiziert — bietet Rechenschaftspflicht für alles, was sie während des Zugriffsfensters gesehen, und jede Aktion, die sie durchgeführt haben.
Nach einem unerwarteten Ereignis an einer SCADA- oder Betriebskonsole zeigt die Aufzeichnung, was der Operator in den vorherigen Momenten genau gesehen und auf welche Steuerelemente er geklickt hat. Das Vor-und-Nach-Paar bei der Navigation beschleunigt die Diagnose von Kettenfehlern erheblich.
Wir öffnen eine Sitzung, klicken auf einige Links, füllen einige Formulare aus, kopieren einige Inhalte und zeigen das resultierende Screenshot-Verzeichnis, die Tastaturaufzeichnung und die Videosegmente — und wie ein Prüfer die Sitzung daraus rekonstruiert.