前言
移动应用早已成为我们日常生活中不可或缺的一部分,为我们提供了各种便利和娱乐。但与此同时,随着移动应用的普及,盗版APP给用户的隐私安全带来的威胁也逐渐显现出来。盗版APP不仅侵犯了开发者的知识产权,还有可能通过这些非法途径获取用户的个人信息,给用户带来隐私泄露的风险,这些数据还可能被二次利用,成为一种获取不正当收益的工具。
本文将对一个盗版APP窃取用户数据的案例进行分析,探讨背后的技术原理和对用户隐私的潜在威胁。
01
工具准备
MT管理器
MT管理器是安卓平台上的经典神器,是一款功能强大的工具软件,拥有独具特色的双窗口文件管理和强大的APK(Android Package)编辑功能,让你可以在手机上高效地进行各种文件操作以及修改安卓软件。
APK文件是安卓平台的应用安装包,它实际上是一个ZIP格式的压缩文件,而MT管理器对ZIP压缩文件在各种操作上的支持,为修改APK打下了良好的基础。
jadx-gui
项目地址:https://github.com/skylot/jadx
jadx-gui是一个用于反编译Android应用程序的图形用户界面工具,可用于将Android应用程序的DEX文件(Dalvik Executable,是Android 应用程序的编译后的执行文件,包含了Dalvik/ART虚拟机能够理解的字节码)转换为Java 代码的工具。
夜神模拟器
夜神模拟器是一款免费的Android模拟器,提供一个虚拟Android环境,支持多个Android版本,使用户能够在计算机上运行Android应用程序,且支持Root功能,使用户可以在模拟器上获得更多的系统权限。
02
APP分析
首先,下载目标APP所对应的正版APP的APK安装包,将其“.apk”的后缀名改为“.zip”,并将ZIP压缩包解压;使用同样的方法解压盗版APP。使用比对工具对正版应用和盗版应用进行比对,如下图:
根据比对结果可知,盗版APP的安装包中的“独有内容”为“lspatch”文件夹。
LSPatch(https://github.com/LSPosed/LSPatch)是LSPosed(https://github.com/LSPosed/LSPosed)框架的无根实现,通过在目标APK中插入DEX来集成Xposed API,也就是不需要Root就可以将Xposed模块内置到APP中,以实现更改应用程序的行为。
查看“lspatch”文件夹的内容,如下图:
使用jadx-gui对其中的apk进行反编译,经分析发现目标应用中被插入了HOOK代码,实现拦截网络请求的响应数据,并将返回的数据包中的用户信息(例如用户ID、用户昵称、token等)截获,部分内容如下图:
随后将截获的数据上传至远程服务器并存入相应数据库中,用户数据就这样被悄无声息地窃取了。
03
复现实验
要想将数据盗取过程动态复现,其中一个需要解决的重要问题是如何使得手机APP的数据被截获后,回传到我们本地的服务器而非原来打包好的APK中定义的远程服务器地址。
01
修改IP地址为本地服务器地址并重新打包
使用MT管理器打开目标APP,找到前面分析的插入HOOK代码的“lspatch”目录,打开并查看“com.xpdemo.apk”,使用MT管理器的“Dex功能”中的“Dex编辑器++”对DEX文件进行编辑,部分内容如下图:
结合上文中jadx-gui的分析,在DEX中找到相应远程服务器IP地址的字符串,并将其修改为本地服务器的IP地址,部分内容如下:
修改后退出编辑并进行保存,如下图:
在Android中,APK文件需要经过签名才能被安装。签名是一个由开发者提供的数字证书,用于验证应用的来源和完整性,用于确保应用在传输过程中未被篡改。因此,我们常常会发现,从不明网站下载的APP,在安装过程中,手机会弹出警告,让用户确认是否允许未知来源的应用安装。
如果一个APK文件没有经过签名,它一般是不能被正常安装的,所以我们需要对修改后的APK进行签名操作,部分操作如下:
重新签名后的APK即可重新安装,以实现将HOOK截获的数据上传至我们自定义的本地服务器。
02
网络地址转换和端口流量转发
另一种实现将APP数据回传至本地服务器的方式是使用iptables进行端口流量转发。
iptables是一个用于配置Linux内核中的IPv4数据包过滤规则的工具。它是Linux操作系统中的防火墙工具之一,可以定义如何处理传入和传出的网络数据包。iptables提供了灵活的规则设置,可以根据不同的条件和动作来过滤、转发或修改网络数据包。
iptables 的一些基本概念和用法:
表(Table):iptables使用表来组织规则。主要的表有三个,分别是filter、nat和mangle。filter表用于过滤数据包;nat表用于网络地址转换;而mangle表则用于修改数据包。
链(Chain):表内包含若干个链,每个链定义了一系列规则。主要的链有INPUT、OUTPUT、FORWARD等。INPUT用于处理传入的数据包;OUTPUT处理传出的数据包;而FORWARD用于处理转发的数据包。
规则(Rule):链内包含若干规则,每个规则定义了如何处理符合特定条件的数据包。规则可以指定动作,比如接受、拒绝、转发等。规则也可以包含匹配条件,比如源地址、目标地址、端口等。
匹配模块(Match Modules):iptables使用不同的匹配模块来检查数据包是否符合规则中指定的条件。例如,-m tcp用于匹配TCP协议,-m state用于匹配连接状态。
目标(Target):规则的目标指定了数据包符合条件时应该执行的动作。常见的目标包括 ACCEPT(接受)、DROP(丢弃)、REJECT(拒绝)等。
实操主要步骤:
使用adb命令进入模拟器(需要Root权限)的终端,首先使用“iptables -L -t nat”命令查看当前“nat”规则表中的规则,如下图所示:
使用“iptables -t nat -A OUTPUT -p tcp --dport 12345 -j DNAT --to-destination 192.168.1.101:12345”命令,设置网络地址转换规则,将出站(OUTPUT)TCP数据包中,目标端口为“12345”的TCP数据包重定向到本地服务器“192.168.1.126”的“12345”端口,实现端口映射。如下图所示:
上述命令的具体含义如下:
-t nat:指定要操作的表为nat表,用于配置网络地址转换规则。
-A OUTPUT:表示在nat表的OUTPUT链(处理传出的数据包)中添加一条规则。-A代表添加规则。
-p tcp:指定规则适用于TCP协议的数据包。
--dport 12345:指定目标端口为12345。这是一个匹配条件,规则将仅适用于目标端口为12345的TCP数据包。
-j DNAT:指定目标动作为目标地址转换 (Destination NAT)。DNAT 是一种网络地址转换技术,它允许将数据包的目标地址修改为规定的地址。
--to-destination 192.168.1.101:12345:指定目标地址为 192.168.1.101,并且目标端口为12345。这意味着匹配到的数据包的目标地址将被修改为192.168.1.101,目标端口将被修改为12345。
综上所述,这个iptables命令的作用是,当系统发出的TCP数据包的目标端口为12345时,将目标地址转换为192.168.1.101,目标端口转换为12345。这通常用于实现端口映射或者透明代理,将访问的特定端口的流量重定向到内部网络中的某一台主机。
结语
盗版APP的出现不仅侵犯了开发者的权益,更是对用户个人信息构成了直接威胁。通过非法手段获取用户信息的行为,不仅可能导致个人隐私泄露,还为不法分子提供了获取不正当收益的手段。通过技术分析,我们加深了对这一问题的理解,广大用户要警惕非法应用,以免个人信息被盗取并非法利用。相信未来会有更多的技术手段和法规出台,对移动应用安全进行监管和保护,构筑一个更加安全可信的移动应用环境。
参考资料:
https://binmt.cc/doc/index.php?s=/1&page_id=1
https://binmt.cc/doc/index.php?s=/1&page_id=18
https://github.com/LSPosed/LSPatch
https://github.com/skylot/jadx
https://blog.csdn.net/wangquan1992/article/details/100534543
奇安信集团旗下有北京、上海、西安三家司法鉴定所:北京网神洞鉴科技有限公司司法鉴定所、盘石软件(上海)有限公司计算机司法鉴定所与陕西洞鉴云侦科技有限公司司法鉴定所(筹)。其中,上海所是上海第一家通过 CNAS 认证认可的民营计算机类司法鉴定机构。三所均通过了CMA资质认定,是目前国内少数能够通过自主研发软件进行取证与分析的电子数据司法鉴定机构,具有独立的实验室场所,其中包括:案件受理区、数据恢复区、手机取证区、计算机取证区、屏蔽室、无尘工作间和物证室,并配备多种国内外先进的技术设备检验及辅助设备。经过多年的时间积累和发展,现拥有一批胜任鉴定工作的专业技术人员,以专业的技能和丰富的经验,来开展电子数据司法鉴定工作。开展的鉴定服务范围包括:电子数据司法鉴定、计算机证据固定和获取、手机终端取证与分析、数据恢复、密码破解以及涉及电子设备的民事调查等。
鉴定热线&地址:
010-56509288(北京)
北京市西城区西直门外南路26号院1号-奇安信安全中心B1
021-52658848(上海)
上海市闵行区合川路2555号科技绿洲三期五-3号楼4层
029-86196688(西安)
陕西省西安市经济技术开发区凤城二路1幢经发大厦B座10607室