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

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

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功能连接安卓模拟器
13199-zq21538evvk.png

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

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

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

82458-b35ff9i879o.png

cd

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

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

75000-cb3kmgikcxk.png

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

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

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

53213-ombge7ou1lb.png

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

84943-4op5k4ze578.png

5/ 将小程序包拉出真机

在cmd 模式下 进入·D:夜神模拟器Noxbin

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

将小程序拉到真机上

86203-1es9w985x2d.png

6/ wxapkg后缀的包已经被我们拉出来了
51698-lgv4gogpq1.png

我们现在需要安装反编译的程序来讲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的都知道

54379-2z3fnc3m0my.png

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

03647-vlpqzjfh948.png

根据反编译工具的描述,我们需要安装这些模块,这里有一个坑点:就是后面的-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

60239-87ucc3qktfd.png

75928-a2kft3vpepw.png

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

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

99141-7f3x3zzuk5v.png

总结:

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端安装

37437-uye91k0wwo.png

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

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

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

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

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

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

59874-cel62dqdym4.png

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

50320-t4ts1laekb.png

安装坑点请注意:

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

23546-cl6b8gzmcbh.png
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编码会这样

61466-8lwm6sruubj.png

使用936编码会这样

87295-nqkj61fi3sn.png

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

就能回归正常的编码了

57997-9yfmw4r9n7.png

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

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

63160-cji4izjuqlk.png

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

38865-a6gp0771sfa.png

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

03509-igwey4z37e.png

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

显示不存在注入

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

66384-kf5smgu8u98.png

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

07711-d752qmq732l.png

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

55217-a8lifx3v47d.png

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

10138-enmht08by4.png

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

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

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

60448-ditijxaud4v.png

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

原创文章,作者:运营,如若转载,请注明出处:http://www.csxxaq.com/yc/1623.html
实战|记录一次渗透测试项目
« 上一篇 07-27
男子"翻墙"访问境外色情网站,被行政处罚
下一篇 » 07-29

相关推荐

Joomla漏洞总结

以下文章来源于黑白天 ,作者kevinJoomla 3.0.0 -3.4.6远程代码执行(RCE)漏洞复现漏洞描述Joomla是一套内容管理系统,是使用P...

红队防猝死手册

文章来源:https://github.com/zhutougg/RedteamStandard一切为了不丢分工作环境工作时全部操作均在虚拟机中完成虚拟机...

渗透某勒索服务器

这是 酒仙桥六号部队 的第 74 篇文章。全文共计1300个字,预计阅读时长5分钟。文章来源:六号刃部 - 酒仙桥六号部队 事情经过和我一起合租的室友喜欢...

Android渗透工具集合

Android安全测试更多地被安全行业用来测试Android应用程序中的漏洞。下面将列举全面的Android渗透测试工具和资源列表,其涵盖了在Andro...