《看雪安卓安全人才标准认证》发布,考到证书看雪为您包分配哦~
2021-07-30 18:59:13 Author: mp.weixin.qq.com(查看原文) 阅读量:20 收藏

看雪学院作为信息安全领域的权威学习平台,自2000年成立以来,为企事业单位及安全界输出了大量的综合素质高、技术能力强的优秀人才,获得了用人单位的一致好评。

为了更加针对性、更高效地培养安全人才,为企业的发展和壮大赋能,提高企业在招聘活动中及人才在求职过程中的对接效率,结合看雪自身在安全圈的深厚技术积累沉淀,看雪正式针对《安卓高级研修班》学员推出《看雪安卓应用安全能力认证》。

通过认证的取得和推广,建立安卓应用安全人才圈,形成圈内互助、互惠、互推的生态;让高研班学员少走弯路,正确认知企业的实际需求、注重磨练企业实际需要的技能栈,培养独立钻研和解决实际问题的能力,通过认真为学员的成长创造真正的价值。

现将《看雪安卓安全人才标准认证》的技术考察标准和范围进行公开,希望大家多提建议,不断完善这份标准,在技术成长的道路上共同进步。

看雪安卓应用安全能力认证 v1.0

《看雪安卓安全人才标准认证》是由看雪学院推出的专业资质证书,面向Android安全从业者及相关从业人员,坚持质量标准和严格的组织管理,旨在考查应试者在真实工作环境中的技术能力,提高企业与人才的对接效率。

证书等级

《看雪安卓安全人才标准认证》中级

《看雪安卓安全人才标准认证》高级

考试评分

考试形式评分:

平时分(平时的沟通答疑、解体技术能力表现)

考试分(看雪安全开发者大会现场考试表现)

备注:

  1. 目前仅面向《安卓高级研修班》学员,通过考试者颁发此证书。

  2. 证书免费,没有考试费、工本费等任何额外费用。

《看雪安卓安全人才标准认证 v1.0》
中级标准要求

本标准自2021年1月19日起实行。

一、安卓Java层的分析和逆向

不管是Kotlin还是Java,都是基于JVM的语言,作为安卓安全工程师,要有App的Java层分析能力,能够理解、运用Java层分析工具,开展项目要求的评估工作。

1.1 APK文件格式
1.1.1 常见文件格式如jar、apk、dex、Manifest、resource、Meta
1.1.2 熟练使用常见静态分析工具如Jeb、Jadx、GDA、010editor
1.1.3 熟悉Smali语言的指令格式、寄存器、数据/流程等操作等指令集
1.1.4 配置调试环境并掌握常见的动态调试方法如代码注入、栈追踪、DDMS

1.2 Java hook
1.2.1 了解JVM的基本原理如编译执行流程、虚拟机、内存、堆栈、垃圾回收
1.2.2 熟练使用Frida/Xposed进行Java层动静态方法的hook和主动调用
1.2.3 熟练使用Frida/Xposed进行hook或构造Java的数据类型和复杂类型
1.2.4 熟练处理面向对象的高级特性如(抽象)(内部)类、接口、构造器、多态

1.3 脱壳
1.3.1 了解并懂得区分一二三代壳的核心原理与主要表现特征
1.3.2 对于Dex和类的解析、加载和执行流程有比较详细的了解
1.3.3 熟练使用常见脚本进行脱壳,对其脱壳点原理有清晰的认知
1.3.4 熟练使用常见脱壳工具如Fart/Youpk并知晓其核心原理

1.4 追踪和定位
1.4.1 熟练使用Frida/Xposed进行项目要求功能的开发和定制
1.4.2 掌握脚本语言如JavaScript、Python的基本开发调试和部署
1.4.3 熟练进行Classloader、类、方法、重载的枚举定位和hook
1.4.4 对Linux系统的内存、网络、文件、用户、进程等有初步的认识

二、安卓Native层的分析和逆向

随着开发能力的提高和对抗的升级,NDK编程越来越多的出现在各大厂商及加固的产品中,作为安卓安全工程师,要有Native层的开发和逆向分析能力,掌握C(++)语言及其可执行文件的分析方法,开展项目要求的评估工作。

2.1 C(++)开发
2.1.1 熟练掌握C的面向过程思想,掌握指针、函数、数组/结构体和内存管理
2.1.2 熟练掌握C++的面向对象思想,了解封装、抽象、继承、多态、多线程
2.1.3 熟悉掌握常见数据类型、表达式、控制流在内存中ARM指令的展现形式
2.1.4 熟悉变量、函数、数组、结构体等指针对象在内存中ARM指令的展现形式

2.2 NDK开发
2.2.1 熟悉安卓与ARM处理器的接口、架构及NDK/JNI编译流程和原理
2.2.2 熟悉JNI的数据类型、命名规则、核心原理及App运行时的执行流程
2.2.3 熟悉JNIEnv的原理、结构和作用、创建和释放、在线程中的使用
2.2.4 熟悉JNI的Java类、对象、字符串、数组、反射、系统级的操作和使用

2.3 SO文件格式
2.3.1 了解安卓与ARM处理器的接口、架构及NDK编译组件常用工具的使用
2.3.2 了解llvm编译器对C(++)程序的预处理、编译、汇编和链接的过程
2.3.3 了解so文件的格式、区段、符号(导出)表、调试信息等基本信息
2.3.4 了解系统链接器对so的装载、解析、链接、绑定、和执行的过程

2.4 hook native
2.4.1 熟悉Frida对进程漫游的操作如Memory/Process/Thread/Module
2.4.2 熟悉Frida对内存动态反汇编及Patch的操作如Instruction/ArmWriter
2.4.3 熟悉Frida对符号hook和inline hook的操作模块Interceptor
2.4.4 使用Sandhook等第三方框架对so进行持久化hook模块开发

三、安卓系统网络技术

安卓手机是一台完整的计算机,其拥有完整的TCP/IP四层模型中的软硬件基础设施,安卓安全工程师要从App及系统源码的角度熟悉整个网络框架并进行利用,尤其对HTTP/SSL相关的Java/Native层框架要非常的精通,藉此展开项目要求的评估工作。

3.1 TCP/IP协议分层模型
3.1.1 熟悉TCP/IP分层模型和基本通信流程分层的判别
3.1.2 熟悉IP地址/路由控制/DNS/DHCP/NAT等协议技术
3.1.3 熟悉TCP/UDP及安卓系统中Native/Java层相关API
3.1.4 熟悉常见应用协议如HTTP/SSH/FTP/SMB/IMAP等

3.2 HTTP
3.2.1 熟悉HTTP的基本特点/通信流程/资源定位/传输结构
3.2.2 熟悉HTTP的状态码/包结构/Cookie机制/认证机制
3.2.3 熟悉HTTP的代理机制及其与Socks/路由层代理的区别
3.2.4 熟悉常见安卓HTTP框架如okhttp/了解其底层实现

3.3 SSL
3.3.1 熟悉SSL的完整通信流程及中间人抓包的核心原理
3.3.2 熟悉非对称加解密的公私钥结合传输密钥的流程及细节
3.3.3 熟悉数字机构证书预置手机或浏览器的原因/功能/操作
3.3.4 熟悉SSL给HTTP带来的加密/认证/完整性保护的核心原理

3.4 从框架层利用网络库
3.4.1 熟悉安卓RSA系列API的基本流程及打断其对证书的验证
3.3.2 熟悉安卓KeyStore系列API流程和导出完整客户端证书
3.3.3 熟悉常见代码绑定框架及从混淆后的代码中解除证书绑定
3.3.4 熟悉HTTPS中SSL与HTTP的关系以及从SSL中提取HTTP

四、密码学技术

不管是HTTPS通信还是安卓应用本身的安全性校验和传输等,密码学技术被广泛应用在安卓软硬件系统中的方方面面,安卓安全工程师应该熟悉和精通密码学技术的原理和使用,并结合安卓系统进行密码学套件的分析,展开项目要求的评估工作。

4.1 认证
4.1.1 熟悉单项散列函数的作用/原理/和常见SHA/MD5系列的源码
4.1.2 熟悉消息认证码的作用/原理/实现和常见HMAC函数的源码
4.1.3 熟悉数字签名的作用/原理/实现和RSA函数的源码及验证过程
4.1.4 熟悉数字证书的作用/原理/实现和SSL/PKI函数的基本流程

4.2 编码
4.2.1 熟悉编码的核心原理以及清晰地明白编码不是加解密
4.2.1 熟悉Base系列函数的使用场景/原理和实现细节
4.2.2 熟悉Url编码系列函数的使用场景/原理和实现细节

4.3 密码
4.3.1 熟悉对称加解密的核心原理及常见XOR/AES/DES系列的源码
4.3.2 熟悉分组密码的核心原理及ECB/CBC/CFB/OFB系列的特点和使用
4.3.2 熟悉非对称加解密的核心原理及RSA公钥加密私钥解密的源码实现
4.3.4 熟悉PGP/HTTPS/SSH等应用中混合使用多种加解密组合方式的细节
4.3.5 熟悉秘钥的本质/安全交换的流程和场景/如何生成安全的秘钥

4.4 从框架层利用密码库
4.4.1 熟悉安卓MessageDigest系列API的实现流程且导出输入输出
4.4.2 熟悉安卓Cipher系列API的实现流程并导出加解密的参数输入输出
4.4.3 熟悉安卓Mac系列API的实现流程并导出加解密的参数输入输出
4.4.4 熟悉安卓crypto系列API和Native层openssl中常见算法的源码

《看雪安卓安全人才标准认证 v1.0》
高级标准要求

本标准自2021年1月19日起实行。

一、虚拟机

安卓应用的运行是建立在Java虚拟机的基础之上,作为安卓安全研究员要熟练掌握虚拟机的编译/开发/定制/修改等技术,制作应用分析通用工具入沙箱或脱壳机等,为项目及整个安全产业赋能。

1.1 安卓系统编译
1.1.1 熟练掌握安卓源码同步国内外镜像源及制作独立源码包
1.1.2 熟练掌握安卓编译环境准备与内核源码准备及编译
1.1.3 熟练掌握安卓源码目录基本框架及阅读审计相关工具技巧
1.1.4 熟练安卓框架和内核源码可以定制源码实现特定需求

1.2 Dalvik/Art
1.2.1 深入理解Class/Dex/ELF文件格式/结构/生成器/解析器
1.2.2 深入理解虚拟机的创建/启动/内存/线程/堆栈/JNI流程
1.2.3 深入理解Art中的JNI/内存分配与释放/解释执行/GC回收
1.2.4 深入理解Art中dex2oat/JIT编译器/线程同步/信号处理

1.3 C++
1.3.1 熟练掌握C++概念和基础数据类型/流程控制/面向对象
1.3.2 熟练掌握类型推导和访问权限/模板函数和模板类
1.3.3 熟练掌握Art中的inline编译/多态/封装/抽象/接口
1.3.4 熟练掌握Art中的C++对象反汇编/数据结构/内存布局

1.4 沙箱
1.4.1 熟练掌握改源码实现认证/编码/加解密中的关键信息自吐
1.4.2 熟练掌握改源码实现网络库/SSL/通信过程中的关键信息自吐
1.4.3 熟练掌握修改内核源码中的ptrace机制并实现改机绕过
1.4.4 熟练掌握改机突破安卓AFW限制实现App任意数量多开
1.4.5 熟练掌握改Art源码实现JNI/JavaMethod的执行流trace

1.5 脱壳机
1.5.1 熟练掌握壳的种类/生代/分辨及其采用的核心技术原理
1.5.2 熟练掌握Dalvik/Art下的Dex加载流程及通用脱壳点发现方法
1.5.3 熟练掌握App的生命周期函数和Art中类的加载和执行完整流程
1.5.4 熟练掌握主动调用思想及方法体的dump和重组dex技术

二、算法还原

安卓应用为了保障自身应用不被篡改或者数据传输的安全,往往使用大量标准或非标准算法,并使用ollvm/vmp等技术对算法进行混淆保护,安全研究员要精通分析黑盒算法的能力并从中还原出算法,提高算法执行效率并避免黑盒中的环境检测相关流程篡改加解密结果。

2.1 (非)标准算法
2.1.1 熟悉标准算法特征及识别方法熟练使用工具进行动静态识别
2.1.2 熟悉非标准算法动静态判定及提取还原并多语言实现执行
2.1.3 熟悉基于Hook的执行流动态分析思路并手动甄别算法特征
2.1.4 熟悉基于trace的分析思路从IDA/unidbg的日志中还原算法

2.2 ARM&C++算法开发
2.2.1 熟练掌握Arm(64)汇编的开发/指令/寻址/生成/编译等相关流程
2.2.2 熟练掌握C的数据类型/运算符/流程/函数/结构体对应的Arm指令
2.2.3 熟练掌握C++的类/对象/构造析构虚函数(表)等对应的Arm指令模式
2.2.4 熟练掌握AndroidStudio汇编开发/内联汇编Syscall联合工程开发

2.3 VMP
2.3.1 熟悉构建JNI接口trace沙盒分析被vmp保护的art函数执行流
2.3.2 熟悉DEXVMP的核心原理并手动开发映射表保护dex中的函数
2.3.3 熟悉对Art高级定制暂停虚拟机绕过所有反调试直接调试VMP
2.3.4 熟悉重编译内核打开内存断点直接定位VMP过程并重构映射表

三、编译和反汇编

为了提高安全能力,绝大多数风控和壳都会将自己的逻辑放在Native层,并利用混淆来保护自己的代码,安全研究员应该熟练使用Ollvm套件来开发属于自己的Pass混淆自身的项目,并使用各种trace来分析竞品的保护器实现,为项目开发赋能。

3.1 OLLVM原理和Pass开发
3.1.1 熟悉LLVM套件的基本项目/源码/编译/调试/中间语言/前后端分离
3.1.2 熟悉LLVM中opt对Pass的加载执行和手写Pass运行和调试
3.1.3 熟练使用C++进行自定义算法的开发并生成中间码IR指令
3.1.4 熟练对照IR指令使用IR的API来编写加密和解密的Pass并调试

3.2 经典Pass原理
3.2.1 熟练掌握控制流平坦化的源码/编译/运行/效果/调试/分析和还原方法
3.2.2 熟练掌握虚假控制流的源码/编译/运行/效果/调试/分析和还原方法
3.2.3 熟练掌握指令替换和分割的源码/编译/运行/效果/调试/分析和还原方法
3.2.4 熟练掌握字符串加密的源码/编译/运行/效果/调试/分析和还原方法

3.3 Frida tracer
3.3.1 熟练掌握NativeHook的核心原理熟练进行GOT/PLT或者inline hook
3.3.2 熟练掌握Frida的CMoudle模块的编译原理/运行流程/作用/效果
3.3.3 熟练掌握Frida-gum的C-API并使用C/CMoudle编写NativeHook
3.3.4 熟练掌握Stalker的核心原理并对Syscall/指令/基本块进行trace

3.4 动静态调试/Patch
3.4.1 熟练掌握IDA/trace对so进行反编译逆向及执行流Pathch
3.4.2 熟练使用r2frida对内存进行动态反编译及执行流Patch
3.4.3 熟练使用Capstone/keyStone结合Frida进行内存漫游
3.4.4 熟练Unicorn对so进行trace和算法还原及执行流Patch

四、模拟执行

Native层因其自身的特殊性,存在着过于复杂或难以被还原的算法,安卓研究员应当精通现代化模拟执行框架的原理,并在任何条件下不管是Patch/so还是补全模拟系统实现so的成功执行,输出关键参数,实现项目的功能。

4.1 Frida主动调用模拟执行
4.1.1 熟练使用Frida对Java的数据类型/类/对象进行hook或构造
4.1.2 熟练使用Frida配置RPC对类/对象的方法进行批量自动主动调用
4.1.3 熟练使用Frida对C++的数据类型/类/对象进行hook或构造
4.1.4 熟练使用Frida配置RPC对Native方法进行批量自动主动调用

4.2 Unicorn/CPU模拟器
4.2.1 熟练使用unicorn进行so解析/内存对齐/Syscall模拟/文件系统
4.2.2 熟练使用unicorn进行so中函数的调用/执行/获取结果/添加hook
4.2.3 熟练使用unicorn进行JNI接口函数的调用/执行/获取结果/添加hook
4.2.4 熟练使用unicorn进行JNI_Onload的调用/执行/获取结果/添加hook

4.3 Python模拟执行so
4.3.1 熟悉AndroidNativeEmu的源码/熟悉虚拟机的启动系统(库)的模拟
4.3.2 熟悉框架中文件/内存/系统调用/JNI等模拟实现的源码及定制
4.3.3 熟悉框架中SO函数的加载/ELF的解析/寻址/执行的完整流程
4.3.4 熟悉模拟执行的核心原理和实践及对模拟执行的对抗思路及反反对抗
4.3.5 熟悉对内存/指令/inline/符号等hook的详细流程及自定义trace指令

4.4 Java模拟执行so
4.4.1 熟悉unidbg的源码/熟悉虚拟机的启动系统(库)的模拟实现完整流程
4.4.2 熟悉框架中文件/内存/系统调用/JNI等模拟实现的源码及定制
4.4.3 熟悉框架中SO函数的加载/ELF的解析/寻址/执行的完整流程
4.4.4 熟悉模拟执行的核心原理和实践及对模拟执行的对抗思路及反反对抗
4.4.5 熟悉对内存/指令/inline/符号等hook的详细流程及自定义trace指令

保留最终解释权:

以上所有宣传稿件内容均不作为服务承诺,最终以实际签订合同为准。
培训、证书、课程大纲与细目、服务形式与内容会根据教学反馈不断优化、调整与更新,实际情况可能与宣传内容略有更改或更新。

《高研班》2021年秋季班正在火热招生!👇

* 戳图片了解详情

公众号ID:ikanxue
官方微博:看雪安全
商务合作:[email protected]
点击“阅读原文”,了解更多!

文章来源: http://mp.weixin.qq.com/s?__biz=MjM5NTc2MDYxMw==&mid=2458389301&idx=3&sn=1b25521ea69bb371f7469310e39958c8&chksm=b18f3bbf86f8b2a9c3349e4d5a3df43e96b3d141085bab9b5e72c3423c07652fad12727c167f#rd
如有侵权请联系:admin#unsafe.sh