审查测试安卓流程是什么?详细指南助你零基础入门渗透测试!

我这人做事,喜欢从头摸索。以前总觉得“渗透测试”这玩意儿特别高深,只有那些黑客电影里的人才会。直到前两年,我家里老人手机里装了个免费抢票软件,结果手机差点瘫痪了,个人信息也差点泄露,我才下定决心,得自己搞清楚,这些安卓应用到底能不能被普通人查个底朝天。

第一步:为啥要做这事?从实战需求出发

小编温馨提醒:本站只提供游戏介绍,下载游戏推荐89游戏,89游戏提供真人恋爱/绅士游戏/3A单机游戏大全,点我立即前往》》》绅士游戏下载专区

我当时的想法很简单,就像是拆开一台电器看它内部构造一样。既然应用是跑在手机上的,那总有办法看到它在干什么。我给自己的目标就是:搞清楚一个安卓应用安装包,在不运行的情况下,能看出多少秘密;在运行的时候,它又会偷偷摸摸跟谁说话。

我做的,是准备我的“装备”。我没用公司那种专业的测试环境,我就找了个家里淘汰的旧安卓手机,版本不用太新,因为老系统往往更好下手。我把这台旧手机叫做我的“试验台”。

我给电脑装了些工具,最基础的就俩:一个是能让电脑跟手机聊天的(大家叫它ADB,我叫它“沟通桥梁”),另一个是能拦截手机所有上网流量的软件(就是那个代理软件,大家都知道的,我得把手机的网络请求全部导到我电脑上,像个交通警察一样)。

第二步:静态分析——先看说明书和结构图

拿到那个可疑的安卓安装包(APK文件)后,我得先给它“脱壳”,看看里面装了什么。我用的工具也很傻瓜,就是把APK文件解压了,就像解压一个压缩包一样。

解压完,我主要盯着几个地方看:

  • 看权限清单(*):这是应用的“户口本”。我打开这文件一看,这抢票软件竟然要求读取我的通讯录、我的短信、我的GPS定位。我当时就纳闷了,抢个票要这么多私人信息干这就是第一次发现问题。如果一个应用要的权限超出了它实际业务需要,那它肯定有问题。
  • 看资源文件和配置:我在里面翻找,看看有没有什么写死的密码、密钥或者服务器的地址。有些粗心的开发者,把连接数据库的密码直接写在配置文件里,虽然是编译过的,但用工具一转,还是能看个大概。
  • 看核心代码结构:我用工具把应用的核心代码文件(DEX文件)稍微转换了一下,虽然看不懂全部,但我能看到应用里定义的各种函数名字。我就是在找那些听起来就不对劲的函数名,比如“upload_all_contacts”(上传所有联系人)之类的。

这一步下来,我已经对这个应用的行为模式有个大致的判断了,心里有了数,知道它可能在哪里搞鬼。

第三步:动态分析——让它跑起来,看它干坏事

光看文件不够,得让它跑起来,在“试验台”上表演给我看。我把手机的网络都设置让它所有的请求都通过我的电脑上的代理软件走一遍。我称这为“实时监听”。

应用一启动,我就盯着代理软件的界面看。它开始跟服务器发数据了。

我关注了以下几个重点:

  • 通信加密检查:它跟服务器聊天的时候,用的是不是安全的HTTPS?如果它用的是HTTP,那就完蛋了,它发出去的任何数据都是裸奔的。即使是HTTPS,我也得检查它有没有正确验证服务器的“身份证”(就是证书)。有些应用根本不检查,随便一个假证书就能糊弄过去,我就能假扮成它的服务器,看它把敏感数据发给我。
  • 敏感信息传输:当我输入一些测试数据(比如假身份证号、假银行卡号)的时候,我盯着网络数据包看,看这些数据是不是加密后再发出去的。如果我输入了密码,结果数据包里直接能看到明文密码,那这软件就太不负责了。
  • 本地存储检查:我用“沟通桥梁”(ADB)进入手机内部,看看这个应用运行后,在手机里偷偷存了什么东西。很多应用喜欢把用户的身份信息、聊天记录存在手机本地的数据库或文件里。如果这些文件没有加密,那一旦手机丢失,信息就全泄露了。我发现那个抢票软件居然把我的测试信息存在一个没有密码保护的数据库里。

第四步:记录与反思,零基础也能搞明白

整个流程走下来,我花了足足两天时间。我把所有发现的问题都记录下来,哪个函数可疑,哪个请求不安全,哪块本地存储没加密,我用最粗糙的语言一一写在了我的实践记录本上。

我发现,所谓的“审查测试”或“渗透测试”,对于我们普通人来说,并不是要发现多么高深的代码漏洞,而是用一个很严谨的流程,去检查应用有没有犯那些最基本的错误。是不是该加密的没加密?是不是不该要的权限它非要?是不是数据存在了不安全的地方?

当我把这些记录整理再回头看那个流氓软件时,我就发现它简直是漏洞百出。我把这个经验分享给了我周围的朋友,让他们以后下载应用时,先看看它要求什么权限,再用工具稍微跑一下,心里就有底了。

实践出真知,真的是这样。从一个连APK是什么都搞不清的人,到能自己动手把一个流氓软件的底裤扒下来,这个成就感比我看一百本理论书都强。别怕开始,找个旧手机,装好工具,自己动手试一遍,很快你就能入门了。