分享

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

 zjshzq 2020-07-30

文章来源:重生信息安全

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

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./

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:///en/

一步一步跟着Next就好了

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

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

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

npm install esprima -gnpm install css-tree -gnpm install cssbeautify -gnpm install vm2 -gnpm install uglify-es -gnpm install js-beautify -gnpm 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./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 protobufpython2 -m pip install pyOpenSSLpython2 -m pip install twistedpython2 -m pip install service_identity

3、真机连接

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

4、其他问题

http://www./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:///checklist(YOUQIANG)

https://www./

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

http://sanddroid./#upload

https://www./

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./blog/show/2310  ADB速查手册

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

我建议可以看:

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

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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多