App安全测试指南(六)——进程保护

本文仅作学习记录,如有侵权,请联系删除!

前言:


日常学习打卡,我还有很多头发!

1.1 内存访问和修改:

通过对客户端内存的访问,木马将有可能会得到保存在内存中的敏感信息(如登录密码,帐号等)。测试客户端内存中是否存在的敏感信息(账号、明文密码等等)

测试步骤:

需要 root 权限,可以使用 MemSpector 查看、搜索和修改客户端内存数据,如图所示。
用户名、密码等数据通常会在/dev/ashmem/dalvik-heap 内存段。
目前大多数工具都是通过 ptrace 接口修改客户端内存,可以使用 ptrace 机制本身防护。

威胁等级:

当进行敏感操作后,在内存中可以搜索到用户输入的敏感信息时为高风险,否则无风险。

安全建议:

对于内存中的信息泄露,可以通过反注入、反调试来解决。

1.2 动态注入:

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

注入原理:

将目标进程作为我们进程的子进程操作目标进程的寄存器和内存来运行我们加载 .so 文件的代码将 .so 链接到目标进程,最后让目标进程的执行流程跳转到注入的代码执行

SO注入就是将代码拷贝到目标进程中,并结合函数重定向等其他技术,最终达到监控或改变目标进程行为的目的。Android是基于Linux内核的操作系统,而在Linux下SO注入基本是基于调试API函数ptrace实现的,同样Android的SO注入也是基于ptrace函数,要完成注入还需获取root权限,可通过 ptrace 挂载等方式控制客户端代码执行流程

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

通过注入动态链接库,hook 客户端某些关键函数,从而获取敏感信息或者改变程序执行

注入过程如下:

0x01 获取目标进程的pid,关联目标进程;
0x02 获取并保存目标进程寄存器值;
0x03 获取目标进程的dlopen,dlsym函数的绝对地址;
0x04 获取并保存目标进程的堆栈,设置dlopen函数的相关参数,将要注入的SO的绝对路径压栈;
0x05 调用dlopen函数;
0x06 调用dlsym函数,获取SO中要执行的函数地址;
0x07 调用要执行的函数;
0x08 恢复目标进程的堆栈,恢复目标进程寄存器值,解除关联,完成SO动态库注入;

检测 LD_PRELOAD 环境变量。使用 LD_PRELOAD 环境变量,可以让进程预先加载任意so,劫持函数。如图是劫持 ls 命令__libc_init()函数的效果。

使用工具动态注入应用进程内存:
项目地址:
https://github.com/crmulliner/ddi
https://github.com/crmulliner/adbi

Android NDK,修订版 10e(2015 年 5 月):
https://developer.android.google.cn/ndk/downloads/older_releases
PS:搭建相应的环境时最好根据对应工具的开发日期来决定环境的版本,所以说不要一股脑地下载最新版,否则就会像我一样,两个小时毫无进展

adb push libs/armeabi/hijack /data/local/tmp/
adb push libs/armeabi/libexample.so /data/local/tmp/
adb push libs/armeabi/libstrmon.so /data/local/tmp
adb shell
su
cd /data/local/tmp
>/data/local/tmp/strmon.log
>/data/local/tmp/adbi_example.log
chmod 777 /data/local/tmp/strmon.log
chmod 777 hijack
# GET PID from com.android.phone
./hijack -d -p PID -l /data/local/tmp/libexample.so
./hijack -d -p PID -l /data/local/tmp/libexample.so
cat adbi_example.log
cat strmon.log

本地随机对app测试的时候发现注入失败:

威胁等级:

当客户端存在动态注入隐患时高风险,否则无风险。

安全建议:

防止应用程序被 Hook

1.3 本地端口开放检测:

通常使用 PF_UNIX、PF_INET、PF_NETLINK 等不同 domain 的 socket 来进行本地 IPC 或者远程网络通信,这些暴露的 socket 代表了潜在的本地或远程攻击面,历史上也出现过不少利用 socket 进行拒绝服务、root 提权或者远程命令执行的案例。特别是 PF_INET 类型的网络 socket,可以通过网络与 Android 应用通信,其原本用于 linux 环境下开放网络服务,由于缺乏对网络调用者身份或者本地调用者 id、permission 等细粒度的安全检查机制,在实现不当的情况下,可以突破 Android 的沙箱限制,以被攻击应用的权限执行命令,通常出现比较严重的漏洞

busybox netstat -tuanp|grep -Ei 'listen|udp*'

emmmm,这里完全不懂,先作个记录把

1.4 外部动态加载 DEX 安全风险检测:

Android 系统提供了一种类加载器 DexClassLoader,其可以在运行时动态加载并解释执行包含在 JAR 或 APK 文件内的 DEX 文件。外部动态加载 DEX 文件的安全风险源于:Anroid4.1 之前的系统版本容许 Android 应用将动态加载的 DEX 文件存储在被其他应用任意读写的目录中(如sdcard),因此不能够保护应用免遭恶意代码的注入;所加载的 DEX 易被恶意应用所替换或者代码注入,如果没有对外部所加载的 DEX 文件做完整性校验,应用将会被恶意代码注入,从而执行的是恶意代码

测试步骤:

查 看 AndroidManifest.xml 包 package 值 相 对 应 路 径 下 的 文 件 中 是 否 含 有 DexClassLoader() 函数调用

风险位置:

public DexClassLoader(String dexPath,String optimizedDirectory, String libraryPath, ClassLoader parent)[2]
1.5 so 库函数接口检测:

检测 so 库中函数是否可被其他应用调用

测试步骤:

尝试使用其他程序调用 APP 的 so 库函数

参考如下:


Android安全(三)—so注入(inject)
Android 进程注入危害与测试
App安全检测指南-V1.0.pdf
Android APP渗透测试方法大全.pdf

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,928评论 6 509
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,748评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,282评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,065评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,101评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,855评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,521评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,414评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,931评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,053评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,191评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,873评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,529评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,074评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,188评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,491评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,173评论 2 357

推荐阅读更多精彩内容