首页
/ Atomic Red Team项目PsExec远程执行命令问题分析与解决方案

Atomic Red Team项目PsExec远程执行命令问题分析与解决方案

2025-05-22 14:16:46作者:胡唯隽

问题背景

在使用Atomic Red Team项目进行安全测试时,测试人员发现T1569.002技术项(使用PsExec在远程主机上执行命令)无法正常工作。该测试原本设计用于模拟攻击者使用PsExec工具在远程系统上执行命令的行为,但在实际执行过程中遇到了技术障碍。

问题现象

当测试人员尝试执行以下命令时:

Invoke-AtomicTest -AtomicTechnique T1569.002 -TestGuids 873106b7-cfed-454b-8680-fa9f6400431c -InputArgs @{"remote_host" = [FQDN]; "user_name" = [USER]; "password" = [PASSWORD]}

系统返回错误信息:

PathToAtomicsFolder = C:\AtomicRedTeam\atomics
Executing test: T1569.002-1 Use PsExec to execute a command on a remote host
The filename, directory name, or volume label syntax is incorrect.
Exit code: 1
Done executing test: T1569.002-1 Use PsExec to execute a command on a remote host

根本原因分析

经过深入分析,发现该问题由多个因素共同导致:

  1. 执行器配置问题:原测试使用command_prompt作为执行器,但在某些环境下对路径解析存在问题。

  2. PsExec参数不完整:新版本PsExec需要额外的交互式会话标志(-i)才能正常工作。

  3. 权限问题:测试需要在提升权限的PowerShell环境中运行,但原测试缺少相应的前提条件检查。

  4. 默认值问题:默认的remote_host值(\localhost)在域环境中可能无法正常工作。

解决方案

针对上述问题,我们提出以下改进方案:

  1. 修改执行器类型: 将执行器从command_prompt改为powershell,以提供更强大的路径解析能力。

  2. 更新PsExec命令

& "PathToAtomicsFolder\..\ExternalPayloads\PsExec.exe" -i \\#{remote_host} -u #{user_name} -p #{password} -accepteula "C:\Windows\System32\calc.exe"

关键改进点:

  • 添加&符号确保PowerShell正确解析可执行文件路径
  • 添加-i参数确保新版本PsExec正常工作
  • 使用完整路径引用PsExec.exe
  1. 权限要求说明: 在测试文档中明确说明需要提升权限的PowerShell环境。

  2. 默认值调整: 建议修改默认的remote_host值,使其在域环境中也能正常工作。

技术细节

  1. PsExec参数解析: 新版本PsExec对参数要求更加严格,-i参数用于指定交互式会话,这在GUI应用程序执行时尤为重要。calc.exe作为图形界面程序,必须使用-i参数才能在远程会话中正确显示。

  2. PowerShell与Cmd差异: PowerShell对路径和特殊字符的处理与Cmd有所不同。使用&调用操作符可以确保外部可执行文件被正确识别和执行,特别是在路径包含空格或特殊字符时。

  3. 域环境考量: 在域环境中,使用简单的localhost引用可能无法正确解析。建议使用完全限定域名(FQDN)或确保网络路径引用格式正确。

实施建议

  1. 对于测试开发人员: 建议更新Atomic Red Team项目中的相关YAML文件,采用上述改进方案。

  2. 对于测试执行人员:

  • 确保使用提升权限的PowerShell
  • 验证PsExec版本并确认参数兼容性
  • 在域环境中使用FQDN而非localhost
  • 检查防火墙设置,确保PsExec通信不受阻

总结

通过对Atomic Red Team项目中PsExec远程执行测试的深入分析,我们识别了多个影响测试执行的技术问题,并提出了针对性的解决方案。这些问题反映了实际环境中工具版本差异、执行环境配置和权限要求等常见挑战。建议项目维护者采纳这些改进建议,以确保测试在不同环境下都能可靠执行。

登录后查看全文
热门项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
22
6
docsdocs
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
165
2.05 K
nop-entropynop-entropy
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
8
0
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
954
563
leetcodeleetcode
🔥LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解
Java
60
16
apintoapinto
基于golang开发的网关。具有各种插件,可以自行扩展,即插即用。此外,它可以快速帮助企业管理API服务,提高API服务的稳定性和安全性。
Go
22
0
giteagitea
喝着茶写代码!最易用的自托管一站式代码托管平台,包含Git托管,代码审查,团队协作,软件包和CI/CD。
Go
17
0
HarmonyOS-ExamplesHarmonyOS-Examples
本仓将收集和展示仓颉鸿蒙应用示例代码,欢迎大家投稿,在仓颉鸿蒙社区展现你的妙趣设计!
Cangjie
408
387
金融AI编程实战金融AI编程实战
为非计算机科班出身 (例如财经类高校金融学院) 同学量身定制,新手友好,让学生以亲身实践开源开发的方式,学会使用计算机自动化自己的科研/创新工作。案例以量化投资为主线,涉及 Bash、Python、SQL、BI、AI 等全技术栈,培养面向未来的数智化人才 (如数据工程师、数据分析师、数据科学家、数据决策者、量化投资人)。
Python
78
71
rainbondrainbond
无需学习 Kubernetes 的容器平台,在 Kubernetes 上构建、部署、组装和管理应用,无需 K8s 专业知识,全流程图形化管理
Go
14
1