1.背景
2014年全国电子设计大赛——信息安全技术专题邀请赛第一次设立“信息安全动态演练类”题目,按照官方网站的介绍,“信息安全动态演练类题目主要是信息系统的脆弱性分析,参赛形式是在封闭网络环境(含虚拟机)中的现场比赛,参赛内容涉及网络安全,统一命题。”作为信息安全技术竞赛中最高级别的比赛,信息安全技术专题邀请赛第一次设立了攻防类的题目,网络攻防实战竞赛终于丢掉了“禁区”的帽子,获得官方的支持。
在国际下,相关的网络攻防实现比赛已经举办了很多年,最著名的就是DefCon的CTF大赛,国内在这一方面较为落后,也是在最近的几年开始重视并持续追赶,目前国内比较有名的战队有清华大学的蓝莲花战队,台湾的HitCon战队,以及上海交通大学的0ops战队等。
除了信息安全技术专题邀请赛,全国各大安全公司及其他高校也举办了类似的比赛,今年比较著名的比赛有百度的BCTF比赛,以及第二届360杯全国大学生网络攻防大赛。
2.网络攻防大赛的特点
与其他的信息安全技术比赛相比,网络攻防大赛的最大特点是技术的实战性,参赛选手会在相对封闭的环境中攻击并渗透进入对方的主机系统,同时也要对自己的主机系统不断地进行安全防护。
就目前的比赛形式来看,题型设置基本上分为两种。
(1)相同计算环境下的夺旗赛。参赛选手在相同并隔离的计算环境下,分析目标系统中的各种安全漏洞,利用漏洞或渗透主机等获取主机内隐藏的Flag。
(2)对攻实战。同夺旗赛类似,参赛选手的计算环境相同,但是并不隔离,其攻击目标变为对方选手的系统。因此,除了获取对方系统的隐藏Flag之外,还需要不断给自己的系统打补丁以增强安全防护,防止被对手渗透等。
3.网络攻防大赛考察的知识点
就以往的比赛来看,比赛题目大致分为以下5类:密码分析类、Web安全类、二进制程序的逆向破解类、数字取证类、漏洞挖掘及漏洞利用类。
(1)Web安全
Web安全涉及的内容非常丰富,就典型的Web服务来说,其安全问题可能来自于Web服务器、数据库服务器、以及Web程序本身等。所以,学习和了解Web安全的内容也需要循序渐进。
**1)首先学习Web服务器的配置。**了解典型的Web服务器如何构建的,典型的Web服务器包括微软的IIS
、Apache
、Tomcat
等。
**2)Web程序的开发离不开脚本语言。**如何构建一个静态的Web网站?HTML的开发规则是什么?如何利用HTML设计简单网页?
在建设完成静态Web网站之后,感兴趣的同学可以重点学习动态Web程序的开发,典型的开发语言包括ASP
、ASP.NET
、JSP
,PHP
等。
**3)典型的Web服务离不开数据库的支持,那么典型的数据库有哪些?**如何应用?Access
、MySql
、MS Sql Server
、Oracle
等典型数据库的安装与配置等是怎么样的?什么是SQL
,典型的新闻发布网站是如何设计的?
4)在了解了上述Web知识之后,我们就可以进入Web安全的世界,比如,什么是SQL
注入,什么是XSS
注入,什么是CSRF
,这些攻击能够发生的原因是什么?如何防范?网络上的那么多Web网站,能否自己独立发现一个上述漏洞?(注意,我们要遵循黑客原则,以发现漏洞并增强安全防护为目的,坚决遏制非法的网络攻击。)
**5)此外,Web安全还有Web服务器、数据库服务器等本身的漏洞,**比如,什么是弱口令,服务器为了方便管理会经常开启3389端口,这个端口有什么用?如何能够猜解出管理员的弱口令,同时服务器又开放了3389端口,会产生什么用的后果?
**6)典型的数据库,如MS Sql Server
有哪些经常被利用的漏洞?**其默认登陆账户是什么?MySql
的默认开放端口是什么?HTTP协议的默认开放端口是什
么?
(2)扫描器及协议分析
**1)怎么样获取服务器的开放端口?**怎么样扫描目标主机中存在的漏洞?Nmap
有哪些功能?如何使用?
**2)在协议分析方面,WireShark
有什么用?能够用来发起什么攻击?**举例而言,常规的Web程序中,用户名和密码等这些敏感信息一般会通过POST数据包发送给Web服务器,在这样的过程中,能否用WireShark
进行拦截并窃取敏感信息?
**3)在协议分析这一块,如果不了解协议格式,也是很难进行的。**这个时候需要去了解常用的协议格式,比如HTTP协议,TCP协议,UDP协议等。HTTP协议中的POST方式和GET方式有什么区别?TCP和UDP有什么区别?大家常用的腾讯QQ通信是使用的哪种协议?
(3)二进制程序的逆向分析
1)二进制程序的逆向分析,一个重要的应用方向是软件破解,在这个方向上,一个重要的网站是看雪:http://www.pediy.com,这是一个大批破解高手和爱好者云集的地方。
2)在逆向分析方面,典型的工具有IDAPro
和OllyDbg
。OllyDbg
一款使用起来比较简单的调试工具。当然还有很多其他优秀的调试工具,可见。
**3)看雪上面有很多CrackMe
,如果掌握了OllyDbg
的使用,**可以尝试去看雪找一些简单的CrackMe
来实际破解。试试看吧。
(4)漏洞挖掘
漏洞挖掘和利用一直以来都是信息安全的焦点和热点。想要入门,首先要了解缓冲区溢出漏洞的发生原理。在学习并掌握了C语言之后,了解缓冲区溢出的发生原理并不困难,什么是整形溢出、堆溢出、栈溢出?什么是格式化字符串溢出?C语言中的哪些函数或者操作容易导致缓冲区溢出?
在了解了缓冲区溢出原理之后,需要再进一步了解缓冲区溢出的防护方法,比如,如何在使用高级语言的时候进行边界检查?
在漏洞挖掘方面,给定一段源代码,能够通过审计该段高级语言,检查出是否有安全漏洞?
如果没有源代码,只有二进制程序,如何发现其中的安全漏洞?这个时候IDA Pro和OllyDbg又一次登场了。使用IDA Pro的hex-ray插件,可以把二进制程序反汇编成类C语言,在反汇编得到的类C语言上,可以看到那些容易导致缓冲区溢出的脆弱性函数,随后可通过设置断点等方式,通过动态调试的方法来检查程序是否含有漏洞,更详细的内容请见我的代码分析文档。
(5)漏洞利用
在已获得漏洞之后,使用该漏洞能够发起哪些攻击?这时候需要了解的内容有Stack Smashing,shellcode等,这方面的内容,我推荐大家看王清编写的0day安全这本书,讲解的很详细。
通过0day这本书了解清楚基本概念之后,大家会发现0day的内容稍微有点陈旧,很多内容已经没有及时更新了。这个时候,我推荐大家去David Brumley的主页上去找他面向研究生的Software Security课程PPT,这是我目前见到的关于软件安全领域的最好的一套PPT,没有之一。
顺便介绍一下David Brumley,著名女黑Dawn Song的弟子,博士毕业后直接CMU留校工作,目前在软件漏洞的静态分析、动态分析及逆向方面处于世界领先。
另外,David Brumley还是PPP战队的领队和指导老师,PPP战队是CTF大赛的传奇战队,多次蝉联Defcon CTF的冠军。附个人主页http://www.ece.cmu.edu/~dbrumley/index.html
另外,既然软件漏洞一直以来都是安全焦点,那么操作系统和编译器等也不是吃干饭的,它们已经设计了哪些用于防范软件漏洞的措施?什么是编译器的gs选项?什么是“栈不可执行”保护(也成为DEP),什么是地址空间随机化ASLR,有什么用。
当然,所谓道高一尺魔高一丈,攻击者也设计出了新的漏洞利用攻击方法以绕过操作系统或编译器的保护。高级漏洞利用技巧都有哪些?SEH劫持的原理是什么?Windows最新版的操作系统中又采用了哪些措施来防止SHE劫持?什么是面向返回的编程攻击(Return oriented programming),也称之为ROP。相似的攻击还有Ret2libc,JOP, COP等?
在漏洞利用的防护方面,防火墙和IDS等也是隔离并检查shellcode的关键利器,其作用是通过过滤网络报文,分析shellcode的哈希值或者其它关键字等,判断网络报文中是否疑似含有shellcode,并把疑似报文丢弃等。在这种情况下,攻击需要解决的问题就是shellcode的免杀,如何对shellcode进行变形,如何给shellcode加壳?
【强调】漏洞利用绕过技巧
DEP、ASLR、ROP、SEH劫持、SEHOP、safeSEH、HeapSpray、cookie/GS选择项。0day书上基本都有,去http://www.exploit-db.com/搜索一下,可以下载到一些小的程序来调一调
DEP:
即DataExecutionPrevention,不允许执行“数据”。在ARM上,数据和代码分开存放,不存在此问题。X64 AMD或者i系列Intel处理器上,微软使用NX技术,记录内存页的属性,即是否是代码。如果一个页是数据,EIP指向了它,系统会自动报错,从而阻止的非法数据被执行。
SEH:
当函数发生异常的时候,系统会首先尝试使用离异常最近的SEH结构体来处理异常。异常处理程序可以选择返回继续执行刚才出错的指令、处理异常或者不处理异常。如果不处理,则系统继续沿着调用轨迹向上寻找其他SEH结构,直到异常被处理(处理程序不是选择"不处理异常")。如果所有的用户定义的异常都不选择处理,则最终会达到进程异常处理的SEH,被称为UEF,即Unhandle.
黑客&网络安全如何学习
今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。
1.学习路线图
攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。
2.视频教程
网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。
内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础知识等,都是网络安全入门必知必会的学习内容。
(都打包成一块的了,不能一一展开,总共300多集)
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
3.技术文档和电子书
技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
4.工具包、面试题和源码
“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。
还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。
这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。
参考解析:深信服官网、奇安信官网、Freebuf、csdn等
内容特点:条理清晰,含图像化表示更加易懂。
内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取