论文笔记-缓冲区溢出漏洞分析技术研究进展_pointguard对指针加密(3)

还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!

王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。

对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!

【完整版领取方式在文末!!】

93道网络安全面试题

内容实在太多,不一一截图了

黑客学习资源推荐

最后给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

1️⃣零基础入门
① 学习路线

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

image

② 路线对应学习视频

同时每个成长路线对应的板块都有配套的视频提供:

image-20231025112050764

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

* 漏洞修复技术可按 照修复策略的复杂程度分为 3 种


	1. 采用简单修复策略的缓冲区溢出漏洞修复技术
	
	 在进行溢出漏洞修复时,只采取 1 条简单常规修复策略的漏洞自动修复技术。例如,对所有要修复的对象都在访问缓冲区前加入条件判断语句,以确保访问位置在缓冲区分配大小内。
	2. 采用复合修复策略的缓冲区溢出漏洞修复技术
	
	 在进行溢出漏洞修复时,采取多条常规修复策略的漏洞自动修复技术。例如,在修复过程中,依据不同情况采用扩充缓冲区分配大小、访问缓冲区前增加条 件判断、替换可能会发生缓冲区溢出漏洞的不安全函数操作等不同策略进行修复。
	3. 采用其他修复策略的缓冲区溢出漏洞修复技术
	
	 对软件进行遗传变异或者其他非常规的方法对溢出漏洞进行自动修复。
  1. 漏洞运行时防护技术

    • 被动防护技术

    旨在保障内存中某些关键对象或性质完整性的防护技术。在程序运行过程中,时刻验证监控某些性质是否得到满足或者某些状态值(如栈中的返回地址或者 EBP)是否没被修改。因为时刻在验证关键对象或性质的完整性,当攻击出现时,该技术可以被动地检测到有人尝试在修改某些关键对象或者性质,并在攻击的触发下做相应的防护处理,因此称其为被动防护

     1. 插入`canary`值
     
      **StackGuard**:该方法在函数调用栈的 `RETADDR` 和 `LOCVAR` 之间加一个 `canary` 值。每次要跳转、执行到 `RETADDR` 对应地址的指令之前,先验证 `canary` 值是否改变:若 `canary` 值没有改变,则程序正常运行;若 `canary` 值发生了改变,则中断程序运行。
     
      为了防止攻击者伪造`canary`值进行攻击,生成`canary`值有以下3种办法:
     
      ​ (1) 随机产生 `canary` 值,以提高攻击者通过伪造 `canary` 值而通过完整性验证的难度。
     
      ​ (2) `canary` 值中含有字符串终止符,使得攻击者拷贝攻击载荷时无法顺利完成。
     
      ​ (3) 计算 `canary` 值和 `RETADDR` 的异或值,将该异或值保存到一个全局表中,在每次使用 `RETADDR` 值前,都要计算一遍当前 `RETADDR` 的值和 `canary` 的异或值,判断其与全局表中对应的值是否一致, 以提高攻击者构造的攻击向量通过完整性验证的难度。
     
      **Propolice**:借鉴了 `StackGuard` 方法.该技术与 `Stackguard` 不同之处主要有两点:
     
      ​ (1) `Propolice` 重排了局部变量的位置,将局部变量中的数组变量排在最高地址,这样就保障了局部变量不会被缓冲区溢出影响。
     
      ​ (2) 把 `canary` 值放在 `LOCADDR` 和 `EBP` 之间,这样不仅保护了 `RETADDR` 的值,还保护了 `EBP` 的值。
     2. 存储`RETADDR`值
     
      **StackShield**:每次产生 `RETADDR` 时,就 把该值存储到一个全局的表中。每次要跳转执行前,都比较一下栈上的 `RETADDR` 值和全局表中的值:若相同,则程序正常执行;若不同,则中断程序执行。同时还对函数指针进行保护,每次函数指针进行解引用之前,都要判断该指针是否指向代码区:若指向代码区,则程序正常执行;若指向非代码区,则中断程序执行。
     3. 指针前后加`guardzone`
     
      **LBC**:首先在每个对象前后都插入一个值 `guardzone`。然后,用静态分析的方法选出发生算术加减的指针。接下来,每当对选出来的指针进行解引用时都进行检查,判断指针解引用对应的值是否等于 `guardzone`:如果不等,则程序继续运行;如果相等,则提示出现了访问错误。
     4. 低脂指针
     
      分配内存时,把缓冲区基地址信息、缓冲区大小信息等元信息映射到分配的指针上,从而高效地实现了对缓冲区的边界检测,防止运行时缓冲区溢出的发生。
    
    • 主动防护技术

    旨在保障内存中某些关键对象/性质的机密性/可用性的防护技术。攻击者要想实现攻击,必须对程序运行时的内存某些关键部分(如 EBP 的内存具体位置)布局情况了解,而如果通过某些技术手段保障了这些关键部分的机密性,让攻击者无法顺利地得到其内存位置信息,那么攻击者就很难攻击成功。主动地保障关键对象/性质的机密性/可 用性,在程序运行时已经对内存布局进行修改或者对函数使用做了替换,提高了攻击者预测具体内存 信息的难度(保障机密性)或者无法利用不安全的函数(保障可用性)。

     1. 更换动态链接库
     
      **LibSafe**:对于含有容易被攻击者所利用的类似 `strcpy`,`sprintf` 等易发生缓冲区溢出的函数的动态函数链接库进行替换,将其替换成相对应的提供缓冲区边界检测的安全的动态函数链接库。
     2. 加密指针型数据
     
      **PointGuard**:对指针型数据进行加密后再将其存放在内存中,指针解引用前再在寄存器中解密。这样即使攻击者通过利用缓冲区溢出漏洞修改了内存中的指针数据,解密后的指针指向的真正内存位置也不会是攻击者预想的位置。
     3. 随机化内存地址
     
      **ASLR**:对堆、栈、数据段等内存地址的随机化,增加攻击者预测目的地址的难度,提高了缓冲区溢出攻击的难度,同时降低了利用缓冲区溢出漏洞的病毒的传播速度。
     4. 去堆栈布局可预测性
     
      **StackArmor**:通过对逻辑栈帧先分割再置换的方式,彻底地打乱栈帧内变量和变量的分配位置信息、栈帧和栈帧间的位置信息,达到不让逻辑上相邻的栈空间内存在物理上相邻的目的,使得每个栈帧对象地址难以预测。
    

本人从事网路安全工作12年,曾在2个大厂工作过,安全服务、售后服务、售前、攻防比赛、安全讲师、销售经理等职位都做过,对这个行业了解比较全面。

最近遍览了各种网络安全类的文章,内容参差不齐,其中不伐有大佬倾力教学,也有各种不良机构浑水摸鱼,在收到几条私信,发现大家对一套完整的系统的网络安全从学习路线到学习资料,甚至是工具有着不小的需求。

最后,我将这部分内容融会贯通成了一套282G的网络安全资料包,所有类目条理清晰,知识点层层递进,需要的小伙伴可以点击下方小卡片领取哦!下面就开始进入正题,如何从一个萌新一步一步进入网络安全行业。

学习路线图

其中最为瞩目也是最为基础的就是网络安全学习路线图,这里我给大家分享一份打磨了3个月,已经更新到4.0版本的网络安全学习路线图。

相比起繁琐的文字,还是生动的视频教程更加适合零基础的同学们学习,这里也是整理了一份与上述学习路线一一对应的网络安全视频教程。

网络安全工具箱

当然,当你入门之后,仅仅是视频教程已经不能满足你的需求了,你肯定需要学习各种工具的使用以及大量的实战项目,这里也分享一份我自己整理的网络安全入门工具以及使用教程和实战。

项目实战

最后就是项目实战,这里带来的是SRC资料&HW资料,毕竟实战是检验真理的唯一标准嘛~

面试题

归根结底,我们的最终目的都是为了就业,所以这份结合了多位朋友的亲身经验打磨的面试题合集你绝对不能错过!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 16
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值