什么是浸透测试?
浸透测试是一项平安演习,网络安全专家模仿黑客攻击查找和利用计算机系统中的破绽。模仿攻打的目标是辨认攻击者能够利用的零碎进攻中的薄弱环节,通过浸透测试找出计算机系统、Web 应用程序或网络的破绽。
免责申明: 浸透测试是一项业余技术流动,必须通过被测试信息系统无关组织或部门的受权能力进行。本文所波及到的浸透测试内容仅供平安钻研和学习目标,作者不承当任何因应用本文内容而导致的法律责任。读者在应用本文所提供的技术和信息时,必须恪守当地法律法规和相干政策。如果读者违反了这些规定,结果由读者自负。
破绽成因
- 设计和开发谬误 :硬件和软件的设计可能存在缺点。这些谬误会使您的业务要害数据面临裸露的危险。
- 系统配置不佳 :这是造成破绽的另一个起因。如果系统配置不当,则可能会引入破绽,攻击者能够通过这些破绽进入零碎并窃取信息。
- 人为谬误 :文件处理不当、文件无人照管、编码谬误、外部威逼、在网络钓鱼网站上共享明码等人为因素都可能导致安全漏洞。
- 连接性 :如果零碎连贯到不平安的网络(凋谢连贯),那么它就会进入黑客的范畴。
- 复杂性 :安全漏洞与零碎的复杂性成正比。零碎具备的性能越多,零碎被攻打的机会就越大。
- 明码 :明码用于避免未经受权的拜访。它们应该足够弱小,以至于没有人能猜出您的明码。不应不惜任何代价与任何人共享明码,并且应定期更改明码。只管有这些阐明,但有时人们还是会向其他人走漏他们的明码,将它们写在某个中央并保留容易被猜到的明码。
- 用户输出 :您肯定据说过 SQL 注入、缓冲区溢出等。通过这些办法执行非受权字符或指令用于攻打接管零碎。
- 治理 :平安治理起来既艰难又低廉。有时,组织不足适当的风险管理,因而零碎中会诱发破绽。
- 不足对员工的培训 :这会导致人为谬误和其余破绽。
- 通信 :挪动网络、互联网、电话等渠道关上了平安偷盗的范畴。
浸透测试工具
自动化工具可用于辨认应用程序中存在的一些规范破绽。浸透测试工具扫描代码以查看是否存在可能导致潜在安全漏洞的恶意代码。
浸透测试工具能够通过检查数据加密技术并找出用户名和明码等硬编码值来验证零碎中存在的安全漏洞。
抉择最佳浸透工具的规范:
- 它应该易于部署、配置和应用。
- 它应该能够轻松扫描您的零碎。
- 它应该依据须要立刻修复的重大水平对破绽进行分类。
- 它应该可能主动验证破绽。
- 它应该从新验证之前发现的破绽。
- 它应该生成具体的破绽报告和日志。
为什么要进行浸透测试?
您肯定据说过始于 2017 年 5 月的 WannaCry 勒索软件攻打。它锁定了寰球超过 20 万台计算机,并要求从比特币加密货币中领取赎金。这次攻打影响了寰球许多大型组织。
随着现在产生如此大规模和危险的网络攻击,定期进行浸透测试以爱护信息系统免受安全漏洞的侵害已变得不可避免。
浸透测试次要用于:
- 在不同零碎之间或通过网络传输财务或要害数据时,必须确保其平安。
- 许多客户要求将浸透测试作为软件公布周期的一部分。
- 爱护用户数据。
- 查找应用程序中的安全漏洞。
- 发现系统漏洞。
- 评估胜利攻打的业务影响。
- 满足组织中的信息安全合规性。
- 在组织内施行无效的安全策略。
任何组织都须要辨认外部网络和计算机中存在的平安问题。进行浸透测试组织能够打算进攻任何黑客攻击希图。用户隐衷和数据安全是当今最大的问题。
浸透测试指标
- 软件(操作系统、服务、应用程序)
- 硬件
- 网络
- 过程
- 用户行为
浸透测试类型
1) 社会工程测试: 在这个测试中,试图让一个人泄露敏感信息,如明码、要害业务数据等。这些测试次要通过电话或互联网实现,人为谬误是安全漏洞的次要起因。所有工作人员都应恪守平安规范和政策,以防止社交工程浸透尝试。这些规范的示例包含不要在电子邮件或电话通信中提及任何敏感信息。组织能够进行平安审计以辨认和纠正流程缺点。
2) Web 应用程序测试: 应用软件办法,能够验证应用程序是否存在安全漏洞。它查看位于指标环境中的 Web 应用程序和软件程序的安全漏洞。
3) 物理浸透测试: 采纳弱小的物理平安办法来爱护敏感数据。这通常用于军事和政府设施。所有物理网络设备和接入点都通过测试,以确定是否存在任何安全漏洞。该测试与软件测试的范畴不是很相干。
4) 网络服务测试 :这是最常执行的浸透测试之一,其中通过在网络系统中创立的条目来辨认网络中的缺口,查看存在何种破绽。这能够在本地或近程实现。
5) 客户端测试 :它旨在搜寻和利用客户端软件程序中的破绽。
6) 近程拨号测试 :它在环境中搜寻调制解调器,并尝试通过明码猜想或暴力破解登录到通过这些调制解调器连贯的零碎。
7) 无线平安测试 :它发现凋谢的、未经受权的和安全性较低的热点或 Wi-Fi 网络,并通过它们进行连贯。
浸透测试方法
- 黑盒浸透测试 :测试人员不须要理解被测试的软件的内部结构和实现细节,只是通过输出数据和查看输入后果,验证软件的正确性。黑盒测试重点在于测试软件的性能是否合乎需要,并且着眼于测试的覆盖面,测试人员不须要晓得外部的实现细节。
- 白盒浸透测试 :测试人员须要理解被测试的软件的内部结构和实现细节,包含代码逻辑、程序控制流、数据结构等,以设计和执行测试用例。白盒测试重点在于测试软件的代码是否合乎设计规范,并且着眼于测试的覆盖面,测试人员须要晓得外部的实现细节。
- 灰盒浸透测试 :介于黑盒测试和白盒测试之间,测试人员既晓得局部外部实现细节,也不齐全晓得所有的细节。测试人员能够应用已知的信息设计和执行测试用例。灰盒测试能够在肯定水平上补救黑盒测试和白盒测试的缺点,综合利用两种测试方法的长处,从而更好地测试软件的正确性和完整性。
浸透测试技术
- 手动浸透测试
- 应用自动化浸透测试工具。
- 手动和主动流程的组合。
第三个过程更常见,用于辨认各种破绽。
应用自动化工具很难找到所有破绽。有些破绽只能通过手动扫描来辨认。浸透测试人员能够依据他们对被浸透零碎的技能和常识对应用程序进行更好的攻打。
像社会工程学这样的办法能够由人类来实现。人工查看包含设计、业务逻辑以及代码验证。
咱们能够将浸透测试流程归类为以下几种办法:
1) 数据收集 :应用包含谷歌搜寻在内的各种办法来获取指标零碎数据。还能够应用网页源代码剖析技术来获取无关零碎、软件和插件版本的更多信息。
市场上有许多收费工具和服务,能够为您提供数据库或表名、数据库版本、软件版本、应用的硬件以及指标零碎中应用的各种第三方插件等信息。
2) 破绽评估 :依据第一步收集的数据,能够找到指标零碎中的安全漏洞。这有助于浸透测试人员应用零碎中已辨认的入口点发动攻打。
3) 理论利用 :这是要害的一步。它须要非凡的技能和技巧能力对指标零碎发动攻打。经验丰富的浸透测试人员能够利用他们的技能对系统发动攻打。
4)剖析后果和报告筹备 :浸透测试实现后,筹备具体报告以采取纠正措施。这些报告中列出了所有已辨认的破绽和倡议的纠正办法。您能够依据组织的须要自定义破绽报告格局(HTML、XML、MS Word 或 PDF)。
浸透测试示例(测试场景)
上面给出的是一些通用测试用例,不肯定实用于所有应用程序。
- 查看 Web 应用程序是否可能辨认针对网站上应用的分割表的垃圾邮件攻打。
- 代理服务器 – 查看网络流量是否由代理设施监控。代理服务器使黑客很难取得网络外部的详细信息,从而爱护零碎免受内部攻打。
- 垃圾邮件过滤器 – 验证是否过滤了传入和传出的电子邮件流量以及是否阻止了未经请求的电子邮件。
- 许多电子邮件客户端都带有内置的垃圾邮件过滤器,须要依据您的须要进行配置。这些配置规定能够利用于电子邮件题目、主题或注释。
- 防火墙——确保整个网络或计算机都受到防火墙的爱护。防火墙能够是阻止未经受权拜访零碎的软件或硬件。防火墙能够避免在未经您许可的状况下将数据发送到网络之外。
- 尝试利用所有服务器、桌面零碎、打印机和网络设备。
- 确认所有用户名和明码都已加密并通过 https 等平安连贯传输。
- 验证存储在网站 cookie 中的信息。它不应该是可读的格局。
- 验证以前发现的破绽以查看修复是否无效。
- 验证网络上是否没有凋谢端口。
- 验证所有电话设备。
- 验证 WiFi 网络安全。
- 验证所有 HTTP 办法。不应在 Web 服务器上启用 PUT 和 Delete 办法。
- 验证明码是否符合要求的规范。明码长度至多为 8 个字符,至多蕴含一个数字和一个特殊字符。
- 用户名不应为“admin”或“administrator”。
- 应在几次不胜利的登录尝试后锁定应用程序登录页面。
- 谬误音讯应该是通用的,不应提及具体的谬误细节,如“有效的用户名”或“有效的明码”。
- 验证特殊字符、HTML 标记和脚本是否作为输出值得到正确处理。
- 不应在任何谬误或警报音讯中走漏外部零碎详细信息。
- 在网页解体的状况下,应向最终用户显示自定义谬误音讯。
- 验证注册表项的应用。敏感信息不应保留在注册表中。
- 所有文件在上传到服务器之前必须被扫描验证。
- 在与 Web 应用程序的不同外部模块通信时,不应将敏感数据传递给 URL。
- 零碎中不应有任何硬编码的用户名或明码。
- 验证所有蕴含带空格和不带空格的长输出字符串的输出字段。
- 验证重置明码性能是否平安。
- 验证 SQL 注入的应用程序。
- 验证跨站点脚本的应用程序。
- 重要的输出验证应该在服务器端实现,而不是在客户端进行 JavaScript 查看。
- 零碎中的要害资源应仅供受权人员和服务应用。
- 所有拜访日志都应应用适当的拜访权限进行保护。
- 验证用户会话在登记时完结。
- 验证服务器上是否禁用了目录浏览。
- 确认所有应用程序和数据库版本都是最新的。
- 验证 URL 操作以查看 Web 应用程序是否未显示任何不须要的信息。
- 验证内存透露和缓冲区溢出。
- 验证是否扫描传入的网络流量以发现特洛伊木马攻打。
- 验证零碎是否平安免受暴力攻打——一种查找明码等敏感信息的试错法。
- 验证零碎或网络是否免受 DoS(拒绝服务)攻打。因为指标零碎上的资源过载导致回绝为非法申请提供服务,黑客能够通过间断申请将网络或单台计算机作为指标。
- 验证 HTML 脚本注入攻打的应用程序。
- 针对 COM 和 ActiveX 攻打进行验证。
-
验证是否受到坑骗攻打。坑骗能够有多种类型——IP 地址坑骗、电子邮件 ID 坑骗、
ARP 坑骗、Referrer 坑骗、来电显示坑骗、文件共享网络中毒、GPS 坑骗。
- 查看不受管制的格局字符串攻打——一种可能导致应用程序解体或对其执行无害脚本的平安攻打。
- 验证 XML 注入攻打——用于扭转应用程序的预期逻辑。
- 针对规范化攻打进行验证。
- 验证谬误页面是否显示任何有助于黑客进入零碎的信息。
- 验证是否有任何要害数据(如明码)存储在零碎的秘密文件中。
- 验证应用程序返回的数据是否多于所需。