Atomic Red Team项目PsExec远程执行命令问题分析与解决方案
问题背景
在使用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
根本原因分析
经过深入分析,发现该问题由多个因素共同导致:
-
执行器配置问题:原测试使用command_prompt作为执行器,但在某些环境下对路径解析存在问题。
-
PsExec参数不完整:新版本PsExec需要额外的交互式会话标志(-i)才能正常工作。
-
权限问题:测试需要在提升权限的PowerShell环境中运行,但原测试缺少相应的前提条件检查。
-
默认值问题:默认的remote_host值(\localhost)在域环境中可能无法正常工作。
解决方案
针对上述问题,我们提出以下改进方案:
-
修改执行器类型: 将执行器从command_prompt改为powershell,以提供更强大的路径解析能力。
-
更新PsExec命令:
& "PathToAtomicsFolder\..\ExternalPayloads\PsExec.exe" -i \\#{remote_host} -u #{user_name} -p #{password} -accepteula "C:\Windows\System32\calc.exe"
关键改进点:
- 添加&符号确保PowerShell正确解析可执行文件路径
- 添加-i参数确保新版本PsExec正常工作
- 使用完整路径引用PsExec.exe
-
权限要求说明: 在测试文档中明确说明需要提升权限的PowerShell环境。
-
默认值调整: 建议修改默认的remote_host值,使其在域环境中也能正常工作。
技术细节
-
PsExec参数解析: 新版本PsExec对参数要求更加严格,-i参数用于指定交互式会话,这在GUI应用程序执行时尤为重要。calc.exe作为图形界面程序,必须使用-i参数才能在远程会话中正确显示。
-
PowerShell与Cmd差异: PowerShell对路径和特殊字符的处理与Cmd有所不同。使用&调用操作符可以确保外部可执行文件被正确识别和执行,特别是在路径包含空格或特殊字符时。
-
域环境考量: 在域环境中,使用简单的localhost引用可能无法正确解析。建议使用完全限定域名(FQDN)或确保网络路径引用格式正确。
实施建议
-
对于测试开发人员: 建议更新Atomic Red Team项目中的相关YAML文件,采用上述改进方案。
-
对于测试执行人员:
- 确保使用提升权限的PowerShell
- 验证PsExec版本并确认参数兼容性
- 在域环境中使用FQDN而非localhost
- 检查防火墙设置,确保PsExec通信不受阻
总结
通过对Atomic Red Team项目中PsExec远程执行测试的深入分析,我们识别了多个影响测试执行的技术问题,并提出了针对性的解决方案。这些问题反映了实际环境中工具版本差异、执行环境配置和权限要求等常见挑战。建议项目维护者采纳这些改进建议,以确保测试在不同环境下都能可靠执行。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0149- DDeepSeek-V4-ProDeepSeek-V4-Pro(总参数 1.6 万亿,激活 49B)面向复杂推理和高级编程任务,在代码竞赛、数学推理、Agent 工作流等场景表现优异,性能接近国际前沿闭源模型。Python00
LongCat-Video-Avatar-1.5最新开源LongCat-Video-Avatar 1.5 版本,这是一款经过升级的开源框架,专注于音频驱动人物视频生成的极致实证优化与生产级就绪能力。该版本在 LongCat-Video 基础模型之上构建,可生成高度稳定的商用级虚拟人视频,支持音频-文本转视频(AT2V)、音频-文本-图像转视频(ATI2V)以及视频续播等原生任务,并能无缝兼容单流与多流音频输入。00
auto-devAutoDev 是一个 AI 驱动的辅助编程插件。AutoDev 支持一键生成测试、代码、提交信息等,还能够与您的需求管理系统(例如Jira、Trello、Github Issue 等)直接对接。 在IDE 中,您只需简单点击,AutoDev 会根据您的需求自动为您生成代码。Kotlin03
Intern-S2-PreviewIntern-S2-Preview,这是一款高效的350亿参数科学多模态基础模型。除了常规的参数与数据规模扩展外,Intern-S2-Preview探索了任务扩展:通过提升科学任务的难度、多样性与覆盖范围,进一步释放模型能力。Python00
skillhubopenJiuwen 生态的 Skill 托管与分发开源方案,支持自建与可选 ClawHub 兼容。Python0111