第 5 章 身份认证攻击

身份认证是确认信任某人的身份。它的含义可能会包含确认某个人、某个应用或是某个硬件的身份,比如验证Joseph Muniz 是政府雇员,以及他的笔记本电脑是由政府机构颁发的。作为渗透测试人员,通过已授权的实体获得系统的信任、绕过安全认证部分非常有用。

注册信息系统安全师(CISSP,Certified Information System Security Professional)课程中将身份认证按三个因子归类如下:

最常用的确认身份的方法是通过人们知道的内容,比如密码。第4章 介绍了攻击主机系统时各种破解密码的方法。你能够通过破解密码获得一些系统的访问权限,不过许多系统都使用了多个因子的身份认证,也就是说证明某人身份时需要多个认证步骤。

常见的用户身份认证方式中包括组合使用用户名和密码。如果某个用户每次要进行身份认证时都要输入这部分信息,那会非常麻烦。为了解决这个问题,人们发明了单点登录(Single Sign-on),即由某个集中式授权机构对某人进行身份认证,而其他站点都会信任这个身份。集中式授权机构会代表用户或设备验证信任,所以用户可以访问多个安全的系统,而不必在每个安全入口都输入一次密码。Windows的域控制器就是一个常见的受信任的授权机构,它为内部用户访问内网资源提供着身份认证功能。在这些例子中,以较高权限侵入受信任的授权机构或账户可能意味着具备了访问许多其他这类系统上的内部资源的权限。

许多政府机构都会将个人身份验证(PIV,Personal Identity Verification)通用访问卡(Command Access Card,CAC) 1 和密码一起搭配使用,这样就满足了用户拥有和用户知道的双重条件。远程工作人员通常会用数字令牌(Digital Token),它会过几秒钟就生成一个新的数字,并跟PIN一起使用,代表他们拥有和他们知道的双重条件。高安全要求的物理位置可能会要求指纹扫描外加PIN来访问。网络访问控制技术可以验证用户对笔记本有何权限,并在提供网络资源前先找出隐藏的证书来验证系统和用户的身份。对于渗透测试人员来说,关键是在侦察阶段找出目标使用的身份认证方法,这样你才能规划出绕过信任的合适策略。

1 PIV是美国联邦政府在FIPS 201标准中对联邦政府雇员和承包商要求的智能卡。CAC是美国国防部用来进行多重身份验证的智能卡。通用访问卡作为标准认证发行,可以认证现役军人、后备军人、文职雇员、非国防部雇员、国民警卫队的工薪阶层和合格的承包商人员。加上它作为身份证的功能,访问政府建筑和计算机网络时需要出示通用访问卡。——译者注

本章重点介绍用户和设备如何通过Web应用进行身份认证,目标是可以利用目标的信任。首先,我们介绍攻击管理身份认证会话的过程,也就是客户端和服务器建立信任的过程。之后,我们会重点关注客户端,攻击点是主机系统是如何通过cookie管理来存储数据。接着,我们会着重关注使用中间人攻击达到隐藏在客户端和服务器之间的目的。最后一部分内容是通过SQL和跨站脚本攻击(XSS,Cross-Site Scripting)找出和利用Web应用接受身份认证过程中的薄弱环节。