2021年9大经验证实的渗透测试方法:保障企业安全
在当今企业界,安全已成为最常见的议题。每天我们都会听到攻击者入侵计算机系统、窃取关键信息的报道。
据Statista报告,2019年美国报告的数据泄露事件达1,473起,超过1.64亿敏感记录暴露;2020年上半年数据泄露数量达540起。
为检测安全弱点和漏洞,许多大型企业会对自身系统实施授权的模拟网络攻击,这就是所谓的渗透测试(简称Pen Test)。其核心目标是在黑客利用之前,识别并修复安全漏洞与弱点。
更具体地说,渗透测试通过模拟真实攻击场景,以安全的方式发现并利用安全缺口,防止信息被盗、凭证泄露或其他有害业务后果。
渗透测试既可由内部团队使用工具执行,也可外包给专业服务商。流程通常从安全专家枚举目标网络开始,扫描所有设备的开放端口及运行服务,以发现易受攻击的设备或账户。
测试的深度取决于测试人员想在目标系统上探索的操作类型,因此测试人员必须精通最相关的渗透测试类型。
渗透测试可按执行方式及目标资产分类。本文概述了多种高强度、高侵入性的渗透测试类型。
按方法分类的渗透测试
1. 黑盒测试
- 可立即设计测试用例
- 能检测特定类型的缺陷
在黑盒渗透测试中,测试人员无法访问客户的应用程序、网络配置或任何内部信息,需自行进行所有侦察以获取所需情报。
此类测试旨在发现从网络外部可利用的系统弱点,依赖对目标网络中正在运行的程序和系统进行动态检查。
测试人员需熟悉自动化扫描软件及手动渗透测试技术。因缺乏系统配置或应用源代码的先验知识,黑盒测试人员必须能根据自身观察构建目标网络拓扑图。
有限的知识会阻碍测试人员发现系统中所有漏洞,这是该测试类型的主要缺点。若无法突破所有外围防线,内部漏洞将保持未被发现状态。
但它能揭露特定缺陷,如服务器配置错误、输入/输出验证错误。为提高效率(更高效地检测和修复漏洞),黑盒测试方法应结合其他测试工具。
市场上有许多黑盒渗透测试工具,例如Wapiti通过注入临时数据分析Web应用的潜在风险。
2. 白盒测试
- 更全面
- 支持代码优化及隐蔽安全问题的检测
顾名思义,白盒渗透测试与黑盒测试相反。测试人员拥有架构文档、源代码及其他系统信息的完全访问权限。
测试人员从海量数据中筛选潜在弱点,可同时使用静态和动态代码分析器及调试器。
因完全了解系统,决定优先测试哪些模块、使用何种特定软件需要更多时间。
JUnit、PyUnit、Selenium是常用的开源白盒测试工具。例如Selenium用于跨浏览器和平台验证Web应用。
3. 灰盒测试
- 以较低成本和工作量识别更关键的漏洞
- 从用户而非设计者视角进行测试
灰盒测试结合了黑盒和白盒测试。测试人员掌握部分系统内部知识,如数据库和设计文档。凭借这些有限信息,可在制定测试计划时制作更好的测试数据和用例。
此类测试比黑盒评估提供更高效、更聚焦的系统安全评估。能识别因应用程序不当使用或代码结构不当导致的缺陷,更具体地说,通过关注复杂系统的所有层来发现上下文相关的错误。
灰盒测试更适合功能测试、Web应用、Web服务、安全评估和GUI。Burp Suite是流行的灰盒测试工具,通过攻击试探性不安全点来利用应用漏洞。
三种测试技术的差异对比
| 黑盒渗透测试 | 灰盒渗透测试 | 白盒渗透测试 |
|---|---|---|
| 无需了解系统内部工作原理 | 需要部分了解系统内部工作原理 | 需要完全了解系统内部工作原理 |
| 很难发现隐藏错误 | 难以发现隐藏错误 | 容易发现隐藏错误 |
| 又称闭盒测试或数据驱动测试 | 又称半透明测试 | 又称清盒测试、结构测试或基于代码的测试 |
| 耗时最少 | 部分耗时 | 最全面且最耗时 |
| 最适合发现输入/输出验证错误 | 最适合测试数据域和系统设计 | 最适合测试算法、代码结构和内部边界 |
| 由最终用户、开发人员和测试人员执行 | 由独立测试人员和开发人员执行 | 由测试人员和开发人员执行 |
按目标组件分类的渗透测试
1. 网络服务测试
- 防止网络和数据泄露
- 确保网络和系统安全
网络渗透测试通过使用不同恶意方法检查网络安全性,发现应用程序和系统中的安全漏洞。
通常测试人员会识别可利用的网络、主机、系统和设备(如交换机和路由器)以暴露弱点。因网络同时具备外部和内部访问点,必须从外部远程和客户现场本地两方面进行测试。
这有助于测试人员了解组织面临的风险等级及如何解决安全缺陷。根据风险,可针对不同网络区域进行测试,例如:
- 有状态分析测试
- 防火墙配置测试
- 防火墙绕过测试
- DNS攻击
测试中最常调查的协议包括:
- 简单邮件传输协议 (SMTP)
- 文件传输协议 (FTP)
- 安全外壳协议 (SSH)
- MySQL和SQL Server
视系统规模和复杂度,完成网络渗透测试可能需1至4周。测试人员仅在确定项目范围后才能提供详细估算。
2. Web应用渗透测试
Web应用渗透测试执行步骤
- 识别设计和配置中的漏洞
定位入侵者并阻断
许多Web应用存储敏感信息,必须时刻保持安全。将Web应用渗透测试纳入软件开发生命周期(SDLC)是实现这一目标的途径之一。
渗透测试便于确定整个Web应用及其组件(包括数据库、后端网络、源代码)的漏洞,帮助开发人员定位并优先处理弱点和错误,制定缓解措施。
此类测试涉及收集目标Web应用数据、绘制主机网络拓扑、检查所有可能的注入或篡改攻击点。实施Web应用渗透测试的主要原因包括:
- 检测未知漏洞
- 检查公开暴露的组件(如路由器、防火墙)
- 寻找可能攻击的最脆弱路径
- 查找可能导致信息窃取的漏洞
- 检查现有安全策略的有效性
市场上有大量工具可用于手动和自动Web应用渗透测试,Vega、Veracode、ZAP是常用的快速测试工具。
3. 无线渗透测试
- 确定无线网络的真实安全态势
- 解决漏洞及安全策略/流程
无线渗透测试涉及检测和分析连接到企业WiFi的所有设备间的连接,包括笔记本电脑、智能手机、平板电脑、打印机及其他物联网设备。
测试各种无线协议和接入点以发现安全漏洞。通常需在客户现场进行,因为测试人员需在无线信号范围内才能访问设备。
大多数漏洞源于WiFi接入点缺乏MAC过滤和不足的网络访问控制。为在真实发生前修复这些问题,测试安全态势的有效性、暴露非预期弱点至关重要。
还需注意WiFi并非攻击者唯一可利用的无线技术。公共场所还存在蓝牙设备、蓝牙低功耗设备、Z-wave和DECT(无绳电话)等不太常见的技术。
4. 客户端渗透测试
- 检测客户端软件的安全配置错误
- 允许对入站和出站网络流量进行适当控制
这是一种内部渗透测试,测试人员利用客户端应用程序(如Web浏览器、Adobe Acrobat、电子邮件客户端、Macromedia Flash等)中的漏洞。
虽无固定间隔规则,但企业应在新增IT基础设施或客户端应用、或现有基础设施变更时进行渗透测试。
大多数客户端漏洞源于笔记本或台式机上未打补丁的软件。攻击者甚至会拦截更新过程,随原始更新发送恶意代码。
USB设备也可能感染恶意文件或可执行代码,受害者插入USB即自动执行。跨站脚本、表单劫持、点击劫持、HTML注入、开放重定向是常见的客户端安全攻击。
因此测试员工易受性及网络识别和响应客户端攻击的能力非常重要。
5. 外部渗透测试
- 公司外围系统的安全评估
- 包含应用层和网络层评估
外部渗透测试通常从攻击者视角出发,无目标系统或网络的预先访问权限。这与内部渗透测试不同,后者攻击者已在受损机器上获得立足点。
外部渗透测试中,测试人员尝试利用外部资产上发现的漏洞进入内部网络,对范围内资产进行侦察,收集所有范围内资产的数据。
这些数据可能包括开放端口、漏洞或员工信息(用于密码攻击)。一旦突破外围,外部渗透测试目标即达成,测试人员将转入内部渗透测试。
延伸阅读:30款开发者实用的Bug追踪工具
6. 社会工程学
- 诱导不知情员工危害公司安全
- 利用人性心理获取机密数据
社会工程学指通过人际互动实施的广泛恶意活动。因依赖人为错误(而非应用或网络弱点),其比基于恶意软件的入侵更不可预测、更难检测。
此类测试通过欺骗公司员工泄露敏感信息来获取机密数据,可通过远程测试或物理测试实现。
延伸阅读:15款最佳测试数据生成工具
远程测试包括向员工发送钓鱼邮件、用虚假警报或虚构威胁轰炸其设备。物理测试包括尾随、冒充、翻垃圾桶、物理威胁等。
工业技术
- 铣床分类全指南:按结构、轴数、控制方式选型
- 涡轮机类型全景:冲动/反击、蒸汽、燃气、风力涡轮机原理与应用
- 14种常见计算机病毒类型详解:保护系统安全指南(2021更新)
- 五大数据中心模型详解:设计架构、适用场景与典型案例
- 2021年云计算八大核心模型全解析:服务模式与部署模式
- 2021年9大经验证实的渗透测试方法:保障企业安全
- 抗锯齿详解:6 大类型与方法让数字图像更平滑
- 焊接接头设计全解析:五大基本类型、强度对比与工程选型指南
- 15大主流铣床类型全解析:精密金属加工选型指南
- 铸造模样十大核心类型:优化金属生产的关键选择
- 现代制造维护策略:从被动响应到处方性维护
- 确保建筑设备可靠性能的5大关键测试