以前我们总是听到“挖掘漏洞”,“某某公司出现了提权漏洞”,我们会问一句“你咋知道这是漏洞?你怎么知道漏洞在哪?”,当然回答这个很简单啦,因为漏洞在代码中,但是上百万行的代码谁知道哪里有漏洞?这个嘛。。。人做不到软件可以搞定一切啊!当然漏洞挖掘的前提是你要懂得如何发动溢出攻击,否则怎么提权?还有一些常用的命令语句。最最重要的是你要知道什么样的代码具有漏洞。这样子,时间久了之后我们可以自定义语法格式,那些黑客大牛们都是拥有自定义的一套常见漏洞代码数据库的。我们也可以建立噢~~
所以,本文要说的就是几款专门用来分析代码的工具,也是软工的工程师们做安全评测的工具。这些东西用好了就是安全评测工具,漏洞挖掘工具,用不好呢?漏洞挖掘机,黑客利剑。
FormatGuard:Linux下防止格式化字符串攻击的工具,是对glibc的增强。具体通过预处理提供的宏功能来对类printf函数中的参数个数进行计数,通过glibc提供的parse_printf_format函数来对转换说明符进行计数。如果转换说明符的数目大于提供给printf的参数个数,_proteced_printf函数认为可能遭受格式串攻击,发出警告。但该工具不能分析类vprintf函数(而此类函数却大量存在)。
LibFormat:Unix中提供了一个有用的环境变量LD_PRELOAD,它允许我们定义在程序允许前优先加载的动态链接库。主要思想,通过动态连接器将自己插入到程序中,在程序以后的运行中如果发现了包含%n的格式串出现在可写内存中,则终止程序。但对读操作却无能为力,而且遇到的任何%n格式串,都会终止程序,误报高。
ANTLR:识别和处理编程语言是 Antlr 的首要任务,编程语言的处理是一项繁重复杂的任务,为了简化处理,一般的编译技术都将语言处理工作分为前端和后端两个部分。其中前端包括词法分析、语法分析、语义分析、中间代码生成等若干步骤,后端包括目标代码生成和代码优化等步骤。Antlr 致力于解决编译前端的所有工作。使用 Anltr 的语法可以定义目标语言的词法记号和语法规则,Antlr 自动生成目标语言的词法分析器和语法分析器;此外,如果在语法规则中指定抽象语法树的规则,在生成语法分析器的同时,Antlr 还能够生成抽象语法树;最终使用树分析器遍历抽象语法树,完成语义分析和中间代码生成。整个工作在 Anltr 强大的支持下,将变得非常轻松和愉快。另外,Antlr的词法分析器生成器,可以很容易的完成正则表达式能够完成的所有工作;除此之外使用 Anltr 还可以完成一些正则表达式难以完成的工作,比如识别左括号和右括号的成对匹配等。
GOLD:它是一个较为复杂的分析器,支持很多语言,包括:Assembly – Intel x86 、ANSI C、C#、D、Delphi、Java、Pascal、Python、Visual Basic、Visual Basic .NET、Visual C++、所有.NET语言、所有ActiveX语言。是个免费的软件。
Its4:读取一个或多个C/C++源程序,将每个源程序分割成函数标志流,然后检查生成的标志是否存在于漏洞数据库中,从而得到每个源程序的所有错误警告列表,并带有相关的描述。其规则库vulns.i4d定义了各种函数的危险等级,描述等,通过规则匹配来报出风险,但它不能理解程序上下文意思,存在很大的误报。
Flawfinder:词法扫描和分析,内嵌了一些漏洞数据库,如缓冲区溢出、格式化串漏洞等,扫描快,按照代码中漏洞的风险等级对漏洞进行划分,可以快速找到存在的问题,误报较高
Rats:扫描C、C++、Perl、PHP和Python开发的源程序中潜在的漏洞,扫描规则比较粗糙
以上就是常见的C /C++常用的代码分析工具,漏洞存在于代码中,挖出来就是我们成绩,大家一起努力噢~
当然还有很多好用的东西,比如:pc-lint、splin 这两个工具。总之我们可以把静态分析工具,动态分析工具都拿来用上,漏洞就是这么挖出来的,所以有人说漏洞挖掘很枯燥,但是有很多人确实乐此不疲的!