资讯专栏INFORMATION COLUMN

OpenVAS漏洞扫描插件工作原理浅析

Achilles / 1524人阅读

摘要:所以在网络安全评估时,利用可以找出修补漏洞的措施,可以提供很好的指导。对此没有明确规定,插件作者可以自己定义脚本所属的族。在脚本引擎的工作中,将脚本执行收集到的信息保存在知识库中,可有效避免重复扫描,减少不必要的资源浪费,提高工作效率。

开始阅读此文之前请安装好OSSIM v4.15
OpenVAS釆用渗透测试原理,利用Scanner模块中的脚本引擎对目标进行安全检测。Openvas的Scanner的扫描性能依赖于同时进行扫描的并发进程数,不同的硬件环境上可设置的最有效并发扫描数各不相同,Openvas的扫描引擎设备可在保证系统稳定的前提下达到最佳的扫描性能,对于大型网络使用标准设备进行部署可大大降低安装和维护成本。
脚本引擎根据用户提交的配置与要求,首先对脚本进行加载与调度,按照顺序依次调用脚本并解析执行,实现扫描功能。

1.插件功能举例

在/var/lib/openvas/plugins/目录下,分析cross_site_scriping.nasl脚本,本文重点对该文件进行讲解,请大家在阅读之前准备好脚本。跨站脚本漏洞是Web应用的常见漏洞,下面将开始对cross_site_scriping.nasl脚本分析,总结此类漏洞检测过程。

77行script_category(ACT_GATHER_INFO);设置脚本的类别,这些类别有:
 ACT_GATH (信息采集类脚本)
 ACT_ATTACK (尝试获取远程主机权限脚本)
 ACT_DENIAL(拒绝服务攻击脚本)
 ACT_SCANNER(端口扫描脚本)
Category代表了脚本执行的优先级,不是随便扫描,这种优先级的设定符合常规扫描过程,我们在扫描初期需要对目标主机的端口信息,系统信息,服务信息进行收集,根据这些已知信息合理的进行后续测试,这种测试也是按照由弱到强的顺序执行,为什么呢?如果首先就进行最强的漏洞扫描,相当于进行最危险的测试,一旦目标主机存在相应漏洞,立即系统就会崩溃,整个测试就无法全面进行。

NASL脚本的结构与参数在后面内容将会进行详细介绍,此处先对脚本中category参数进行简单描述,category在脚本调度的过程中具有非常重要的作用,category代表了脚本执行的优先级,通过宏对各类category值的优先级进行定义,NASL脚本按照下表中category优先级由高到低执行,相同优先级按照脚本id顺序执行。

这种优先级的设定符合一般扫描过程的逻辑,我们在扫描初期,需要对目标网络的端口信息、系统信息、服务信息等进行收集,根据这些已知信息,合理进行后续的测试,而且再测试过程中也要按照由弱到强的顺序执行,如果首先进行高危测试,且目标系统存在相应漏洞,则会导致系统崩溃,测试无法继续进行。NASL脚本在完成加载调度的过程中,需要经过三次处理,每次处理都定义了符合要求的链表结构对脚本及相关信息进行保存。

32行 include(“revisions-lib.inc”) 添加引用的类库。
63行 script_id(10815); 添加 openvas ID。
但有些脚本会同时出现script_cve_id(“CVE-2010-2963”、”CVE-2010-3067”)这代表添加CVE ID,CVE(Common Vulnerabilities and Exposure)这类例子大家可以参看deb_2126_1.nasl脚本,如果该漏洞有CVE编号,可以再这个字段给出。同样在freebsd_php5-gd.nasl脚本里还出现了script_bugtraq_id(33002),我们可以把CVE看作是一个词典,它提供了许多的交叉引用,现在大量公司都宣布他们的安全产品或数据库都和CVE相兼容,也就是能够利用CVE中漏洞名称同其它CVE兼容的产品进行交叉引用,通过CVE中为每个漏洞分配一个唯一的名称,在其它使用了这个名称的工具、网站、数据库以及服务中检索到相关信息,同时自身关于该漏洞的信息也能够被检索到。所以在网络安全评估时,利用CVE可以找出修补漏洞的措施,CVE可以提供很好的指导。大家如果要具体查询这些ID信息可以用grep命令
grep –ir “script_bugtraq_id” /var/lib/openvas/plugins/

78行 script_family("Web Servers");设置脚本所属的族(family)。
NASL对此没有明确规定,插件作者可以自己定义脚本所属的族。Openvas 使用的族有:
 Debian Local Security Checks
 Fedora Local Security Checks
 Mandrake Local Security Checks
 HP-UX Local Security Checks
 Ubuntu Local Security Checks
 CentOS Local Security Checks
 Windows : Microsoft Bulletins
 FreeBSD Local Security Checks
 Red Hat Local Security Checks
 Solaris Local Security Checks
 CentOS Local Security Checks
 Web application abuses
 FreeBSD Local Security Checks
 Buffer overflow
 Firewalls
 Web Servers
 RPC
 General
 CISCO
 Databases
 Useless services
 Default Accounts
 Nmap NSE net
 Gain a shell remotely
 Malware
 Port scanners
 IT-Grundschutz
 SMTP problems
 Gentoo Local Security Checks
 SuSE Local Security Checks
 FTP
 Denial of Service
 Windows
 Service detection
实际上这些族就是主要的攻击种类。
下面继续看79行内容:
79行 script_copyright("Copyright (C) 2001 SecuriTeam, modified by Chris Sullo and Andrew Hintz");
设置脚本的版权信息
80行 script_dependendes("find_service.nasl", "httpver.nasl");
第80行脚本说明脚本依赖关系,如果要让cross_site_scriping.nasl正常运行,必须依赖find_service.nasl"、"httpver.nasl"这两个脚本。

81行script_require_ports("Services/www", 80);
表明执行此脚本所需的目标服务器的端口信息;
95行 port = get_http_port(default:80);获取服务器端口
123行if(get_port_state(port))判断端口是否打开
134行req = http_get(item:url, port:port);发送带有攻击性的请求
• 注意:nasl脚本主要是对攻击的描述,只是说明的攻击的步骤,不是通常意义上的攻击

135行 r= http_keepalive_send_recv(port:port, data:req, bodyonly: TRUE); 接收响应
165行 set_Kb_item(name:string("www/", port, "/generic_xss"), value:TRUE);

查看知识库中是否已存在此漏洞信息,知识库中保存了各类扫描所需相关信息,例如:
 主机存活信息(Host/dead)
 主机提供服务的信息(ftp/no_mkdir)
 端口扫描信息(services/ftp)
 测试登录信息(SMB/login SMB/password)
在脚本测试过程中,如果收集到有用的信息,将通过set_Kb_item()这个函数,在知识库中增加相应条目;当需要对知识库中的相关信息进行调用时,则利用get_Kb_item()函数进行读取。

2.NASL常用函数介绍
 open_sock_tcp()、open_sock_udp(),分别用于打开一个TCP或者UDP套接字。
 close(), 关闭一个端口。
 forge_ip_packet(), 函数构造一个新的IP报文。
 forge_tcp_packet() , 构造TCP报文。
 set_tcp_elements(), 可修改TCP报文的内容。
 forge_udp_packet(), 构造UDP报文。
 send_packet(), 函数发送报文。
 pcap_next() , 函数将从使用的最后一个接口读取一个报文。
 this_host(), 获取运行脚本的主机IP地址,没有参数。
 get_host_name() , 获取当前被测试主机的主机名,没有参数。
 get_host_ip() , 获取当前被测试主机的IP地址,没有参数。
 get_host_open_port() ,获取远程主机打开的第一个端口号,没有参数。
 get_port_stat(),获取端口的状态。
除此之外还有大量的正则表达式函数这里就不一一举例。

3.OpenVAS脚本加载过程分析

如果你需要开发插件对于,需要了解的一个重点问题是,当启动OpenVAS时,由openvassd进程加载所有的脚本(/var/lib/openvas/plugins/下的*.nasl脚本),存储为argiist结构(数量可变的参数列表指针);根据客户端传递的配置信息,选取需要的脚本,加载为scheduler_plugin结构;最后根据选取脚本的category将脚本分组,组织脚本的执行顺序,保存到plugins_scheduler-struct结构。
OpenVAS关于脚本管理设计的非常合理,初始的加载脚本是保存的argiist链表内容,供后面进步一选取脚本及组织脚本执行顺序时调用,可有效减少内存的使用,提高工作效率。在脚本引擎的工作中,将脚本执行收集到的信息保存在知识库中,可有效避免重复扫描,减少不必要的资源浪费,提高工作效率。知识库中条目结构定义如下:
Struct kb_item
{
char name; /知识库中条目名称*/
char type; / 条目的类型 int 或 string /
union
{
char *v_str;
int v_int;
} V; /<知识库中条目的值/
struct kb item next; /指针指向下一条目 */
};
知识库中保存的信息包含各类扫描信息例如:
 主机存活信息(Host/dead)。
 主机提供的服务信息(ftp/no_mkdir)。
 端口扫描信息(Services/ftp)。
 测试登录信息(SMB/login; SMB/password)。
 用户检测时进行的系统设置信息。
在脚本执行过程中,如果收集到有用信息,将通过set_kb_item()函数,在知识库中增加相应条目;如果需要对知识库中的相关信息进行调用,则使用get_kb_item()函数进行读取操作。
脚本在执行时如果有依赖的系统环境、端口状态等信息,会到知识库中查询,并根据查询结果做出合理的操作。例如:某脚本的执行需要目标主机的80端口打开,通过知识库查询,发现目标的80端口是关闭的,那么此脚本的执行将放弃,且该脚本对应线程关闭;如果发现目标的80端口处于开启状态,那么该脚本将顺利执行,对目标进行检测。通过对知识库中信息的查询判断,可有效提高脚本执行的效率,一些无意义的扫描将被过滤。
更多OSSIM的内容请大家关注我的2019年最新作品。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/110604.html

相关文章

  • Kali Linux 秘籍 第五章 漏洞评估

    摘要:第五章漏洞评估作者译者飞龙协议简介扫描和识别目标的漏洞通常被渗透测试者看做无聊的任务之一。家庭版的有效许可证。在标签页中,选择并选择下列特定的漏洞。。漏洞会详细列出。发现特定的漏洞在这个秘籍中,我们会使用探索如何发现特定漏洞。 第五章 漏洞评估 作者:Willie L. Pritchett, David De Smet 译者:飞龙 协议:CC BY-NC-SA 4.0 简介 扫描和...

    csRyan 评论0 收藏0
  • Kali Linux 2016.2(Rolling) 安装 OpenVAS

    摘要:是开放式漏洞评估系统,也可以说它是一个包含着相关工具的网络扫描器。其核心部件是一个服务器,包括一套网络漏洞测试程序,可以检测远程系统和应用程序中的安全问题。 OpenVAS是开放式漏洞评估系统,也可以说它是一个包含着相关工具的网络扫描器。其核心部件是一个服务器,包括一套网络漏洞测试程序,可以检测远程系统和应用程序中的安全问题。 最新版本 Kali Linux 2016.2 中不再自带O...

    hizengzeng 评论0 收藏0
  • 2017文章总结

    摘要:欢迎来我的个人站点性能优化其他优化浏览器关键渲染路径开启性能优化之旅高性能滚动及页面渲染优化理论写法对压缩率的影响唯快不破应用的个优化步骤进阶鹅厂大神用直出实现网页瞬开缓存网页性能管理详解写给后端程序员的缓存原理介绍年底补课缓存机制优化动 欢迎来我的个人站点 性能优化 其他 优化浏览器关键渲染路径 - 开启性能优化之旅 高性能滚动 scroll 及页面渲染优化 理论 | HTML写法...

    dailybird 评论0 收藏0
  • 2017文章总结

    摘要:欢迎来我的个人站点性能优化其他优化浏览器关键渲染路径开启性能优化之旅高性能滚动及页面渲染优化理论写法对压缩率的影响唯快不破应用的个优化步骤进阶鹅厂大神用直出实现网页瞬开缓存网页性能管理详解写给后端程序员的缓存原理介绍年底补课缓存机制优化动 欢迎来我的个人站点 性能优化 其他 优化浏览器关键渲染路径 - 开启性能优化之旅 高性能滚动 scroll 及页面渲染优化 理论 | HTML写法...

    hellowoody 评论0 收藏0
  • 2017文章总结

    摘要:欢迎来我的个人站点性能优化其他优化浏览器关键渲染路径开启性能优化之旅高性能滚动及页面渲染优化理论写法对压缩率的影响唯快不破应用的个优化步骤进阶鹅厂大神用直出实现网页瞬开缓存网页性能管理详解写给后端程序员的缓存原理介绍年底补课缓存机制优化动 欢迎来我的个人站点 性能优化 其他 优化浏览器关键渲染路径 - 开启性能优化之旅 高性能滚动 scroll 及页面渲染优化 理论 | HTML写法...

    wwolf 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<