iOS RE 4 beginners 1 - MachO && class-dump
之前在 iosre看到一张比较系统的iOS逆向学习路线图,因为接触过一段时间macOS上服务的漏洞挖掘,所以对*OS安全还是挺有兴趣的,也一直想系统性地学习下iOS逆向,之前的一直不成体系,也很零碎,正好对着这个图重构下知识体系。
之前在 iosre看到一张比较系统的iOS逆向学习路线图,因为接触过一段时间macOS上服务的漏洞挖掘,所以对*OS安全还是挺有兴趣的,也一直想系统性地学习下iOS逆向,之前的一直不成体系,也很零碎,正好对着这个图重构下知识体系。
因为工作需求要去验证一些PoC,而很多PoC需要开natives-syntax才能跑,如果转成纯JS实现又需要花更多时间,所以需要在Android的app/webview里也实现添加 js-flags,方便后面搞分析 :)
CodeQL Cli适合批量做扫描,但是扫描结果并不适合直接做批量的运营,仅适合一些实锤的问题,对于一些还需要人工处理判断的结果就不太适合了(要看源码、调用上下文);如果使用VSCode插件来做,也只是单条规则扫单个/多个数据库,结果倒是很友好,点点点就能读代码来分析了,所以这种用法不适合批量的query扫描。
如果付费的话自然是可以解决了,可以在CI/CD中集成,就方便多了 -。- 但是对于个人使用者来说不太现实,所以我就想用一个简单的办法来实现这个目的
CodeQL cli批量扫描结束后,导入数据库+历史query结果,直接在vscode里运营结果,流程为:
1最近看了一些Bootloader&TZ以及相关的议题,主要是ARM架构下的内容;正好这几个月我的Leader领着我们组一起学习ARMv8&v9架构相关的知识,在阅读这些材料的时候给我提供了不少的帮助,让我理解起来更加容易,也算是变相检验学习成果咯。
前段时间MOSEC上盘古关于MTK BootROM Exploit的议题非常精彩,所以我画了一些时间对议题内容进行分析,并结合手边能找到的一些材料做了逆向分析,也感谢同事@C0ss4ck在会场拍下了完整的Slide :)
这里直接从optee-examples中最简单的hello world入手来看的,从宏观上来看整个调用流程是 :
1在今年的ByteCTF中,我出了一道pwn题目,距离上一次打比赛/出题已经过去很久了,所以传统的 heap trick 就没有考虑,而是从我日常工作中挖掘的安全风险入手,简化场景,出了一道 chatroom ,看起来像一个web的奇怪题目。
最近阅读了一篇论文<<The Convergence of Source Code and Binary Vulnerability Discovery – A Case Study>>,很巧合的是论文的研究中,关于将SAST工具应用于二进制文件(通过decompiler),即获取伪代码之后,在伪代码上跑SAST工具来找漏洞这个模式我和@C0ss4ck一起做过,在我们收到一些成效之后发现也有人做了类似的工作,不过他好像没有特别深入 :D
Fishhook是Facebook提供的利用MachO文件惰性加载原理,通过修改懒加载和非懒加载两个表的指针达到C函数HOOK的目的一个轻量级的hook库。理解这个工具和熟悉流程也是可以帮助更好的理解MachO文件格式 :)
AST Pattern Search
核心是使用和 tree-sitter 库,然后搞了 query-tree 来在 AST上进行搜索,这只能说是匹配特定的代码片段,还达不到程序分析的那个级别,所以理论上只能过程内分析,而且没有上下文啥的 :D 直白点说的话,像是AST的正则表达式,不过某种意义上来说对于使用白盒方案快速召回一些漏洞也是一种借鉴吧。
迫于要分析一些SDK里的协议,需要抓到所有的流量来分析交互过程,所以有了这篇记录,主要是基于实时监控Android设备网络封包做的尝试,然后使用相同的思路扩展到了iOS上。