技术学习专题
前言
这个文案主要是记录自己在技术学习的技术专题,专题是平时学习总结,同时也是自己系统学习的计划,这样可以让自己的学习更加系统,并且可以把平时所学的归纳。这样可以写入文章中。
小专题
1、Socket抓包通杀专题
主要是分析android下如何实现通杀,学习网络协议的分析和溯源
目前完成度:80%
2、github上优秀的frida工具分析
主要的目的是学习frida更多的高级技巧同时也是学习优秀工具的开发原理
目前完成度:10%
3、模拟执行so,最高目标对抗混淆
主要是学习各种模拟执行框架,在不依靠真机的情况下,模拟出so中的函数,达到溯源的目的。同时也是为分析类似于ollvm这类强混淆做准备。
①、ExAndroidNativeEmu
②、unicorn
③、unidbg
目前完成度:5%
4、新提上一个专题:各种汇编反汇编器的使用研究
主要是针对现在市场上出来挺多的汇编与反汇编器的产品,有开源免费使用的,有商用的,主要的目的是研究各个软件的优势,同时也是可以起到研究反编译原理。
目前完成度:1%(目前仅仅收集了一些工具而已)
专题需要分析的工具如下:
高级反汇编器:IDA、JEB、Ghidra
基础利器:Capstore(编译器)、Keysotre(反汇编器)
新晋反汇编器:Radare2、binary ninja、Cutter
5、OLLVM混淆与去混淆对抗
主要是针对OLLVM这类混淆做出可行性的方案来对抗,主要是的目标还是学习对抗方案和原理,OLLVM的独特性,不同的开发者会加入不同pass,所以很难达到通用的去除办法,开这个研究可以的目的在于总结对抗的通用做法以及辅助分析OLLVM的手段,尽可能的削弱该混淆对逆向分析的阻碍。
研究大致路径
①、正向开发研究,手动实现标准开源的OLLVM混淆(demo实现)
②、剖析OLLVM混淆的实现原理,同时学习LLVM编译器的原理(创新改进,增加pass)
③、演习对抗方案
大致可能会涉及到
1、unidbg模拟执行去混淆
2、IDA python脚本去混淆
3、基于frida hook的方式辅助分析
4、基于angr的方式去混淆(符号执行)
5、手动patch
目前完成度 5%(目前仅仅收集了文章,以前有实现但是是基于Linux的)
6、NDK开发技术与加固壳的研究
NDK开发已经是Android平台下用的非常多的技术了,很多有效的保护都会是用NDK开发技术,讲重要的代码写在Native层进行保护,ELF的加固手段在已经是很成熟的技术,可以拓展应用到Android平台之上。Native层也可以反射调用java层函数,可以做一些签名校验。
所以NDK开发是学习写壳的必经之路,写加固很多也是在so层做对抗。
1、NDK基础开发知识
2、指令抽取壳的原理与实现
3、vmp壳的实现
4、java2C的实现
7、移动端各种Hook技术研究
Android下实际上存在很对hook方案很多,同时也涉及到很多hook框架,比较热门的框架如frida、xposed框架,这两个框架在hook世界中运行是非常高频。
除此之外,很涉及到一下的hook方案
1、inline hook
2、got表动态链接库 hook
3、zygote hook
4、Unidbg内嵌了多种Hook工具,目前主要是四种
Dobby
HookZz
xHook
Whale
这些hook 在写加固中很常用,同时在分析特定的情况也是很重要的手段,在游戏安全、加固、脱壳等等方面都有很重要的使用价值。因此开设这样一个专题来进行研究hook技术,实际上很对hook框架都是基于底层基础的inline、got等hook技术。
8、密码学原理研究和魔改,自动化识别算法
之所以想要系统的研究密码学的知识,主要目的就是如何破译,同时如何快速识别逆向过程中出现的密码学算法,这是理论的研究。之所以研究魔改,意图是提高安全性,对算法的魔改可以在一定程度上阻隔解密的脚步。
学习的基本要求:
了解基本的原理,学习和阅读相关密码学算法的paper,从数学理论研究到代码实现(Java、C++)
寻找各个算法的特征,研究如何自动化识别算法,比如IDA插件findcrypt3、findhash、unidbug_findKey
魔改算法,提高安全性能
逆向分析Android系统密码学库,逆向有代表性的APP实战
常见的算法
单向散列加密
SHA-1 安全散列算法
MD5 信息摘要算法
RIPEMD 基于MD4设计
BASE64 编码
SHA256 主流加密
HMAC 是秘钥相关的哈希运算消息认证码
对称加密
DES Data Encryption Standard
3DES 三重DES
AES Advanced Encryption Standard
非对称加密
RSA 一种早期非对称算法
DSA Digital Signature Algorithm 只用作签名验证
ECC 椭圆加密
大专题研究项目
VMP/java2C等脱壳保护对抗研究
前言
这个项目主要是基于主动调用解决掉指令抽取加固后,针对重要方法实现了VMP、java2C加固方案的修复或者自动化的研究。同时该项目也肩负着加壳与脱壳的前沿技术对抗,如何实现尽可能更多的自动化技术。为了完成这个专题的研究,会专门在此文章中收集加固相关的文章作为技术研究支撑。
论文/文章/paper 收集
研究路径或者产出文章记录
总结
Android自动化漏洞检测引擎
前言
这个研究专题目前是紧接着以往的作品开发赛进行延伸,实质上只是技术上的延伸,作品在目前看来框架都是不重要的,重点在于核心检测引擎。自动检测目前实际上开源的挺多的项目,但是不是效果不太明显,就是时效性,项目没人维护。目前计划是学习开源的项目,然后二次开发创新,跟进paper进行课题研究。
阅读书籍研究项目
前言
之所以想要开设这样的一个专题,其目的在于
督促自己系统的阅读书籍的习惯,将自己买过的技术书籍,根据实际的需求进行系统的学习,消化经典的书籍;
其二在于将书籍中的知识完成转化,变成自己的东西,真真实实的把书中的知识吃透并能够在更新迭代之中应用,很多书籍可能由于技术迭代,并不一定适用于当下或者有更加好的技术来实现。
其三是一直都想做一套完完整整的教程,做开源的项目。
其四是发现自身的不足,觉得应该系统的学习,改掉坏毛病
这个专题大致有如下安排或者说目标
1、每章可自由分小节总结技术文章,有真实案例定不能因为麻烦就不去复现和探索
2、技术更新,技术辐射到书中未更新的技术知识的补充
3、不要求一次性写的很完整,但是务必是每一章做到自己目前最大的努力,自己觉得OK才能开始下一章的书写。
4、在开始一个专题前,可以花费1-2星期对整本书的内容进行快速阅读,掌握书籍的整体脉络。
5、一段时间专注一件事
《Android安全攻防权威指南》
《Android应用安全防护和逆向分析》
《漏洞战争 软件漏洞分析精要》
漏洞研究项目
前言
之所以开设这么一个研究项目,主要的目的就是筹备漏洞研究相关的工作,实际上在车联网/物联网安全工作过程中,很多都是多漏洞的挖掘和利用,但是当时自身需要完成项目的需求和能力上的欠缺,并未对漏洞这块进行深入的研究,这是和自身的要求是违背的。
达到的目的:
1、利用好手上的资源,比如科恩车联网漏洞报告,科恩的IOT检测平台、Android漏洞检测平台以及其知识库。
2、分析历史比较重要的CVE漏洞,进行复现和原理分析
3、自动化漏洞挖掘工具的二次开发,可以学习huluwa的9月报
4、实现的目的就是挖掘属于自己的漏洞,漏洞类型不限于Android/IOS、IOT设备、车联网设备等等。
车联网漏洞报告的提取和整理
主要是整理自己手上的车联网的漏洞报告,提取出比较有学习价值的漏洞报告,如果可以复现也可以自己写demo进行复现。
Android自动化检测知识库的整理学习
这个专题主要是学习科恩自动化检测平台的漏洞知识库,熟悉Android的漏洞原理,相应的poc的构造,如何去发现这种类型的漏洞,这里实际上是可以结合当初自己搭建开发自动化检测平台的过程进行反思、对比和总结。
CVE分析
这个专题就是实打实的漏洞的复现环节,以前实际上是有收集过一点Android上的CVE漏洞,不过一直没有去分析和复现。所以这个专题在完成上面基本的漏洞知识后就可以展开对漏洞的复现。