这篇文章集合了一些入门移动安全的基础渗透知识,希望可以能给想入门移动安全小伙伴们一些收获。 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(安装到全局) 我们可以根据实际情况选择情况看需要添加与否,有时候需要加有时候不需要加。
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 protobuf python2 -m pip install pyOpenSSL python2 -m pip install twisted python2 -m pip install service_identity 3、真机连接 手机连接要配置成USB调试模式。cmd默认编码是简体中文GBK 936,连接终端的时候会乱码,无法连接,所以开始前我们 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 |
|