终于看完第二篇漏洞利用原理高级篇,内容虽然看懂了,但深入理解不够,这部分内容以后还要不断强化。

第三篇是漏洞挖掘技术,篇首的话中,提到程序的不可计算性(图灵机的停机问题)、希伯尔数学纲领的失败,结尾说:由于程序的不可计算性,故无法从理论上用数学方法彻底消灭程序中的所有逻辑缺陷,很有启发性。

成为有效的攻击者或者安全专家,不仅需要精通漏洞利用技术,还要掌握漏洞挖掘技术。

工业界目前普遍采用的是 Fuzz 测试,Fuzz 测试最早由 Barton Miller、Lars Fredriksen、Bryan So 在一次偶然的情况下想到,这种方法能 crash 大多数程序,很少误报,能迅速找到漏洞,缺点是无法保证找到所有漏洞。

Fuzz 测试与基于功能性的测试不同,主要目的是 crash、break、destory,是一种自动化的 rough attack,其畸形数据往往可以触发缓冲区溢出,但却不能成功利用,故为 rough。测试员要实时捕捉异常、崩溃和寄存器信息,进行可利用性判断。

攻击者热衷于使用工具,而研究者偏向于对源码进行分析审计,直接在程序的逻辑上寻找漏洞。静态代码分析技术的缺点的误报多。这方面的方法和理论很多,如数据流分析、类型验证系统、边界检查系统、状态机系统,这些都可以追溯到 1976 年 ACM Computing Surveys 上的那篇 Data Flow Analysis in Software Reliability。

以下是一些通过审计源码来检测漏洞的产品:

* Fortify,在编译阶段扫描若干种安全风险。
* Rough Auditing Tool for Security(RATS),用于分析 C/C++ 的语法树,寻找存在安全问题的函数调用。
* BEAM(Bugs Errors And Mistakes),IBM 研发的静态代码分析工具,使用数据流方法分析源码的所有可执行路径。
* SLAM,使用先进算法,用于检测驱动中的 bug,被 Microsoft 所使用,已经成功检测出一些驱动中的漏洞。
* Flaw Finder,David Wheeler 用 Python 开发的代码分析工具,免费。
* Prexis,可审计多种语言的源码,审计的漏洞类型超过 30 种。

动态测试技术

SPIKE

这是一款非常著名的 Protocol Fuzz 开源 Linux 工具,针对网络协议,作者是 Immunity 公司的创始人 Dave Aitel,他引入了基于数据块的理论,将数据的基本单位看成块(block),并实现了一套强大的 API 和数据结构用于定义和构造精确的 Fuzz 用例,避免盲目发送数据,大大提高了测试用例的准确度。Dave Aitel 在 XCON 2006 上演示了如何用 SPIKE 对 Windows 的 RPC 调用进行 Fuzz:将 OllyDbg 的所有异常监听选项打开,并 attack 到目标程序上,然后开始发送畸形数据,如果引起了目标进程出错或者崩溃,就需要去调试看看有没有发现漏洞。许多商用 Fuzz 工具采用 SPIDE 的数据快变异测试的思路。

beSTORM

由 Beyond Security 安全公司设计开发的,运行在 Windows 下,是一款全能开安全审计程序,利用模糊测试技术实现针对网络协议的安全测试。采用分体设计,自动化测试部分为一个独立程序,实时监视部分为另一个独立程序。可以实现对多种不同网络协议进行安全测试,无论明文式还是非明文式。

静态代码审计

Coverity

Coverity 是静态源码分析工具,相当于一个超级编译器。它支持多种 C/C++(ms、gnu、hp-ux、sun、wind river),支持多种系统(windows、solaris、linux、freebsd、mac等),使用 checker 模块来检测漏洞,checker 包括 c checkers(内存、缓冲区、参数、返回值)、concurrency checkers(线程同步、锁机制)、security checkers(可信数据流分析、字符串溢出等)。

Coverity 扩展性很好,可以开发自己的 checker,并且具有友好的 GUI。

Coverity 被不少企业用户使用,包括 Symantec、HP、Panasonic、Samsung 等。

作者研究过静态代码分析,总结说:所有静态代码分析的理论和技术都面临同样一个问题,就是如何处理程序逻辑中由动态因素引起的复杂条件分支和循环。静态分析算法要想取得实质性突破必须面对“彻底读懂”程序逻辑的挑战(停机问题说明检测程序中的死循环是不可计算的),在形式语言中实际要涉及上下文的相关方法,而编译理论和状态机理论只发展到解释上下文无关方法的阶段。

OD: Vulnerability Detection的更多相关文章

  1. Automated CMS category, version identification (CMS vulnerability detection)

    catalog . 引言 . 不同CMS版本标的文件路径调研 . Code Example 1. 引言 微软解决大量CVE补丁更新的检测时候,采取的思路不是根据MD5对单个漏洞文件(.dll..sys ...

  2. A Deep Learning-Based System for Vulnerability Detection(二)

    接着上一篇,这篇研究实验和结果. A.用于评估漏洞检测系统的指标 TP:为正确检测到漏洞的样本数量 FP:为检测到虚假漏洞样本的数量(误报) FN:为未检真实漏洞的样本数量(漏报) TN:未检测到漏洞 ...

  3. A Deep Learning-Based System for Vulnerability Detection(一)

    接着上一篇,讨论讨论具体步骤实现方法.步骤1-3分别在下面进行阐述,步骤4,6都是标准的,步骤5类似于步骤1-3. 结合这个图进行讨论详细步骤: 步骤1:提取库/API函数调用和程序片段 1.1将库/ ...

  4. A Deep Learning-Based System for Vulnerability Detection

    本篇文献作者提出了一种基于深度学习来检测软件漏洞的方案.       摘要:作者开始基于深度学习的漏洞检测研究,是为了减轻专家手工定义特性的繁琐任务,需要制定一些指导性原则来适用于深度学习去进行漏洞探 ...

  5. 转-Nmap扫描原理与用法

    1     Nmap介绍 操作系统与设备类型等信息. Nmap的优点: 1.      灵活.支持数十种不同的扫描方式,支持多种目标对象的扫描. 2.      强大.Nmap可以用于扫描互联网上大规 ...

  6. Nmap使用指南(1)

    Nmap是一款开源免费的网络发现(Network Discovery)和安全审计(Security Auditing)工具.软件名字Nmap是Network Mapper的简称.Nmap最初是由Fyo ...

  7. Nmap扫描原理与用法

    Nmap扫描原理与用法 1     Nmap介绍 Nmap扫描原理与用法PDF:下载地址 Nmap是一款开源免费的网络发现(Network Discovery)和安全审计(Security Audit ...

  8. [转]Adventures in Xen exploitation

    Source:https://www.nccgroup.com/en/blog/2015/02/adventures-in-xen-exploitation/   tl;dr This post is ...

  9. python dns查询与DNS传输漏洞查询

    前言: 昨天晚上在看DNS协议,然后想到了 DNS传输漏洞.便想写一个DNS查询与DNS传输漏洞查询 DNS传输漏洞介绍: DNS传输漏洞:若DNS服务器配置不当,可能导致匿名用户获取某个域的所有记录 ...

随机推荐

  1. WPS 去掉自动打开的文档漫游和在线模板

    关闭文档漫游  在cmd(命令提示符)中输入regedit.exe回车,将弹出”注册表编辑器“,选择HKEY_CURRENT_USER>>Software>>Kingsoft& ...

  2. ext.apply和ext.applyIf

    apply的用法: Ext中apply及applyIf方法的应用 apply及applyIf方法都是用于实现把一个对象中的属性应用于另外一个对象中,相当于属性拷贝. 不同的是apply将会覆盖目标对象 ...

  3. php 实用函数

    第一次随笔,写一些自己工作当中比较实用的函数吧. 数组函数: 1 array_column --返回数组当中指定的一列 用法一:返回数组当中指定的一列 应用场景:取出全班同学的id,去其他表查询这些同 ...

  4. core文件生成总结

    1.确定系统支持生成core dump文件 ulimit -c    如果返回0, 可以ulimit -c unlimited 设定 2.kill 加上信号量, kill 信号如下 信号 信号值 功能 ...

  5. IIS 10 安装URLRewrite组件 方式

    1.Open Regedit > HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\InetStp 2.Edit "MajorVersion" an ...

  6. IOS6.0 应用内直接下载程序 不需跳转AppStore -b

    闲来没事看了篇文章 应用内创建应用商店环境,不跳转AppStore. 先武断的想一句:放屁.然后好奇的进去看看,原来是IOS6.0的新特性,顿感惭愧.研究下 SKStoreProductViewCon ...

  7. 杂谈之不同行业的Solr

    杂谈之不同行业的Solr 前几天去一家互联网创业公司面试搜索引擎开发工程师,结果被pass了,仍不住想来吐槽下.尽管当时面试没啥准备,也没表现好,但是也学到了不少东西.现在就随便吐槽一下吧. 本人是在 ...

  8. 在vs中连接sql的几种连接方式

     sql身份验证:Data Source=.;Initial Catalog=DBName;UID=sa;Pwd=pwd windows身份验证:Data Source=.;Initial Catal ...

  9. 转:memset用法详解

    功 能 将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值,   块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作,   其返回值为指向S的指针.   [编辑本段 ...

  10. c语言用封装来优化程序

    一.基础研究 先对函数fa进行研究,代码如下: fa函数的参数为一个字符指针,他存储要输出的字符串.因为要显示在屏幕的中央位置,所以我们要把字符串放在段地址b800处.用strlen获取字符串的长度, ...