什么是渗透测试?

我们可以通过渗透测试找出计算机系统,Web应用程序或网络的漏洞。

渗透测试告诉系统上采用的现有防御措施是否足够强大,可以防止任何安全漏洞。渗透测试报告还建议了可以采取的对策,以减少系统被黑客入侵的风险。

漏洞原因

  • 设计和开发错误:硬件和软件的设计可能存在缺陷。这些错误可能会使您的业务关键数据面临暴露的风险。
  • 系统配置不良:这是导致漏洞的另一个原因。如果系统配置不正确,则可能会引入漏洞,攻击者可以通过这些漏洞进入系统并窃取信息。
  • 人为错误:人为因素包括文件处理不当,文件无人看管,编码错误,内部威胁,在网络钓鱼站点上共享密码等,可能导致安全漏洞。
  • 连接性:如果系统连接到不安全的网络(开放连接),那么黑客就可以访问它。
  • 复杂性:安全漏洞与系统的复杂性成比例地增加。系统具有的功能越多,系统受到攻击的机会就越大。
  • 密码:密码用于防止未经授权的访问。它们应该足够坚固,以至于没人能猜出您的密码。不应与任何人共享密码,并且应定期更改密码。尽管有这些指示,但有时人们会向其他人透露自己的密码,将其写下来,并保留易于猜测的密码。
  • 用户输入:您必须听说过SQL注入,缓冲区溢出等。通过这些方法以电子方式接收的数据可用于攻击接收系统。
  • 管理:安全性难以管理且昂贵。有时,组织缺乏适当的风险管理能力,因此系统中容易引起漏洞。
  • 缺乏员工培训:这会导致人为错误和其他漏洞。
  • 通讯:移动网络,互联网,电话等渠道开拓了安全盗窃范围。

为什么要进行渗透测试?

  • 您一定听说过WannaCry勒索软件攻击始于2017年5月。它攻击了全球超过20万台计算机,并要求以比特币加密货币进行赎金支付。这次攻击影响了全球许多大型组织。
  • 如今,由于发生了如此大规模和危险的网络攻击,因此必须定期进行渗透测试以保护信息系统免受安全漏洞的侵害。
  • 因此,渗透测试主要用于以下方面:
  • 在不同系统之间或通过网络传输财务或重要数据时,必须对其进行保护。
  • 作为软件发布周期的一部分,许多客户要求进行笔测试。
  • 保护用户数据。
  • 查找应用程序中的安全漏洞。
  • 发现系统中的漏洞。
  • 评估成功攻击对业务的影响。
  • 满足组织中的信息安全法规要求。
  • 在组织中实施有效的安全策略。
  • 任何组织都需要确定内部网络和计算机中存在的安全问题。使用此信息组织可以计划针对任何黑客攻击的防御措施。用户隐私和数据安全是当今最大的担忧。
  • 想象一下,是否有黑客设法获取Facebook等社交网站的用户详细信息。由于软件系统中存在小的漏洞,组织可能会面临法律问题。因此,大型组织在与第三方客户进行任何业务之前都在寻求PCI(支付卡行业)合规性认证。

应该测试什么?

  • 软件(操作系统,服务,应用程序)
  • 硬件
  • 网络
  • 工艺流程
  • 最终用户行为 渗透测试类型
  • #1)社会工程测试: 在此测试中,尝试使人们透露敏感信息,例如密码,关键业务数据等。这些测试主要通过电话或互联网进行,并且针对特定的服务台,员工和流程。
  • 人为错误是造成安全漏洞的主要原因。所有工作人员均应遵守安全标准和政策,以避免尝试进行社会工程学渗透。这些标准的示例包括在电子邮件或电话通信中不提及任何敏感信息。可以进行安全审核,以识别和纠正过程缺陷。
  • #2)Web应用程序测试: 使用软件方法,可以验证应用程序是否存在安全漏洞。它检查位于目标环境中的Web应用程序和软件程序的安全漏洞。
  • #3)物理渗透测试: 强大的物理安全方法用于保护敏感数据。通常用于军事和政府机构。对所有物理网络设备和访问点进行了测试,以检查是否存在任何安全漏洞。该测试与软件测试范围没有太大关系。
  • #4)网络服务测试:这是最常执行的渗透测试之一,其中,通过在网络上的系统中进行哪些输入来识别网络中的漏洞,以检查其中存在哪些漏洞。它可以在本地或远程完成。
  • #5)客户端测试:它旨在搜索和利用客户端软件程序中的漏洞。
  • #6)远程拨号War Dial:它在环境中搜索调制解调器,并尝试通过密码猜测或强制破解登录通过这些调制解调器连接的系统。
  • #7)无线安全测试:它会发现开放的,未经授权的和安全性较差的热点或Wi-Fi网络,并通过它们进行连接。
  • 我们看到的以上7类是对笔测测试类型进行分类的一种方法。我们还可以将渗透测试的类型分为三部分:

让我们一一讨论这种测试方法:

  • 黑匣子渗透测试:在这种方法中,测试人员在不了解其详细信息的情况下评估目标系统,网络或过程。他们只是具有很高的输入水平,例如URL或公司名称,它们可用于渗透目标环境。此方法不检查任何代码。
  • 白盒渗透测试:在这种方法中,测试仪配备有有关目标环境的完整详细信息-系统,网络,操作系统,IP地址,源代码,架构等。它检查代码并找出设计和开发错误。它是内部安全攻击的模拟。
  • 灰盒渗透测试:在这种方法中,测试人员只能了解有关目标环境的详细信息。它是对外部安全攻击的模拟。

笔测试技术

  • 手动渗透测试
  • 使用自动渗透测试工具
  • 手动和自动过程相结合

第三步是识别各种漏洞的更常见的过程。

手动渗透测试

使用自动化工具很难找到所有漏洞。有些漏洞只能通过手动扫描来识别。渗透测试人员可以根据自己的技能和对渗透系统的了解,对应用程序进行更好的攻击。

诸如社会工程学之类的方法只能由人来完成。手动检查包括设计,业务逻辑以及代码验证。

渗透测试过程:

让我们讨论测试机构或渗透测试人员遵循的实际过程。识别系统中存在的漏洞是此过程的第一步。将对此漏洞采取纠正措施,并重复相同的渗透测试,直到系统对所有这些测试都不利。

我们可以通过以下方法将这一过程分类:

#1)数据收集:包括Google搜索在内的各种方法都用于获取目标系统数据。人们还可以使用网页源代码分析技术来获取有关系统,软件和插件版本的更多信息。

市场上有许多免费工具和服务,可以为您提供信息,例如数据库或表名,DB版本,软件版本,使用的硬件以及目标系统中使用的各种第三方插件。

#2)漏洞评估:根据第一步收集的数据,您可以找到目标系统中的安全漏洞。这有助于渗透测试人员使用系统中确定的入口点发起攻击。

#3)实际利用:这是至关重要的一步。它需要特殊的技能和技巧才能对目标系统发起攻击。经验丰富的渗透测试人员可以利用他们的技能对系统进行攻击。

#4)分析结果和报告准备:渗透测试完成后,将准备详细的报告以采取纠正措施。这些报告中列出了所有已识别的漏洞和建议的纠正方法。您可以根据组织的需要自定义漏洞报告格式(HTML,XML,MS Word或PDF)。

渗透测试样本测试用例(测试方案)

请记住,这不是功能测试。在Pentest中,您的目标是在系统中发现安全漏洞。以下是一些通用测试用例,不一定适用于所有应用程序。

  1. 检查Web应用程序是否能够识别网站上使用的联系表上的垃圾邮件攻击。
  2. 代理服务器–检查代理设备是否监视网络流量。代理服务器使黑客很难获得网络的内部详细信息,从而保护系统免受外部攻击。
  3. 垃圾邮件过滤器–验证是否过滤了传入和传出的电子邮件流量以及是否阻止了未经请求的电子邮件。
  4. 许多电子邮件客户端带有内置的垃圾邮件过滤器,需要根据您的需要进行配置。这些配置规则可以应用于电子邮件标题,主题或正文。
  5. 防火墙–确保整个网络或计算机都受到防火墙的保护。防火墙可以是阻止未经授权访问系统的软件或硬件。未经您的许可,防火墙可以阻止将数据发送到网络之外。
  6. 尝试利用所有服务器,台式机系统,打印机和网络设备。
  7. 验证所有用户名和密码是否已加密并通过安全连接(例如https)进行传输。
  8. 验证存储在网站cookie中的信息。它不应采用可读格式。
  9. 验证以前发现的漏洞,以检查该修复程序是否有效。
  10. 验证网络中是否没有开放端口。
  11. 验证所有电话设备。
  12. 验证WIFI网络的安全性。
  13. 验证所有HTTP方法。Web服务器上不应启用PUT和Delete方法。
  14. 验证密码是否符合要求的标准。密码长度至少为8个字符,其中至少包含一个数字和一个特殊字符。
  15. 用户名不应类似于“ admin”或“ administrator”。
  16. 在几次失败的登录尝试后,应将应用程序登录页面锁定。
  17. 错误消息应该是通用的,并且不应提及特定的错误详细信息,例如“无效的用户名”或“无效的密码”。
  18. 验证是否正确处理了特殊字符,HTML标记和脚本作为输入值。
  19. 内部系统详细信息不应在任何错误或警报消息中透露。
  20. 如果网页崩溃,则应向最终用户显示自定义错误消息。
  21. 验证使用注册表项。敏感信息不应保留在注册表中。
  22. 在将所有文件上传到服务器之前,必须对其进行扫描。
  23. 与Web应用程序的不同内部模块进行通信时,不应在URL中传递敏感数据。
  24. 系统中不应包含任何硬编码的用户名或密码。
  25. 验证所有带有长输入字符串且带空格和不带空格的输入字段。
  26. 验证重置密码功能是否安全。
  27. 验证SQL注入的应用程序。
  28. 验证跨站点脚本的应用程序。
  29. 重要的输入验证应在服务器端进行,而不是在客户端进行JavaScript检查。
  30. 系统中的关键资源应仅对授权人员和服务可用。
  31. 所有访问日志均应使用适当的访问权限进行维护。
  32. 验证用户会话在注销后结束。
  33. 验证是否在服务器上禁用了目录浏览。
  34. 验证所有应用程序和数据库版本都是最新的。
  35. 验证URL操作以检查Web应用程序是否未显示任何不需要的信息。
  36. 验证内存泄漏和缓冲区溢出。
  37. 验证是否已扫描传入的网络流量以查找Trojan攻击。
  38. 验证系统是否不受“蛮力攻击”的侵害-这是一种尝试并发现错误信息(例如密码)的错误方法。
  39. 验证系统或网络是否受到DoS(拒绝服务)攻击的保护。黑客可以通过连续的请求将网络或单台计算机作为目标,这是因为目标系统上的资源会过载,从而导致拒绝合法请求的服务。
  40. 验证应用程序是否存在HTML脚本注入攻击。
  41. 验证是否受到COM和ActiveX攻击。
  42. 验证是否存在欺骗攻击。欺骗可以有多种类型-IP地址欺骗,电子邮件ID欺骗,
  43. ARP欺骗,引荐来源者欺骗,呼叫者ID欺骗,文件共享网络中毒,GPS欺骗。
  44. 检查不受控制的格式字符串攻击-一种安全攻击,它可能导致应用程序崩溃或对其执行有害的脚本。
  45. 验证XML注入攻击–用于更改应用程序的预期逻辑。
  46. 验证是否受到规范化攻击。
  47. 验证错误页面是否显示任何可帮助黑客进入系统的信息。
  48. 验证是否有任何重要数据(如密码)存储在系统的机密文件中。
  49. 验证应用程序返回的数据是否超出要求。

这些只是Pentest入门的基本测试方案。有数百种高级渗透方法,可以手动或借助自动化工具来完成。

结论

最后,作为渗透测试人员,您应该收集并记录系统中的所有漏洞。考虑到最终用户不会执行任何方案,请不要忽略任何方案。