释放双眼,带上耳机,听听看~!
AEG概念
- 漏洞利用验证:AEG可用于验证漏洞的可利用性。当一个漏洞发现并报告给厂商或开发者时,AEG可以用于自动生成针对该漏洞的利用代码。这样一来,安全团队可以测试这些利用代码,以验证漏洞的实际利用效果,并确认其是否会导致系统被攻击。
- 漏洞修复评估:AEG用于评估漏洞修复的效果。当漏洞被修复后,安全团队可以使用AEG工具重新生成利用代码,以测试修复后的系统是否仍然容易受到攻击。这种方式,可以评估修复措施的质量,并帮助开发者或厂商确保漏洞已经得到适当的修复。
- 安全漏洞挖掘:AEG可用于自动化的安全漏洞挖掘。它可以通过生成大量的输入和攻击适配器,探索目标系统或应用程序中的未知漏洞。通过尝试不同的输入和攻击方式,AEG工具可以发现和生成新的漏洞利用代码,进一步帮助安全研究人员发现和修复系统中的潜在缺陷。
技术利用
- 符号执行(Symbolic Execution):符号执行(Symbolic Execution)是一种静态分析技术,用于探索程序在不同执行路径上的行为。与传统的具体执行(Concrete Execution)不同,符号执行将程序中的变量表示为符号(Symbol),而不是具体的值。通过符号执行,可以构建程序的符号执行路径,并生成满足特定条件的输入。符号执行的基本思想是,在程序执行过程中,将输入变量替换为符号变量,将程序的执行路径转化为约束条件。通过符号执行,可以自动生成满足特定条件的输入,从而用于触发目标漏洞。例如,在漏洞挖掘中,可以使用符号执行来生成特定的输入,以达到绕过输入验证、触发故障修复或其他类型的漏洞利用的目的。在AEG中,符号执行可以用于构建程序的符号执行路径,并生成满足特定条件的输入,以达到触发目标漏洞的目的。
- 模糊测试(Fuzzing):模糊测试是一种通过向目标系统或应用程序输入随机、异常或无效数据来发现漏洞的技术。在AEG中,模糊测试与符号执行和生成式测试的结合能够产生更多利用潜力的输入。具体而言,可以将模糊测试中生成的随机或变量的输入作为符号化输入,然后进行符号执行路径探索。通过符号执行路径探索,可以针对不同的输入生成一组约束条件。约束条件可以描述输入所需的特定属性或限制,例如特定的字节序列、特定的函数调用序列等。然后,通过约束条件激活器解决这些约束条件,找到满足约束条件的具体输入,从而生成利用潜力的输入。利用模糊测试生成的具有利用潜力的输入,结合符号执行的约束条件和约束初始化,AEG可以自动生成针对特定漏洞的利用代码。这些生成的利用代码可以用于验证漏洞、评估修复措施或进行安全产品测试。通过结合模糊测试、符号执行和生成式测试,AEG能够更全面地发现和利用目标系统中的漏洞,提高漏洞挖掘和利用的效率和准确性。这种组合技术的使用有助于增强系统的安全性性,并帮助开发者和安全团队及早发现和修复潜在的漏洞。
- 代码插桩(Code Instrumentation):代码插桩是一种修改程序源代码或二进制代码的技术,以在运行时插入附加代码。在AEG中,代码插桩可以用于在目标程序中插入利用代码,以实现对特定漏洞的利用。通过代码插桩,可以在目标程序的关键位置插入额外的代码,用于执行漏洞利用所需的操作。这些插入的代码可以是利用特定漏洞的攻击适配器、改变程序执行流程的指令、绕过安全检查的逻辑等。插桩可以在源代码级别或二进制代码级别进行,具体取决于可用的工具和技术。在AEG中,代码插桩可以用于生成针对特定漏洞的利用。例如,在一个存在代码漏洞漏洞的程序中,通过代码插桩可以在漏洞位置插入指令,实现控制程序执行流程或执行恶意代码的目的。通过插入利用,AEG能够自动生成针对特定漏洞的利用损坏或攻击代码序列。