Mobile wallpaper 1Mobile wallpaper 2Mobile wallpaper 3Mobile wallpaper 4Mobile wallpaper 5
1370 字
7 分钟
域渗透基础:域内 Hash / 明文传递攻击

域渗透基础:域内 Hash / 明文传递攻击#

声明#

  1. 本次实验使用的psexec两个版本为微软发布的pstools包含版本和github上impacket工具的exe版本(其中impacket项目地址为:https://github.com/fortra/impacket,打包好适用于windows的项目可见https://gitee.com/RichChigga/impacket-examples-windows),更多用法详见项目官方文档;
  2. 本文仅为个人技术实验记录,工具使用需严格遵守当地法律法规,请勿用于任何未授权的网络活动,违规使用后果自负。
  3. 个人仍处于初级学习阶段,难免出现原理解释错误与疏漏的问题,若出现谬误之处欢迎各位批评指正。

传递攻击简介和原理#

在域渗透中,传递攻击指攻击者利用已获取的用户凭据(密码哈希、票据等),直接跳过输入明文密码的步骤,完成对目标主机 / 服务的身份认证,进而实现远程控制或横向移动。 传递攻击的核心原理是Windows 认证协议的设计特性:NTLM 认证时,系统仅验证客户端发送的 “哈希响应包” 是否与服务器计算的一致,无需验证哈希的来源;Kerberos 认证则允许票据重用 —— 这意味着攻击者无需还原明文密码,只需拿到哈希 / 票据,就能冒充合法用户完成认证。

常见类型#

  1. Hash 传递(PTH) 用抓取到的 NTLM 哈希或LM哈希替代明文密码,通过 SMB 等协议认证,可以通过psexec、smbexec、atexec等工具实现
  2. 票据传递(PTT) 用窃取的 Kerberos 票据直接注入内存,冒充合法用户访问域内服务。(本篇文章暂时不涉及此块内容)
  3. 明文传递 利用获取到的明文密码可以直接通过IPC连接创建计划任务进行攻击,或上述hash传递所用工具进行传递实现远程认证

明文传递#

假设你已经通过Mimikatz工具或其它方式拿到了域控制器(DC)的明文密码,有常见的几种方式可以实现传递攻击

(一)IPC连接#

简介:IPC 连接(Inter-Process Communication,进程间通信)是 Windows 系统中进程间传递数据的核心机制,而ipc$是基于该机制实现的隐藏管理共享(默认开放),用于远程主机的管理交互,底层依赖 SMB 协议(默认 445 端口)。 在域渗透中,我们可借助ipc$共享的远程认证特性,用已获取的域管理员明文密码建立信任连接,进而实现文件远程复制、计划任务创建等攻击操作,具体步骤如下:

  1. 在域用户主机(右图)输入以下命令: net use \\域控制器IP\ipc$ "域管理员密码" /user:域名\域管理员用户名

建立ipc连接

在域控主机上执行net session可以看到已经建立IPC连接。

  1. 在域用户主机上制作add.bat脚本(我用的net user Admin123 password /add作为该文件内容),并使用以下指令复制到域控主机C盘根目录上: copy add.bat \\域控制器IP\C$

copybat 执行后域控主机C盘出现目标文件。

  1. 对于winserver2012以前的版本使用at创建计划任务,其后的用schtasks指令,这里针对winserver2008的域控主机,输入以下指令: at \\域控制器IP 执行时间 C:\add.bat at

到时间后在域控主机输入net user发现Admin123用户已经添加成功。

(二)微软psexec进行明文传递#

  1. 在psexec.exe目录下执行以下指令: psexec \\域控制器IP -u 域名\域管理员用户名 -p 域管理员密码 -s cmd

error

发现拒绝访问,经过尝试可以通过切换用户为本地管理员用户方式解决,经查阅可能由于用户帐户控制(UAC)令牌过滤,但rid非500的本地管理员账户可以进行连接,可参考文章对该问题的详细讲述(https://www.cnblogs.com/fullstar-l/p/16224372.html)。

admin

admin

切换后再次执行发现拿到了域控主机的shell。

hash传递#

关于hash传递的工具有很多,如atexec,psexec,smbexec等,但使用方法大同小异,由于微软官方的psexec不支持密文传递,这里简单介绍以下impacket中二次开发的psexec。

psexec的hash传递#

  1. 假设我们拿到了hash密码(这里对密码获取暂时不做过多讲解),使用LM和NTLM即可进行hash传递(若只有 NTLM 哈希,LM 部分可留空(写成”哈希”)),指令如下: psexec -hashes LM:NTLM 域名/域管理员用户名@域控制器IP

(注意这里域名后面为/,由于psexec开发语言为python,可以避免\与后文连接造成转义) hash

  1. 通过whoami查看,已经拿到域控制器的shell。

关于hash传递不同协议工具区别的简单补充#

对于常用的psexec和atexec两款工具,经查阅有以下解释,可做了解:

  1. psexec:通过 SMB 协议远程启动服务(依赖admin$共享),会在目标主机生成临时服务(比如PSEXESVC),痕迹相对明显;
  2. atexec:通过 MS-RPC 的Task Scheduler服务执行命令(依赖task scheduler服务),不会生成临时服务,痕迹更隐蔽。 两者都支持明文 / Hash 传递,基础用法类似(atexec 命令格式:atexec domain/user@target cmd)。
域渗透基础:域内 Hash / 明文传递攻击
http://124.70.202.140/posts/post-4/4/
作者
Ne+N3k_O
发布于
2025-12-26
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时