《移动终端安全ppt课件.pptx》由会员分享,可在线阅读,更多相关《移动终端安全ppt课件.pptx(93页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、移动终端安全 赵 双2022年8月11日星期四我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物ABOUT ME赵双, ID:Dflower研究方向:漏洞挖掘、恶意代码分析、 WEB渗透测试、Android安全国内安全技术小组insight-labs成员 (www.insight-labs.org)0day安全:软件漏洞分析技术(第2版) 作者之一OWASP China 2010、XCon 2011 Speaker我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,
2、证实我的猜测没有错:表里边有一个活的生物我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物ANDROID架构我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物ANDROID架构Linux Kernel(Linux内核层):Android 的 Linux 核心为标准的 Linux 2.6内核,并加入移动设备相关的驱动程序显示驱动、Flash 内存驱动、照相机驱动、音频驱动、WiFi 驱动、键盘驱动、蓝牙驱动、Binder IP
3、C 驱动、Power Management(能源管理)我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物ANDROID架构Libaries(系统运行库层)运行库:以系统中间件的形式提供 Android 运行环境:Dalvik虚拟机Dalvik 虚拟机 VS JAVA 虚拟机:它执行的不是 JAVA 标准的字节码(bytecode )而是 Dalvik 可执行格式(.dex)中执行文件。 Java VM 是以基于栈的虚拟机,而 Dalvik 是基于寄存器的虚拟机。我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把
4、它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物ANDROID架构Application Framework(应用框架层):为应用程序层的开发者提供 API。我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物ANDROID架构Application(应用层):系统应用:主屏幕(Home),联系人(Contact),电话(Phone),浏览器(Browsers)等其他应用:开发者使用应用程序框架层的 API 实现的程序。我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放
5、在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物ANDROID组件模型Activity(活动)Activity 就是一个界面,一个应用程序由一个或者多个Activity组成Service(服务)运行在后台的没有可视化的用户界面的功能模块Broadcast Receiver(广播接收器)专注于接收广播通知信息,并做出对应处理的组件Content Provider(内容提供器)应用程序间数据共享的一种标准接口,以类似于URI的方法将一些特定的应用程序数据供给其它应用程序使用我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到
6、愉快,证实我的猜测没有错:表里边有一个活的生物ANDROID权限分类手机所有者权限自用户购买 Android 手机后,用户不需要输入任何密码,就具有安装一般应用软件、使用应用程序等的权限;Root 权限Android 系统的最高权限,可以对所有系统中文件、数据进行任意操作。如果将 Android 手机进行 root 权限提升,则此后用户不需要输入任何密码,都将能以 Android root 权限来使用手机。应用程序权限应用程序对 Android 系统资源的访问需要有相应的访问权限,它在应用程序设计时设定,在 Android 系统中初次安装时即生效。我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么
7、把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物ANDROID 应用程序权限应用程序权限Android默认应用是没有任何权限去操作其他应用或系统相关特性的,应用在进行某些操作时都需要显式地去申请相应的权限。每个应用程序的 APK 包里面都包含有一个 AndroidMainifest.xml 文件,该文件除了罗列应用程序运行时库、运行依赖关系等之外,还会详细地罗列出该应用程序所需的系统访问权限。在应用安装的时候,package installer会检测该应用请求的权限,根据该应用的签名或者提示用户来分配相应的权限。我吓了一跳,蝎子是多么丑恶和恐怖的东西,
8、为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物权限级别normal:低风险权限,在安装的时候,系统会自动授予权限给 app。dangerous:高风险权限,系统不会自动授予权限给 app,在用到的时候,会给用户提示。signature:签名权限,将权限授给具有相同数字签名的应用程序。signatureOrSystem:签名或系统权限,将权限授给具有相同数字签名的应用程序或系统类app,一般不推荐使用。我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物我吓了一跳
9、,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物1. ANDROID系统漏洞拒绝服务权限绕过代码执行信息获取权限提升我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物2. ANDROID软件漏洞数据泄漏组件暴露代码执行客户端注入服务端注入我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物3. ANDROID恶意程序Android恶意程序的危害:发送
10、扣费短信窃取用户隐私赚取广告流量下载其他恶意程序发送垃圾短信我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物4. APK重打包重打包是指将正常的APK程序文件解压缩/反编译后进行修改,然后重新打包签名国内第三方市场充斥着大量的重打包程序攻击者常常利用重打包技术将恶意代码注入到正常APK文件中Example:Geinimi正常样本恶意样本我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物5. ANDROID僵尸网络已经出现的
11、僵尸网络:SMS僵尸网络:ZeuSHTTP僵尸网络:Geinimi、AnserverBotIRC僵尸网络:AndroidOS.Foncy.A其他僵尸网络P2P僵尸网络C2DM/GCM云推送僵尸网络我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物ANDROID ROOTKITNCSU大学研制出Android点击劫持rootkit原型隐藏:已经安装的软件在桌面、launcher和系统设置中消失,但实际上依然存在于手机系统中并能正常运行劫持: 桌面或launcher中的图标被用户点击后,实际执行其他的恶意应用程序
12、http:/web.ncsu.edu/abstract/technology/wms-jiang-clickjack/我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物6. ANDROID恶意广告恶意广告成为危害用户、开发者乃至整个Android产业链的毒瘤94.71%的安卓手机用户被装有广告软件,平均每部手机上存在11.68款含广告的软件,63%的用户里存在至少一款恶意广告。恶意广告的危害影响手机操作体验消耗流量窃取隐私我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感
13、到愉快,证实我的猜测没有错:表里边有一个活的生物7. ANDROID用户隐私泄漏复旦大学公布一项调研成果显示,目前市场上最热门的330个安卓应用程序中,有58%存在泄露用户隐私的情况。泄漏的数据包括IMEI手机号码地理位置 SIM 卡序列号通讯录短信我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物ANDROID:用户隐私泄漏中国信息安全测评中心,2012 年 Android 手机软件个人信息安全测评报告显示,超过50%的软件具有泄漏用户隐私的威胁我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个
14、美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物目录短信伪造漏洞 SMS Phishing, Smishing活动劫持漏洞 Activity Hijacking通知滥用漏洞 Notification Abuse输入法监听 Input Hack第三方软件漏洞我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物短信诈骗发件人:8613572331876建行
15、提示:2012年2月21号,您的建行卡支出1200.00,如有疑问请与我行客服核实:400-6886058中国建行发件人:95533建行提示:2012年2月21号,您的建行卡支出1200.00,如有疑问请与我行客服核实:400-6886058中国建行我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物短信诈骗识别和拦截欺诈短信的最广泛方法使用的方法是检查发件人号码安全软件(如360手机卫士)的垃圾 短信拦截功能主要依靠发件人黑名单和 短信内容关键字进行过滤我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这
16、样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物短信诈骗如果发件人的号码是受信任的号码呢?我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物常规的短信伪造方法向短信数据库(content:/sms/inbox)插入一条记录 ContentValues values = new ContentValues(); values.put(address, ”95533); values.put(type, 1); values.put(read, 0); values.put(“bo
17、dy”, “这是一条伪造短信); values.put(date, new Date().getTime(); values.put(person, null); Uri uri = this.getApplicationContext().getContentResolver() .insert(Uri.parse(content:/sms/inbox), values);我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物常规的短信伪造方法但是这种方法存在一个问题需要声明android.permission
18、.WRITE_SMS安装时系统会提示用户程序具有编辑短信的权限可能会被安全防护软件判定为危险程序我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物ANDROID SMISHING 漏洞发现时间:2012年11月,由Xuxian Jiang(NCSU)发现影响范围:Android4.2版本以下的Android系统漏洞描述:允许不具有WRITE_SMS的程序进行短信伪造http:/www.csc.ncsu.edu/faculty/jiang/smishing.html我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么
19、把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物DEMO我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物漏洞原理出现该漏洞的原因是Android系统的com.android.mms.transaction.SmsReceiverService系统服务未判断启动服务的调用者,攻击者可以通过该应用发送伪装短信到用户收件箱。我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物漏洞分析POC
20、代码:我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物漏洞分析 com.android.mms的AndroidManifest.xmlSmsReceiverService被导出的时候没有使用permission声明(signature或signatureOrSystem或Dangerous),在代码中也没有显式调用checkPermission,这违反了android开发规范,使得组件暴露导致权限绕过(permission redelegation)我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样
21、一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物PERMISSION REDELEGATION很多第三方软件也存在大量permission redelegation漏洞,例如:小米MIUI错误报告程序( bugreport):可以被任意程序调用,并将结果保存至/sdcard/MIUI/debug_log/bugreport-.log文件中,该log文件可以被任意第三方应用软件读取我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物目录短信伪造漏洞 SMS Phishing, Smi
22、shing活动劫持漏洞 Activity Hijacking通知滥用漏洞 Notification Abuse输入法监听 Input Hack第三方软件漏洞我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物ANDROID活动栈Android运行时,会在很多活动(Activity)中进行切换系统维护着一个Activity的历史栈,用于在用户点击后退时,恢复前一个Activity,栈顶指向当前显示的Activity。我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证
23、实我的猜测没有错:表里边有一个活的生物ANDROID活动劫持启动一个后台服务(Service),不停枚举当前进程中是否有预设的进程启动如果发现有预设进程,则使用Intent开启钓鱼Activity,并使用FLAG_ACTIVITY_NEW_TASK选项使得这个Activity位于栈顶我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物DEMO我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物目录短信伪造漏洞 SMS Phish
24、ing, Smishing活动劫持漏洞 Activity Hijacking通知滥用漏洞 Notification Abuse输入法监听 Input Hack第三方软件漏洞我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物ANDROID通知 VS IOS通知我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物ANDROID通知1. 通知标题(Title)2. 大图标3. 通知内容(Text)4. 其他信息(Info)5. 小图
25、标6. 通知时间我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物通知滥用Android系统在显示通知消息的时候并不指明该通知是由哪个应用发出的用户通常通过通知消息中的图标和内容来想当然地判定通知消息的发起者恶意程序可以通过模仿正常应用的通知消息来误导用户,从而发起钓鱼等攻击我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物DEMO我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快
26、,证实我的猜测没有错:表里边有一个活的生物目录短信伪造漏洞 SMS Phishing, Smishing活动劫持漏洞 Activity Hijacking通知滥用漏洞 Notification Abuse输入法监听 Input Hack第三方软件漏洞我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物ANDROID输入法Android系统在启动第三方输入法的时候会弹出如图所示的警告框iOS系统不允许安装使用第三方输入法为什么?我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也
27、感到愉快,证实我的猜测没有错:表里边有一个活的生物ANDROID输入法机制所有的输入法应用都需要继承特定的service。Android平台的输入法框架为输入法应用定义了一个基类InputMethodService。InputMethodService提供了一个输入法的标准实现。定义了输入法生命周期内的重要函数,提供给开发人员进行相应的处理。当用户触发输入法显示的时候(客户端控件获得焦点),InputMethodService启动。首先调用onCreate()函数,该函数在输入法第一次启动的时候调用,适合用来做一些初始化的设置,与其他service相同;调用onCreateInputView(
28、)函数,在该函数中创建KeyboardView并返回;调用onCreateCandidatesView()函数,在该函数中创建候选区实现并返回;调用onStartInputView()函数来开始输入内容,输入结束后调用onFinishInput()函数来结束当前的输入,如果移动到下一个输入框则重复调用onStartInputView和onFinishInput函数;在输入法关闭的时候调用onDestroy()函数。我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物ANDROID输入法机制在InputMetho
29、dService中,有几个值得注意的方法或类getCurrentInputEditorInfo() 可以获得当前编辑框的一组对象属性EditorInfo,有如下的关键属性lEditorInfo .hintText:编辑框的默认值,如图所示,其中Password和Email address 即为编辑框的默认值lEditorInfo .packageName:所属的apk的包名,例如手机qq中的所有编辑框的packageName都是com.tencent.qqgetCurrentInputConnection()这个方法可以获得当前的编辑框的一个InputConnection对象,而这个对象则有多
30、个强大的方法可以调用lcommitText(CharSequencetext, int newCursorPosition),用来向编辑框写入值,用来向编辑框写入值我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物输入法监听可以自己实现一个输入法,在输入每一个字符的时候记录,最后在onFinishInput方法处把输入框的值发送到特定服务器或者利用重打包的方法修改一个现有的输入法(例如搜狗),在commitText和onFinishInput处插入恶意代码,将输入的内容通过自定义的监听类发送到特定服务器我吓了
31、一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物DEMO我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物目录短信伪造漏洞 SMS Phishing, Smishing活动劫持漏洞 Activity Hijacking通知滥用漏洞 Notification Abuse输入法监听 Input Hack第三方软件漏洞我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表
32、里边有一个活的生物外部数据存储导致数据泄漏小米MIUI 备份程序用户数据泄漏漏洞编号 WooYun-2012-08187在MIUI中,用户通过备份程序(Backup.apk)将个人数据、应用程序和应用数据保存在本地,以便升级或刷机以后恢复。该应用将备份内容以明文方式保存在SD卡上。我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物内部数据存储导致数据泄漏网易手机邮Android客户端 帐户密码明文存储漏洞编号:WooYun-2012-10060在/data/data/ease.rpmms/shared_pre
33、fs/config.xml明文保存如下数据:1. 账号;2. 密码的base64编码值;3. 手机号我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物传输问题导致数据泄露 陌陌 登陆数据明文传输漏洞编号:WooYun-2012-05088我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物数据验证导致服务端注入金山词霸:手机客户端Feedback XSS漏洞注入管理员后台漏洞编号WooYun-2012-10989我吓了一跳,蝎
34、子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物数据验证问题导致客户端注入 利用恶意二维码攻击快拍漏洞编号 WooYun-2012-09145识别出来的二维码以html形式展示,可以执行html和JS脚本,用以读取本地文件和XSS跨站脚本攻击x=new XMLHttpRequest();x.open(“GET”,file:/localhostdefault.prop,false);Alert(x.responseText);我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证
35、实我的猜测没有错:表里边有一个活的生物我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物在用户不察觉的情况下接收和执行控制者发出的指令ANDROID BOT我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物ANDROID BOT种类传统BotHTTP BotTCP BotSMS BotGCM Bot我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个
36、活的生物IRC BOT (属于TCP BOT)加入IRC聊天频道保持静默接收到新消息控制命令?执行指令YN我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物DEMOIRC BOT我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物SMS BOT注册SMSReceiver监听SMS广播接收到新短信控制命令?终止广播执行指令传递广播YN我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,
37、证实我的猜测没有错:表里边有一个活的生物DEMOSMS BOT我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物使用GCM 推送服务GCM BOT我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物Bot 注册:(1) Bot 向Google的C2DM Server发送C2DM用户名(硬编码在bot里,GCM的话发送的是Sender ID)(2) C2DM服务器返回一个注册ID (3)Bot将注册ID发送到 C&C Serve
38、rGCM BOT我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物命令传递:(a) Botmaster 通过C&C Server 发送命令(当然Botmaster和C&C Server可以合二为一) (b) C&C Server使用C2DM用户名和密码(如果是GCM的话就是API Key)向C2DM Server进行验证,之后发送控制命令和bot的注册ID(3)C2DM Server 根据注册ID将控制命令推送给BotGCM BOT我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?
39、但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物静默状态下的隐蔽性所有使用推送服务的应用共享同一个C2DM长连接GCM BOT67我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物控制命令的隐蔽性控制命令来自Google服务器Android手机中,许多内置程序或其他程序都会接收C2DM消息,如Gmail、Google Map,Facebook等。GCM BOT68我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物心
40、跳包流量消耗GCM Bot 900 bytes/hourIRC Bot(interval 90s) 5760 bytes/hourHTTP(interval: 10min): 7200 bytes/hourGCM BOT我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物基于HTC Dream手机的功率模型,估计僵尸木马在运行1小时过程中的WiFi和3G电量消耗GCM BOT020000400006000080000100000120000010002000300040005000C2DMIRCHTTP(5mi
41、n) HTTP(10min)HTTP(30min)3G电量消耗(mJ)WiFi电量消耗(mJ)3GWiFi70我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物接收命令耗时WiFi环境:2s: 60%2min: 95%3G环境:5s: 53%2min: 99%GCM BOT71我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物特点比较HTTP BOT 需要定时连接C&C服务器检查新命令,会耗费大量的网络流量 周期性连接可能会
42、暴露C&C服务器 TCP BOT 时刻保持在线,响应命令快 长时间连接容易暴露C&C服务器SMS BOT 不需要与服务器保持连接,响应命令快 发送短信会产生一定费用 需要使用敏感权限:Receive_SMS, Send_SMSGCM BOT Bot和C&C Server之间的通信隐蔽在GCM服务中,不容易被发现和检测耗费流量少,不需要单独的keep-alive机制,接收命令耗时短一旦被发现,容易被阻断我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物恶意代码的传播:重打包AndroidManifest.xml
43、Original ClassMalicious ClassMainActivity将MainActivity替换为恶意activity启动activity我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物1. Write a malware重打包 REPACKAGE启动恶意服务启动原程序的main activity原app的main activity,稍后我们会对其进行修改结束自身activity1. 准备要注入的木马程序我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感
44、到愉快,证实我的猜测没有错:表里边有一个活的生物2. 反编译原app, 修改其AndroidManifest.xml重打包 REPACKAGEa) Remove the “android.intent.action.MAIN” attribute of the original main activityb) Add malwares main activity with “NoTitleBar” and “android.intent.action.Main” attributes, add necessary services, receivers, etc.c) Add necessar
45、y permissions我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物3. 反编译恶意代码的APK,将其smali和资源文件拷贝到原APK的反编译目录中4. 修改恶意代码Main Activity类的smali代码,将 “startactivity”变量设置为原app的main activity5. Repackage and Sign重打包 REPACKAGE我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物DEMO
46、重打包 REPACKAGE我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物重打包的福音:ANDROID签名验证漏洞漏洞危害:在不破解加密签名的前提下修改合规APK的代码(重打包),可以绕过android应用的签名验证安全机制漏洞原理:由于ZIP格式允许存在两个或以上完全相同的路径,而安卓系统没有考虑这种场景。在该情况下,android包管理器校验签名取的是最后一个文件的hash,而运行APK加载的dex文件却是zip的第一个dex文件。我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界
47、里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物APK文件是一个ZIP格式的压缩文件,解压之后可以得到 :META-INF directory: 包括manifest, certificate等Res directory: 资源文件Resources.arsc: 编译后的资源文件AndroidManifest.xml:程序全局配置文件,包括app的package infos, activities, receivers, permissions
48、等Classes.dex: dex格式的Dalvik虚拟机执行码APK文件格式我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物Disassembly将dex字节码转换为smali格式的汇编码 (http:/ http:/pallergabor.uw.hu/androidblog/dalvik_opcodes.htmlDISASSEMBLY & DECOMPILATION我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物De
49、compilation将dex字节码转换为Java源代码DISASSEMBLY & DECOMPILATION我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物GEINIMI(给你米)是在中国大陆传播广泛的一款Android恶意代码GEINIMI常被采用重打包的方式隐藏在众多第三方市场中的游戏等应用中GEINIMI 分析我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物GEINIMI 分析- ANDROIDMANIFEST
50、我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物GEINIMI 分析- ANDROIDMANIFEST Add a receiver, a service and an activity我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物GEINIMI 分析 - ANDROIDMANIFEST我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生