在我手度过了短暂而充满成长的508天~
选择了一个新的方向,开始一段新的旅程。希望接下来的旅途里也能和大家分享自己在工作和学习上的风景。
文章中分享的关键反调试代码如下:
代码含义:
1A转换成十进制就是26,1F转换成就是31,26就是函数编号,通过Apple提供的System Call Table 可以查出ptrace的编号为26,通过“SVC 0x80”指令发起系统调用。
内联 svc + ptrace 实现代码如下。
void AntiDebug(){
#ifdef __arm__
asm volatile(
"mov r0,#31\n"
"mov r1,#0\n"
"mov r2,#0\n"
"mov r12,#26\n"
"svc #80\n"
);
#endif
#ifdef __arm64__
asm volatile(
"mov x0,#26\n"
"mov x1,#31\n"
"mov x2,#0\n"
"mov x3,#0\n"
"mov x16,#0\n"
"svc #128\n"
);
#endif
}
反调试一般的操作为:
1.Ptrace PT_DENY_ATTACH = 31参数用于告诉系统阻止调试器的依附。
2.sysctl函数查看当前进程信息,判断是否有此标志位来检测是否处理调试状态。
3.SIGSTOP通过捕获系统SIGSTOP信号来判断。
4.获取进程的调试状态:取异常端口,isatty或者ioctl检测。
代码见:https://github.com/AloneMonkey/iOSREBook/blob/6dd028fea7/chapter-8/8.3%20%E5%8A%A8%E6%80%81%E4%BF%9D%E6%8A%A4/DynamicProtect/DynamicProtect/AntiDebug.m
一般通过用API实现的都比较容易被绕过,换成SVC指令实现相对来说检测会更强一些。
总结:
hook getUserConfigInfo返回nil,YGCourse和YGPlan的isVip和joinEnable返回YES。就此非VIP查看就没有各种限制。
对抗:
增值付费类视频拉流建议在服务端做鉴权,同时下发的视频url加上有效期策略。播放加入用户及公司版权水印,同时限制录屏及投屏等操作。
AFW(Android for Work)是协议企业使用 Android 的方案。
AFW使用了android多用户实现。多用户模式主要用到 UserManager 相关类,切换不同的用户,在不同的用户下运行 App,实现多开。
现在的小米、华为等应用双开也是基于afw技术。由于afw系统限制了只能分身一个,需要实现多开,就需要进行系统二次开发。
涉及修改:
UserManagerService中解除afw分身限制个数
UserManager中解除多用户个数限制
第三方APP炼妖壶(island):https://www.it22.net/916.html
平安银行安全运营体系的发展过程:
1.早期是基于事件推动的安全运营体系
遇到的问题:
处于救火状态,业务及威胁变化较快,压力大。
无法保证覆盖度,威胁事件误报漏报多,研判效率比较低。
缺少资产管理,规范的漏洞处理流程。大部分事件都花在找人找资产上。
2.以数据驱动的安全运营体系。(完成体系构建的一个流程)
感觉是发展到一定阶段后做一些类似于乙方的搞法,开始积累数据积累工程。如果只是安全团队自嗨,但实际未搞清楚安全团队的目标是什么?
遇到的问题:
没搞清楚在甲方工程化及数据到底要积累到什么程度,发挥什么作用?无谓的堆人堆数据意义也不大。
需要搞清楚先解决哪些问题?领导决策需要做哪些投入产出比高的事情。
3.以价值驱动的安全运营体系
找到安全在甲方的定位,把安全当做一个业务,为服务对象产生价值。安全要做好必须要融入到整个组织之中,安全需要介入到各个体系。
从小米安全运营团队分享的流程上看各大企业做的也基本类似,现在甲方安全更注重于体系和流程而不是重对人力和审计。
https://github.com/oversecured/ovaa
https://github.com/B3nac/InjuredAndroid
汇总一些bounty 的报告
https://pentester.land/list-of-bug-bounty-writeups.html#bug-bounty-writeups-published-in-2020
https://github.com/jmpews/HookZzModules/tree/master/AntiDebugBypass