第一部分:安全基础和CTF简介(1.5小时)
要点:漏洞三要素,攻击类型,RCE,DoS,外部攻击和内部攻击,CVE,安全风险,Open Web Application Security Project(OWASP),OWASP的十大安全风险排名,深刻理解注入攻击(经典的溢出注入和SQL注入),重要的学习资源——DVWA、mutillidae样本网站,Botnet和黑色产业链,CTF简史,CTF的比赛形式,CTF的所需技能。
第二部分:渗透测试(2小时)
要点:Pentest,背景,测试过程,重要资源,Kali Linux, Metasploitable 2,BackBox,环境搭建,渗透测试的五大步骤详细介绍,Whois,WhatWeb, NMAP,ZenMap,PingScan,静态扫描工具,OpenVas,Metasploit Framework详细解析,主机入侵完整过程演示(利用IRC漏洞远程登录被攻克目标机),Armitage;DoS攻击。
第三部分:XSS攻击和浏览器安全(1.5小时)
要点:演示和理解XSS攻击,Reflected XSS (Type-1 XSS),Stored XSS(Type-2 XSS),DOM-based XSS (Type-0 XSS),使用XSSER扫描XSS漏洞,防卫方法:输出编码,净化输入;使用BeE颠覆IE,Burp Suite详解(Instrder, Comparer, Repeater, Decode, Sequencer),Burp Suite演示。
第四部分:SQL注入和数据库安全(1小时)
要点:SQL Injection,原理,演示,真实案例:2011年LulzSec组织对SonyMusic网站的SQL Injection攻击,防卫方法;设置数据库许可,存储过程,绑定参数,特权控制,ad-hoc SQL,直接对象引用,实例演示。
第五部分:数字签名和用户认证(1.5小时)
要点:对称加密,非对称加密,RSA算法,公钥,私钥,两种基本应用模式,Public Key Infrastructure(PKI),数字证书,X.509V3,Key的保护和管理,对文件进行数字签名的工具和方法,文件加密,案例分析:12306网站的数字证书,基于密码(Password)的认证,密码攻击,Man-in-the-Middle攻击(Hash-Identifier和findmyhash工具演示),使用Hydra暴力破解密码,关于密码保护的最佳实践,Single sign-on (SSO),OAuth,OAuth1(RFC-5849), OAuth1的安全漏洞,OAuth2(RFC6749),服务提供者,注册,认证过程,两次重定向,重定向风险。
第六部分:会话管理和CSRF攻击(1.5小时)
要点:认证和授权,授权基础,会话管理,Cookie原理,Cookie的属性,Cookie的使用过程,在浏览器中观察Cookie,Cross-Site Request Forgery (CSRF),Session Hijacking,最佳实践:强制会话超时,控制会话并发,安全使用cookie,HttpOnly,SSL和HTTPS。
第七部分:服务器端文件安全原则(1.5小时)
要点:使用有漏洞的组件(2017-A8),XcodeGhost,利用漏洞上传文件,TomcatRCE,CWE-434(允许上传危险类型文件),服务器被上传文件的案例分享,访问敏感信息,2017-A4(XML外部引用),forceful browsing,目录枚举,不安全的直接对象引用(文件包含和相对路径),扩展名猜测,LINUX操作系统的安全漏洞,配置不当,2017-A10(日志和监视不足)。
第八部分:反序列化(1小时)
要点:序列化背景,对象序列化,反序列化,2017-A8,对象篡改,破坏数据完整性,提升特权,DoS攻击演示,JavaSerialKiller,YSOSerial,已经公布的漏洞,检测工具。
第九部分:安全开发(1 小时)
要点:SDL(Security Development Lifecycle),SD3C,SDL定义的主要过程和最佳安全实践,Software Assurance Maturity Model (SAMM),TOP25编程错误解析。
第十部分:漏洞扫描(1小时)
要点:源代码扫描和黑盒扫描,Coverity介绍,工作过程,AST树,Checkers,三类事件,误报问题和函数建模,W3AF介绍和用法演示,OWASPZAP用法和演示。
第十一部分:威胁建模(1小时)
要点:常用建模方法概览(Trike 、OCTAVE 和P.A.S.T.A),详细介绍Microsoft Threat Modeling过程,STRIDE,风险评级,微软Threat Modeling Tool 2016用法演示。
第十二部分:App 移动业务安全和漏洞分析(1 小时)
要点:Santoku Linux,Santoku Linux中的常用工具,Android App逆向,APKTool,DEX,Dex2Jar,Java反编译工具(Jd-GUI, JAD, Dare, Mocha),Java混淆工具,JNI调用本地代码,App与服务器的通信,使用Burp Suite为代理服务器,设置iPhone手机,淘宝应用举例,安装数字证书,测试HTTPS通信,12306 App举例,Android系统上的界面劫持(Activity-Hijacking),工作原理,测试方法,检测方法和防御。
第十三部分:云安全初步(1小时)
要点:云安全联盟(CSA)定义的主要威胁(Top Threats to Cloud Computing),云服务存在的主要漏洞排名,跨虚拟机攻击,多级云安全(MTCS)标准,云安全事故案例分析。
//*对于希望参加CTF比赛的团队,可以选择如下主题
CTF-1:PWN挑战和工具
要点:PWN概括,PWN的常见题目,求解思路,pwntools概括,pwntools的一般用法,pwntools的常用命令,例题解析。
CTF-2:逆向工程
要点:机器语言,汇编与反汇编,gdb,gdb中的逆向命令,x86架构精要,反汇编技巧。
//*对于使用C/C++语言的研发团队,可以选择如下主题
CPP-1:栈和局部缓冲区溢出(1.5小时)
要点:栈基础,栈帧,栈帧布局,栈指针被破坏(Stack pointer corruption.),局部缓冲区越界(Overruns),栈被破坏(Stack corruption.),缓冲区溢出攻击(BOA),实例演示,SQLServer案例,Win7案例,IRCDaemon案例,GS机制(基于Cookie的溢出检测机制),扩展到LINUX平台,GCC编译器的保护措施。
[试验一]理解缓冲区溢出攻击(30分钟)
CPP-2:信号、异常和意外出口(1.5小时)
要点:结构化异常处理(SEH),C++异常处理,信号,LINUX的信号处理机制,程序崩溃的完整过程和调试方法,转储的基本知识,异常处理有关的安全漏洞,不合理的异常处理器,因为异常和执行意外代码,代码实例分析。
CPP-3:堆和堆溢出攻击(1.5小时)
要点:C++程序中动态分配内存的多种方法(malloc, new, HeapAlloc),介绍调试内存有关的典型问题的方法和技巧,包括使用CRT堆和Win32堆的调试支持,分析内存泄漏、访问违例和栈溢出等,在探讨实践经验的同时会穿插重要的理论知识,包括Win32对和CRT堆的结构、内存管理常识、堆布局等,真实案例分析,基于堆的安全漏洞和分析。
课程收益
掌握渗透测试的理论基础,了解核心工具
掌握典型安全问题的攻防原理
通过实践操作,提高Web系统安全性
课程对象
网络管理员、网络工程师、信息安全工程师、信息化人员,测试工程师等
课程形式
讲解 +演示+ 动手试验