@alvar_f@juergen34@da_mister_e@UlrichKelber Nur leider steht da vieles mit wenig Wert. Das letzte mal als ihr mit dem (mittlerweile überholtem) Dokument argumentieren wolltet, hatte ich noch bis Seite 9 gelesen, die ausführt, dass hier nur Papierlage geprüft wurde (Dokumentation des Herstellers 🤣). Heute reicht Seite 2...
@alvar_f@juergen34@da_mister_e@UlrichKelber auf der ihr behauptet Kontaktdaten seien Ende-zu-Ende verschlüsselt. Mag sein, dass zum Erstellungszeitpunkt nicht klar war, dass das nicht stimmt (auch wenn es in der Herstellerdokumentation schon im März nicht so dargestellt wurde). Mittlerweile ist dies auch in belegten...
@alvar_f@juergen34@da_mister_e@UlrichKelber Sicherheitslücken genutzt und demonstriert worden. Das Papier liest sich wie eine Werbebroschüre und hält dabei Versprechen aufrecht, bei denen sogar der Entwickler zurückstecken musste.
Da ist eine MS365 Diskussionen natürlich einfacher, denn dort gibt es Alternativen ...
Richtig! Mit symm AES128 und dann auf dem Server abgelegt (steht auch in Doku).
Wo sind denn die symm Schlüssel für Badges abgelegt?
Richtig, ergeben sich aus der S/N der Schlüsselanhänger (hier 56bit entropy, steht in Doku)!
@alvar_f@juergen34@da_mister_e@UlrichKelber Wie ist denn sichergestellt, dass der Apo-Hersteller die Seriennummern nicht kennt?
Nope! Steht nicht in Doku, habt ihr dann wohl im Herstellergespräch erörtert?!
@alvar_f@juergen34@da_mister_e@UlrichKelber Da dem Rest der Welt (einschließlich Fragesteller im Bundestagsausschuss Digitale Agenda) wurden hierzu keine Informationen gegeben.
Wir haben also selbst gefragt ... und?
Richtig, die Seriennummern werden von Nexenio vergeben und sind durch Nutzer nicht mehr änderbar.
Ergibt sich alles aus der Doku und Herstellergespräch.
Ist auch nur ein Beispiel!
@alvar_f@juergen34@da_mister_e@UlrichKelber Ihr habt dann also in eurer Bewertung festgestellt: "Okay, die garantieren uns die Schlüssel niemals zu verwenden. Also schauen wir lieber ob die TLS Verschlüsselung auch nicht mit RSA läuft!" 😂
Heute Gelegenheit gehabt, die #LucaApp auch mal auf ein Testgerät zu installieren, statt nur in Code und Konzepte zu schauen.
Die SMS TAN Verification lässt sich auch für die Android App umgehen, da Client-seitig realisiert 😒
Demo:
Was mir auch überhaupt nicht gefällt:
Die User-IP fällt am Server zwangsläufig ab, aber hier erzwingt man für jeden HTTP request noch einen UserAgent header mit:
- Android SDK Version
- Geräte Hersteller
- Geräte Typ
Das sind DREI unnötige Classifier für device fingerprints
Kurze Illustration zu Classifiern die von 3rd party trackern genutzt werden, um Geräte möglichst eindeutig zu (wenn z.B. unique identifier nicht mehr nutzbar sind).
... hätte nicht gedacht, dass die Animation bei einer solchen Software passen würde:
Meine Tweets zu der #LucaApp wurden in den vergangenen Tagen gehäuft mit emotional aufgeheizten Aussagen gemischt, in Teilen auch mit technischen Schwachsinn den einige so on die Heide hauen.
Hier ein paar Klarstellungen:
Es ist mir ziemlich egal von wem digitale Covid ...
Tracing Lösungen beworben werden (schließt auch @lesmoureal ein, dessen Umgang mit kritischen Äußerungen ich dennoch nicht mag).
Luca verfolgt ein anderes Ziel als CWA und nutzt dafür einen zentralen Ansatz. Auch das mag ich nicht, weil es zusätzliche Risiken birgt.
Das SiKo von Luca ist nicht schlecht, wenn man es auf die definierten "Objectives" beschränkt betrachtet (man hat sich hier Mühe gegeben), dennoch reicht das nicht.
Einige begründende Beispiele:
Das Luca backend ist als eine Art Daten Treuhänder zu sehen. Es wurden auch ...
Okay, doing my first baby steps with r2frida (which combines the power of @radareorg and @fridadotre).
Gonna share my progress in this thread (live, so keep calm).
The goal: Runtime inspection of data sent out by TikTok !!before!! it gets encrypted
1/many
First of all, we do not start from zero. I got some prior knowledge from past reversing attempts and want to share some important facts.
TikTok's (log data) encryption is accomplished by a native library. The Android Java code just serves as proxy function to the native function
The decompiled code for the respective native JNI function of an older TikTok version looks something like this, but in this example I use the most current TT version (no statical analysis done, yet)
Recently tweeted on a bypass for Snapchat's cert pinning. It required monitoring 'android_dlopen_ext' to instrument the native target library directly after load.
Absence of 'adroid_dlopen_ext' on older Android SDKs raised some questions, so I'll share a partial solution.
1/n
The appended screenshot shows an alternative approach to monitor loading of dynamic modules for JNI based on 'JavaVMExt::LoadNativeLibrary'.
Below it is showcased with @fridadotre frida-trace (upper terminal) and a modified script for the frida-trace hook (lower terminal)
2/n
As pointed out in the comments, you have to deal with C++ mangled function names and the std::string implementation of the respective C++ library, to do it in this way (less clean than the 'android_dlopen_ext' approach).
3/n
Whenever I talk about an Android app sending data to Asian countries, some folks go crazy.
Let me comfort you: If you are a European user, like me, most apps communicate to US servers as shown below (2h capture ... DJI, AliExpress, Gojek etc).
What? Not to US?? Let me help you!
My issue is simply that I am using a German DNS-Server, which might be a bit biased when it comes to resolving a DNS host to the best suited server.
So lets resolve with DNS over TLS from @Cloudflare
Hmm ... still so much US-traffic, even from Asian apps?
Okay, my fault ... I am still using an European source IP (Germany).
So let me change this, too, by using a VPN exit in Japan!
Damn, even more requests are directed to US, now.
Sorry, I cannot help you - your data will always end up in US ... unless you install Camera360 😉
The real problem is actually highlighted in the example linked above.
I tried to "unpin" CONNECT requests (not POST/GET/DELETE etc), which occur because my proxy is visible. Of course TikTok wants to establish a raw tunnel through the proxy with CONNECT.
... time for a break
All failed TLS connections used CONNECT as request method