APK aus dem Netz auf Echtheit prüfen

  • 2 Antworten
  • Letztes Antwortdatum
F

Flugrost

Neues Mitglied
0
Die eBay Android App wurde aktualisiert. Sie ist nunmehr unbrauchbar. Der Google Store bietet keine Downgrade Möglichkeit. Auf der Seite des Herstellers - Get the new eBay app on any device. - finde ich auch keine älteren Versionen.

Eine Suche im Netz nach "ebay apk" ergibt Treffer bei APKMirror - #APKPLZ #SOONBACKANSWER Aber ist das eine vertrauenswürdige Quelle? Jeder Hansel kann doch da seine modifizierte ebay APK hochladen. Zum Glück kann man eine APK prüfen:

How do I verify that an Android apk is signed with a release certificate?
How do I verify that an Android apk is signed with a release certificate? - Stack Overflow
jarsigner -verify -verbose -certs -keystore D:\JDK\jre\lib\security\cacerts unklar.apk

Schön und gut. Er bescheinigt mir in 2493 Fällen:

X.509, CN=eBay Android
[certificate is valid from 12.02.10 21:48 to 06.02.35 21:48]
[CertPath not validated: Path does not chain with any of the trust anchors]

Wie man sieht, kann er das Zertifikat nicht gegen den Aussteller prüfen. Das Zertifikat steht isoliert da, so wie ein selbstausgestelltes. So jedenfalls verstehe ich die Meldung. Das Zertifikat müßte stattdessen an eines der Stammzertifikate gebunden sein. Wie man es halt von SSL Zertifikaten kennt.

Dachte ich jedenfalls. War aber falsch gedacht. Hat sich was mit "CertPath … chain … trust anchors". Es gibt für eine APK keine Vertrauensanker, denn APK Zertifikate sind in aller Regel selbstausgestellt. (Fremdausgestellte Zertifikate sind nicht verboten, aber wozu der Aufwand?) Eigentümer und Aussteller sind gleich wie hier bei meiner eBay APK:

keytool -printcert -file CERT.DSA
Eigentümer: CN=eBay Android
Aussteller: CN=eBay Android
Seriennummer: 4b75be9b
Gültig von: Fri Feb 12 21:48:27 CET 2010 bis: Tue Feb 06 21:48:27 CET 2035
Zertifikat-Fingerprints:
MD5: 73:19:BF:F0:37:5D:4B:77:1D:03:5D:42:8A:A0:99:40
SHA1: 19:66:EE:1D:FC:E1:ED:F3:B7:51:22:FB:25:8E:44:C3:CA:60:5E:94
SHA256: 85:B4:01:54:97:15:4D:FA:89:DE:30:87:71:A9:FC:61:A6:4B:19:AF:1A:3F:B0:32:56:E8:CC:3A:79:55:67:E5
Signaturalgorithmusname: SHA1withDSA
Version: 3

Stammzertifikate sind nicht erforderlich. Jeder oder so gut wie jeder brät sich sein Zertifikat kostengünstig selber.

Signing Your Applications | Android Developers

Android requires that all apps be digitally signed with a certificate before they can be installed. Android uses this certificate to identify the author of an app, and the certificate does not need to be signed by a certificate authority. Android apps often use self-signed certificates.

Demnach kann man dem Zertifikat ruhig vertrauen, wenn man ihm in der Vergangenheit bereits vertraut hat, indem man eine APK mit dem gleichen Zertifikat aus dem Google Store installiert hat und dort ja sicher alles ganz genau geprüft wird. Oder mach ich da einen Denkfehler?

Weitere Überlegung: Alternativ hätte Google ja auch selber Vertrauensanker werden und alle Entwickler zur (möglichst kostenlosen) Beantragung und Verwendung eines von Google ausgestellten Zertifikates verpflichten können. Ansonsten keine Distribution über den Google Store. Theoretisch könnte das System auch so umgestrickt werden, daß nicht von Google zertifizierten Anwendungen die Ausführung verweigert wird. Wäre natürlich deutlich weniger attraktiv für Entwickler.
 
Passt soweit. Wenn der Fingerprint der apk auf deinem Gerät aus dem Play Store mit dem aus der "unsicheren" Quelle übereinstimmt kannst du davon ausgehen, dass da nicht dran gedreht wurde.
 
[strike]Man kommt nicht an die APK auf dem Gerät, ohne selbiges zu rooten,[/strike] [doch, kommt man, Lösung siehe unten] was ich eigentlich nicht möchte, da ich mit dem Gerät vollauf zufrieden bin. Man kann sich zwar mit ADB verbinden, aber nicht als root oder sonstiger User, sondern nur als shell@flo, und der darf nix lesen.

Man kommt auch nicht an den Fingerprint aus authorisierter Quelle, da er schwerbegreiflicherweise weder im Google Store noch beim Hersteller angezeigt wird. (Gut, ist wahrscheinlich Absicht, um keine vertrauenswürdigen Zweitquellen zu ermöglichen.)

Nur um eine funktionierende ältere Version einer nach Update unbrauchbaren Version einer App wieder nutzen zu können, soll man das Gerät rooten müssen? Das ist schon etwas absurd.

Werd dann wohl ein anderes Gerät rooten, was mir nicht so teuer ist, und dort die Ebay APK abzugreifen versuchen.

Auch "adb shell pm dump <pkg>" zeigt nicht den Fingerabdruck. Vielleicht weiß jemand ein anderes Kommando, das zum Ziel führt?

Lösung:

Ha, gefunden! Mit "adb pm path <pkg>" und dann "adb.exe pull /data/app/com.ebay.mobile-1/base.apk" geht es!

Dann einfach:
keytool -printcert -jarfile com.ebay.mobile-2.9.0.25-70-minAPI17.apk
keytool -printcert -jarfile base.apk (vom Gerät gezogen, von Google geladen)

Oder umständlicher:
7z x gut.apk META-INF\CERT.DSA
Das gleiche für dubios.apk, und beide vergleichen mit:
keytool -printcert -file CERT.DSA
 
Zuletzt bearbeitet:

Ähnliche Themen

S
Antworten
7
Aufrufe
701
Silvasurf
S
C
Antworten
8
Aufrufe
493
CptGreenwood
C
Zurück
Oben Unten