网络攻防技术——软件漏洞概述

一 漏洞的概念

漏洞是指信息系统的硬件、软件、操作系统、网络协议、数据库等在设计上、实现上出现的可以被攻击者利用的错误、缺陷和疏漏

通俗的说,漏洞就是可以被攻击利用的系统弱点。 本文将重点讨论软件漏洞。

二 软件普遍存在的攻击面

1 代码层面

是否可以被逆向分析,是否可以被篡改并重打包

例如:栈溢出漏洞堆溢出漏洞

检测/利用方式:静态代码审计

2 通信层面

通信是否可以被劫持,更新机制是否存在问题,证书校验机制是否严格

例如:HTTP和HTTPS的区别中间人攻击(证书校验)、密钥长度过短

检测/利用方式:抓包、密钥破解(例如彩虹表)等

3 文件层面

关键文件是否可以被替换或更改,数据是否明文存储

例如:DLL劫持(早期Windows系统)、本地数据未加密

检测/利用方式:数据库恢复取证等

4 业务逻辑

登陆认证是否可以被绕过,是否存在重放攻击风险

例如:业务逻辑缺陷(例如银行负金额转账)、重放攻击

检测/利用方式:重放攻击等

5 运行时

运行的内存是否可以远程注入,关键组件是否暴露

例如:本地游戏作弊器

检测/利用方式:漏洞扫描等

三 漏洞研究概述

1 漏洞研究方向:

1)漏洞扫描与检测
  • 源码扫描
  • 特征扫描: 端口、函数、特征字符串、已有知识库
2)漏洞攻击检测
  • 基于流量的检测
  • 基于插桩的检测: CFO控制流图、ROP链检测、异常跳转检测
3)漏洞危害评估
  • 评估维度
  • 评估指标
  • 评分标准
4)漏洞挖掘
  • 代码审计
  • 补丁比较
  • Fuzz
5)漏洞利用
  • 污点分析
  • 符号执行
  • shellcode编写
  • 利用技巧: jmp esp、 jmp ebp、 ROP、 堆喷射
6)漏洞分析(获取漏洞细节)
  • 静态分析
  • 动态调试

四 漏洞类型详解

1 按效果分类:

1)代码执行

代码执行漏洞是指应用程序本身过滤不严,用户可以通过请求将代码注入到应用中执行。当应用在调用一些能将字符串转化成代码的函数(如php中的eval)时,没有考虑到用户是否能控制这个字符串,将造成代码注入漏洞。

2)信息泄露
3)提权

提权即提高自己在服务器中的权限,主要针对网站入侵过程中,当入侵某一网站时,通过各种漏洞提升webshell权限以夺得该服务器权限。

4)拒绝服务DOS

通过输入畸形数据使系统进入异常或崩溃状态,从而影响系统或软件正常运行,影响服务正常使用。

5)认证绕过

通过构造特定输入,使程序进入由于涉及疏漏而产生的逻辑路径,该逻辑路径可绕过系统正常的身份认证等环节,从而可以非授权的获取系统或数据访问权限。如SQL注入等。

2 按类型分类:

1)栈溢出漏洞
2)堆溢出漏洞
3)格式化字符串漏洞
4)释放再使用(UAF) 漏洞

五 POC EXP Shellcode

POC:全称"Proof of Concept",中文”概念验证“,常指一段漏洞证明的代码。

EXP:全称"Exploit",中文”利用“,指利用系统漏洞进行攻击的动作。

Shellcode:成功exploit后,真正的目标系统执行的代码或指令,playload的一种,由于其建立正向/反向shell而得名。

EXP相当于导弹,Shellcode相当于核弹头或者是炸药。

六 漏洞利用防护机制

1 GS编译保护机制

为了解决返回地址被栈溢出覆盖的问题

其基本原理是修改C编译器GCC,编译时,在函数返回地址之前插入一个数值,以便将一个“探测”值插入到返回地址的前面。在任何函数返回之前,它检查这个值有没有被改变。如果攻击者在栈溢出攻击时改写返回地址,探测器的值就可能被改变,系统就会相应地中止执行。

该方法可以有效防止缓冲区溢出修改函数返回地址,但无法防止缓冲区溢出通过改写其他内存区域来攻击系统。

绕过GS:攻击SEH机制

2 DEP机制

**数据执行保护(DEP)**是软硬件相结合的技术。当EDP开启时,系统会将多个内存页的属性标记为不可执行,当程序试图执行位于不可执行页面(堆、栈及内存池等)上的代码时,就会触发访问违规异常。程序就转而处理异常,或直接将进程终止。

3 ASLR机制

地址空间分布随机化(Address Space Layout Randomization, ASLR)是一种用于阻止缓冲区溢出攻击的计算机安全技术。

为了防止攻击者跳转到内存中的特定函数位置,ASLR在一个进程的地址空间中随机地排列程序的关键区域,包括可执行代码的基址,以及栈、堆和库模块的位置。

该机制及其对抗在我的博文网络攻防技术——缓冲区溢出攻击(基于服务器)有体现,可以参考。

4 SafeSEH机制

Windows是以SEH节点链表的形式来组织和管理异常处理结构的,其结构如下图所示:
在这里插入图片描述

SafeSEH在程序调用异常处理函数之前,对要调用的异常处理函数进行一系列有效性校验,当发现异常处理函数不可靠时将终止异常处理函数的调用。

七 参考文献/链接

  • 《网络攻防技术》(第2版) 机械工业出版社
  • 栈溢出 https://blog.csdn.net/Little_Small_Joze/article/details/113615610
  • 堆溢出 https://blog.csdn.net/Morphy_Amo/article/details/122323280
  • 静态代码审查 https://blog.csdn.net/qq_36828822/article/details/127183643
  • HTTP和HTTPS https://blog.csdn.net/xiaoming100001/article/details/81109617
  • 中间人攻击 https://baike.baidu.com/item/%E4%B8%AD%E9%97%B4%E4%BA%BA%E6%94%BB%E5%87%BB/1739730?fr=ge_ala
  • 抓包 https://baike.baidu.com/item/%E6%8A%93%E5%8C%85/9929103?fr=ge_ala
  • 彩虹表 https://baike.baidu.com/item/%E5%BD%A9%E8%99%B9%E8%A1%A8/689313
  • DLL劫持 https://blog.csdn.net/qq_46804551/article/details/12454660
  • 重放攻击 https://baike.baidu.com/item/%E9%87%8D%E6%94%BE%E6%94%BB%E5%87%BB/2229240?fr=ge_ala
  • Fuzz测试 https://blog.51cto.com/u_14601424/7771675
  • 代码执行 https://blog.csdn.net/weixin_45007073/article/details/113038152
  • 提权 https://blog.csdn.net/weixin_45677119/article/details/111561223
  • 格式化字符串漏洞 https://blog.csdn.net/weixin_62675330/article/details/122907791
  • UAF https://blog.csdn.net/microzone/article/details/70800169/
  • 绕过GS:攻击SEH机制 https://zhuanlan.zhihu.com/p/32331375
  • 网络攻防技术——缓冲区溢出攻击(基于服务器)https://blog.csdn.net/wion03/article/details/133856446
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值