Proctorio: Proctoring-Software auf Augenhöhe mit Spyware

Das sog. Proctoring (Beaufsichtigen) soll bei Online-Prüfungen verhindern, dass Studenten schummeln. Bildungseinrichtungen setzen dazu auf verschiedene Proctoring-Lösungen wie Proctorio, Talview oder Proctoru. Insbesondere die Lösung von Proctorio scheint auch in deutschen Bildungseinrichtungen verbreitet.

Im Rahmen einer Analyse werfe ich gerade einen Blick auf diese Lösungen. Meine bisherigen Erkenntnisse zu Proctorio würde ich gerne vorab teilen und um Mithilfe bitten.

Auf einem Testsystem (Lubuntu LTS 20.04 GNU/Linux) habe ich die Version 1.4.21036.1 des Proctorio Chrome-Browser-Add-ons installiert. Vor der Installation fordert das Add-on die folgenden Berechtigungen an:

  • Alle Ihre Daten auf von Ihnen besuchten Websites lesen und ändern
  • Benachrichtigungen einblenden
  • Daten ändern, die Sie kopieren und einfügen
  • Inhalt Ihres Bildschirms erfassen
  • Downloads verwalten
  • Speichergeräte ermitteln und auswerfen
  • Apps, Erweiterungen und Designs verwalten
  • Datenschutzeinstellungen ändern

Insbesondere die Berechtigung »Datenschutzeinstellungen ändern« hat mich stutzig gemacht und tatsächlich. Unter Chrome-Einstellungen -> System -> Chromium verwendet Proxy-Einstellungen einer Erweiterung wurde ich fündig:

Diese Einstellung wird von Proctorio gesteuert

Durch diesen Eingriff wird sowohl der systemweite Proxy, als auch der Chrome-Start-Befehl:

chromium --proxy-server=http://192.168.10.10:8080

einfach ausgehebelt bzw. ignoriert. Zum Hintergrund: Zur Analyse des Add-ons möchte ich mir einen Eindruck vom Datensendeverhalten verschaffen und leite daher den kompletten Verkehr des Chrome-Browsers über die BurpSuite bzw. den mitmproxy. In diesem Fall ist das allerdings nicht möglich, da die herkömmlichen Proxy-Einstellungen durch den Eingriff des Add-ons ignoriert werden.

Über tcpdump habe ich anschließend geprüft, wohin überhaupt Verbindungen initiiert werden. Nach der Installation des Add-ons wird regelmäßig die IP-Adresse 191.237.23.31 (gbl9837ws.proctor.io) kontaktiert:

13:20:32.803235 IP lts.56780 > 191.237.23.31.https: Flags [P.], seq 1:518, ack 1, win 502, length 517
13:20:32.883518 IP 191.237.23.31.https > lts.56778: Flags [.], seq 1:1461, ack 518, win 2051, length 1460

Ein whois auf die Adresse fördert den Besitzer »Microsoft do Brasil Imp. e Com. Software e Video G« in Brasilien zutage.

Auch außerhalb der Prüfungssituation findet eine regelmäßige Kommunikation mit den Proctorio-Servern statt. Was in diesem Zusammenhang genau übermittelt wird, lässt sich nicht erkennen. Anhand der Paketgröße lässt sich zumindest ein TLS-Handshake herauslesen. Es ist aber bspw. denkbar, dass das Surfverhalten vom Anbieter protokolliert bzw. ausgewertet wird, sofern das Add-on installiert ist bzw. nicht manuell deaktiviert wurde.

Ich habe mich anschließend etwas im »Quelltext« des Add-ons im Verzeichnis ./chromium/Default/Extensions/fpmapakogndmenjcfoajifaaonnkpkei/1.4.21036.1_0 umgesehen. Auszüge aus der /_locales/de/messages.json lassen erahnen, welche »Überwachungsmöglichkeiten« das Add-on besitzt:

Proctorio kann nicht überprüfen, ob die URL Malware enthält. Versuchen Sie es bitte später erneut.

Wir machen 5 Beispielbilder, bitte schauen Sie direkt in die Webcam und lächeln Sie!

Prüfungsteilnehmer hat eine Webseite aufgerufen.

Prüfungsteilnehmer hat $url$ um $elapsed$ aufgerufen.

Dieser Versuch wurde möglicherweise über eine Virtuelle Maschine durchgeführt, allerdings wurden keine VMware- oder VirtualBox-Prozesse gefunden.

Gehen Sie nochmal auf Toilette.

Ihre Institution hat das Raumscannen für diese Prüfung aktiviert.

Cookies von Drittanbietern sind deaktiviert. Cookies werden basierend auf den Einstellungen Ihres Kursleiters gewählt. Sie können Ihre Prüfung erst ablegen, wenn diese Cookies erlaubt sind. Bitte starten Sie Chrome neu, sobald Sie die Cookies von Drittanbietern erlaubt haben.

Wir müssen eine Audioprobe erfassen und analysieren, um sicherzustellen, dass Ihr Mikrofon funktioniert.

Bitte entfernen Sie Kopfbedeckungen, Kopfhörer oder Sonnenbrillen.

Alle anderen Anwendungen, die ausgeführt werden.

Anzahl der angeschlossenen Bildschirme.

Mehrere Gesichter im Bild erkannt.

Prüfungsteilnehmer schaute von der Prüfungsseite weg.

Prüfungsteilnehmer versucht, von der Prüfungsseite weg zu navigieren.

Ich lasse das mal unkommentiert. Die Auszüge sprechen eine eigene Sprache.

Auch in den *.js-Dateien (JavaScript) finden sich noch weitere spannende Details – darauf werde ich aber zunächst nicht weiter eingehen. Interessant ist ebenfalls die Chrome-Executable proctorio.pexe – die natürlich komplett unleserlich ist. Ein einfacher grep über die Dateien lässt jedenfalls keine Rückschlüsse auf das Vorhandensein eines Proxys/Proctorio-Servern zu – der Quellcode wurde offensichtlich obfuscated (verschleiert).

Ruft man die Developer-Tools von Chrome auf, kann man die Verbindungen zum Proxy ebenfalls nicht einsehen. Bei mir hat der Aufruf des Developer-Modes (nach etwas Herumspielen) dafür gesorgt:

  • Aufruf der URL: https://lti.proctor.io/hacker
  • Einblendung der Meldung:

    You just tried to hack Proctorio and were caught. Your IP has been locked and evidence is being forwarded to your school admin.

  • Automatische Deinstallation des Add-ons

Nett. Nicht!

Das war mir dann zu viel und ich habe Chrome »gezwungen« die TCP-Verbindungen zu Port 80/443 zu einer Maschine umzuleiten, auf der die BurpSuite bzw. der mitmproxy lauscht und diese entgegennimmt:

# Redirect HTTP traffic to Burp
iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to-destination 192.168.50.10:8080

# Redirect HTTPS traffic to Burp
iptables -t nat -A OUTPUT -p tcp --dport 443 -j DNAT --to-destination 192.168.50.10:8080

# Activate Masquerading
iptables -t nat -A POSTROUTING -p tcp --dport 80 -j MASQUERADE
iptables -t nat -A POSTROUTING -p tcp --dport 443 -j MASQUERADE

Tja, was soll ich sagen. Auch das wird offenbar vom Add-on erkannt und anschließend wird kein Verkehr mehr über/an die Proctorio-Server gesendet, wie auch der tcpdump-Mitschnitt bestätigt.

Das Proctorio-Add-on hat also nicht nur perfide Überwachungsmöglichkeiten integriert, sondern auch Schutzmaßnahmen implementiert, die eine Analyse der Software bzw. des Datensendeverhaltens erschweren/verhindern sollen.

Daher meine Frage an euch: Hat sich jemand schonmal detailliert mit diesem Add-on befasst und kann womöglich Erkenntnisse bzw. Ideen beisteuern, wie man das Datensendeverhalten analysieren kann? Dann kontaktiert mich bitte.

Nach den bisherigen Erkenntnissen ziehe ich unweigerlich den Vergleich mit Spyware. Also Schadsoftware, die Studenten unter den aktuellen Bedingungen »aufgezwungen« wird, um am Prüfungsgeschehen teilnehmen zu können. Verantwortliche an Universitäten sollten sich die Frage stellen, ob das tatsächlich die einzige Möglichkeit ist, um zu gewährleisten, dass bei Online-Prüfungen nicht geschummelt wird.

Update

12.03.2021: Mittlerweile sind einige hilfreiche Tipps eingegangen, mit denen man weitere Einblicke in das Verhalten des Add-ons gewinnen kann. Einerseits kann das Add-on nun debuggt werden und auch das Mitlesen des Traffics ist nun möglich.

Auf das Mitlesen des Traffics möchte ich kurz eingehen. Mit dem Befehl export SSKEYLOGFILE=$HOME/sslkeylog.log lassen sich die Pre-Master Secret Keys einer TLS-Verbindung in ein Log-File schreiben. Anschließend lässt sich in Wireshark  über Bearbeiten -> Einstellungen -> Protocols -> TLS -> dieses (Pre-)Master-Secret Log-File hinterlegen. Diese Technik wird bzw. kann vom Proctorio-Add-on offensichtlich nicht erkannt werden. Lässt man dann die Zwangsumleitung an einen Proxy weg und schneidet lediglich den Verkehr via Wireshark mit, kann der Datenverkehr anschließend eingesehen werden. Eine ähnliche Technik hatte ich mal unter Android angewendet, um das TLS-Certificate-Pinning (frida-sslkeylog) einer App zu umgehen.

Dem Debugging-Thema hat sich gerade jemand gewidmet – das wird sicherlich auch noch spannend. Unter anderem nutzt das Add-on veraltete JavaScript-Bibliotheken, die Sicherheitslücken beinhalten.

Stay tuned!

Unterstütze den Blog mit einem Dauerauftrag! Mitmachen ➡