深度安全检测解决方案

当前深度安全检测方案现状

在频发的安全事件催化下,网络信息安全已经上升至国家战略高度。信息安全保障措施中安全测试评估是必不可少的一环。国家网络安全法的第三十八条就规定了“关键信息基础设施的运营者应当自行或者委托网络安全服务机构对其网络的安全性和可能存在的风险每年至少进行一次检测评估”。从每年频繁暴露的重要安全漏洞及相关事件可以得知,持续性的安全测试评估才能在达到有效的安全防御效果。

在安全检测评估技术中,渗透测试被广泛认为对系统安全性的最好检验,因为它最接近真实世界的攻击。执行这些测试通常需要技术娴熟的人员花费大量时间来执行,并且在理想情况下,执行这些测试的工程师需要达到或者超过潜在攻击者的技能水平。

使用软件自动化进行渗透测试有几个关键的好处。首先,当新漏洞出现时,使用频繁扫描提高了检测速度。其次,自动化工具可以广泛测试大量系统中很多已知安全漏洞,而不需要繁琐的手动测试过程。最后,自动化工具减轻了高技能人员繁琐的工作,让他们可以集中精力来协调测试以及运用其专业知识在更重要的地方。

碳泽深度安全检测解决方案

为达到自动化渗透测试安全评估的目的,需要先对渗透测试本身的过程进行定义。渗透测试执行标准(PETS http://www.pentest-standard.org)已经对渗透测试进行了很好的总结与划分,把过程大体上分为前期交互、情报收集、威胁建模、漏洞分析、渗透攻击利用、后渗透测试、报告7个部分。除前期交互属于必须有人参与外,其它6个部分都可以进行一定程度地智能化、自动化处理。

摇光深度安全检测系统基于真实白帽黑客进行渗透测试的经验,强大且灵活的框架提供了对渗透测试全过程的自动化支持。不仅支持网络远程扫描攻击测试 ,也支持辅助社会工程APT的攻击测试,并且可取得真实有效的漏洞利用证据,促使企事业单位等第一时间发现与修复关键安全风险。

 高层设计概要

  • 系统设计为支持浏览器/服务器(B/S)架构,可直接通过Web进行操作,便于部署。
  • 支持多用户。系统可支持多个用户分别操作,提高利用率。
  • 分项目操作模式。对渗透测试任务可分项目操作,各项目之间的数据互不冲突。结合多用户功能,可以适应大规模网络目标环境。
  • 支持虚拟化环境。目标支持在虚拟化环境部署,适应云计算的发展趋势。

部署应用

系统支持多种方式的部署应用。支持安装在便携式硬件如笔记本中,也支持部署到虚拟化平台。只需要提供基本网络连通性即可进行安全检测与评估。系统一般作为主动测试使用,同时也为特殊场景提供了被动测试的部署方式。

1主动测试部署
大部分情况下渗透测试安全评估都是通过主动的方式发起,这种方式下只要求系统能连接到目标网络。即使通过代理或VPN跳板也可以。
2被动测试部署
即旁路方式,用于业务安全性较高的网络,对网络流量进行自动化渗透。使用系统中的专用被动测试模块,并将系统接入到一个流量镜像的网络端口,对镜像的网络流量进行分析测试。这种部署方式不会影响到具体的业务系统运行。

技术架构设计

系统以Ruby语言为基础采用高度模块化设计。总体上分为基础库、模块、接口和其他第三方集成工具或插件4部分。

基础库是最核心的部分,其他部分功能模块都通过它耦合在一起。不仅提供与各个功能部分的交互,还负责项目管理、会话管理、日志管理等。

模块部分是安全检测中与漏洞和脆弱性紧密相关的部分,由框架装载使用。根据渗透测试过程各个环节中所具有的不同用途,分为辅助模块、渗透攻击模块、后渗透攻击模块、载荷模块、空指令模块和编码器模块等。这些模块都拥有非常清晰的结构和一个预先定义好的接口,可以被装载到检测系统框架中,并可组合支持信息搜集、渗透攻击与后渗透攻击拓展等渗透测试任务。

接口部分提供了多种用户使用接口,如Web接口、API接口、高级用户命令行操作接口以及导入第三方安全工具报告的数据转换接口等。

其他部分使用第三方安全工具如Nmap等扩充了框架的基础能力,并可以快速开发与集成附加功能。

主要功能技术实现

根据安全检测与攻击方式的区别,系统可以简要分为三种模式:

  • 自动化渗透攻击测试
  • 社会工程学攻击测试
  • Web安全漏洞测试
1自动化渗透

系统只需要输入项目名称及目标地址,就可以默认配置进行自动化渗透测试。

系统首先会收集一些关于目标的信息,收集信息的方式有两种:对目标进行发现扫描,或者导入已有的数据。发现扫描发送探测数据包发现目标开放的端口及服务,识别服务版本信息等。

然后使用辅助模块对目标的端口和服务进一步探测。根据探测到的信息系统调用渗透攻击模块对目标进行漏洞攻击测试。

目标一旦能够被成功渗透,系统将会调用一些后渗透模块,或者建立交互式会话供用户使用。用户可以利用这些功能去获得目标系统的更多信息。

最后,用户可以根据自己的需求,筛选系统渗透测试的结果,然后通过系统生成渗透报告。

2发现扫描

自动化渗透测试的第一步就是发现扫描,发现扫描用于更好地了解目标的网络环境,收集目标主机或者主机集群的各类基本信息。这些信息在后来的漏洞验证环节起到重要作用,系统会自动根据这些信息制订攻击计划。例如,当得知目标主机为Windows系统时,系统就会选择Windows类型的渗透方式,Windows漏洞库就会作为第一选择。

发现扫描获得的基本信息包括:
  • 目标主机集群的网络拓扑结构

网络拓扑指的是目标主机集群在物理上的连通性,网络拓扑结构是指用传输媒体互连各种设备的物理布局,通过扫描我们就能了解目标主机集群是用什么方式把网络中的每台计算机或其他设备连接起来的。

  • 集群中处于活动状态的主机IP列表

集群中并非所有主机都处于活动状态,有些可能已经宕机或者关闭,扫描可以过滤掉无效的IP地址,保留那些活动的主机的IP地址。

  • 主机的操作系统版本信息

操作系统的类型和版本决定后续的漏洞验证所使用的渗透方式,缩小渗透范围。

  • 主机开放的服务与端口信息

服务器端口数最大可以有65535个,实际上常用的端口则有几十个,每一个活动的端口背后,都暗示了一条可能存在的渗透入口。

发现扫描的信息收集流程分为四个阶段:
  1. Ping扫描

第一阶段的Ping扫描用于确定主机是否在线。系统会向主机集群中的每一台计算机发送一个ICMP回应请求,如果目标有一个ICMP回应答复,则目标主机被认为是在线的。

  1. 端口扫描

第二阶段的端口扫描期间,系统将识别哪些端口是开放的,并确认这些端口上的服务是可用的。系统向端口发送探测数据包,根据各种端口的响应来确定端口的当前状态。扫描涵盖了各类常见的开放端口,比如HTTP、telnet、SSH和FTP。

  1. 系统版本侦测扫描

第二阶段端口扫描之后,开始第三阶段的系统版本侦测扫描。系统向开发的端口发送数据包,根据端口的响应方式和响应中携带的各类参数,可以获得目标主机的操作系统类型和系统版本。这两项信息为后续的漏洞验证提供重要的依据。

  1. 信息汇总

最后将以上三步获得的数据整合并创建一个基本概述报告,系统会根据这份报告进行下一步的渗透操作。另外系统会根据报告中的信息,调用一些额外的信息搜集模块,以期搜集更多的可用信息。例如,当目标主机的telnet服务是开放的情况下,对该服务的侦测反馈中可能会包含一个登录提示。这表明该服务是允许远程登录的,所以接下来可以用暴力破解的方式来尝试获得telnet的登录凭证。

3导入第三方扫描结果

发现扫描的功能也可以由第三方软件完成或作为数据补充。系统支持多种第三方安全扫描工具扫描结果导入和漏洞验证。如绿盟极光、启明星辰天镜、AppScan、NeXpose、Acunetix、Core Impact、Nessus、NetSparker、Nmap等。第三方软件的扫描结果导出成XML或某特定格式后,系统可自动识别并导入报告,然后在系统中选择对导入的主机及对应漏洞进行渗透验证,确认漏洞是否真实且可攻击成功。

4漏洞攻击验证

通过漏洞扫描发现可能存在的安全隐患之后,系统将使用漏洞利用模块对目标漏洞执行渗透攻击。如果攻击成功,这就验证了漏洞的存在。漏洞利用模块是一系列的执行代码和脚本程序,这些脚本按照漏洞的利用方式进行编写,可以替代人工的操作,让普通用户也能完成渗透任务,降低渗透过程的难度。

漏洞利用一般包括缓冲区溢出、代码注入和Web应用渗透等几种类型。系统提供了自动利用和手动利用两种方式。

自动攻击

当用户选择使用自动利用模式,系统将根据目标主机的系统版本、服务端口和漏洞信息指定渗透攻击计划,相关的漏洞利用模块将会被包含进来以备使用。用户根据需要选择漏洞利用模块的风险等级。

漏洞利用模块分为6个风险等级,数字越小风险越高,但漏洞测试也越全面,同时风险越高的漏洞利用模块,越有可能造成目标系统宕机或崩溃,因此需要慎重选择。

漏洞利用模块风险等级的定义如下:

  1. 通常会对漏洞执行所有的模块测试,包括DOS和溢出。
  2. 对漏洞执行一些不安全的测试。
  3. 执行安全的漏洞测试,根据软件版本执行漏洞测试。
  4. 执行通用漏洞测试,根据系统类型执行漏洞测试,如Windows Server 2003中文版。
  5. 智能测试,会先侦测目标系统、软件的版本,再匹配模块进行测试。
  6. 只执行安全模块测试,包括SQL注入、命令执行和不安全的服务配置等。Web应用测试多用此等级。

系统会自动生成一个攻击载荷,根据实际情况将载荷的会话连接方式设置为反向连接或者绑定连接方式。

手动攻击

手动利用一般用于已知的目标系统漏洞,前提是用户对目标主机的漏洞信息有相当程度的了解。用户可以在漏洞利用库中检索需要的漏洞利用模块,然后选择此模块在目标系统上执行。

5后渗透和证据收集

对已经渗透成功的目标,成功建立连接会话后支持自动进行证据收集。依赖于漏洞生成会话的权限及是否能成功进行权限提升,对Windows目标收集的信息可能包括截图、重要配置文件、键盘输入记录、文件操作等。证据收集功能是通过自动调用一系列后渗透模块操作,后渗透模块可以预先定义及有机组合以达到最佳效果。

6报告

系统支持对渗透测试中发现的各种数据信息进行汇总并生成相对应的报告。报告支持PDF、WORD、HTML三种格式。根据渗透测试的操作与功能利用区别,默认集成了至少7种报告模板,用于从不同角度查看与分析渗透测试结果等。报告模板包含:审计、信息收集、脆弱主机、凭证、服务、社会工程活动、Web应用测试等。

报告同时也支持用户自定义格式,对渗透测试的数据按需要进行组织与呈现。

7社会工程学测试

在漫长的渗透与反渗透对抗过程中,一些网络罪犯发现利用人类的本性要比利用软件漏洞更加简单,因此“社会工程学”这门新的学科孕育而生。在这门学科中,“人”被认为是系统中的一个薄弱环节,通过利用心理学、语言学、欺诈学进行综合,有效利用人性中的“弱点”,达到窃取目标系统机密信息和访问权限的目的。

社会工程功能用于协助使用者快速建立社会工程项目,通过诱导目标共享敏感信息或者执行某些危险代码,最终达到入侵目标系统、获得目标信息的目的。渗透人员通过执行社会工程测试来评估一个组织的成员是否遵守安全操作规范。社会工程学攻击项目能监控目标查看邮件、打开链接等操作,分析攻击的进度、统计攻击数据等。

社会工程学功能协助完成社会工程学攻击中的操作。系统将社会工程学功能划分为电子邮件、Web网页、便携式文件三个组件,通过三个组件的搭配协助完成以下几种类型的攻击:

  • 钓鱼:通过定义目标列表(名称、电子邮件),指定电子邮件发送服务器,使用Web网页组件克隆与伪造Web站点,然后针对伪造站点建立电子邮件内容模板。系统执行任务时自动给列表中的目标发送电子邮件,目标收到电子邮件后被内容诱导到伪造的Web站点提交敏感信息。最终达到收集目标敏感信息供进一步攻击利用的目的。
  • 浏览器攻击:通过Web网页组件建立一个自动进行浏览器检测与漏洞利用的站点,然后通过电子邮件组件以类似前述钓鱼的方式发送给目标,目标被诱导浏览指定的站点后浏览器漏洞若利用成功,能自动建立渗透连接会话。
  • 文件格式漏洞攻击:用户可以从文件格式漏洞中选择合适的,例如Office文件、PDF、图片格式等,生成带攻击载荷的文件。既可以通过电子邮件附件的方式,也可以通过U盘丢弃的方式,诱使目标打开或浏览对文件。漏洞利用成功会自动建立连接会话。
8Web漏洞测试

Web漏洞测试功能支持对输入的目标URL进行指定范围网页的爬取,对页面使用Web测试模块进行测试。Web扫描用于检测Web站点的安全隐患主要有如下:

  1. 自动检查OWASP列出的最新Web十大安全隐患;
  2. Web服务器存在错误配置;
  3. 跨站脚本攻击漏洞;
  4. 本地文件包含与远程文件包含;
  5. SQL注入漏洞;
  6. 文件上传漏洞;
  7. 远程代码执行漏洞或远程命令执行漏洞;

系统支持基于Basic、Digest、Negotiate、NTLM 等多种HTTP验证类型,前提是需要使用者提供用户名和密码。系统会根据情况自动选择是否启用HTTPS扫描模式等。

其他功能

1单独的载荷生成器

对于高级用户,可以使用系统生成多种系统平台下的攻击载荷 (木马)用于渗透测试工作中。生成的载荷适用于包括Linux 、Windows、OSX等系统,也包括PHP等常用Web服务器端语言等。生成的Windows平台下的攻击载荷支持进行多种动态编码,逃避杀毒软件的检测。

2跳板攻击

对于高级使用场景,在成功渗透一台主机后可以将被渗透的主机作为跳板,进一步攻击主机连接的其它网络。例如通过Internet渗透一台主机,然后通过该主机扫描攻击内网,如在内网进行嗅探等操作。

3重放攻击

已成功的渗透攻击,在与目标建立的会话中止或断开之后,不需重新进行复杂的攻击操作,可以选择直接重放攻击,就可以根据之前的攻击参数重新渗透并建立会话。

4多用户

系统支持多用户。用户分为管理员、审计员、普通用户角色。不同角色间实现权限与功能控制,便于多用户协作。以项目为单位控制普通用户对渗透对象的操作权限。审计员角色可对所有用户的操作日志进行审计。

5高级计划任务

系统支持高级计划任务。支持周期性任务,实现定期自动化渗透、巡检;支持任务链,按定制配置顺序执行不同任务的组合。

6凭据重用与弱口令暴破

系统支持一般意义上的弱口令暴力破解,利用字典检测网络中存在的弱口令。另外也支持利用在渗透测试评估中获取的口令或哈希值凭证对网络上其它主机进行测试,即凭据重用功能。可以有效测试与发现黑客户可能的横向扩展路径。