基于NTLM认证的中间人攻击(含实战)

本文详细介绍了中间人攻击的概念,重点探讨了Windows系统的NTLM认证机制,包括本地认证和网络认证流程。讲解了域和工作组的区别,以及LLMNR、NetBIOS和WPAD域名解析协议的工作原理。同时,文章展示了如何利用Responder工具进行NTLM中继攻击,通过LLMNR和NetBIOS截取Net-NTLM Hash,以及通过WPAD劫持获取Hash。最后,通过SMB Relay攻击展示了域内横向渗透的可能性,并强调了NTLM认证的安全隐患和防范措施的重要性。
摘要由CSDN通过智能技术生成

中间人攻击


中间人攻击(Man-in-the-Middle Attack,简称“MITM攻击”)是指攻击者与通讯的两端分别创建独立的联系,并交换其所收到的数据,使通讯的两端认为他们正在通过一个私密的连接与对方直接对话,但事实上整个会话都被攻击者完全控制。在中间人攻击中,攻击者可以拦截通讯双方的通话并插入新的内容。中间人攻击一个(缺乏)相互认证的攻击。大多数的加密协议都专门加入了一些特殊的认证方法以阻止中间人攻击。例如,SSL协议可以验证参与通讯的一方或双方使用的证书是否是由权威的受信 任的数字证书认证机构颁发,并且能执行双向身份认证。

中间人攻击过程

1.客户端发送请求到服务端,请求被中间人截获。
2.服务器向客户端发送公钥。
3.中间人截获公钥,保留在自己手上。然后自己生成一个【伪造的】公钥,发给客户端。
4.客户端收到伪造的公钥后,生成加密hash值发给服务器。
5.中间人获得加密hash值,用自己的私钥解密获得真秘钥。同时生成假的加密hash值,发给服务器。
6.服务器用私钥解密获得假密钥。然后加密数据传输给客户端。
image-20210802165409819

中间人攻击的核心理念在于截取hash和传递(假冒认证)

0x01 域和工作组

工作组和域宏观上都是一群计算机的集合,域中计算机的数量规模通常大于工作组内的计算机。

工作组内的机器名义上虽然是属于一个集合,但是内部各计算机还是各自管理各自的,没有一个相对成熟的信任机制,工作组内各个计算机的关系依旧是点对点。因此,在工作组环境下进行访问认证,仅涉及Client和Server。我们使用的个人计算机,默认便处于WORKGROUP工作组环境下

域是一个有安全边界的计算机集合,同一个域中的计算机通过共同的第三方信任机构建立信任关系,这个第三方信任机构角色由DC(域控制器)担当。通俗来讲,域中的机器都信任域控制器,那么只要域控制器信任我们,我们就可以在域内获得对其他服务器的访问权限。在这种认证体系中涉及三方:Client、Server、DC

VMware中域环境的搭建详见:

VMware中用虚拟机模拟搭建域(步骤、讲解详实,并以浅显的方式讲解了VMware中的三种网络模式、IP配置),Windows Server 2008 R2为域控服务器,Win7为域成员服务器_胖胖的飞象的博客-CSDN博客_虚拟机怎么创建域

0x02 NTLM认证(Windows)

本地认证

Windows不存储用户的明文密码,它会将用户的明文密码经过加密后存储在 SAM (Security Account Manager Database,安全账号管理数据库)文件中。

SAM文件的路径是 %SystemRoot%\system32\config\sam

在进行本地认证的过程中,当用户登录时,系统将用户输入的明文密码加密成 NTLM Hash,与 SAM数据库中的 NTLM Hash 进行比较,从而实现认证

winlogon.exe -> 接收用户输入 -> lsass.exe -> 认证

首先,用户注销、重启、锁屏后,操作系统会让 winlogon显示登录界面,也就是输入框,接收输入后,将密码交给 lsass进程,这个进程中会存一份明文密码,将明文密码加密成NTLM Hash,对比 SAM数据库中的Hash进行验证

NTLM Hash的生成
  • 明文密码:123456
  • 首先,密码经过十六进制ASCⅡ转为 -> 313233343536
  • 将十六进制结果转为 Unicode格式 ->310032003300340035003600
  • 以 Hex(16进制)数据作MD4加密 ->32ED87BDB5FDC5E9CBA88547376818D4

由于NTLM Hash的算法公开,故获得的Hash可暴力破解(MD4单向不可逆)

网络认证

NTLM凭据包括域名用户名用户密码的单向Hash。用户的密码不会在网络链路中传输,加密之后的Challenge值取代原本密码的作用进行对比验证,与传统传输密码的方式相比,具有较高的安全性

NTLM的认证方式分为交互式和交互式

  • 通过网络进行的交互式NTLM身份验证通常涉及两个系统:客户端系统,用户用于请求身份验证;域控制器,其中保留与用户密码有关的信息;交互式提供必要凭据,应用场景通常为用户要登录某台客户端
  • NTLM非交互式身份验证通常涉及NTLM三个系统:客户端服务器代表服务器进行身份验证计算的域控制器;无需交互式提供凭据,实际应用更多为已登录某客户端的用户去请求另一台服务器的资源 ,即用户只需要登录一次即可访问所有相互信任的应用系统及共享资源
工作组环境NTLM认证流程
1.用户访问客户机并提供域名,用户名,密码。客户端计算密码的Hash,并丢弃实际密码。
2.客户端将用户名发送到服务器。
3.服务器生成一个16字节的随机数Challenge并发送给客户端。
4.客户端使用用户密码的Hash对Challenge进行加密,然后将结果response(Net-NTLM hash)返回给服务器。
5.服务器使用用户名从SAM数据库中检索用户密码Hash,使用此密码Hash对Challenge进行加密。
6.服务器将其加密的Challenge(在步骤5中)与客户端计算的response(在步骤4中)进行比较。如果它们相同则身份验证成功。

image-20210802213128690

域环境NTLM认证
1.用户访问客户机并提供域名,用户名,密码。客户端计算密码的Hash,并丢弃实际密码。
2.客户端将用户名发送到服务器。
3.服务器生成一个16字节的随机数Challenge并发送给客户端。
4.客户端使用用户密码的Hash对Challenge进行加密,然后将结果response(Net-NTLM hash)返回给服务器。
5.服务器将三个信息发送到域控制器:用户名,发送给客户机的Challenge,返回给服务器的response。
6.域控制器使用用户名从SAM数据库中检索用户密码Hash。使用此密码Hash对Challenge进行加密。
7.域控制器将其加密的Challenge(在步骤6中)与客户端计算的response(在步骤4中)进行比较。如果它们相同则身份验证成功。
Windows系统中的NTLM(NT LAN Manager)认证是一种用于验证用户身份的认证协议。下面是NTLM认证的详细描述: 1. 客户端向服务器发送连接请求。 2. 服务器将随机生成的挑战(Challenge)发送给客户端。 3. 客户端使用用户密码的散列值(Hash)对挑战进行加密,并将结果发送回服务器,该散列值被称为NTLMv2响应。 4. 服务器将存储在本地的用户密码散列值与客户端发送的NTLMv2响应进行比较。如果匹配,则验证成功,否则验证失败。 需要注意的是,NTLM认证过程中并没有明文传输密码,而是传输了密码的散列值。这样做可以在一定程度上保护密码的安全性。 然而,NTLM认证方式在抵抗反向攻击方面存在一些弱点。反向攻击是一种基于已知散列值进行破解的攻击方式,攻击者可以通过抓取网络流量或获取存储的密码散列值来进行破解。一旦攻击者获取到密码散列值,他们可以使用强大的计算资源和密码破解技术来尝试还原原始密码。 此外,NTLM认证也存在被中间人攻击(Man-in-the-Middle)利用的风险。中间人攻击是指攻击者在通信过程中截获、篡改或伪造数据,使得客户端和服务器之间的通信被劫持。攻击者可以获取到NTLM挑战和响应的数据,从而进一步进行破解或伪装成合法用户。 为了提高安全性,建议使用更安全的认证协议,如Kerberos,它提供了更强的安全性和防护措施。此外,还应注意采取其他安全措施,如使用复杂的密码、定期更改密码、启用多因素身份验证等,以增加系统的安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值