前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android 进程注入危害与测试

Android 进程注入危害与测试

作者头像
信安之路
发布2018-09-29 11:31:57
4.4K0
发布2018-09-29 11:31:57
举报
文章被收录于专栏:信安之路信安之路

本文作者:pa55w0rd(信安之路知识星球成员---续费作品) 信安之路知识星球过期用户可以通过投稿一篇文章,入选公众号发布即可免费续一年

0x00 写在前面

源于跳槽到甲方一个人的安全部,之前我做渗透测试几乎都是 web 和移动 server 端的,客户端只会拿 apktool、dex2jar、drozer 等工具反编译一下看看源码和四大组件安全。公司要求我对移动客户端进行安全评估,看了一篇 360 的关于 Android 应用的评估报告,发现有很多的测试项我都没有测试过,并且网上的细节资料很少,偶得一款 inject 工具,尝试了一些 app 都能成功,把过程记录一下。

项目地址:

https://github.com/matrixhawk/Poison

工具编译方法:

http://blog.csdn.net/qq1084283172/article/details/53869796

代码注入主要分为静态注入和动态注入两种,静态注入针对的是可执行文件,通过修改文件内容实现代码注入,比如修改 smali 文件二次打包。动态注入针对进程,通过修改寄存器、内存值等实现代码注入。相对于静态注入,进程注入不需要改动源文件,单需要最高权限,如 Android 的 root 权限才能够进行进程注入操作。

Android 下的进程注入效果是类似于 Windows 下的 dll 注入,Android 系统使用的是 Linux 内核,因此进程间是弱相互作用,不存在 Windows 下类似于 CreateRemoteThread 作用的函数,可以在其他进程空间内创建线程来加载我们的 .so 文件,所以我们所采用的方法就是依赖于 linux 下的 ptrace() 函数,将目标进程作为我们进程的子进程操作目标进程的寄存器和内存来运行我们加载 .so 文件的代码将 .so 链接到目标进程,最后让目标进程的执行流程跳转到注入的代码执行。

如果 Android 客户端没有对进程进行有效的保护,攻击者就可以向从 Native 层面向客户端进程远程加载任意 .so 链接库,从而侵入客户端进程的进程空间,以搜索、篡改敏感内存或干涉客户端的执行过程。

0x01 环境准备

进程注入需要处理器使用的是 arm 架构,于是使用 AVD 自定义创建模拟器,其中下载 sdk 进行安装后,及自带AVD:

1、启动 AVD,界面如下

2、点击 creat 后,如下选择配置即可,注意 cpu 架构是 arm 并且选择 android4.4

3、安卓虚拟设备创建完成,点击 start 启动

4、启动过程非常耗时,当启动好之后,界面如下

环境已将搭建好了,接下来就可以测试了

0x02 开始 inject

准备一个测试 demo

AndroidDecod_com.example.androiddecod_1.apk

1、安装 demo 程序,并在模拟器中运行

adb install AndroidDecod_com.example.androiddecod_1.apk

2、上传 poison 注入程序及 libmobisec.so 文件到 /data/local/tmp 目录下,并给予执行权限

代码语言:javascript
复制
adbpush poison /data/local/tmp
adbpush libmobisec.so /data/local/tmp
adbshell chmod777/data/local/tmp/poison
adbshell chmod777/data/local/tmp/libmobisec.so

3、查看 demo 的进程及 PID 号

ps | grep com.example.androiddecod

这里能看到 PID 为 1473

4、通过 poison 工具把 libmobisec.so 注入到该进程

/data/local/tmp/poison /data/local/tmp/libmobisec.so 1473

5、查看该进程,注入成功

cat /proc/1473/maps | grep libmobisec.so

0x03 如何防止进程注入

Android 中注入需要调用 ptrace,然后执行注入 so 中的函数。因此,防止 Android 注入可以通过以下方式:

1、ptrace 附加失败

2、修改 linker 中的 dlopen 函数,防止第三方 so 加载

3、定时检测应用加载的第三方 so 库,如果发现是被注入的 so,卸载加载的 so

0x04 参考资料

Android 进程的 so 注入--Poison

https://blog.csdn.net/qq1084283172/article/details/53869796

Poison 项目源码

https://github.com/matrixhawk/Poison

PTARCE 函数

http://man7.org/linux/man-pages/man2/ptrace.2.html

进击的 Android 注入术

https://blog.csdn.net/l173864930/article/details/38456313

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

本文分享自 信安之路 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x00 写在前面
  • 0x01 环境准备
    • 0x02 开始 inject
    • 0x03 如何防止进程注入
    • 0x04 参考资料
    相关产品与服务
    网站渗透测试
    网站渗透测试(Website Penetration Test,WPT)是完全模拟黑客可能使用的攻击技术和漏洞发现技术,对目标系统的安全做深入的探测,发现系统最脆弱的环节。渗透测试和黑客入侵最大区别在于渗透测试是经过客户授权,采用可控制、非破坏性质的方法和手段发现目标和网络设备中存在弱点,帮助管理者知道自己网络所面临的问题,同时提供安全加固意见帮助客户提升系统的安全性。腾讯云网站渗透测试由腾讯安全实验室安全专家进行,我们提供黑盒、白盒、灰盒多种测试方案,更全面更深入的发现客户的潜在风险。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档