横向渗透方式
(1)使用crackmapexec
crackmapexec是一款针对ad后渗透阶段的工具,利用ad内置功能/协议达成目的,能规避大多数终端防护/ids/ips
(2)wmiexec对wmi进行hash传递
pth除了通过smb,还可以使用wmi。使用impacket,使用wmiexec.py
(1)ms14-068
位于域控的密钥分发中心kdcsvc.dll,允许经过身份认证的用户在Kerberos中插入任意的pac。
利用条件:获取普通域用户账号密码;获取普通用户sid;没有安装补丁
查看用户sid=>清空系统票据=>使用ms14-068.exe执行命令=>成功后生成相应票据=>票据注入内存
(2)使用kekeo票据传递
kekeo主要进行票据传递、s4u2约束委派滥用,需要域名、用户名、hash
Kerberos在进行验证时需要用户提供凭据,或用户凭据派生出的密钥,比如rc4密钥实际就是用户凭据hash值。后续版本加强了对凭据的保护,常规pth攻击无效,默认的administrator(sid500)除外。对于Kerberos而言aes密钥也能完成认证。修改密钥方式就是密钥传递,原理是获取某个用户的aes、rc4、dec来进行Kerberos认证。
用户在经过Kerberos验证之后,为了保证Kerberos凭据的有效性,通常会生成凭据缓存文件。
1、使用impacket的gettgt生成凭据缓存文件,利用hash生成tgt
2、使用缓存文件,impacket中的psexec.py进行连接
at是schtasks命令前身,在Windows中创建和管理计划任务,前提与没有标建立了ipc连接
建立ipc连接>创建一个添加用户的bat脚本>copy到目标主机>at命令定时执行
和at类似
sc是Windows中工具命令集,提通过操作服务控制管理器与服务通信,可以远程关闭、开启、增加、删除服务,前提拥有两端机器管理员权限,并且建立ipc连接。
利用过程:获取跳板机权限,创建反弹shell木马,监听木马端口;跳板机在攻击机web服务下载木马
;把木马文件copy到靶机,使用sc运行木马
scshell是无文件横向移动工具,通过windows中的changeserviceconfigAja函数执行命令。使用之前需要知道靶机管理员凭据以及靶机机器当前运行的系统服务名称,可以使用svhost系统自导defragsvc服务作为靶机通过scshell加载利用的远程服务。
psexec微软发布的工具集,替代telnet帮助管理员进行远程管理,可以通过smb协议在远程主机上运行命令;原理:首先建立ipc连接,并向远程主机传输pssxecsvc.exe传输到远程主机默认共享文件夹,打开scmanager(服务控制管理器),启动名为psexecsvc的服务,生成四个命令管道分别用于服务psexec服务本身、stdin、stdout、stderr。
前提:获取对方凭据信息及对方开启默认共享服务,可以直接连接
psexec可以通过当前系统创建的ipc连接直接建立会话
winrm的远程管理服务是微软ws-management协议(基于简单对象访问协议soap的对防火墙友好协议)实现,winrm在win8以上自动开启,默认端口5985
winrs是windows远程shell,相当于winrm客户端,使用winrs访问winrm服务器可以形成交互会话
切换到跳板机,在没有加入域控情况下,使用winrs需要先将靶机机器ip加入客户端信任列表
invoke-command是powershell命令,可以在远程机器运行脚本或者命令,并且可以同时在多台机器运行命令。前提必须在远程主机有适当权限且在远程计算机上运行winrm服务
利用过程:生成回连木马>监听端口>跳板机下载木马>copy到靶机>使用invoke-command运行木马
enter-pssession是powershell命令自带的一条命令,用于远程主机建立交互式会话。与winrs相似,都是通过winrm建立连接的。
生成回连木马>监听端口>ps使用命令new-pssession连接到靶机,创建新的会话>进入新的会话>copy到靶机>运行木马
用户通过wmi管理系统资源,进行交互;不需要下载安装,是windows自带的功能,运行在计算机内存中,不会记录在windows日志
wmic是windows自带的wmi工具
查询启动项,系统运行状态服务,杀软
wmic远程获取shell
生成木马>使用wmic登录靶机,执行cmd,下载木马并运行
通过wmic远程执行命令,命令执行结果不会回显,但是可以通过impacket工具中的wmiexec.py获取一个交互shell,可以通过账号密码登录,也可以hash登录.
工具github获取,cscript wmiexec.vbs
wmi是135端口建立连接,命令执行结果写入文本,随后通过445端口查看文本内容;wmihacker可以不通过445端口,也能查看命令回显
mmc20.application是远程控制mmc(微软管理控制台)中的管理单元组件的对象,获取对象实例,列出对象支持的操作,其中executeshellcommand方法可以执行命令。
利用:建立ipc共享>攻击程序放置到靶机>执行木马
shellwindows对象托管在windows的explorer进程,对象包含名为shellexecute方法可以执行具体命令。
shellexecute远程执行木马程序
impacket中的dcomexec.py可以获取半交互shell,支持mmc20.application、shellwindows、shellbrowserwindow
shellbrowserwindow、internetexplorer.application、excel.application
Restricted admin mode(受限管理模式)当用户登录一台已知被控主机,可以保护密码不会被保存在被控主机内存,更改了远程桌面协议,使用网络登录而不是交互登录,导致ntmlhash或者Kerberos票据都可以进行身份认证。此模式仅存在server2012 r2和Windows 8.1。Restricted admin mode是基于Kerberos的,所以只存在域内
利用过程:已知目标hash,利用hash打开mstsc连接登录
windows允许多个用户同时登录,system权限通过tscon可以不输入用户凭据前提切换用户会话。
利用过程:使用sc create rdphj binpath="cmd.exe /k tscon 2 /dest:rdp-tcp#1"创建一个服务,确认当前使用用户为管理员用户不会被uac限制;net start rdphj运行创建服务;如果当前用户是管理员,不被uac限制,则可以伪造token方式获取system,并使用tscon切换会话
sharprdp可以不用gui情况,通过rdp进行命令执行的程序
如果xp_shellcmd不能使用,可以使用sp_oacreate,它是sql server服务调用ole对象所用存储过程,而ole对象中的run可以执行系统命令,默认关闭存储过程。
理论上通过sp_oacreate执行命令,结果不会显示,但是可以通过mssql自带的bulk读取执行结果
策略继承顺序“域>ou>组”
生成一个回连木马,放置temp根目录,共享权限设置为everyone,组策略设置用户登录到任何主机都会执行msi程序,“用户配置>策略>软件设置>软件安装”部署。
server08开始,组策略对象支持计划任务,域管可以通过计划任务管理域内计算机,例如特定时间运行程序、执行脚本、删除执行文本、重启服务。
cs创建web服务并将回连攻击机powershell程序放置在web服务器中;gpmc.msc在组策略管理部,域名创建gpo连接,创建一个全局的gpo“编辑>用户配置>首选项>控制面板设置>计划任务”;安全项设置为“只有用户登录时运行”;在计划任务操作新建,程序设置为木马路径;等待组策略更新或者强制更新;使用域用户登录域主机,便会执行回连木马
登录脚本就是用户登录系统初始化工作自启动脚本,可以通过scriptpath属性和mstsinitialprogra属性添加登录脚本
(1)dacl滥用添加登录脚本
当前用户如果对目标有genericall或者genericwrite权限,可以利用该权限对目标scriptpath属性和mstsinitialprogra添加登录脚本
利用过程:查看那些用户对administrator具有genericall或者genericwrite;guid对应用户;利用该用户加载ps,运行木马;administrator再次登录即可回连木马;域控下发登录脚本控制主机
wsus(windows server update services)是微软允许企业内部几种管理补丁部署更新的系统服务
wsus服务器和客户端通信通过http的 8530端口,可以通过sharpwsus工具中的sharpwsus.exe locate定位wsus地址
利用过程:部署恶意补丁,前提创建的恶意补丁必须经过微软签名的二进制文件,需要执行恶意补丁在wsus服务器磁盘中的存储位置虽然比较苛刻,但是可以利用psexec、msiexec、msbuild进行二进制文件横向移动
sccm用于部署更新、管理工作站、服务器上的软件,还用于向各种类型机器打补丁。