防ddos攻击_美国高防100g4h4g_怎么解决-墨者安全-墨者盾
DDOS防御_CC防护_高防CDN服务器_【墨者安全】—墨者盾墨者盾—你的网站贴身保镖!

QQ:800185041
高防免费接入:400-0797-119

渠道合作:156 2527 6999

主页 > CC防护 > 防ddos攻击_美国高防100g4h4g_怎么解决

防ddos攻击_美国高防100g4h4g_怎么解决

小墨安全管家 2021-05-04 12:22 CC防护 89 ℃
DDoS防御
在本文中,我们将学习动态符号执行技术,以及怎么将其用于测试和含糊二进制文件。在前面的两篇文章(1,2)中,DDoS防御,我们基本看到了怎么在Java中使用自动化想法来生成测试用例。动态符号执行是一种基于从执行跟踪中收集的约束来自动生成新测试用例的想法。在本文中,我们将使用Pathgrind工具。Pathgrind是一具符号执行引擎,可用于Linux上32位二进制文件的自动含糊处理。在开始之前,让我们先从符号执行的一些背景知识开始。象征性执行Wikipedia将符号执行定义为"分析程序以确定是啥输入导致程序的每个部分执行的想法"。符号执行背后的差不多思想能够经过以下步骤举行解释:用给定的输入执行程序在执行期间生成一具符号公式,防DDoS,该公式捕获输入经过程序所采纳的路径最小限度地更改公式以创建新公式求解新公式以生成程序的另一具输入经过使用新输入执行程序来重复这些步骤作为一具例子,让我们思量下面的max想法。intmax(int x,int y,int z){int m=x;假如(y>m&&y>z)m=y;其他(z>m)m=z;返回m;}该想法以三个整数值作为输入,并返回三个整数值中的最大值。所以,调用输入max(1,3,2)的想法返回3作为最大值。在执行该想法时,我们能够构建以下符号公式,该公式捕获输入经过程序所走的路径。此符号公式也称为路径条件(PC)。报表公式输入:x0、y0、z0int m=x;trueif(y>m&&y>z)m0=x0m=y;m0=x0/\y0>m0/\y0>z0否则(z>m)m0=x0/\y0>m0/\y0>z0/\m1=y0m=z;返回m;输出:m1开始时,执行从符号公式true开始,接着然后为程序中的每个语句添加一具约束。所以,给定输入(1,3,2)的路径条件是m0=x0/\y0>m0/\y0>z0/\m1=y0。去掉m0,代入公式中m1的值,得到y0>x0/\y0>z0/\3=y0。此公式捕获程序为给定输入挑选的路径。如今,为了改变那个公式,有几种大概:我们能够否定连接中的一具特定约束,或者我们能够从连接中删除一具约束。关于那个例子,让我们否定第一具约束。我们得到了另一具公式y0z0/\3=y0,我们需要检查那个公式是否能够满脚。这能够使用很多现有的约束解算器(如STP)或SMT解算器(如z3)来完成。解算器告知公式是否不可满脚,或者假如公式可满脚,则返回公式中使公式有效的变量值。关于新的路径条件y0z0/\3=y0,解算器为变量x0、y0和z0给出以下值。x0=3y0=2z0=2我们如今能够用这些新的输入重复相同的过程,DDoS防御,并一次一条路径执行程序的符号化执行。这种符号路径探究能够用下面max想法的执行树可视化。发觉的每个输入都会导致覆盖树中另一具后续路径。在这种事情下,程序中惟独3条不同的路径,所以只需要3条路径条件来探究程序中的所有路径。关于没有循环或递归的想法,路径探究总是有限的和终止的。可是,普通来讲,在循环和递归的存在下,一具程序大概有无限数量的路径。经过对程序中的所有路径举行详尽的测试来探究一具程序,大概会导致测试用例的指数级增长。那个咨询题通常被称为路径爆炸,是符号执行的限制之一。为了解决那个限制,大多数工具都支持设置一具固定的深度,直到执行树被探测为止,路径探究过程在那个深度之后终止。pathgrind中也使用了类似的策略,我们将在下一节中介绍。磨砺Pathgrind是一具基于Valgrind的符号执行引擎,防DDoS,它使用STP来解决约束。它能够用来含糊Linux上的32位二进制文件。安装很简单,在自述文件.mdGitHub上的文件。安装后,您需要编辑设置.cfg文件中包含每个要含糊化的程序的以下内容。[测试]prog=测试用例/测试.exe输入= 输入文件max_bound=100 prog参数指定二进制文件的路径,而input参数则提供用于初始输入以开始符号执行的文件。它还有一具可选的max_bound参数,用于在路径探究期间绑定搜索。默认事情下,pathgrind假设程序从文件中猎取输入,并依照符号执行生成新文件,以含糊程序。一旦配置好设置,我们就能够调用含糊.py在中配置了测试部分的输入上运行pathgrind测试设置.cfg文件。用户@用户虚拟机:~/git/pathgrind$./fuzz/含糊.py测试[+]扩展执行文件输入.txt*4路径约束(绑定:0)*求解约束[0:0]*新输入(1.txt):bood*求解约束[0:1]*新输入(2.txt):.aod*求解约束[0:2]*新输入(3.txt):…dd*求解约束[0:3]*新输入(4.txt):。。。![+]检查每个新输入1.程序的txt[-]参数是2.程序的txt[-]参数是3.程序的txt[-]参数是txt是程序的参数[+]为每个新输入打分[+]用文件4.txt扩展执行*4个路径约束(绑定:4)...探究路径:15耗时:10.85上面显示了运行pathgrind的输出。执行从file开始输入.txt经过求解路径条件(约束)生成新的输入(1.txt、2.txt等)。最终,它还会打印出探究的路径数和所用的总时刻。当含糊化时,pathgrind生成输入并使用这些输入执行二进制文件,希翼其中一具输入将导致内存错误和valgrind检测到的崩溃。能够使用valgrind的输出进一步调查崩溃,以确定咨询题的可利用性。所以,能够以彻底自动化的方式发觉二进制文件中的新错误或漏洞。关于简单的测试程序,含糊化过程会在几秒钟内终止,然而关于更真实的感兴趣的程序,比如扫瞄器(或libPNG库),那个过程大概需要几个小时甚至几天才干找到一些有味的失败案例。这要紧是由于前面提到的路径爆炸咨询题。假如我们想懂执行每个路径条件所花费的时刻,我们需要为bokeh安装一具基于Python的数据可视化框架,并使用plotfuzz.py测试。它将启动扫瞄器并显示求解每个公式所用时刻和路径探究(生成新公式)所用时刻的运行图。绿线表示解决约束所用的时刻,而蓝线表示生成新约束所用的时刻。从图中能够清晰地看出,生成新约束所需的时刻远大于外部解算器(在本例中为STP)求解它们所用的时刻。今年早些时候,我在PydataSingapore做了一具对于"用Bokeh可视化符号执行"的演说。演示文稿的幻灯片包含了更多对于怎么在符号执行中可视化路径爆炸的一些咨询题的示例。例如,假如我们以一种简单的方式实现循环的路径探究,我们将有很多彼此相似的路径来表示循环的展开。下面的散点图显示了这种事情。图中点的大小表示相似性(越大越相似)。从编号1到40的所有些都很相似,它们表示的路径在探究循环展开时并不有味。解决符号执行的这些限制的技术超出了本文的范围,是该领域积极研究的主题。在这篇文章的最终,对于怎么使用pathgrind优化路径探究的更多细节能够在对于利用未定义的行为以实现高效符号执行的文章中找到。此外,要了解更多对于路径条件、不同符号执行引擎和解算器之间的差异,您能够查看以下对于路径可行性查询的实证研究的论文。假如您在运行Pathgrind时遇到任何咨询题,请在GitHub repo上提交咨询题或发送请求。

防ddos攻击_美国高防100g4h4g_怎么解决


DDoS防御

当前位置:主页 > CC防护 > 防ddos攻击_美国高防100g4h4g_怎么解决

标签列表
DDoS防御
网站分类
X
 

QQ客服

400-0797-119