Android Cydia Substrate hook用法

前一段时间给Saurik发了几封邮件,想让Substrate for Android开源,以更好地支持Android 5.0,可惜Saurik一直没回我。Substrate文档较少,又没有开源社区支持,再加上Frida出来了,估计以后用Substrate的会更少。这里分享一下Substrate的各种方法,供参考。

Substrate hook步骤:

1. 在Manifest里进行权限的声明

<permission
        android:name="cydia.permission.SUBSTRATE"
        android:label="modify code from other packages"
        android:permissionGroup="android.permission-group.DEVELOPMENT_TOOLS"
        android:protectionLevel="dangerous" />
<uses-permission android:name="cydia.permission.SUBSTRATE" />

 

RSA APJ 2014回顾

7月份20号的那一周,我有幸去了趟新加坡,参加RSA ASIA Pacific & Japan 2014安全峰会,并做了两场主题演讲。时隔两年,再一次“走出国门”,并且继AVAR 2012之后,靠着自己的努力在技术上又向前迈了一步,所以整体来讲,我还是挺开心的。

RSA APJ是RSA针对亚太地区举行的安全峰会,今年是第二届。相对RSA USA,名气弱了一些,参会企业中传统安全厂商很少,演讲主题整体技术水平也要差一个层次。不过好歹也算是RSA举办的会议,规模和会议等级也算得上是世界次顶级会议之一了。

这次RSA参会的最大感受是,移动安全在企业安全领域中还没被引起重视,仍然是Windows APT为主。因为最近公司的项目比较忙,这次演讲准备得有点仓促,所以表现只能算一般。英语因为长期没有语境,感觉也退化了不少。

PC端利用masterkey漏洞和jdi接口进行root

最近要实现PC端root的方案,逆了某客户端后发现可以通过masterkey漏洞来完成4.3版本系统(+之前)的大部分root。具体调研之后发现其实是2013年的技术,最先应该是Saurik提出的,他的Cydia Impactor中已经实现了该方案。

该方案主要的原理是:在我前面分析masterkey漏洞的文章里提到,利用masterkey漏洞的主要方法是替换文件,然后在替换后的文件里做一些事情。这样的方法有一些局限性。Saurik提出可以通过替换AndroidManifest.xml提权为sytem用户,然后再通过一些方法提权为root用户,这样就可以只通过替换AndroidManifest.xml完成root。

Android Native So加壳技术

目前市面上针对Apk的保护主要是基于Dex,公开的有DexGuard、梆梆、爱加密、ApkProtect等,私底下相信很多涉及到技术保密的App开发商都在做自己的保护策略。

而针对so的保护就相对滞后了一些,这里有so在app中扮演的角色的原因,也有so自身特点的原因。

我个人理解,elf文件相对Windows的PE来说松散一些,物理磁盘上的文件和内存里的文件镜像差异更大,所以在处理上要解决的问题较多。再加上Arm汇编指令的特点,在处理跳转时考虑的问题较多,所以导致针对Android So的保护成本较高。

Android so加壳主要需要解决两个问题:
1. 对elf文件加壳
2. 对Android So的加载、调用机制做特殊处理

基于编译水印的山寨应用检测

山寨应用是目前国内Android应用的一大问题,山寨应用主要存在于以下三个场景:

1. 类似于GingerMaster的基于服务器端多态的重新打包的病毒
2. 第三方开发者修改其他正版应用添加广告等
3. Apk破解。

这里所说的山寨应用,大体可以分为两类:
1. Apktool重新打包
2. 假冒应用

Android第三个签名漏洞#9950697分析

上周末Google发布了Android 4.4,随着一系列新功能包括安全措施的发布,我们也从AOSP的源码中看到了google悄悄修复了一个bug:

https://android.googlesource.com/platform/libcore/+/2da1bf57a6631f1cbd47cdd7692ba8743c993ad9%5E%21/#F0

LBE“免root主动防御”分析

注:转载请注明出处

LBE在新版本V5.1中增加了"免ROOT"的功能,可以在不root的情况下实现root后才有的功能,比如卸载系统软件、主动防御等。

经过百度安全实验室的分析,LBE的免ROOT功能是利用Android签名验证漏洞(编号9695860)替换了系统应用SettingsProvider,然后在SettingsProvider进程里以System权限加载执行LBE自己的功能模块,达到root后才能实现的功效。下面我们来分析这个"免ROOT"实现的主要步骤。

apktool 2.0+netbeans 7.3调试apk

Apktool 2.0优化了调试的支持,相对1.5.3的版本,主要做了以下改进:
1. 可以配合Netbeans 7.3调试apk
2. 支持显示寄存器的值,这是非常好的改进(1.5.3只可以显示函数参数P的值)
 
目前2.0还没有release,这是我自己编译的版本,下载地址:http://pan.baidu.com/share/link?shareid=1438815794&uk=369410799
netbeans 7.3下载地址:https://netbeans.org/downloads/
 
具体调试方法,以test.apk为例:

Android 4.3中SE Android展望

Android 4.3中增加了一些功能,比如OpenGL SE 3.0。但是大部分报道中却没有提到安全性方面的一个改进:SEAndroid。Android在4.3中"正式"引进了SEAndroid,这将对Android系统未来的安全体制带来不可忽略的影响。

SEAndroid是SELinux in Android。SELinux全称Security Enhanced Linux,即安全增强版Linux,它并非一个Linux发布版,而是一组可以套用在类Unix操作系统(如Linux、BSD等)的修改,主要由美国国家安全局(NSA)开发,已经被集成到2.6版的Linux核心之中,现已有十几年的开发和使用历史,是Linux上最杰出的安全子系统。

Android 第二个签名漏洞 #9695860 揭秘

在android master key (#8219321)签名漏洞爆出来不久,国内的安全团队”安卓安全小分队”在其博客(http://blog.sina.com.cn/u/3194858670)发布文章称发现另外一个android签名漏洞,但是小分队提出的利用该漏洞的方法存在一定的局限性,所以理论上可行,但是实际危害并不大。不久之后,Cydia创始人saurik在其网站(http://www.saurik.com/)上发布文章,称其发现了利用这个漏洞更好的方法。可能是因为构造特殊zip包的难度较大,也或者Master key的影响还未散去,这个新发现的漏洞虽然比Master key具有更大的破坏性,却一直没得到重视。

该漏洞(编号9695860)的主要原理是,android在解析Zip包时,C代码和Java代码存在不一致性:Java将short整数作为有符号数读取,而C将其作为无符号数。