模拟渗透入侵测试方案1.背景介绍当前世界网络互联趋势发展神速,相关的网络技术深入的渗透到了业务各个层面,并且网络由于其特殊性,生活区域,文化区域,办公区域,业务区域等无国界化,导致了访问的效率性,方便性。但是,网络整体化发展的同时,也带来了负面的影响。业务网络,个人终端遭受到的恶意攻击也非常频繁及容易,这就给我们带来了各种困难。如何面对难于追踪的攻击者,自我实现高度安全的保障呢?对于企业集团内部要实现一个很好的安全评估体系,模拟渗透入侵测试是一个有效的评测方式。2.模拟渗透入侵技术简介模拟渗透入侵测试,是指为了对一个目标网络的安全性进行实际检查,进行带有攻击性行为的全面的安全压力测试;是一个在评估目标主机和网络的安全性时模仿黑客特定攻击行为的过程。详细地说,是指安全工程师尽可能完整地模拟黑客使用的漏洞发现技术和攻击手段,对目标网络的安全性作深入的探测,发现系统最脆弱环节的过程。测试过程中,会采用各种手段和途径,包括端口扫描,漏洞扫描,密码猜测,密码破解,数据窃听,伪装欺骗等技术方式。最终目的就是为了检验该网络各个环节的安全性。3.企业网络环境企业网络环境和其它局域网的拓扑结构大同小异的,有差异的地方在于企业网络会有一个DMZ区域,这样一个能够独立与网内敏感数据的特殊环境,DMZ内通常放置一些不含机密信息的公用服务器,比如Web、Mail、FTP等。这样来自外网的访问者可以访问DMZ中的服务,但不可能接触到存放在内网中的公司机密或私人信息等,即使DMZ中服务器受到破坏,也不会对内网中的机密信息造成影响。然而大多数的安全威胁恰恰来自于这个DMZ区域,它间接的提供了很多能够被入侵者利用的信息,可以说入侵者通过对DMZ的信息的获得,进一步深入渗透整个局域网络。另外一个企业网络环境与其它局域网络的一个差异是,企业网络环境一般都涉及到一些所谓的关系到企业的敏感数据,这也是大多入侵者的最终目标,所以企业网络环境相对与其它环境的安全性更显得尤为重要。下面是典型的企业网络环境图:这张图描述了一个企业网络环境中所涉及的网络设备以及终端设备,大体上给安全管理提供了一个基本的网络概念,而渗透测试要做的就是设法找出网络弱点所在。针对这个典型的网络环境,可以从以下几个方面的进行模拟渗透入侵测试针对外网服务器1.A突破防火墙的攻击---突破防火墙的防护,对外部服务器的攻击2.B服务器远程攻击测试---对服务器的应用进行远程攻击,目标是获得基本的权限3.C服务器本地攻击测试---对服务器的本地权限进行攻击,获得管理员权限4.D跨区域渗透攻击---获得了DMZ的控制权后,进行内网渗透攻击尝试。针对办公OA网络1.E内网扩散攻击测试---对内网整个网络进行扩散攻击,目标是控制所有的机器2.H网络结构灾难攻击---对整个网络进行灾难性的攻击。模拟病毒爆发等手段(针对性测试)。针对核心数据区域1.F核心区域攻击测试---对核心区域的服务器进行远程攻击,尝试获取控制权2.G核心数据毁灭性攻击---对核心数据进行暴力攻击,尝试毁坏数据等手段。(针对性测试)下图说明以上攻击性测试当然这个网络环境只不过是一个典型的结构,根据不同的企业性质会有一些差异,具体环境要根据实际环境进行选择性测试。4.模拟渗透入侵技术实施方法4.1根据测试者掌握信息多少分类根据不同的测试需求,测试者在测试前掌握被测对象的信息多少是不同的。渗透测试在实际进行中具体划分为以下二种不同的方法:黑盒测试和白盒测试[。黑盒测试黑盒测试又被称为“Zero-knowledgetesting”,渗透测试操作人员完全处于对系统一无所知的状态,通常这类测试的最初信息来自于DNS、Web、Email及各种公开对外的服务器。白盒测试白盒测试与黑盒测试不同,测试者可以通过正常渠道向被测者要求,取得各种资料,包括网络拓扑、员工资料甚至网站或其他程序的代码片断,也能够与被测组织内的其他员工(销售、程序员、管理者……)进行面对面的沟通。这类测试的目的是模拟组织内部雇员的越权操作,和预防万一组织重要信息泄露,网络黑客能利用这些信息对组织构成的危害。4.2根据测试者位置分类测试目标不同,采用的技术也会有一定差异。测试者在系统网络的不同位置、不同攻击路径下进行渗透测试,结果反应的问题迥然不同。内网测试内网测试指的是渗透测试人员由内部网络发起测试,这类测试能够模拟组织内部违规操作者的行为。最主要的“优势”是绕过了防火墙的保护。外网测试外网测试指的是渗透测试人员完全处于外部网络(例如拨号、ADSL或外部光纤),模拟从组织外部发起的攻击行为,可能来自于对组织内部信息一无所知的攻击者也可能来自于对组织内部信息一清二楚的攻击者。不同网段之间的测试这种渗透方式是从某内/外部网段,尝试对另一网段/Vlan进行渗透。5.渗透测试模型渗透测试模型是一个整合渗透测试技术和方法的原型系统。该系统可以提供渗透测试各个步骤的各种功能,检验被测对象网络和计算环境的安全性和抗攻击能力,发掘被测对象网络系统中从物理层到应用层各个层面的脆弱性。5.1系统架构设计系统分为六大模块:管理控制模块、信息收集模块、漏洞测试模块、结果报告模块、痕迹清除模块、数据通信模块。管理控制模块负责对整个系统进行管理,对各个模块进行调用,对各模块功能进行集中控制;信息收集模块负责收集被测网络系统的相关信息,并对收集到的信息进行整理提炼;漏洞测试模块负责对网络系统的漏洞进行测试;结果报告模块负责最终的结果生成;痕迹清除模块负责将在被测网络系统中渗透测试留下的痕迹进行清除;数据通信模块负责各个模块之间的通信。5.2流程设计渗透测试的流程在不同的应用模式下是有所区别的。黑盒测试包含了渗透测试的所有步骤和功能,白盒测试根据可见信息获悉的多少可能省去部分信息收集的操作。一次黑盒测试必须从信息收集开始,对收集到的信息进行整理,提炼出对网络渗透有用的信息;根据收集到的有用信息,制定一定的渗透策略,进行漏洞测试;为了模拟整个攻击的过程和检验网络防护系统的日志报警强度,在渗透工作结束后进行痕迹清除;对信息收集的结果和漏洞测试的结果进行整理,生成网络渗透测试报告。渗透测试在实际运用中要考虑到系统所处的网络环境,具体的要分为内网测试、外网测试和不同网段之间的测试。渗透测试系统在这三种使用方法下所要完成的功能不尽相同。在系统实现过程中,针对这三种应用,提供三种不同的使用用例。如内网测试,考虑到内网处于防火墙的内部,其内部的防护相对较低,内网中的渗透测试以漏洞测试和口令猜测为主,集中在重要的应用系统的安全漏洞测试,安全配置的测试(防火墙和访问控制测试、入侵检测系统测试)可以从简。5.3模型关键技术渗透测试模型从信息收集到结果报告的生成过程是全自动的,无人干预,在此过程中,信息收集的结果筛选和各模块之间的参数传递是一个实现上的难题;另外,漏洞及漏洞利用程序的及时更新也是渗透测试软件的一个关键技术。信息收集的结果筛选和各模块之间的参数传递渗透测试首先要对被测网络系统进行全面扫描和漏洞的探查,即进行网络勘查、端口扫描、系统识别、无线网漏洞测试、服务探测(网站信息、Mail信息、名字服务、防病毒木马)、溢出搜寻,得到的结果很多,需要整理出对漏洞测试有用的信息。这些信息的筛选是一个较为复杂的过程。信息的不一致性,信息体现的漏洞严重程度判定及与软件漏洞库中漏洞的相关性判定都会给信息的整理带来一定难度。模块之间的参数传递主要是指信息收集模块的信息向漏洞测试模块与结果报告模块的参数传递,漏洞测试模块的结果信息向结果报告模块的参数传递,漏洞测试模块将在被测网络系统中可能产生的记录信息向日志清除模块的参数传递。软件实现中,信息收集以对各测试对象的扫描为主,将扫描出的主要漏洞及其与漏洞库中漏洞的对应关系传递给漏洞攻击模块,漏洞攻击模块调用相应的漏洞利用程序进行漏洞的渗透测试。漏洞及漏洞利用程序更新网络系统中的各项应用纷繁复杂,仅仅操作系统,每天都会有新的漏洞出现,各种应用软件系统的漏洞更是层出不穷。渗透测试软件系统的优劣很大程度上取决于漏洞数量及质量,质量的好坏是指软件是否能够紧跟当前各类软件系统的最新漏洞,能否及时更新漏洞测试工具。6.渗透测试涉及的技术下面我们简单介绍在渗透测试的各个阶段(与骇客攻击的阶段相似)可能会用到的一些工具。渗透测试的各个阶段图:6.1.预攻击阶段基本网络信息获取ping目标网络得到IP地址和ttl等信息tcptraceroute和traceroute的结果whois结果netcraft获取目标可能存在的域名、Web及服务器信息curl获取目标web基本信息nmap对网站进行端口扫描并判断操作系统类型google、yahoo、baidu等搜索引擎获取目标信息采用FWtester、hping3等工具进行防火墙规则探测……常规漏洞扫描和采用商用软件进行检测结合使用游刃与Nessus等商用或免费的扫描工具进行漏洞扫描采用SolarWind对网络设备等进行发现采用nikto、webinspect等软件对web常见漏洞进行扫描采用如AppDetectiv之类的商用软件对数据库进行扫描分析……对Web和数据库应用进行分析采用WebProxy、SPIKEProxy、webscarab、ParosProxy、Absinthe等工具进行分析用Ethereal抓包协助分析用webscan、fuzzer进行SQL注入和XSS漏洞初步分析手工检测SQL注入和XSS漏洞采用类似OScanner的工具对数据库进行分析……应用分析的注意事项检查应用系统架构、防止用户绕过系统直接修改数据库检查身份认证模块,防止非法用户绕过身份认证检查数据库接口模块,防止用户获取系统权限检查文件接口模块,防止用户获取系统文件检查其他安全威胁其中每个环节都还有详细的checklist,读者可以自行补充。6.2.攻击阶段基于通用设备、数据库、操作系统和应用的攻击可以采用各种公开及私有的缓冲区溢出程序代码,一个比较好的Exploit搜索站点是:。也可以采用诸如MetasploitFramework之类的利用程序集合。基于应用的攻击基于web、数据库或特定的B/S或C/S结构的网络应用程序存在的弱点进攻击,常见的如SQL注入攻击、跨站脚本攻击等均属于这一类型。口令猜解技术口令是信息安全里永恒的主题,在笔者参与的渗透测试项目中,通过弱口令获取权限者不在少数。进行口令猜解可以采用游刃、X-Scan、Brutus、Hydra、溯雪等工具。下图为游刃的口令策略审查模板。6.3.后攻击阶段口令嗅探与键盘记录嗅探、键盘记录、木马等软件,功能简单,但要求不被防病毒软件发觉,因此通常需要自行开发或修改。口令破解有许多著名的口令破解软件,如L0phtCrack、JohntheRipper、Cain等。6.4.攻击路径6.4.1.内网测试内网测试指的是渗透测试人员由内部网络发起测试,这类测试能够模拟企业内部违规操作者的行为。最主要的“优势”是绕过了防火墙的保护。内部主要可能采用的渗透方式:1)远程缓冲区溢出;2)口令猜测;3)B/S或C/S应用程序测试(如果涉及C/S程序测试,需要提前准备相关客户端软件供测试使用);6.4.2.外网测试外网测试指的是渗透测试人员完全处于外部网络(例如拨号、ADSL或外部光纤),模拟对内部状态一无所知的外部攻击者的行为。1)对网络设备的远程攻击;2)口令管理安全性测试;3)防火墙规则试探、规避;4)Web及其它开放应用服务的安全性测试;6.4.3.不同网段/Vlan之间的渗透这种渗透方式是从某内/外部网段,尝试对另一网段/Vlan进行渗透。这类测试通常可能用到的技术包括:1)对网络设备的远程攻击;2)对防火墙的远程攻击或规则探测、规避尝试;6.5.信息收集技术信息收集是每一步渗透攻击的前提,通过信息收集可以有针对性地制定模拟攻击测试计划,提高模拟攻击的成功率,同时可以有效的降低攻击测试对系统正常运行造成的不利影响。信息收集的方法包括PingSweep、DNSSweep、DNSz