Datenschutz und das FileOpen-Plugin
Datenübertragungen bei Nutzung des DRM-Schutzes mit FileOpen
FileOpen ist eine Digital Rights Management (kurz DRM) Software. Mit FileOpen kann man einen Kopierschutz in PDF-Dateien integrieren, damit diese nicht kopiert, gedruckt und nur von berechtigten Nutzern geöffnet werden können. Wer eine solche geschützte PDF-Datei öffnen möchte, benötigt das installierte FileOpen-Plugin. Dieses ist für Windows, macOS und Linux Systeme verfügbar und kann in Kombination mit dem Adobe Reader verwendet werden.
Funktionsweise
Öffnet man ein PDF-Dokument so erscheint ein Login Fenster in das Benutzername und Passwort eingetragen werden. Diese Daten werden mit einem Server abgeglichen und bei Erfolg wird die Datei angezeigt. Der Abgleich der Login-Datei erfolgt mit dem Server des Herstellers der PDF-Datei und dieser Server gibt bei Erfolg einen Code zurück, mit dem die Datei angezeigt werden kann.
Datenübertragung
Das FileOpen-Plugin überträgt neben dem Benutzernamen und dem Passwort noch eine Reihe weiterer Daten an den Herausgeber der PDF-Datei. Die Datenübertragung kann man beispielsweise mit dem Tool tcpdump analysieren.
Bereits beim ersten Öffnen des PDF-Dokuments kommt es zu der folgenden Datenübertragung:
GET /checkfileopen.aspx?Request=Setting&Stamp=1589447723&Mode=CNR&USR=12345&ServiceID=DWS&DocumentID=beispielsdokument&OSType=Linux&Language=DEU&Build=850&ProdVer=1.8.5.1&EncrVer=3.8.0.6&Machine=*******&Disk=*******&Uuid=****-****-****-****-****&UserName=Undefined&UserPass=Undefined&UNPData=3&FormHFT=Yes&SelServer=Yes&AcroVersion=8.262&AcroProduct=Reader&AcroReader=Yes&AcroCanEdit=No&AcroPrefIDib=Yes&InBrowser=Unk&DocIsLocal=Yes&DocPathUrl=file:///home/benutzer/beispielsdokument.pdf&FowpKbd=No&OSName=Linux&OSVersion=%2344-Ubuntu%20SMP%20Wed%20Apr%2022%2021%3a01%3a34%20UTC%202019&OSData=benutzername&OSBuild=5.2.0-51-generic&RequestSchema=Default HTTP/1.1
User-Agent: "Acrobat Reader FileOpen WebPublisher Plug-in"
Host: www.example.com
Accept: /
Man sieht, dass hier unter anderem Datum, Uhrzeit, das geöffnete Dokument, das verwendete Betriebssystem und die Version des Adobe Readers, Identifikationsnummern des Prozessors und der Festplatte, der Speicherort des PDF-Dokuments und der Benutzername des PC Nutzers übertragen werden. Daneben wird auch die IP Adresse erhoben.
Der Server des Herstellers der PDF-Datei antwortet daraufhin mit:
HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/7.0
Set-Cookie: ASP.NET_SessionId=abcdmty2v4rs4p11234567; path=/; HttpOnly
X-AspNet-Version: 4.0.30314
X-Powered-By: ASP.NET
Date: Thu, 14 May 2020 08:17:11 GMT
Content-Length: 370
RetVal=1&SetTarget=UnpDlg&SetScope=Domain&UnpUiTitle=Benutzer-Online-Authentifizierung&UnpUiSunk=www.example.com&UnpUiComm=Diese Authentifizierung ist je Dokument einmalig erforderlich.&UnpUiName=Kunden-Nr. oder registrierte E-Mail-Adresse&UnpUiPass=Kennwort&UnpUiOk=OK&UnpUiCancel=Abbrechen&SetTarget=2&SetScope=Domain&AlertOk=Einverstanden&AlertCancel=Abbrechen
Mit dem Login über das Login-Feld im Adobe Reader werden die gleichen Daten erneut übertragen. Daneben wird dann auch der Benutzername und das Passwort erfasst:
GET /checkfileopen.aspx?Request=Setting&Stamp=1589447723&Mode=CNR&USR=12345&ServiceID=DWS&DocumentID=beispielsdokument&OSType=Linux&Language=DEU&Build=850&ProdVer=1.8.5.1&EncrVer=3.8.0.6&Machine=*******&Disk=*******&Uuid=****-****-****-****-****&UserName=Der-Benutzername&UserPass=Das-Passwort&UNPData=3&FormHFT=Yes&SelServer=Yes&AcroVersion=8.262&AcroProduct=Reader&AcroReader=Yes&AcroCanEdit=No&AcroPrefIDib=Yes&InBrowser=Unk&DocIsLocal=Yes&DocPathUrl=file:///home/benutzer/beispielsdokument.pdf&FowpKbd=No&OSName=Linux&OSVersion=%2344-Ubuntu%20SMP%20Wed%20Apr%2022%2021%3a01%3a34%20UTC%202019&OSData=benutzername&OSBuild=5.2.0-51-generic&RequestSchema=Default HTTP/1.1
User-Agent: "Acrobat Reader FileOpen WebPublisher Plug-in"
Host: www.example.com
Accept: /
Der Server antwortet daraufhin mit einem Code (hier „abcdabcdabcdabcd“) und den Informationen zum Öffnen der PDF-Datei:
HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/7.0
Set-Cookie: ASP.NET_SessionId=abcdmty2v4rs4p11234567; path=/; HttpOnly
X-AspNet-Version: 4.0.30314
X-Powered-By: ASP.NET
Date: Thu, 14 May 2020 08:17:44 GMT
Content-Length: 140
RetVal=2&ServId=DWS&DocuId=beispielsdokument&Perms=69&Code=abcdabcdabcdabcd&OfflineExpire=never&OfflinePrints=unlimited&OfflineOpen=unlimited
Mit diesem Code könnte man theoretisch die Datei unter Umgehung des Logins mit dem FileOpen-Plugin öffnen…
Lässt sich dieser Kopierschutz umgehen, indem man den Code aus der Serverantwort einfach immer an das FileOpen-Plugin schickt?
Ich denke daran in der /etc/hosts die URL des Servers example.com/checkfileopen.aspx auf Localhost umzuleiten. Auf dem PC läuft ein Webserver der immer (egal welcher login eingegeben wurde) den richtigen Code für die PDF datei zurückschickt. In der Theorie könnte man so die PDF an andere Personen teilen bzw. auch ohne sich immer einloggen zu müssen die Datei öffnen.
Funktioniert so. Zumindest getestet mit Adobe Reader 8.1.7 und FileOpen unter Ubuntu. SSL Zertifikate werden nicht geprüft oder erfordert