网络攻防大赛相关知识点
1 背景
2021年全国电子设计大赛——信息平安技术专题邀请赛第一次设立“信息平安动态演练类”题目,依照官方网站的介绍,“信息平安动态演练类题目主若是信息系统的脆弱性分析,参赛形式是在封锁网络环境(含虚拟机)中的现场竞赛,参赛内容涉及网络平安,统一命题。”作为信息平安技术竞赛中最高级别的竞赛,信息平安技术专题邀请赛第一次设立了攻防类的题目,网络攻防实战竞赛终于丢掉了“禁区”的帽子,取得官方的支持。
在国际下,相关的网络攻防实现竞赛已经举行了很连年,最闻名的确实是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、、JSP,PHP等。
3)典型的Web效劳离不开数据库的支持,那么典型的数据库有哪些?如何应用?Access、MySql、MS SqlServer、Oracle等典型数据库的安装与配置等是怎么样的?什么是SQL,典型的新闻发布网站是如何设计的?
4)在了解了上述Web知识以后,咱们就能够够进入Web平安的世界,比如,什么是SQL注入,什么是XSS注入,什么是CSRF,这些解决能够发生的缘故是什么?如何防范?网络上的那么多Web网站,可否自己发觉一个上述漏洞?(注意,咱们要遵循黑客原那么,以发觉漏洞并增强平安防护为目的,坚决遏制非法的网络解决。)
5)另外,Web平安还有Web效劳器、数据库效劳器等本身的漏洞,比如,什么是弱口令,效劳器为了方便治理会常常开启33端口,那个端口有什么用?如何能够猜解出治理员的弱口令,同时效劳器又开放了33端口,会产生什么用的后果?
6)典型的数据库,如MS SqlServer有哪些常常被利用的漏洞?其默许登岸账户是什么?MySql的默许开放端口是什么?HTTP协议的默许开放端口是什
么?
(2)扫描器及协议分析
1)怎么样获取效劳器的开放端口?怎么样扫描目标主机中存在的漏洞?Nmap有哪些功能?如何利用?
2)在协议分析方面,WireShark有什么用?能够用来发起什么解决?举例而言,常规的Web程序中,用户名和密码等这些灵敏信息一样会通过POST数据包发送给Web效劳器,在如此的进程中,可否用WireShark进行拦截并窃取灵敏信息?
3)在协议分析这一块,若是不了解协议格式,也是很难进行的。那个时候需要去了解经常使用的协议格式,比如HTTP协议,TCP协议,UDP协议等。HTTP协议中的POST方式和GET方式有什么区别?TCP和UDP有什么区别?大伙儿经常使用的腾讯QQ通信是利用的哪一种协议?
(3)二进制程序的逆向分析
1)二进制程序的逆向分析,一个重要的应用方向是软件破解,在那个方向上,一个重要的网站是看雪:,这是一个大量破解高手和爱好者云集的地址。
2)在逆向分析方面,典型的工具有IDA Pro和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的冠军。
附个人主页
另外,既然软件漏洞一直以来都是平安核心,那么操作系统和编译器等也不是吃干饭的,它们已经设计了哪些用于防范软件漏洞的方法?什么是编译器的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书上大体都有,去搜索一下,能够下载到一些小的程序来调一调 DEP:
即DataExecutionPrevention,不许诺执行“数据”。在ARM上,数据和代码分开寄存,不存在此问题。X AMD或
i系列Intel处置器上,微软利用NX技术,记录内存页的属性,即是不是是代码。若是一个页是数据,EIP指向了它,
系统会自动报错,从而阻止的非法数据被执行。 SEH:
当函数发生异样的时候,系统会第一尝试利用离异样最近的SEH结构体来处置异样。异样处置程序能够选择返回继续执行适才犯错的指令、处置异样或不处置异样。若是不处置,那么系统继续沿着挪用轨迹向上寻觅其他SEH结构,直到异样被处置(处置程序不是选择\"不处置异样\")。若是所有的用户概念的异样都不选择处置,那么最终会达到进程异样处置的SEH,被称为UEF,即Unhandle Exception Filter。该SEH指向的处置程序会弹犯错误提示框,然后终止程序。固然,最终的异样处置程序UEF也能够通过编程来修改。
在异样处置程序开始前,系统还会进行一次unwind操作,遍历从异样点开
始的所有__finally代码块,并依次执行,执行完毕后才开始异样处置程序的执行。若是__finally块显现了异样,那么上一个异样被抛弃,系统开始处置当前异样。
因为SEH结构放在栈中,因此能够通过栈溢出修改SEH中的异样处置程序指针指向shellcode,再人为引发异样,从而系统开始挪用shellcode来处置异样。
VEH:
即Vectored Exception Handler。VEH是进程级的用户异样处置程序,能够由用户注册多个函数,这些函数将被连接成双向链表存入堆中。异样发生时,系统第一通知调试器,若是调试器不处置,那么进入VEH的处置,然后才是SEH的处置。
HeapSpray:
第一构造1M的大体块,其中包括首部信息和数据,数据部份是nop和shellcode。如此的一个大体块中大部份都是nop指令。再将如此的大体块组成的数组存入堆中,只要能够从nop处开始执行,就必然会执行到shellcode部份。
ASLR:
Address Space Layout Randomization,通过将堆、栈等其实地址进行必然范围内的随机化,加大缓冲区溢出解决的难度。
SEHOP/SafeSEH
SEH Overwrite Protection SEH覆盖爱惜。该防护方法是指系统在利用栈上的SEH时第一验证其完整性。SEHOP是系统自带功能,不需要应用程序配置,只需要用户将其开启即可。
判定准那么是:
1、SEH结构都必需在栈上;
2、最后一个SEH结构也必需在栈上; 3、所有的SEH结构都必需是4字节对齐的;
4、SEH结构中的handle(处置函数地址)必需不在栈上;
5、最后一个SEH结构的handle必需是ntdll!FinalExceptionHandler函数;
6、最后一个SEH结构的next seh指针必需为特定值0xFFFFFFFF; 能够看到,第四点要求使通过SEH跳转到栈上的shellcode再也不可能。而且上述准那么保证了SEH链的完整性,因此若是要通过覆盖修改单个SEH,几乎不可能。可行的方式是伪造整个SEH链,固然,这十分困难。
cookie/GS:
修改原先的栈结构:
Stack: bottom ... parameter-1 parameter-2 ... parameter-n 返回地址 EBP cookie 局部变量 ... top构建函数栈帧的时候会在压入参数、返回地址、EBP后压入一个随机数cookie,同时在.data段中保留他的一个副本。函数返回时系统自动检测栈中的cookie和.data段中的cookie副本是不是相同,若是不同那么进入溢出处置程序,可不能执行ret返回语句,从而幸免了转到shellcode执行
(6)密码分析
在密码分析这一方面,大伙儿需要了解主流的密码算法,如对称密码、公钥密码、流密码、哈希密码算法等。
在解决方面,什么是弱口令解决?密码字典有什么用?典型的密码破解工具有哪些?
当前的Web应用要紧采取了哪些加密和编码算法?
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- ryyc.cn 版权所有 湘ICP备2023022495号-3
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务