漏洞发掘技术

关键词: 漏洞    开发    发掘    找漏洞    编程

一、不同角度看安全漏洞的分类
对一个特定程序的安全漏洞可以从多方面进行分类。

1. 从用户群体分类:

●大众类软件的漏洞。如Windows的漏洞、IE的漏洞等等。

●专用软件的漏洞。如Oracle漏洞、Apache漏洞等等。

2. 从数据角度看分为:

●能读按理不能读的数据,包括内存中的数据、文件中的数据、用户输入的数据、数据库中的数据、网络上传输的数据等等。

●能把指定的内容写入指定的地方(这个地方包括文件、内存、数据库等)

●输入的数据能被执行(包括按机器码执行、按Shell代码执行、按SQL代码执行等等)

3.从作用范围角度看分为:

●远程漏洞,攻击者可以利用并直接通过网络发起攻击的漏洞。这类漏洞危害极大,攻击者能随心所欲的通过此漏洞操作他人的电脑。并且此类漏洞很容易导致蠕虫攻击,在Windows。

●本地漏洞,攻击者必须在本机拥有访问权限前提下才能发起攻击的漏洞。比较典型的是本地权限提升漏洞,这类漏洞在Unix系统中广泛存在,能让普通用户获得最高管理员权限。

4.从触发条件上看可以分为:

●主动触发漏洞,攻击者可以主动利用该漏洞进行攻击,如直接访问他人计算机。

●被动触发漏洞,必须要计算机的操作人员配合才能进行攻击利用的漏洞。比如攻击者给管理员发一封邮件,带了一个特殊的jpg图片文件,如果管理员打开图片文件就会导致看图软件的某个漏洞被触发,从而系统被攻击,但如果管理员不看这个图片则不会受攻击。

5.从操作角度看可分为:

●文件操作类型,主要为操作的目标文件路径可被控制(如通过参数、配置文件、环境变量、符号链接灯),这样就可能导致下面两个问题:

◇写入内容可被控制,从而可伪造文件内容,导致权限提升或直接修改重要数据(如修改存贷数据),这类漏洞有很多,如历史上Oracle TNS LOG文件可指定漏洞,可导致任何人可控制运行Oracle服务的计算机;

◇内容信息可被输出,包含内容被打印到屏幕、记录到可读的日志文件、产生可被用户读的core文件等等,这类漏洞在历史上Unix系统中的crontab子系统中出现过很多次,普通用户能读受保护的shadow文件;

●内存覆盖,主要为内存单元可指定,写入内容可指定,这样就能执行攻击者想执行的代码(缓冲区溢出、格式串漏洞、PTrace漏洞、历史上Windows2000的硬件调试寄存器用户可写漏洞)或直接修改内存中的机密数据。

●逻辑错误,这类漏洞广泛存在,但很少有范式,所以难以查觉,可细分为:

◇条件竞争漏洞(通常为设计问题,典型的有Ptrace漏洞、广泛存在的文件操作时序竞争)

◇策略错误,通常为设计问题,如历史上FreeBSD的Smart IO漏洞。

◇算法问题(通常为设计问题或代码实现问题),如历史上微软的Windows 95/98的共享口令可轻易获取漏洞。

◇设计的不完善,如TCP/IP协议中的3步握手导致了SYN FLOOD拒绝服务攻击。

◇实现中的错误(通常为设计没有问题,但编码人员出现了逻辑错误,如历史上博彩系统的伪随机算法实现问题)

●外部命令执行问题,典型的有外部命令可被控制(通过PATH变量,输入中的SHELL特殊字符等等)和SQL注入问题。

6. 从时序上看可分为:

●已发现很久的漏洞:厂商已经发布补丁或修补方法,很多人都已经知道。这类漏洞通常很多人已经进行了修补,宏观上看危害比较小。

●刚发现的漏洞:厂商刚发补丁或修补方法,知道的人还不多。相对于上一种漏洞其危害性较大,如果此时出现了蠕虫或傻瓜化的利用程序,那么会导致大批系统受到攻击。

●0day:还没有公开的漏洞,在私下交易中的。这类漏洞通常对大众不会有什么影响,但会导致攻击者瞄准的目标受到精确攻击,危害也是非常之大。

二、不同角度看待漏洞利用
如果一个缺陷不能被利用来干“原本”不能干的事(安全相关的),那么就不能被称为安全漏洞,所以安全漏洞必然和漏洞利用紧密联系在一起。

漏洞利用的视角有:

●数据视角:访问本来不可访问的数据,包括读和写。这一条通常是攻击者的核心目的,而且可造成非常严重的灾难(如银行数据可被人写)。

●权限视角:主要为权限绕过或权限提升。通常权限提升都是为了获得期望的数据操作能力。

●可用性视角:获得对系统某些服务的控制权限,这可能导致某些重要服务被攻击者停止而导致拒绝服务攻击。

●认证绕过:通常利用认证系统的漏洞而不用受权就能进入系统。通常认证绕过都是为权限提升或直接的数据访问服务的。

●代码执行角度:主要是让程序将输入的内容作为代码来执行,从而获得远程系统的访问权限或本地系统的更高权限。这个角度是SQL注入、内存指针游戏类漏洞(缓冲区溢出、格式串、整形溢出等等)等的主要驱动。这个角度通常为绕过系统认证、权限提升、数据读取作准备的。

三、漏洞发掘方法
首先必须清除安全漏洞是软件BUG的一个子集,一切软件测试的手段都对安全漏洞发掘实用。现在”黑客“用的各种漏洞发掘手段里有模式可循的有:

●fuzz测试(黑盒测试),通过构造可能导致程序出现问题的方式构造输入数据进行自动测试。

●源码审计(白盒测试),现在有了一系列的工具都能协助发现程序中的安全BUG,最简单的就是你手上最新版本的C语言编译器。

●IDA反汇编审计(灰盒测试),这和上面的源码审计非常类似,唯一不同的是很多时候你能获得软件,但你无法拿到源码来审计,但IDA是一个非常强大的反汇编平台,能让你基于汇编码(其实也是源码的等价物)进行安全审计。

●动态跟踪分析,就是记录程序在不同条件下执行的全部和安全问题相关的操作(如文件操作),然后分析这些操作序列是否存在问题,这是竞争条件类漏洞发现的主要途径之一,其他的污点传播跟踪也属于这类。

●补丁比较,厂商的软件出了问题通常都会在补丁中解决,通过对比补丁前后文件的源码(或反汇编码)就能了解到漏洞的具体细节。
以上手段中无论是用哪种都涉及到一个关键点:需要通过人工分析来找到全面的流程覆盖路径。分析手法多种多样,有分析设计文档、分析源码、分析反汇编代码、动态调试程序等。

四、漏洞等级评定
考察漏洞的危害性应该紧密的和利用该漏洞来的危害相关,并不是通常大家认识的所有缓冲区溢出漏洞都是高危漏洞。以远程漏洞为例,比较好的划分方法为:

1 可远程获取OS、应用程序版本信息。
2 开放了不必要或危险得服务,可远程获取系统敏感信息。
3 可远程进行受限的文件、数据读取。
4 可远程进行重要或不受限文件、数据读取。
5 可远程进行受限文件、数据修改。
6 可远程进行受限重要文件、数据修改。
7 可远程进行不受限得重要文件、数据修改,或对普通服务进行拒绝服务攻击。
8 可远程以普通用户身份执行命令或进行系统、网络级的拒绝服务攻击。
9 可远程以管理用户身份执行命令(受限、不太容易利用)。
10 可远程以管理用户身份执行命令(不受限、容易利用)。
本地漏洞几乎都是导致代码执行,归入上面的10分制可以为:

远程主动触发代码执行(如IE的漏洞).

远程被动触发代码执行(如Word漏洞/看图软件漏洞).

五、DEMO
一个防火墙隔离(只允许运维部的人访问)的网络里运行一台Unix服务器;操作系统中只有root用户和oracle用户可登陆,操作系统中运行了Apache(nobody权限)、Oracle(oracle用户权限)等服务。

一个攻击者的目的是修改Oracle数据库中的帐单表的数据。
其可能的攻击步骤为:
●1.接入运维部的网络,获得一个运维部的IP地址从而能通过防火墙访问被保护的Unix服务器。
●2.利用Apache服务的某远程缓冲区溢出漏洞直接获得一个nobody权限的shell访问。
●3.利用操作系统某suid程序的漏洞将自己的权限提升到root权限。
●4.用Oracle的sysdba登陆进入数据库(本地登陆不需要密码)。
●5.修改目标表的数据。
 
以上5个过程分析下来为:
●第1步:认证绕过
●第2步:远程漏洞、代码执行(机器码)、认证绕过
●第3步:权限提升、认证绕过
●第4步:认证绕过
●第5步:数据写入

漏洞发掘技术,思路解析相关推荐

  1. 0day安全:软件漏洞分析技术(第2版)

    0day安全:软件漏洞分析技术(第2版) 基本信息 作者:王清   张东辉   周浩   王继刚   赵双 丛书名:安全技术大系 出版社:电子工业出版社 ISBN:9787121133961 上架时间 ...

  2. 书评第003篇:《0day安全:软件漏洞分析技术(第2版)》

    本书基本信息 丛书名:安全技术大系 作者:王清(主编),张东辉.周浩.王继刚.赵双(编著) 出版社:电子工业出版社 出版时间:2011-6-1 ISBN:9787121133961 版次:1 页数:7 ...

  3. Iog4j2漏洞相关技术分析

    背景 2021年12月初,极光安全团队通过安全威胁舆情发现Apache Log4j2 存在远程代码执行漏洞,迅速对该漏洞危害性评估和涉及面漏斗分析,制定了应急响应方案,对涉及到的代码组件类和主机资产类 ...

  4. 对目前物联网设备的漏洞挖掘技术的学习记录

    物联网设备漏洞挖掘技术 目前物联网设备的使用越来越普遍,而对应的漏洞攻击现象也越来越频繁,究其原因主要有两点: ① 物联网设备开发过程中, 在设计上忽略了安全性的考虑; ② 由于设备硬件资源受限, 难 ...

  5. 《0day安全:软件漏洞分析技术第二版》

    简单说来,这次再版的原因有二: 首先,国人深知与时俱进的道理,技术上面更是如此.随着windows平台保护技术的不断改进,win7的广泛使用,第一版中所述的很多方法已有较大局 限.为此我们逐一搜集了近 ...

  6. 秋色园QBlog技术原理解析:Web之页面处理-内容填充(八)

    文章回顾: 1: 秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文件的作用 2: 秋色园QBlog技术原理解析:认识整站处理流程(二) --介绍秋色园业务处理流程 3: 秋色 ...

  7. 《0day安全:软件漏洞分析技术》的一点总结

    评价 首先评价一下这本书吧:(先抑后扬吧)  有些漏洞是win2000的,实在是太老了,难以进行实践,但是介绍一下也是很好的,但是不能实践理解得不深刻.[第一版是08年出版的,第二版是2011年,我手 ...

  8. Libc堆管理机制及漏洞利用技术 (一)

    0×01 Libc堆浅析 1.1 堆管理结构 struct malloc_state {mutex_t mutex; /* Serialize access. */int flags; /* Flag ...

  9. android4 设置栈大小,【技术分享】Android内核漏洞利用技术实战:环境搭建栈溢出实战...

    [技术分享]Android内核漏洞利用技术实战:环境搭建&栈溢出实战 2017-08-14 16:22:02 阅读:0次 预估稿费:300RMB 投稿方式:发送邮件至linwei#360.cn ...

最新文章

  1. GIT:如何管理本机的多个ssh密钥(多个远程仓库账号)
  2. memcache基础教程
  3. 如何将oracle数据库中的表结构导入到sqlserver中,Oracle转换成SqlServer数据库的步骤...
  4. 苹果“炸场”发布会:搭载刘海屏的MacBook Pro来了,还有AirPods 3...
  5. 数据结构(字符串)—— 循环旋转字符串的判断
  6. mpvue配置底部菜单栏图标路径报错
  7. java对象 引用 原理,java对象引用和对象值得行为
  8. iOS----------APP怎样做更安全
  9. lua table remove元素的问题
  10. latex如何实现单元格内文字的换行
  11. 查询瀚高数据库的创建时间
  12. angular7中使用jsonViewer
  13. 网上卖生鲜产品怎么做引流?生鲜电商的引流方法有哪些?特点是什么?
  14. 小程序支持HTML标签
  15. 一度智信电商是真的假的?
  16. 必须要了解股权设计的四大核心
  17. 外贸人如何从SiteGround购买建站外贸主机
  18. 鸿蒙系统微信怎么操作,鸿蒙系统无微信?为何腾讯如此恶心
  19. Android activity间的数据回传
  20. 钉钉签到后可以删除吗?钉钉签到考勤破解

热门文章

  1. android滑动一个路线后 人物图片按此路线移动的实现
  2. 【Linux服务器系列】服务器性能慢,原来你不懂这些操作,学会后可以提升8倍
  3. 三星s8打开usb调试
  4. 《android进阶之光》——事件总线(上)
  5. 2021年起重机司机(限桥式起重机)考试APP及起重机司机(限桥式起重机)模拟考试
  6. linux远程窗口无法当机,linux – 当我已经进入远程机器时,如何回到本地?
  7. Kindle使用calibre导入电子书(解决封面不显示问题)
  8. 记一次蚂蚁金服电话面试
  9. Python基础《十一:mysql数据库》
  10. 《程序员》 -- 计算几何的魅力:美术馆问题