Die "Quizduell im Ersten"-App - Komplettanalyse

Begonnen von quizapi, 30.01.2015 03:54

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 5 Gäste betrachten dieses Thema.

quizapi

Liebes Forum,

da ja nun auch einige technisch Interessierte unter uns sind, möchte ich die Gelegenheit nutzen und die neueste "Quizduell im Ersten"-App gemeinsam mit euch 'zerlegen'  O:-). Letztes Jahr gab es ja dieses Datenleck und dann den Totalausfall der App. Diesmal soll alles besser sein, die App wurde neu programmiert und ausführlich getestet. Mal sehen, welche technischen Raffinessen sich die Entwickler - diesmal ein Team von APPSFactory* aus Leipzig - ausgedacht haben...

Zunächst laden wir die App in Form des Anwendungspaketes de.itv.quizduellimersten-1.apk aus dem Android Playstore. Warum Android? Hier gibt es viel mehr frei zugängliche und weiterentwickelte Entwickler- und Analysetools als unter der proprietären iOS-Plattform.

Im ersten Schritt entpacken wir die .apk-Datei, welche eigentlich ein ordinäres Zip-Archiv ist, und entdecken darin neben ein paar Konfigurationsdateien viele Bilder und Audiodaten sowie eine classes.dex-Datei, welche den Programmcode in unleserlichem Binärformat enthält:


Der zweite Schritt besteht also darin, den Binärcode per Disassembler in eine für uns zugängliche Assemblersprache übersetzt. Diese können wir anschließend lesen und verstehen damit den Programmablauf. Als Disassembler kommt apktool zum Einsatz und wir erhalten folgende Struktur:


Es sticht heraus, dass hier kein Obfuscator verwendet wurde, um uns das Auslesen zu erschweren. Die komplette Klassenstruktur ist erhalten, es traten keine Probleme beim Disassemblieren auf. Also können wir es wagen, für die grobe Analyse noch einen Schritt weiterzugehen und einen Decompiler einzusetzen, um den doch recht mühsam zu analysierenden Assembler-Code in eine Hochsprache, in diesem Fall Java, zurückzuübersetzen.

Als Decompiler kommt der Java Decompiler zusammen mit dex2jar zum Einsatz, das Ergebnis sieht dann wie folgt aus:


Hier haben wir sie also: die Web-API, mit der "Quizduell im Ersten" kommuniziert, um unsere Gewinnspiel-Registrierung entgegenzunehmen sowie die Ergebnisse live in die Show zu übertragen. Ein einfacher Web-Browser genügt, um die wichtigsten Informationen abzufragen: http://qd-prod.appsfactory.de/api/info

Für alle weiteren Zugriffe auf die Web-API müssen wir jedoch ein sog. User-Token mitliefern, damit der Server uns überhaupt antwortet. Dieses User-Token erhalten wir erst nach Authentifizierung über Googles OAuth 2-Dienst mit unserem Google-Konto. Statt diesen Prozess mühsam nachzubilden, melden wir uns einfach über die "Quizduell im Ersten"-App unter Android an und kopieren das derart erhaltene User-Token aus der Konfigurations-Datei im Anwendungsverzeichnis der App, de.itv.quizduellimersten_preferences.xml:


Mit diesem Token bestückt, können wir nun die Web-API beliebig aufrufen und eingehender analysieren.

Bleiben wir jedoch bei den Informationen, die wir über die URL /api/info erhalten: Es werden Duelle in Form von Zip-Archiven gelistet. Nach Herunterladen und Entpacken dieser entdecken wir darin jeweils zwei Dateien, catalogue.json und studioteam.json. Die erste Datei enthält einen Katalog aller Fragen, die in diesem Quizduell gespielt werden können, allerdings sind die Fragen verschlüsselt. Doch wo ist der Schlüssel? Java Decompiler liefert das Ergebnis: Der Schlüssel wird mit Beginn jeder Fragerunde während des Live-Duells an die Spieler ausgeliefert. Bis dahin bleiben die Fragen unter Verschluss, denn das eingesetzte symmetrische AES-Verschlüsselungsverfahren ist unknackbar:


Cheaten ist also nicht drin, es sei denn man wertet die Kenntnis über die zweite und dritte Frage schon zu Beginn einer Runde, während andere erst die erste Frage sehen, als einen solchen Betrug.

Wie steht es aber mit der Datensicherheit? Nun, schauen wir uns an, was passiert, wenn ein Benutzer ein eigenes Profilbild hochladen möchte. Dazu wird die URL /api/data/image mit persönlichem User-Token im HTTP-Header aufgerufen, der Server antwortet mit einer URL, unter der wir das Bild hochladen können, z.B.: http://qddev.blob.core.windows.net/images/R spcHmKckfSu0yVWuZ1GTjNIU?sv=2014-02-14&sr=b&sig=3eWnCrl96DcEYPGWbSIBxdYXovenuFaZrA3sfLeg6p4=&st=2015-01-30T01:45:38Z&se=2015-01-30T02:05:38Z&sp=w. Diese URL ist nur für 20 Minuten gültig, danach erlischt der Zugriff darauf. Es scheint also unmöglich, derart unautorisiert und / oder in großem Stil an die Daten der Mitspieler zu gelangen.

Und die Ausfallsicherheit? Durch die geschickten Vorab-Downloads der Fragen und Team-Fotos müssen während eines Live-Duells nur noch kryptographische Schlüssel und einige Metadaten ausgetauscht werden. Dies ist sicher eine deutliche Reduktion des übertragenen Datenvolumens. Weiterhin kommen sog. Websockets zum Einsatz, welche gegenüber der alten App viele Performance-Vorteile bei der Live-Synchronisation des Spielgeschehens bieten.

Allerdings setzen die Entwickler diesmal auf Microsofts Azure Cloudcomputing-Plattform, statt wie beim letzten Mal auf Google samt Google App Engine. Ob dieser Plattformwechsel ohne Startschwierigkeiten verläuft, werden wir sehen. Leicht alarmierend ist auch die Tatsache, dass der Entwickler APPSFactory diesmal - offensichtlich um eine öffentliche Blamage wie zuletzt grandcentrix mit der ersten Version dieser App in 2014 zu vermeiden - sich vorab nirgends als Urheber der App outen möchte.

Fazit: Die Chancen stehen also gut, dass das "Quizduell im Ersten" diesmal deutlich reibungsloser verlaufen wird. Datenlecks sind keine zu befürchten. Alle Beteiligten haben scheinbar die richtigen Schlüsse aus dem Debakel beim letzten Mal gezogen. Bleibt nur abzuwarten, ob ein reibungsloses Quizduell im TV nicht schnell eintönig wird - und wie hoch die Zuschauerquote abzüglich der letztjährigen "Katastrophentouristen" ausfallen wird.

PS: Offenbar haben die Entwickler zum Testen der App die Muppets engagieren können... ob Miss Piggy im Februar auch live bei Herrn Pilawa antreten wird?


PPS: Zum Zeitpunkt des Schreibens dieses Berichts ist die Web-API gerade offline... daher musste ich zum Experimentieren auf http://qd-dev.appsfactory.de/api/info ausweichen.

Ich hoffe, dieser kleine Bericht hat dem ein oder anderen hier gefallen :cheers:. Anmerkungen, Fragen?

*) Hier stand zunächst grandcentrix, doch wird "Quizduell im Ersten" recht unscheinbar im Portfolio von APPSFactory genannt.

phoenix-sven


Weggi47

Nach dem 1. Absatz hatte ich leider einen Knopf im Hirn, wie man bei uns Ösis sagt, bei euch sagt man stattdessen: ich verstehe nur Bahnhof. Aber ich bin kein Kriterium, weil ein technisches Nackerpatzl :-\

Nursey

Nackerpatzl ? Sehr schöner Ausdruck ! :up:( mir wäre zum gleichen Thema nur DAU eingefallen)

Ich freue mich

1. dass es Menschen gibt die bei diesem Krempel durchblicken
2. dass es Menschen gibt die nicht durchblicken
Ich bin zu alt für den Scheiss !

MKBLNHSH

Tolle Analyse, super!
Danke dafür!  :up:
Und das Fazit lässt hoffen, dass es funktioniert.
Die unbeugsamen Gallier - ein kleines Dorf gegen den Rest der Welt

MAJESTIX - Ein Mann, der die Geschicke seines Teams lenkt

Seven~of~Nine

Ich habe bis auf das Fazit nur Dworzec Kolejowy (polnisch für Bahnhof) verstanden, aber das Fazit selbst hört sich doch gut an  :up:
The fun will now commence. Resistance is futile.


phoenix-sven

Ich steh seit heute morgen auch auf diesem besagten Bahnhof und keiner holt mich ab.
Die Analyse ist vielleicht ganz interessant, aber ich hab ja nichts davon, oder  :-\

appsfactory

super Analyse!
kann es sein, dass der entwickler gar nicht mehr grandcentrix ist sondern evtl. appsfactory? die api geht ja auf deren domain... das ist eine entwicklerbude aus leipzig

appsfactory

Zitat von: Data am 30.01.2015 14:26
Also bist Du das?  :-\

nein, ich hab das nur mit interesse gelesen, mich eben neu hier registriert und mir ist kein anderer username eingefallen..  :))

quizapi

Hi 'appsfactory', scheinbar hast du recht! Man findet zwar nirgends eine Verlautbarung zur Zusammenarbeit von itv und APPSfactory, doch inzwischen wird "Quizduell im Ersten" recht unscheinbar in deren Portfolio genannt. Aufgrund anderweitiger Aussagen bin ich zunächst von grandcentrix ausgegangen, habe das nun geändert.

Für alle, die am kalten Bahnhof warten und frieren: Es ist wie mit einem neuen Auto. Manche freuen sich, wenn es einfach angenehm und sicher fährt, andere legen es erstmal komplett auseinander, bevor sie die sich hinter das Steuer klemmen. Im Grunde genommen wurde hier eben die App auseinandergenommen und der Motorblock freigelegt. Wie HaPe schon sagt, es macht einfach Spaß. Und wie bei einem guten Krimi fügen sich alle (Kabel-)Stränge am Ende zusammen und lassen den Leser - Bahnhof hin oder her - mit einem wohligen Gefühl der Erkenntnis zurück...  :cheers:

NoTricks

Ist doch praktisch, Data, hast du gleich für nächstes Mal Ersatzteile...

uk3

 Frage dazu: könnte mir vielleicht wer die Android apk zukommen lassen?
Im österreichischen play store ist sie nämlich nicht verfügbar
For I dipt into the future, far as human eye could see,   
Saw the Vision of the world, and all the wonder that would be;
(Locksley Hall, Alfred, Lord Tennyson)

Seven~of~Nine

Zitat von: Data am 30.01.2015 21:03
Und bei mir bleibt häufig irgendwas übrig. Funktioniert dann trotzdem...  :))

Na so lange es weiter funktioniert, kann man es als Optimierung betrachten, es wurde ja nur Überflüssiges entfernt  :cheers:
The fun will now commence. Resistance is futile.


ManfredSG

Mit etwas Verspätung - tolle Analyse! :up:

manette

Na toll 😂 Bin wohl falsch, kein Wort verstanden !!

rätselkönig

Hallo, ich suche auch die apk um "quizduell im ersten" auf meinem Blackberry zu instalieren. Kann mir vielleicht jemand helfen?
Grüße