前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一篇文章带你入门移动安全

一篇文章带你入门移动安全

作者头像
重生信息安全
发布2020-07-28 15:25:39
1.4K0
发布2020-07-28 15:25:39
举报
文章被收录于专栏:重生信息安全重生信息安全

这篇文章集合了一些入门移动安全的基础渗透知识,希望可以能给想入门移动安全小伙伴们一些收获。

1、一些东西你必须要知道的

apktool 将APK转为smail代码,以供审计,其实就是反编译。

jeb 安卓反编译工具,用于逆向工程或审计APK文件,可以提高效率减少许多工程师的分析时间,能将Dalvik字节码反编译为Java源代码

adb 用来操作(调试)android设备(比如android手机)的一套指令集,例如adb shell 可以直接进入手机的命令行界面

drozer 移动端渗透测试框架,模块化的测试APK文件的系统薄弱点

Android Studio 是谷歌推出的一个Android集成开发工具,基于IntelliJ IDEA,主要用于写APP代码,以及调试,测试

dex2jar 将apk反编译成java源码(classes.dex转化成jar文件) 与jd-gui配套

jd-gui 查看APK中的classes.dex转化成的jar文件,即源码文件

安卓的四大组件:

1、Activity 在屏幕上提供一个区域,提供一个可视化界面供我们点击,访问。

2、Service 服务是一种在后台运行的组件,用于执行长时间运行的操作或为远程进程执行作业。相当于你在听歌的时候,退出界面后,歌还继续放着,这就是服务的作用

3、content provider 简单的来说就是管理数据的一个程序,除了放在SD卡里的数据,手机原本的或者各个程序之间的数据都是很封闭的,但是他们又不能完全封闭,因此使用内容提供程序进行封装,一般用sqlite进行报存数据。

4、BroadcastReceiver 其实就是广播,它们可以创建状态栏通知,在发生广播事件时提醒用户,就像你手机里时不时会从屏幕上方发来一条推送,这就是这个组件最重要的功能

2、某小程序的一次反编译

其实小程序能够反编译也算一个小漏洞ZzZz

所需工具:夜神模拟器,node.js环境,wxappUnpacker反编译小程序

1/ 下载夜神模拟器

https://www.yeshen.com/

2/ 下载微信,使用夜神模拟器登陆微信,然后打开你想要反编译的小程序(此时小程序会进行缓存下载,我们随意使用这个小程序一会儿,就可以进行反编译了)

3/ 使用夜神模拟器自带的adb功能连接安卓模拟器

4/ 进入微信小程序的安装路径

cd /data/data/com.tencent.mm/MicroMsg/

在这里我们会找到属于自己的一个编号的文件

cd

/data/data/com.tencent.mm/MicroMsg/95e9e771a31d15254263f1ac22748441/appbrand/pkg

在这里我们看到有很多原本安装好的小程序,为了防止错乱,我们使用rm把它们都删掉

我们删除完毕之后,重新加载小程序(就是重新运行小程序,然后随便点点点)

这里有一个坑就是同一个小程序是有两个包的,但是有的情况下你可能会只拿到一个包,另一个包是没有出来的,也不知道是什么问题,第一次反编译的时候就只拉了一个包出来,导致反编译失败,或者不全面。

我建议是如果反编译失败了,可以退出微信重新多加载几次小程序。

现在我们已经可以看到有两个包了,这是正常状态。

5/ 将小程序包拉出真机

在cmd 模式下 进入·D:\夜神模拟器\Nox\bin

使用adb.exe pull -a /data/data/com.tencent.mm/MicroMsg/95e9e771a31d15254263f1ac22748441/appbrand/pkg/_1123949441_213.wxapkg D:\xiaochengxu

将小程序拉到真机上

6/ wxapkg后缀的包已经被我们拉出来了

我们现在需要安装反编译的程序来讲wxapkg包来进行反编译

JAVA版本:https://github.com/moqi2011/unweapp

nodejs版本:https://github.com/qwerty472123/wxappUnpacker

我们这里使用的是node.js版本的,当然java版本的也应该可以用

7/安装node.js(如果模式配置觉得麻烦可以先使用java版本的)

https://nodejs.org/en/

一步一步跟着Next就好了

然后我们需要配置一下环境变量,使用过java的都知道

当出现这个的时候,环境大致可以用的,但是我们还需要下载一些模块

根据反编译工具的描述,我们需要安装这些模块,这里有一个坑点:就是后面的-g(安装到全局) 我们可以根据实际情况选择情况看需要添加与否,有时候需要加有时候不需要加。

npm install esprima -g
npm install css-tree -g
npm install cssbeautify -g
npm install vm2 -g
npm install uglify-es -g
npm install js-beautify -g
npm install escodegen -g

8/配置所需要的环境之后,开始反编译

进入wxappUnpacker-master中

node wuWxapkg.js -d D:\xiaochengxu\_2121855882_118.wxapkg

9/安装微信开发者工具打开反编译后的包

https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html

总结:

1、使用夜神模拟器登陆微信

2、使用夜神模拟器自带的adb进入shell模式下的模拟安卓机中

3、找到小程序的存放地点,并删除原始wxapkg,

4、重新加载小程序,拉出到真机当中

5、下载反编译工具,配置环境(java,node.js,python等等等)

6、安装反编译工具的操作开始进行反编译

7、反编译失败重复进行3操作,看是否wxapkg包产生出错。

3、Drozer+模拟器

1、Drozer是什么?

Drozer是专属于app的移动端渗透测试工具,分别需要装在PC端成为控制台,装在移动端作为代理APP,通过IPC的通信,动态的发现被测试APP的安全风险。

2、安装下载启动

前往官网选择如下两个进行下载,Agent放在模拟器(真机)上,msi在PC端安装

https://labs.f-secure.com/tools/drozer/

移动端的drozer直接拖入模拟器(真机可以使用QQ文件传输助手,使用微信传输的话会被微信重命名,比较麻烦)中即可,打开后,它会监听31415端口,记得记得“开启”

PC端双击安装,一定要选择安装到Python2的目录下,然后不断下一步即可,最后drozer会安装在python下的script路径中

模拟器自带adb.exe进入,这里我用的是夜神模拟器,在Bin目录下存在adb.exe,使用以下两条命令

adb.exe connect 127.0.0.1:62001 连接本地的夜神模拟器端口

其他模拟器连接的端口不一样(例如逍遥模拟器为21503,mumu为7555)

adb forward tcp:31415 tcp:31415 将代理的端口进行转发

这样代表了建立连接成功了

安装坑点请注意:

1、很多小伙伴在使用python2的时候会命名为python2.exe,但是drozer.bat里的内容为python.exe,这样就会出现下面这种情况,没有任何反应。

2、在安装前可能需要先安装下第三方库

python2   -m   pip   install   protobuf
python2   -m   pip   install  pyOpenSSL
python2   -m   pip install twisted
python2   -m   pip install service_identity

3、真机连接

手机连接要配置成USB调试模式。cmd默认编码是简体中文GBK 936,连接终端的时候会乱码,无法连接,所以开始前我们 临时更改一下cmd的编码:改为UTF-8 65001。命令 chcp 65001

4、其他问题

http://www.pinlue.com/article/2019/03/2913/238474935511.html

http://www.360doc.com/content/16/0405/14/25472073_548029178.shtml

5、如果还是看不懂的话,可以再看看这篇文章

https://mp.weixin.qq.com/s/A51TaOOxpxzcauLU3vUHXg

6、有个比较蛋疼的点是编码

set PYTHONIOENCODING=UTF-8

使用65001编码会这样

使用936编码会这样

最后使用 set PYTHONIOENCODING=UTF-8 回车,重启窗口

就能回归正常的编码了

4、Drozer的使用

以一个应用市场的APK来演示对Drozer的使用

1、run app.package.list 列出模拟器设备中所有已经安装的App包

2、run app.package.info -a xxx.xxx.xxx 查看安装包的一些信息,例如版本信息,数据存储的目录,用户ID,组ID,是否有共享库,还有权限信息

3、run app.package.attacksurface xxx.xxx.xx 确定攻击面(暴露面)

4、run scanner.provider.injection -a com.xxx.xzxx 查看是否存在sql注入

显示不存在注入

run scanner.provider.injection 不加,就是检查所有的APP是否存在sql注入

5、run scanner.provider.traversal -a com.xxx.xzxx 查看是否存在目录遍历(显示不存在)

6、run scanner.provider.finduris -a com.xxx.xzxx 查看是否存在数据泄露(又没找到)

7、run app.activity.info -a com.xxx.xzxx 查看哪些组件能被导出

8、 run app.activity.start --component com.xxx.xzxx com.xxxxx.biz.home.HomeActivity

对上述每个组件可被导出进行利用(例如可绕过前端需要输入密码的界面)

9、 run app.broadcast.info -a com.xxx.xzxx 检查广播接口暴露 ,存在3个

10、run app.broadcast.send --component com.xxxxx com.xx.xx.x.x.x. 对上述广播接口进行发送

5、移动端渗透辅助工具

Web端的渗透有扫描器,那么移动端的渗透当然也有扫描器了。

在线的安卓APK安全审计平台

http://01hackcode.com/checklist(YOUQIANG)

https://www.appscan.io/

https://service.security.tencent.com/kingkong

http://sanddroid.xjtu.edu.cn/#upload

https://www.ijiami.cn/

APK敏感信息获取

https://github.com/TheKingOfDuck/ApkAnalyser

比较不错的参考资料:

https://zhuanlan.zhihu.com/p/74174735

https://www.jianshu.com/p/1ac864473c7c

https://zhuanlan.zhihu.com/p/50939353

https://blog.csdn.net/qappleh/article/details/99717651

https://zhuanlan.zhihu.com/p/25571814

https://www.cnblogs.com/peterpan0707007/p/9481510.html

https://www.wanandroid.com/blog/show/2310 ADB速查手册

除此之外,还有apk的重签名,也是比较重要的一个内容,当你反编译一个APK并对他进行修改后,重打包回去,如果这个时候没有对新的APK进行新的签名,那么大概率这个新的APK安装会出现问题,因此重签名是一个非常重要的东西。

我建议可以看:

https://www.jianshu.com/p/879d53256ff3

https://blog.csdn.net/willba/article/details/79476904

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-07-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 重生信息安全 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、一些东西你必须要知道的
  • 2、某小程序的一次反编译
  • 3、Drozer+模拟器
  • 4、Drozer的使用
  • 5、移动端渗透辅助工具
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档