安卓系统Activity劫持与反劫持
00序言
近日,丹麦一家APP安全性企业Promon发觉并报导了一个特点系统漏洞早已被好几个故意运用利用的数据分析报告,她们根据检测发觉该系统漏洞使恶意程序能够装扮成一切合理合法的应用软件,进而使网络黑客能够浏览个人短消息和相片,盗取受害人的登陆凭证,追踪部位或纪录电話会话,乃至能够根据手机镜头和话筒开展监控。
科学研究工作人员将该系统漏洞取名为StrandHogg,它是北欧人的一种北欧海盗战略,围攻沿海城市抢掠并扣减保证金。据调查现阶段最少现有500个利用此系统漏洞的故意运用,在其中包含最开始在2017年观查到的BankBot金融机构木马病毒的变异。
科学研究工作人员对于此事系统漏洞的基本原理深入分析后发觉它是一种对“Activity劫持”的进攻方式。
01StrandHogg进攻技巧
该系统漏洞使故意应用软件有可能在装扮成合理合法应用软件的另外要求管理权限。攻击者能够要求得到一切批准,包含SMS,相片,话筒和GPS,进而容许她们阅读文章信息,查询相片,开展监听和追踪受害人的主题活动
简易而言,要不攻击者根据该系统漏洞,要求获得应用权限,要不攻击者利用相近“界面劫持”的方法,弹出来垂钓界面使你键入帐户登陆密码。
02StrandHogg进攻基本原理
事实上,该系统漏洞在2015年就早已被宾州州立高校开展了科学研究和报导,科学研究工作人员从理论上叙述了该系统漏洞完成方式。Google那时候否定了该系统漏洞的严重后果,但Promon有不容置疑的直接证据说明网络黑客已经利用StrandHogg来获得对机器设备和应用软件的访问限制。
而关键所在利用该特点系统漏洞,能够压根不用root就可以垂钓获得各种各样管理权限,乃至用户帐户登陆密码。
他利用Android的多个任务系统软件中的一个缺点来执行强劲的进攻,使故意应用软件能够装扮成该机器设备上的一切别的应用软件。此系统漏洞利用根据一个称之为“taskAffinity”的Android控制设定,该控制容许一切应用软件(包含故意应用软件)随意地选用其所需的并行处理系统软件中的一切真实身份。
Android的并行处理体制促使用户能够在不一样的应用软件中间便捷的转换,当今过程被转换到后台管理时,多个任务体制会让过程进到中止的情况,总是在运行内存中储存运用的运作情况,因而不容易占有CPU的資源。
殊不知,Android的并行处理体制及其Activity的设计方案本身却存有一些缺点,“Activity劫持“绝大多数选用了界面遮盖或强制关掉总体目标过程并弹出来虚报界面的方法,一般根据监听系统日志、枚举类型当今过程等方法来完成其进攻总体目标。
03 Activity劫持缘故
Activity劫持是根据Activity所属每日任务及回到栈有关特性开展劫持的一种方式.根据一定的特性设计方案,能够完成Activity在不一样每日任务中间的迁移及遮盖等个人行为。
在开展安卓系统APP开发设计全过程中,假如在运行一个Activity时,给他们添加一个标志位FLAG_ACTIVITY_NEW_TASK,就能使他放置栈顶并立刻展现给用户。对于这一实际操作,倘若这一Activity是用以盗号软件的掩藏Activity呢?在Android系统软件之中,程序流程能够枚举类型当今运作的过程而不用申明别的管理权限,这样子大家就可以写一个程序流程,运行一个后台管理的服务项目,这一服务项目不断扫描仪当今运作的过程,当发觉总体目标过程启动,就运行一个掩藏的Activity。假如这一Activity是登录界面,那麼就可以从这当中获得用户的账户密码。
简易的说便是APP一切正常的Activity界面被故意攻击者更换上假冒的故意Activity界面开展进攻和不法主要用途。界面劫持进攻一般难被鉴别出去,其导致的不良影响不但会给用户产生重大损失,也是移动智能终端开发人员们的做噩梦。举个事例而言,当用户开启安卓机上的某一运用,进到到登陆页面,这时候,恶意程序探测到用户的这一姿势,马上弹出来一个与该运用界面同样的Activity,遮盖没了合理合法的Activity,用户基本上没法发觉,该用户下面键入用户名和登陆密码的实际操作实际上是在恶意程序的Activity上开展的,最后会产生什么就显而易见了。
04Activity劫持进攻方式
1、监听系统Logocat日志,一旦监视到产生Activity界面转换个人行为,即开展进攻,遮盖上仿冒Activity界面执行蒙骗。开发人员一般都了解,系统软件的Logcat日志会由ActivityManagerService复印出包括了界面信息的日志文档,恶意软件便是根据Logocat获得这种信息,进而监管手机客户端的运行、Activity界面的转换。
2、监听系统API,一旦恶意软件监视到有关界面的API部件启用,就可以进行进攻。
3、反向APK,故意攻击者根据反汇编和逆向分析APK,掌握运用的领域模型以后目的性的开展Activity界面劫持进攻。
05 Activity劫持生产调度体制
android为了更好地提升用户的用户感受,针对不一样的应用软件中间的转换,大部分是无缝拼接。她们转换的仅仅一个activity,让转换的到前台接待表明,另一个运用则被遮盖到后台管理,不由此可见。Activity的定义等同于一个与用户互动的界面。而Activity的生产调度是交给Android系统软件中的AmS管理方法的。AmS即ActivityManagerService(Activity管理服务),每个运用想运行或终止一个过程,全是先汇报给AmS。 当AmS接到要运行或终止Activity的信息时,它先升级內部纪录,再通告相对的过程运作或终止特定的Activity。当新的Activity运行,前一个Activity便会终止,这种Activity都保存在系统软件中的一个Activity历史时间栈中。每有一个Activity运行,它就压进历史时间栈顶,并在手机上表明。当用户按住back键时,顶端Activity弹出来,修复前一个Activity,栈顶偏向当今的Activity。
06Activity劫持完成
开发设计一个简易的APP运用来检测界面劫持,大致逻辑性是程序流程启动获得到本机里已安裝的全部运用信息,随后人为因素加上想劫持的运用,程序流程在后台管理持续监视Activity栈顶原素分辨运用信息是不是与攻击者加上的运用信息一致,发觉假如用户点一下了被劫持的运用,则给仿冒的网页页面加上一个标志位“FLAG_ACTIVITY_NEW_TASK”使其立刻进到栈顶,更换掉本应该是用户点一下一切正常载入的运用界面,进而完成界面劫持。
获得本机里已安装应用的package信息。并打印以下:
攻击者在下面的图所显示部位,加上想劫持的应用包信息。可是如何知道包信息呢,回答非常简单,由于攻击者要想提升劫持的通过率,他会采用一些用户规模大的运用,一些能被很多人免费下载的运用,而这种运用的包信息是公布的,这就解决了包信息的难题。
下面的图展现的编码,便是解决劫持进攻的逻辑性编码。程序流程载入Activity栈顶的原素,分辨他的包信息跟设置的包信息是不是相符合。相符合得话马上启用Camera_layout.xml(仿冒网页页面),并加上一个标志位“FLAG_ACTIVITY_NEW_TASK”,将他马上放置栈顶部位替代原来的一切正常网页页面,完成界面劫持。
劫持程序流程界面
劫持取得成功界面
07Activity反劫持安全防护方式
现阶段,还没什么专业对于 Activity 劫持的安全防护方式,由于,这类进攻是用户方面上的,现阶段还没法从编码方面上彻底消除。可是,我们可以适度地在 APP 中给用户一些警告信息,提醒用户其登录界面以被遮盖。在网络上查了许多解决方案以下:
1、对于用户:
Android手机上均有一个HOME键(即小屋子的那一个标志),长按能够查询到最近每日任务。用户在要输入支付密码开展登陆时,能够根据长按HOME键查询最近每日任务,例如登陆微信时间按发觉最近每日任务发生了手机微信,那麼现在我的这一登陆界面就极有可能是一个故意掩藏的Activity,转换到另一个程序流程,再查询最近每日任务,就可以了解这一登陆界面是来自哪一个程序流程了。
2、对于开发者:
研发人员一般的作法是,在登陆对话框或是用户隐私保护键入等重要Activity的onPause方式中检验最前面Activity运用是否本身或是是系统应用,假如发觉故意风险性,则给用户一些警告信息,提醒用户其登录界面以被遮盖,并得出遮盖一切正常Activity的类名。
在 Acitivity 的 onStop 方式中 启用封裝的 AntiHijackingUtil 类(监测系统程序流程授权管理)检验程序流程是不是被系统软件程序流程遮盖。
在前面创建的一切正常Activity的登录界面(也就是 MainActivity)中重写 onKeyDown 方式和 onPause 方式,分辨程序流程进到后台管理是不是用户本身导致的(触碰返回键或 HOME 键)这样一来,当其被遮盖时,就可以弹出来警告信息。
全自动运维管理|运维管理专用工具的不断迅速交货实践活动
【预警信息】具备极高可配备性的Zeppelin敲诈勒索病毒来袭!!!
【风险】可绕开防毒软件的Snatch病毒感染来啦!!!
当碉堡机会上防水坝,1 1撞击的安全性便是那么稳!
Android勒索病毒剖析