本文来自微信公众号“安信安全”。
网络安全渗透测试工作的本质就是扮演攻击性黑客的角色,梳理企业的IT资产、寻找漏洞和攻击路径,以便更好地修复或应对风险。
渗透测试的常见类别
渗透测试的具体类型有很多,大致可分为三个主要类别:网络渗透测试、应用程序渗透测试以及社会工程。
01
网络渗透测试
无线网络渗透测试:这种类型的测试涉及渗透测试人员评估客户定义的无线网络。测试人员将寻找无线加密中已知的缺陷,试图破解密钥,诱使用户向“双面恶魔”(evil twin)接入点或被攻击者控制的文件夹提供凭据,并暴力破解登录详细信息。恶意接入点扫描可以通过物理位置和经过身份验证的无线分段测试完成这些评估类型,以确定攻击者在成功连接到环境后可以访问的内容。
外部网络渗透测试:在外部网络渗透测试中,面向互联网的资产会成为模拟攻击目标。通常,目标资产由客户提供,但也可以在客户确认的情况下执行“无范围”(no-scope)测试。测试人员将尝试在扫描期间发现的任何可利用漏洞。此外,允许登录的暴露服务将受到密码猜测攻击的影响,例如暴力破解或密码喷射。对外开放的企业网站通常会接受额外的审查,以寻找攻击者容易利用的常见Web漏洞。
内部网络渗透测试:内部网络测试评估是从已获得组织内部网络访问权限的角度进行,可以在测试人员和客户员工之间提供有益的互动,测试人员可以使用客户提供的基础设施,或是他们自己的物理或虚拟远程测试系统来进行远程访问。
02
应用程序渗透测试
Web应用渗透测试:Web应用程序渗透测试侧重于通过Web应用程序呈现给攻击者的攻击面。这些测试类型旨在评估Web应用程序的安全性,并寻找攻击性方法来访问敏感数据,或获得对Web应用程序的控制权限。在此评估期间,组织通常会向测试人员提供凭据访问权限,以审查整个应用程序。
移动应用渗透测试:主要指通过对已编译的移动应用程序进行静态分析,或进行动态运行时分析,来评估移动应用程序的安全性。此外,移动设备参与的通信过程也都会被分析和评估。这通常包括与网页数据或API调用的HTTP连接。
密集(Thick)应用渗透测试:在Linux和Windows等桌面或服务器操作系统上运行的编译应用程序需要复杂的逆向工程。这种评估类型将包括反汇编(将计算机编码译成普通语言)和反编译应用程序,并在应用程序运行时使用调试器附加到应用程序以进行运行时分析。该测试旨在分析应用程序通信是否以不安全的方式传输敏感信息。
03
社会工程攻击测试
网络钓鱼:每个组织都可能成为网络钓鱼攻击的目标。这种评估类型旨在确定组织的用户群对鱼叉式网络钓鱼攻击的敏感性。该测试的目标不是评估组织电子邮件保护的有效性,而是确定当邮件避开这些过滤器时用户将如何反应。这些评估的结果可以用于增强组织的反社会工程意识计划。
电话语音钓鱼:测试人员会使用来电显示欺骗技术冒充用户、支持人员或客户。该评估旨在说服用户执行一些可能会披露信息或提供对组织系统的访问权限的操作。许多用户会根据来电号码选择信任来电者。部分用户会察觉出攻击并以各种方式做出响应,例如咨询安全顾问或在通话后联系信息安全团队。
USB令牌注入:用户可能会无意中尝试将USB设备连接到环境中。在此评估类型中,测试人员会将部署看似普通的USB驱动器,并诱使用户将该设备插入公司系统。这些USB设备可以是包含建立远程连接的恶意文件的典型驱动器,也可以是在连接时执行某些键盘操作。
收集短信钓鱼:这种评估类型类似于网络钓鱼,但利用的媒介变为SMS或短消息服务向用户发送欺诈性的消息。与网络钓鱼一样,这些活动将尝试让用户访问冒充组织的站点或尝试传递恶意木马病毒。
渗透测试的关键步骤
从企业的角度来看,渗透测试的目标是验证现有的安全策略有效性,以识别可能造成潜在风险的不足。而在渗透测试人员的心目中,他们的目标是实际登录到被测试的系统和应用程序,并尝试数据窃取行动。真正的攻击者根本没有范围限制,并且可以通过多种方式攻击组织,例如直接攻击暴露在互联网上的业务系统和应用程序,或利用员工某些安全薄弱环节实现入侵。在渗透测试服务的实施中,通常都需要包括以下关键步骤:
01
侦察
研究组织给定目标的细节。这通常涉及广泛的OSINT(开源情报),它将在测试人员通过其他阶段时为他们提供帮助。此阶段产生的信息可以包括但不限于主机名、IP地址、员工姓名和电子邮件地址。
02
攻击面枚举
该阶段会枚举攻击者可以与之交互的元素。在社会工程模式下,被攻击的对象可以是服务、Web应用程序、人员甚至是建筑物。每个可以交互的参数或接口都能在此阶段被识别出来。
03
漏洞检测
漏洞是目标资源中存在的缺陷,攻击者可以利用存在的漏洞缺陷引发意想不到的后果,例如系统访问、信息泄露或拒绝服务攻击。在此阶段会识别出可能被攻击者利用的漏洞。
04
渗透攻击
这是渗透测试过程中最核心的环节。在此环节中,渗透测试团队需要利用他们所找出的目标系统安全缺陷,来真正入侵系统获得访问控制权或访问更多的敏感数据。
05
撰写报告
在渗透测试完成之后,相关数据需要以清晰的方式关联并呈现给客户。这份报告应该包含之前所有阶段之中渗透测试团队所获取的关键情报信息、探测和发掘出的系统安全漏洞、成功渗透攻击的过程,以及造成业务影响后果的攻击途径,同时还要站在防御者的角度上,帮助他们分析安全防御体系中的薄弱环节、存在的问题,以及修补技术方案。
06
修复和重新测试
当测试结果提交后,接下来就是快速修复组织既定政策和流程中发现的漏洞。在某些情况下,发现的漏洞无法直接修复,但可以通过其他机制解决,例如额外的安全措施或补偿控制。渗透测试人员也可以重新参与以提供补救证据或评估缓解措施的效果。
需要指出的是,这些测试阶段并不一定是固化的,渗透测试人员可能会根据需要不断重复之前的步骤。
对渗透测试的7个误区
定期开展渗透测试对企业来说很宝贵,其作用不仅仅在于发现安全问题,对软件开发人员更深入了解系统实际运行情况也会大有帮助。不过,当很多企业准备制定渗透测试计划时,他们对渗透测试服务的理解和需求,往往与真实服务现况存在着很多偏差和误区。
误解1、渗透测试是为了漏洞评估
漏洞评估包括识别和分类已知漏洞,生成需要注意的优先漏洞列表,并推荐修复它们的方法。而安全威胁非常多样,并不仅限于安全漏洞的利用。渗透测试侧重于模拟攻击者的行为,在服务完成后,测试人员需要生成一份详细报告,说明测试过程中是如何破坏安全性以达到先前商定的目标(例如破坏工资系统),并提供相应的威胁缓解方案。
误解2、人工测试将会被自动化取代
为了实现常态化、持续性的安全能力测试,许多企业开始大量使用自动化技术驱动的安全测试方法,但需要指出的是:目前的自动化测试模式大多属于安全扫描,而非真正的渗透攻击测试。不可否认自动化测试的应用价值,但真正的攻击行为是和机器模拟入侵有很大差异的。经验、创造力和好奇心是渗透测试的核心,而这都是专业渗透人员独有的。在自动化测试完成之后,必须要配合人工测试方式,从攻击者的视角发现问题。
误解3、渗透测试仅用于发现技术缺陷
渗透测试的目的是为了发现组织安全防护体系中的不足。在测试中,测试方可以应用包括社会工程方式在内的多种方法。因此,在渗透测试之前,通常会确定是否需要专门评估某项技术的安全性。在实际应用中,测试工程师可能会被授权做更多事情,例如扫描社交媒体以获取可利用的信息,或尝试通过电子邮件从用户那里获取敏感数据,甚至尝试欺骗获取用户的账号权限等。
误解4、渗透测试需要由外部团队完成
渗透测试可由企业内部员工、专业服务商或其他第三方机构完成。理想情况下,外部测试人员会定期检查内部测试人员的工作。
误解5、渗透测试仅对大型企业有价值
如今,一些监管法规和行业标准都明确提出要求,组织需要定期进行渗透测试。例如,医疗保健提供者需要进行测试,以确保他们能够保护其医疗数据安全。同时,任何接受或处理信用卡的企业都必须符合支付卡行业数据安全标准(PCI DSS)。渗透测试结果有时也会被引用为合规事件处理时的证据。
误解6、渗透测试总是主动的
渗透测试可以是主动的或被动的。大多数情况下,组织会主动执行测试以帮助防止违规行为。但是,测试后取证分析期间的渗透测试也可以帮助安全团队了解发生了什么,以及事件是如何发生的,所有这些信息还可以帮助组织防止未来发生类似的事件。
误解7、渗透测试不会采用DDoS
渗透测试人员需要最大程度地避免在测试过程中对企业正常业务开展造成影响。拒绝服务攻击由于破坏性较大,一般较少在渗透测试工作中使用。但是,在某些情况下,测试人员需要针对具有资源消耗型漏洞的特定系统执行拒绝服务攻击,以深入了解攻击覆盖面和影响规模,并制定适当的缓解措施以避免此类攻击。