我如何验证官方Google apk

时间:2012-08-02 14:42:28

标签: android rsa

对于Android的所有rooting和自定义模块,让我感到紧张的是,一些说明谷歌的apks实际上是恶意的。

因此,在尝试验证它们时,我已经提取了一个ANDROID.RSA公钥,并且我一直在尝试在线验证它。但是每个谷歌搜索都会在Android上进行公钥加密的方法,而不是如何验证实际google apks

所以我的基本问题是:

如何验证google apk实际上是google apk?

我发现了一个特定的RSA公钥:

Owner: CN=Google NFC, OU=Android, O=Google Inc., L=Mountain View, ST=California, C=US
Issuer: CN=Google NFC, OU=Android, O=Google Inc., L=Mountain View, ST=California, C=US
Serial number: a8cd17c93da5d990
Valid from: Wed Mar 23 21:06:53 EDT 2011 until: Sun Aug 08 21:06:53 EDT 2038
Certificate fingerprints:
     MD5:  C9:E9:71:21:25:5D:E0:15:6F:3F:5B:24:B1:A8:47:6A
     SHA1: 82:75:9E:2D:B4:3F:9C:CB:AF:CE:31:3B:C6:74:F3:57:48:FA:BD:7A
     Signature algorithm name: SHA1withRSA
     Version: 3

Extensions: 

#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 1C CE CE 0E EA 4D C1 12   1F C7 51 5F 0D 0A 0C 72  .....M....Q_...r
0010: E0 8C C9 6D                                        ...m
]
]

#2: ObjectId: 2.5.29.19 Criticality=false
BasicConstraints:[
  CA:true
  PathLen:2147483647
]

#3: ObjectId: 2.5.29.35 Criticality=false
AuthorityKeyIdentifier [
KeyIdentifier [
0000: 1C CE CE 0E EA 4D C1 12   1F C7 51 5F 0D 0A 0C 72  .....M....Q_...r
0010: E0 8C C9 6D                                        ...m
]

[CN=Google NFC, OU=Android, O=Google Inc., L=Mountain View, ST=California, C=US]
SerialNumber: [    a8cd17c9 3da5d990]
]

1 个答案:

答案 0 :(得分:4)

在尝试验证我的Verizon Galaxy Nexus的Google电子钱包APK下载时,我将此解决方案放在一起。

要验证应用程序签名,您需要一个具有某些版本apk的受信任源。 Android会强制使用相同的软件包名称对相同的软件包进行应用程序更新,因此Google电子钱包无法在不创建新软件包名称的情况下更改其证书,并且要求每个用户重新安装该应用程序。

  1. 从受信任的来源下载包含Google电子钱包的工厂图片

    https://developers.google.com/android/nexus/images#takju

  2. 下载系统图片提取器

    http://andwise.net/?attachment_id=406

  3. 提取工厂图像

    tar xzvf takju-jro03c-factory-bf087655.tgz  
    mv takju-jro03c/image-takju-jro03c.zip .
    
  4. 提取嵌入图像(zip文件)

    unzip image-takju-jro03c.zip
    
  5. 提取系统图像提取器(我们在第2部分中下载的文件)

    tar xzvf ext4_utils.tar.gz  
    chmod +x simg2img
    
  6. 从系统图像中提取可加载ext4的图像

    ./simg2img system.img system.image.ext4
    
  7. mkdir sys

  8. 使用新创建的sys /文件夹作为挂载点

    挂载解压缩的ext4映像
    sudo mount -t ext4 -o loop system.image.ext4 sys/
    
  9. 查看Wallet.apk证书

    unzip -p sys/app/Wallet.apk META-INF/CERT.RSA | keytool -printcert
    
  10. 比较指纹和序列号(我将它们复制到python字符串中并以这种方式进行比较)。寻找SHA-1前映像攻击需要大约2 ^ 160次猜测,因此如果指纹匹配,则下载的APK很糟糕的可能性很小。

  11. 您还可以将工厂图像提取Wallet.apk侧载到手机adb install sys/app/Wallet.apk,然后在手机上下载新的apk并从文件管理器启动它以执行升级。 Android将为您进行证书验证。