对于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]
]
答案 0 :(得分:4)
在尝试验证我的Verizon Galaxy Nexus的Google电子钱包APK下载时,我将此解决方案放在一起。
要验证应用程序签名,您需要一个具有某些版本apk的受信任源。 Android会强制使用相同的软件包名称对相同的软件包进行应用程序更新,因此Google电子钱包无法在不创建新软件包名称的情况下更改其证书,并且要求每个用户重新安装该应用程序。
从受信任的来源下载包含Google电子钱包的工厂图片
下载系统图片提取器
提取工厂图像
tar xzvf takju-jro03c-factory-bf087655.tgz
mv takju-jro03c/image-takju-jro03c.zip .
提取嵌入图像(zip文件)
unzip image-takju-jro03c.zip
提取系统图像提取器(我们在第2部分中下载的文件)
tar xzvf ext4_utils.tar.gz
chmod +x simg2img
从系统图像中提取可加载ext4的图像
./simg2img system.img system.image.ext4
mkdir sys
使用新创建的sys /文件夹作为挂载点
挂载解压缩的ext4映像sudo mount -t ext4 -o loop system.image.ext4 sys/
查看Wallet.apk证书
unzip -p sys/app/Wallet.apk META-INF/CERT.RSA | keytool -printcert
比较指纹和序列号(我将它们复制到python字符串中并以这种方式进行比较)。寻找SHA-1前映像攻击需要大约2 ^ 160次猜测,因此如果指纹匹配,则下载的APK很糟糕的可能性很小。
您还可以将工厂图像提取Wallet.apk侧载到手机adb install sys/app/Wallet.apk
,然后在手机上下载新的apk并从文件管理器启动它以执行升级。 Android将为您进行证书验证。