安卓APP安全风险分析与渗透测试研究
2021-06-29联通数字科技有限公司张婧宇唐昊同张子田
联通数字科技有限公司 张婧宇 毛 盾 唐昊同 张子田
随着移动互联网时代的到来,移动终端形成了一张举世瞩目的移动互联网络。其中安卓系统在智能终端系统中占有极高的比例,安卓应用程序日渐增多,其数量和种类呈现出指数式的增长,给人们的生活习惯和工作习惯带来了前所未有的变化。随着安卓应用的普及,其所存在的安全问题也成为用户所关注的焦点。文章主要分析了等保合规下安卓操作系统的安全风险隐患,通过对安卓APP程序及数据两个方面进行渗透测试来阐述安卓系统所面临的风险点。
随着信息技术的发展,移动互联网已经渗透到社会的各个方面,并且产生了巨大的影响。安卓系统作为移动终端系统的重要组成部分,安卓APP安全成为关注的焦点。为进一步理解安卓APP安全认识,理解和明确安卓APP的网络安全等级保护要求,本文对安卓框架、安卓APP所面临的风险及安卓APP渗透测试进行了简要分析和研究。
1 安卓结构介绍
安卓系统在设计上划分为不同层级,包括5层,分别是内核层(Kernal)、动态库层(Libraries)、运行时层(Android Runtime)、框架层(Application Frame)和应用层(Applications)。分层结构如图1所示。
1.1 内核层
安卓内核的底层是Linux内核,其作用是连通底层硬件与上层应用。并且内核层作为中间层面,可以对用户隐藏底层的硬件结构并提供统一的服务。安卓内核包括核心部分和驱动部分,核心部分主要包括内存管理、电源管理、进程管理、网络协议等功能。安卓内核集成了多种硬件驱动以适应不同型号的终端设备。
图1 安卓系统架构
1.2 动态库层
动态库层包含安卓系统运行中的需要的各种动态库文件,这些动态库文件的作用是支撑上层各个组件的运行,以提供更好的服务,这些库文件主要包括:C/C++相关库、多媒体库、LibWeb-Core、Surface Manager、SGL、3D libraries、FreeType、SQLite。
1.3 运行时层
运行时层包含核心库和ART(5.0系统之后,Dalvik虚拟机被ART取代)。核心库集成了Java核心库的大部份功能,使得开发者可以使用JAVA开发安卓应用。相较于传统的JVM虚拟机,Dalvik虚拟机是专门为移动端应用定制的,并生成dex格式文件,以优化内存的使用。
1.4 应用程序框架层
应用框架层为开发人员提供了开发所需要的API,便于开发人员调用以快速开发自己的应用程序。应用框架层API为程序员提供了很好的重用性,使得yoghurt可以方便的替换程序组件。应用程序框架层包括:
(1)丰富而又可扩展的视图(Views),可以用来构建应用程序,它包括列表(lists),网格(grids),文本框(text boxes),按钮(buttons),甚至可嵌入的web浏览器。
(2)内容提供器(Content Providers)提供应用程序之间的共享功能,使得不同的应用程序之间可以进行数据共享。
(3)内容提供器(Content Providers)提供应用程序的资源访问,例如图片、本地字符串以及布局文件(layout files)。
(4)通知管理器(Notification Manager)使得应用程序可以在状态栏中显示自定义的提示信息。
(5)活动管理器(Activity Manager)用来管理应用程序生命周期并提供常用的导航回退功能。
1.5 应用层
使用JAVA语言编写应用程序,应用程序由一个或者多个Activity组成,Activity活动代表了一个具有用户界面的单一页面,应用程序类似于电话、照相机、浏览器、微信等。
2 安卓APP安全风险分析
2.1 APP应用安全风险
安卓系统具有开源的特殊性,终端厂商可以对操作系统进行定制以及修改。《全国移动App风险监测评估报告》(2020年3季度版)共计收录Android应用318万款,其中存在高危漏洞的比例接近95%,接近10%的App存在恶意行为,31.88%的App嵌入推送类的SDK。具体安全风险如下:装在客户端的软件容易被反编译未加壳保护的APK可以通过工具破解,植入木马后门。攻击者通过篡改和假冒官方应用的方式植入恶意代码。安卓APP没有审查依靠用户对应用进行评分、查看用户下载量、用户举报恶意软件的方式对APP进行管理。APP对安全权限、隐私权限、其他权限具有控制权,80%用户在安装APP时赋予该应用的控制权限,直接默认授予APP相关权限,导致信息泄露。用户安全意识薄弱,在陌生区域随意登录WLAN导致终端被植入恶意代码、扫描二维码存在恶意URL访问恶意程序下载等威胁。
2.2 等保合规下的安全风险
《信息安全技术网络安全等级保护基本要求》(GB/T22239—2019)中除规定了网络安全等级保护通用要求外,还补充了移动互联安全测评扩展要求。移动互联安全扩展要求针对移动终端、移动应用和无线网络部分提出特殊安全要求,同时描述了移动应用所面临的安全风险。
(1)访问控制中要求:无线接入设备应开启接入认证功能,并支持采用认证服务器认证或国家密码管理机构批准的密码模块进行认证。
风险分析:无线接入设备不开启接入认证功能,任何设备都可接入,占用网络资源,访问重要无形资产。
(2)入侵防范中要求:保证接入到无线网络中的无线设备均为已授权的无线设备,保证接入无线网络中的设备和终端均为授权终端,要求定位和阻断非授权无线接入设备或非授权移动终端。
风险分析:无线设备不进行授权,用户可以私搭乱建无线网络,比如网络中用户自己搭建的非法wifi,或恶意搭建的wifi钓鱼等,造成其他用户信息泄露。
(3)移动应用管控中要求:保证移动终端应用软件安装与运行的可管可控,要求对移动终端管理客户端的应用软件安装与运行的功能进行管理,要求对移动应用软件使用指定的证书进行签名,保证安装文件的完整性。在移动终端管理系统中加入白名单,控制移动终端软件的应用安装范围,仅允许白名单内的移动应用进行安装、运行。
风险分析:不对移动终端管理客户端的应用软件安装与运行的功能进行管理,则不能限制应用软件开启某些功能,造成信息泄露。移动应用软件不使用指定的证书进行签名,则不能保证安装文件的完整性,造成应用被恶意用户篡改。不设置白名单仅允许安装企业建设的移动应用商店内的移动应用,用户会安装恶意应用。
(4)移动应用软件开发中要求:保证移动业务应用软件的安全性,要求对开发者进行基本的资格审查。保证移动业务应用软件所采用的证书的合法性。
风险分析:不审查开发者的工作简历、技术能力、资格证书、项目实施情况等,不能有效保证开发者的水平。未要求采用国家移动业务应用软件的签名证书具有合法性,开发者有机会对应用进行恶意操作。
3 安卓APP渗透测试
图2 测试结果
图3 测试结果
图4 测试结果
图5 测试结果
安卓APP渗透测试是通过人工分析的方式,对Android客户端应用进行安全评估和漏洞检测,评估其抵御被黑客恶意篡改的能力、抵御敏感信息泄露的能力、抵御窃取账户密码的能力和抵御通信过程被黑客入侵的能力,帮助发现Android客户端应用存在的安全隐患,更好的保证Android客户端的安全性。
3.1 程序漏洞
随着手机app的大量普及,Android应用开发的日渐完善,Android移动端应用的安全性也日益提高。但在开发过程中,依然存在着大量程序漏洞,可以被攻击者利用。例如,Activity组件安全漏洞、BroadcastReceive组件安全漏洞、Services组件安全漏洞、ContentProvider组件安全漏洞、Dex源代码反编译、反编译二次打包等。利用专业APP审计工具Drozer对客户端进行自动化检测,明确攻击面。在针对某app进行测试,结果如图2所示。
发现activities组件暴露4个攻击面,查看Activity暴露的组件,结果如图3所示。
尝试直接启动聊天模块,能绕过登录界面访问相应服务,存在越权漏洞。结果如图4所示。
3.2 运行安全
App在运行过程中,同样存在着大量程序漏洞,可以被攻击者利用。例如,输入记录保护、屏幕录像保护、进程注入保护、Activity劫持保护等。在手工测试的过程中,可以通过动态测试的方式对Android运行时安全进行测试。在针对某app进行测试时,将恶意软件安装至测试机,运行目标APP,观察劫持界面的弹出情况。结果如图5所示。
结束语:本文针对安卓框架、安卓APP所面临的风险及安卓APP渗透测试进行了简要分析和研究。下一步应继续安卓APP渗透测试进行持续跟踪和研究,具体工作可围绕以下几点开展:(1)深化对于网络安全等级保护2.0体系的理解,既要针对安全测评通用要求进行系统分析,又要结合在实际渗透测试过程中发现的Android应用漏洞进行深入解读和学习。(2)加强Android应用安全测评能力建设,通过人才培养、技术培训等方式,形成Android应用渗透测试能力储备,并在项目开展过程中不断锻炼和提升队伍。(3)做好Android应用工具储备,特别是网络流量处理工具、通用逆向分析工具等。(4)加强技术交流,积极与Android应用开发人员和移动端开发从业人员进行交流,了解领域新技术、新动态、新趋势等。