Die Kommunikation der App UniNow wurde von Patrick Eisenschmidt auf personenbezogenen / datenschutzrelevante Daten geprüft.
Dein ganzes Studium immer dabei.
Mit UniNow hast du alle wichtigen Informationen rund um dein Studium in nur einer App! Egal ob Noten, deine Mails oder deinen Stundenplan – du hast alles immer und überall dabei!
Inhaltsverzeichnis
- Dokumentenversion
- 1. Einführung
- 2. Technische Umgebung und Randbedingungen
- 3. Endpunkte
- 4. Kommunikation
- 5. Auth.uninow
- 6. Analytics.uninow
- 7. Gql.uninow
- 8. Api.uninow
Dokumentenversion
Version | Author | Datum | Kommentar |
---|---|---|---|
0.1 | Patrick Eisenschmidt | 25.01.2019 | Initiale Version |
1. Einführung
Die Android App „UniNow“ in der Version 3.11.0 wurde im Rahmen des Einsatzes an der Hochschule Mannheim auf die übertragenen Inhalte von Patrick Eisenschmidt geprüft. Ziel dieser Überprüfung war die Identifizierung der persönlicher Daten, welche von Studenten an Dritte übertragen werden.
2. Technische Umgebung und Randbedingungen
Die Software wurde auf einem Android Emulator installiert, um eine stabile Verbindung und zuverlässige Kommunikation zu ermöglichen.
Der Emulator emulierte ein Samsung Galaxy S7 Edge (SM-G935F) mit Android 5.1.1 und der Android-Sicherheitspatch-Ebene 2015-12-01. Die App wurde direkt von GooglePlay heruntergeladen und ist somit die originale, verifizierte und zu dieser Zeit aktuellste APK. Weiterhin wurde Burp Suite von PortSwigger verwendet, um den Datenverkehr mitzuschneiden.
3. Endpunkte
Es wurden vier Endpunkte auf der uninow.com Domain, ein Endpunkt auf der uninow.io Domain, und die jeweiligen Endpunkte der ausgewählten Bildungseinrichtungen registriert.
- https://api.uninow.com
- https://auth.uninow.com
- https://gql.uninow.com
- https://analytics.uninow.com
- https://errors.uninow.io
4. Kommunikation
In diesem Abschnitt wird auf den Prozess der App eingegangen und in welcher Reihenfolge Aufrufe gestartet werden.
- Create SessionZuerst wird eine Session zu auth.uninow etabliert.
- AnalyticsEs wird eine Verbindung mit einem Secure-Websocket v13 angefragt, um Informationen zu loggen und Aktualisierungen zu senden.
- Manual QueriesDie manuellen Abfragen sind in der Abfragesprache GraphQL geschrieben und fragen verschiedene Informationen wie Feeds oder Posts an.
- API QueriesDie API Subdomain wird angesprochen wenn die Universitätsdaten / -optionen oder Chatdaten geladen werden.
5. Auth.uninow
Die einzige Anfrage, welche auf dieser Domain im Rahmen der Überprüfung festgestellt wurde, ist folgende:
- POST /session/create
Der Inhalt dieser Anfrage enthält einen spezifischen Useragent. Dieser baut sich aus dem Gerät mit dessen Versionsnummer getrennt von einem ‘/’ der Versionsnummer der App separiert mit einem ‘/’ und dem Paketnamen.
- user-agent: Android (5.1.1)/3.11.0/de.mocama.UniNow
Folgende Daten werden zur Anmeldung an den Hersteller gesendet:
- uniID (z.B.: de_uma)
- userID
- locale (z.B.: de-DE)
- deviceID
- debug (default: false)
Als Ergebnis dieser Anfrage erhält man neben der userID, welche mitgegeben wurde, ebenfalls einen sessionTokensowie sessionKey.
6. Analytics.uninow
Die Analytics Funktion von UniNow verwendet Secure Websockets der Version 13 und stellt nach erfolgreicher Anmeldung eine direkte Verbindung zum Server her. Dieser Verbindungsanfrage wird der sessionToken als GET-Parameter, timestamp sowie EIO und transport übergeben. -GET /socket.io/?token=sessionToken×tamp=currTimestamp*&EIO=3&transport=websocket
Diese Art der Übertragung vom sessionToken gilt als unsicher, da diese sensitive Information im GET-Parameter an verschiedenen Orten, wie z.B.: Browser, Webserver, Reverse-Proxies gespeichert bzw. geloggt wird.
Die Kommunikation, welche über die Websockets gesendet wird, enthält am Anfang jeder Nachricht eine Zahl, die vermutlich die Operation definiert.
Nach der etablierten Websocket Session werden dem Client noch weitere Informationen über den Ping sowie die sidgefolgt vom sessionKey und der sessionID übertragen.
Anschließend sind alle ausgehenden Nachrichten mithilfe von Encoding und Verschlüsselung unleserlich gemacht, wodurch es nicht möglich ist, zu wissen, welche Inhalte übertragen werden.
Die einzigen Hinweise finden sich in Form von Nummern (s.o.) gefolgt von kurzen “Beschreibungen”, wonach anschließend der eigentliche Inhalt übertragen wird.
- 0{“sid”:”XX”,[…]}
- 2
- 3
- 42[“log/add”,”XX”]
- 44″Authentication error”
7. Gql.uninow
An diesem Endpunkt werden verschiedene POST Abfragen bereitgestellt.
- universityFeedQuery: Fragt aktuelle Feeds ab.
- universityLoadNew: Läd neue Feeds/News nach.
- null: Gibt einen “Internal Server Error” zurück.
- myFeedQuery: Angepassten Feed/ angepasste News.
- loadPost: Läd mehr Informationen zu einem Post.
- followAuthor: Folgt einem Author oder widerruft die Aktion.
- hidePost: Setzt das Status-Feld in einem Post.
- sendReport: Weist dem Post einen Report zu.
- dashboard: Gibt Inhalte für das Dashboard zurück.
- universities: Stellt Informationen über alle eingetragenen Hochschulen zur Verfügung (Addresse, Name)
Alle Funktionen beinhalten keinerlei persönliche Informationen und geben nur öffentlich zugängliche Inhalte zurück.
8. Api.uninow
Alle Methoden, die von dieser Endstelle zur Verfügung gestellt werden, sind über HTTP-POST ansprechbar und bekommen, bis auf wenig Ausnahmen folgende Informationen übermittelt.
Auch hier wird nach kurzer Zeit eine Sec-Websocket Verbindung aufgebaut. Die Daten werden encoded / encrypted und an folgende URL gesendet.
-GET /socket.io/token=sessionToken&agent=Android%20(5.1.1) %2F3.11.0%2Fde.mocama.UniNow&EIO=3&transport=websocket
Im Folgenden sind die Nachrichten, welche versendet werden, nach dem gleichen Schema wie in 6 aufgeführt.
- 0{“sid”:”XX”,[…]}
- 2
- 3
- 40
- 42X[“cafeteria/list”,”XX”]
- 42X[“accounts/validate”,”XX”]
- 42X[“grades/list”,”XX”]
- 43X[“XX”] – 44X[“XX”]
- 4XXXXXX[“request”,”XX”]
Herausstechen tut hier aus Datenschutzsicht diese Anfrage 42X[“grades/list”,”XX”] Dadurch, dass nicht bekannt ist, welche Informationen ausgetauscht werden lässt sich nur vermuten, dass die in diesem Fall übertragenen oder hinter dem Endpunkt stehenden Daten datenschutzkritisch sind!
NET100 – Perfect hit
This was a quite easy but fun challenge.It’s about extracting data from a pcap file with SIP communication captured. If we take a look at the .pcap we see some SIP communication which can be easily inspected via the setting “Telephonie” in Wireshark. With that, we can see that there are two calls and one…
WEB200 – The rocket clock
This challenge was a web challenge. A PHP code to inspect and to tell what’s the problem with it and then exploit the weakness in the servers running this application. At first, I tried to take a look at the input which is controlled by the user. This is where we can manipulate and send…
MSC100 – Base32
MSC100 – Base32 This one was harder for me. Made some bad mistakes at the beginning which really left me clueless. The description was that someone encrypted text with base32 but did something wrong. So I tried to decrypt it with some online decoders but they all went crazy because of characters which are not…
WEB100 – XXE Denial of Service
This challenge was the usual XXE attack called entity injection with the goal to crash the server. This reminded me of the old but good billion laughs attack. With this attack, your recursive include entities which include further entities to overload the RAM of the XML parser and crash the program.To execute the attack we…
CRY100 – Decrypt this text
This challenges is about decrypting the text inside a file. At first, it does not pretty good. Most characters are not printable or just jibberish.Sadly I can’t remember correctly what the description said (have to write it down next time) but I guess something about the text is XOR’d and the key has to be…
Penetration Test Report ISIS12
Dieser Penetration Test wurde durchgeführt von Patrick Eisenschmidt. Inhaltsverzeichnis Timeline Dokumentenversion 1. Einführung 2. Technische Umgebung und Randbedingungen 3. Kategorisierung der Schwachstellen 4. Findings 4.1. XSS (Cross Site Scripting) 4.2. Benutzung eines schwachen Algorithmus zur Berechnung von Kennwort-Hashes Timeline Zeit Beschreibung 08.01.2019 Bericht an den Ansprechpartner der Hochschule gesendet 09.01.2019 Bericht wurde an den Hersteller…
Untersuchung der Kommunikation der App UniNow
Die Kommunikation der App UniNow wurde von Patrick Eisenschmidt auf personenbezogenen / datenschutzrelevante Daten geprüft. Dein ganzes Studium immer dabei. Mit UniNow hast du alle wichtigen Informationen rund um dein Studium in nur einer App! Egal ob Noten, deine Mails oder deinen Stundenplan – du hast alles immer und überall dabei! Inhaltsverzeichnis Dokumentenversion 1. Einführung…