应用侧漏洞与CTF题解:https://wnagzihxa1n.gitbook.io

大土豆安全笔记 | 移动端一线业务攻防的一些知识

以前一直搞应用安全,在攻击这个方向上花了比较多的时间,但一直没注意到自己缺少完整的思考

比如注入技术,我熟练使用相关的工具,原理也略有了解,但没有更多的去完善后续的对抗,比如自家产品被人调试了,我能不能感知到,这个感知过程会不会被攻击者绕过,这就出现了对抗

所以最近我跟朋友们学习了很多风控相关的技术,虽然只是零散的聊天,但也受益无穷,一些思路非常有意思

不过我是初学者,很多技巧我都是刚上手,以下提到的内容也并非完全风控相关,有说错的地方各位老板多担待

例如像钉钉这样的软件虚拟定位打卡作弊如何对抗?

我找到了一个已暂停更新的打卡插件

这里就是主要的虚拟定位逻辑了,改的还是挺多的,包含WiFi信息,运营商信息,位置状态信息等

IMAGE

结合最开始说的,我们能使用工具去作弊,且知道了原理,那接下来就是思考在防御者的角度进行对抗,我们如何检测这种作弊行为呢?

运行环境检测肯定是一个,比如检测Root,系统版本信息,存在但极少有使用AOSP编译的版本进行日用,但Root后的机器我们也不能直接就判定为作弊机器,最多只能说是打个风险标签,所以我们需要判断系统中是否存在Xposed,已安装应用包名判断这种技术虽然能用但可能不太行,常见的方法可以通过反射获取类de.robv.android.xposed.XposedHelpers,分析这个类的字段fieldCachemethodCacheconstructorCache是否包含钉钉类方法等特征的字符串来判断是否被Xposed注入

攻击的技巧和对抗的技巧都很多,我还需要再多深入学习

那在风控体系中,我们还需要关心网络上的打卡作弊插件下载站点是否有持续更新的插件,有更新了直接处理,还有一些分析虚拟定位的技术贴,也要持续跟进

声明:我只是出于技术研究角度分享学习笔记,并无主观破坏意图,请各位遵纪守法,争当社会主义好韭菜~

如何检测当前运行环境是否存在Xposed,Frida等注入框架? 检测Xposed上面讲到了两个方法,已安装的应用列表,反射获取de.robv.android.xposed.XposedHelpers

我们还可以通过调用栈枚举检测Xposed特征

Throwable.getStackTrace();

再比如在/proc/pid/maps里搜索XposedBridge,在/system/lib下搜索Xposed库文件

Frida有自己的Frida_Server,在/proc/pid/maps里也可以去搜ELF文件特征

如何防止某一段Native层汇编指令被下断点?

在下断点的时候,会先保存断点原始指令,然后替换为断点指令,当命中断点的时候,会触发中断,调试器接到中断信号之后会调用信号处理函数,执行完之后断点会恢复原始指令,修改PC寄存器往前回退一条指令,程序接着往下执行

那我们可以在程序中主动设置断点并注册中断信号处理函数来反调试

正常无调试器情况下,当执行到我们设置的断点指令,信号处理函数会NOP掉当前的指令,并正常向下执行

当程序处于调试模式,遇到断点之后,调试器会去恢复断点指令,但调试器并没有原始指令,恢复会失败,于是回退PC寄存器的时候就会再一次进入断点,造成死循环

还有很多有意思的,比如如何从端上收集回来的数据怎么筛选群控规模?

关于从数据里筛攻击行为最近有一篇相关文章讲的是如何通过流量分析挖掘APT攻击

再比如坊间传闻有一波数据泄露了怎么处理?怎么溯源到是谁泄露出去的?再比如这段时间有大量用户反馈自己的手机号被泄露了怎么处理?怎么找到泄漏点?如何判断场景?

哈哈,最近特别喜欢看不同领域的面经,很多问题可以快速检测自己是否掌握这个知识点,特别涨姿势

比如ARM32架构下给R0寄存器赋值一个立即数有哪些指令可以实现?

聊点最近看的一些其它文章

《RemRAT:潜伏在中东多年的Android间谍软件》,里面提到了使用开源的Tor Onion代理库,这个技术点之后要关注一下

在大数据中搜索内网横向渗透行为

Chrome沙箱逃逸的Case整理

我看了Mojo相关的文档,去年的Plaid CTF有一道关于Mojo漏洞利用的题目,作者手动加入了一个带有漏洞的PlaidStore,以下是两篇题解,主要是理解了Mojo文件与代码如何对应就能很快明白漏洞的原理

最后跟大家提个醒,IDA 7.6来了,请问有leak吗?