Skip to content
KitploitKITPLOIT
工具漏洞利用博客
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
gopacket — Impacket 的完整 Go 移植版——63 个 CLI 工具和 24 个库,用于 Windows 和 Active Directory 协议攻击,编译为单个无依赖的二进制文件。 | Kitploit
工具/GitHubGitHub/mandiant/gopacket
渗透测试框架权限提升漏洞利用框架密码攻击横向移动后渗透利用网络安全命令与控制红队远程访问工具
GitHubmandiant/gopacket

gopacket

70761801个月前Kitploit 审核通过

Impacket 的完整 Go 移植版——63 个 CLI 工具和 24 个库,用于 Windows 和 Active Directory 协议攻击,编译为单个无依赖的二进制文件。

查看仓库

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

gopacket

作者:Jacob Paullus(@psycep_)

Impacket 的完整 Go 实现——包含 63 个工具和 24 个库包,用于 Windows 网络协议交互、Active Directory 枚举和攻击执行。作为原生 Go 框架构建,因此你可以编译一次并在任何地方运行,无需 Python 依赖。

Beta 版本 - 高度实验性。 gopacket 正在积极开发中。核心工具已在 Active Directory 实验环境中测试,但预期会出现边缘情况和协议怪癖。如果某些功能无法正常工作,请使用 Impacket 并排测试相同操作,并在错误报告中包含两者的输出。这有助于我们快速确定这是 gopacket 特有的问题还是共享的协议限制。

安装

root@kitploit:~
git clone https://github.com/mandiant/gopacket
cd gopacket

# Default: Linux/macOS build + install to /usr/local/bin
./install.sh

# Run with no flags and it prompts you through the choices interactively.
# Or pick a target directly:
./install.sh --target portable   # static Linux binaries in ./dist/portable/
./install.sh --target windows    # Windows .exe cross-compiles in ./dist/windows/
./install.sh --target all        # build every target in one run

# Build without installing (native only)
./install.sh --build-only

# Or build with make
make build

默认(--target native)构建需要 Go 1.24.13+、GCC 和 libpcap 开发头文件(在 Debian/Ubuntu/Kali 上使用 apt install build-essential libpcap-dev, 在 RHEL/CentOS 上使用 ,或在 macOS 上使用 )。 和 目标只需要 Go 工具链;在这些构建中 和 会变成存根, 因为它们需要 libpcap。完整矩阵请参见。

yum install gcc libpcap-devel
brew install libpcap
portable
windows
sniff
split
平台支持

平台支持

gopacket 可在 Linux、macOS 和 Windows 上构建。可用工具集和 可用的代理路径取决于构建标志:

构建可用工具代理
带 cgo 的 Linux / macOS(默认)全部 63 个proxychains(LD_PRELOAD)和/或 -proxy SOCKS5
带 CGO_ENABLED=0 的 Linux61 个(sniff、split 变为存根)仅 -proxy(proxychains 需要 libc 钩子)
Windows(GOOS=windows CGO_ENABLED=0)60 个(sniff、split、sniffer 存根)仅 -proxy(Windows 上没有 LD_PRELOAD)

sniff 和 split 通过 cgo 依赖 libpcap;sniffer 依赖 Unix 原始 套接字。当某个工具无法为目标平台构建时,gopacket 会替换为一个 打印清晰消息并以 1 退出的存根,因此 go build ./... 始终 成功,且安装布局在各平台间保持一致。

卸载:

root@kitploit:~
./install.sh --uninstall

代理支持

gopacket 支持两条独立的代理路径。它们也可以链式使用。

proxychains(LD_PRELOAD)

所有 gopacket 工具都可通过 proxychains 工作。Go 二进制文件通常会绕过 proxychains,因为 Go 的运行时在内部处理 DNS 和网络,跳过了 proxychains 所依赖的 LD_PRELOAD 钩子。gopacket 通过链接系统 C 库进行网络操作来绕过此问题,允许 proxychains 正常拦截连接。

root@kitploit:~
proxychains gopacket-secretsdump 'domain/user:password@target'
proxychains gopacket-smbclient -k -no-pass 'domain/[email protected]'

内部 SOCKS5 代理(-proxy)

每个工具都接受 -proxy,以通过 SOCKS5 服务器路由出站 TCP,而不依赖 LD_PRELOAD。接受的方案:socks5 和 socks5h。当 -proxy 未设置时,会查询 ALL_PROXY / all_proxy 环境变量作为回退。

root@kitploit:~
gopacket-secretsdump -proxy socks5h://127.0.0.1:1080 'domain/user:password@target'
ALL_PROXY=socks5h://127.0.0.1:1080 gopacket-smbclient 'domain/user:password@target'

依赖 UDP 的功能在 -proxy 下会被禁用,而不是静默泄露数据包(SOCKS5 UDP ASSOCIATE 很少被代理支持,且绕过代理进行 UDP 会暴露操作者的真实源 IP)。受影响的功能及其变通方法记录在 KNOWN_ISSUES.md 中。

链式使用: -proxy 与 proxychains 兼容。到 SOCKS5 代理本身的 TCP 连接仍然通过 libc connect() 进行,因此 proxychains → gopacket → -proxy → target 适用于嵌套路由场景。

文档

有关在 gopacket 的 24 个协议包之上构建自定义工具的完整 API 文档、代码示例和架构概述,请参见库开发者指南。

工具(63 个)

远程执行

工具描述
psexec通过 SMB 服务创建进行远程命令执行
smbexec通过 SMB 进行远程命令执行(比 psexec 更隐蔽)
wmiexec通过 WMI 进行远程命令执行
dcomexec通过 DCOM 进行远程命令执行
atexec通过任务计划程序进行远程命令执行

凭据转储与 DPAPI

工具描述
secretsdumpSAM/LSA/NTDS.dit 提取和 DCSync(远程 + 离线)
dpapiDPAPI 备份密钥提取
esentutl离线 ESE 数据库解析器(NTDS.dit)
registry-read离线 Windows 注册表配置单元解析器

Kerberos

工具描述
getTGT使用密码、哈希或 AES 密钥请求 TGT
getST使用 S4U2Self/S4U2Proxy 请求服务票据
GetUserSPNsKerberoasting - 查找并请求 SPN
GetNPUsersAS-REP roasting - 查找未启用预认证的账户
ticketer黄金/白银票据伪造
ticketConverter在 ccache 和 kirbi 格式之间转换
describeTicket解析和解密 Kerberos 票据
getPac请求并解析 PAC 信息
keylistattackKERB-KEY-LIST-REQ 攻击(RODC)
raiseChild通过黄金票据进行子域到父域提升

Active Directory 枚举

工具描述
GetADUsers通过 LDAP 枚举域用户
GetADComputers通过 LDAP 枚举域计算机
GetLAPSPassword通过 LDAP 读取 LAPS 密码
findDelegation查找委派配置
lookupsid通过 LSARPC 进行 SID 暴力破解
samrdump通过 SAMR 枚举用户
rpcdump通过 epmapper 转储 RPC 端点
rpcmap扫描可访问的 RPC 接口
net通过 SAMR/LSARPC 进行 net user/group/computer 枚举
netview枚举会话、共享和已登录用户
CheckLDAPStatus检查 LDAP 签名和通道绑定要求
DumpNTLMInfo从 SMB 协商中转储 NTLM 认证信息
getArch通过 RPC 检测远程操作系统架构
machine_role检测机器角色(DC、服务器、工作站)

Active Directory 攻击

工具描述
addcomputer创建/修改/删除机器账户(SAMR + LDAP)
rbcd基于资源的约束委派操纵
dacledit读取/写入 AD 对象上的 DACL
owneredit读取/修改对象所有权
sameditSAM 账户名欺骗(CVE-2021-42278/42287)
badsuccessorBadSuccessor / 备份操作员提升
changepasswd通过 SAMR 和 LDAP 更改/重置密码

SMB 工具

工具描述
smbclient交互式 SMB 客户端(共享、ls、get、put 等)
smbserver用于文件共享的 SMB 服务器
attrib通过 SMB 查询/修改文件属性
filetime通过 SMB 查询/修改文件时间戳
services通过 SVCCTL 进行远程服务管理
reg通过 WINREG 进行远程注册表操作
Get-GPPPassword从 SYSVOL 提取组策略首选项密码
karmaSMB用于捕获哈希的流氓 SMB 服务器

NTLM 中继

工具描述
ntlmrelayx支持多协议的完整 NTLM 中继框架

ntlmrelayx 支持:

  • 捕获服务器: SMB、HTTP/HTTPS、WCF(ADWS)、RAW、RPC、WinRM
  • 中继客户端: SMB、LDAP/LDAPS、HTTP/HTTPS、MSSQL、WinRM、RPC
  • 攻击: secretsdump、smbexec、ldapdump、RBCD 委派、ACL 滥用、影子凭据、ADCS ESC8、addcomputer、DNS 操纵等
  • 基础设施: 具有协议感知插件的 SOCKS5 代理、交互式控制台、REST API、多目标轮询、WPAD 服务

SQL Server

工具描述
mssqlclient支持 SQL/Windows/Kerberos 认证的交互式 MSSQL 客户端
mssqlinstance通过 SQL Browser 进行 MSSQL 实例发现

WMI

工具描述
wmiquery交互式 WMI 查询 shell
wmipersistWMI 事件订阅持久化

终端服务

工具描述
tstool终端服务会话和进程枚举

其他协议

工具描述
rdp_checkRDP 认证检查
mqtt_checkMQTT 认证检查
exchangerExchange Web Services 客户端

实用工具

工具描述
ntfs-read离线 NTFS 文件系统解析器
ping / ping6ICMP ping
sniff / sniffer网络数据包捕获
split拆分大文件

认证

所有网络工具支持三种认证方法:

root@kitploit:~
# Password
gopacket-secretsdump 'domain/user:password@target'

# NTLM hash (pass-the-hash)
gopacket-secretsdump -hashes ':nthash' 'domain/user@target'

# Kerberos (pass-the-ticket)
KRB5CCNAME=ticket.ccache gopacket-secretsdump -k -no-pass 'domain/user@target'

常用标志

标志描述
-hashes LMHASH:NTHASHNTLM 哈希认证(LM 哈希可以为空)
-k使用 Kerberos 认证
-no-pass不提示输入密码(与 -k 或 -hashes 一起使用)
-dc-ip IP域控制器的 IP 地址
-target-ip IP目标的 IP 地址(当使用主机名进行 Kerberos 时)
-port PORT目标端口(默认值因工具而异)
-proxy URL通过 SOCKS5 代理路由出站 TCP(例如 socks5h://127.0.0.1:1080)。UDP 功能被禁用。
-debug启用调试输出

快速示例

root@kitploit:~
# Dump domain hashes via DCSync
gopacket-secretsdump 'corp.local/admin:[email protected]'

# Interactive SMB shell
gopacket-smbclient -hashes ':aabbccdd...' 'corp.local/admin@fileserver'

# Kerberoast
gopacket-getuserspns 'corp.local/user:[email protected]'

# Golden ticket
gopacket-ticketer -nthash <krbtgt_hash> -domain-sid S-1-5-21-... -domain corp.local admin

# NTLM relay with SOCKS proxy
sudo gopacket-ntlmrelayx -t smb://target -socks

# LDAP relay for RBCD
sudo gopacket-ntlmrelayx -t ldaps://dc01.corp.local --delegate-access

# Route all outbound traffic through a SOCKS5 proxy
gopacket-secretsdump -proxy socks5h://127.0.0.1:1080 'corp.local/admin:[email protected]'

库

pkg/ 目录包含 24 个可独立导入的可复用协议包。

包描述
smb支持 NTLM 和 Kerberos 认证的 SMB2/3 客户端
ldap支持 NTLM/Kerberos 绑定的 LDAP 客户端
dcerpcDCE/RPC 客户端 + 20 个服务实现(DRSUAPI、SAMR、SVCCTL、LSARPC、WINREG、NETLOGON、DCOM、TSCH、EPMAPPER 等)
kerberosKerberos 客户端、票据伪造(黄金/白银)、S4U2Self/S4U2Proxy
ntlmNTLM 认证协议
relayNTLM 中继框架(服务器、客户端、攻击、SOCKS)
tdsSQL Server TDS 协议
ese可扩展存储引擎解析器
registryWindows 注册表配置单元解析器
ntfsNTFS 文件系统解析器
security安全描述符、ACL、SID
dpapiDPAPI 结构
mqttMQTT 协议客户端
session目标/凭据解析(domain/user:pass@host)
flags统一 CLI 标志框架

缺失功能(与 Impacket 相比)

gopacket 旨在实现与 Impacket 的完全对等。以下功能尚未实现:

中继协议客户端:

  • IMAP 中继客户端 + 攻击(需要 Exchange/IMAP 服务器)
  • SMTP 中继客户端(需要 SMTP 服务器)

中继攻击模块:

  • SCCM 策略/DP 攻击(需要 SCCM 基础设施)

独立工具:

  • ifmap.py(DCOM 接口映射)
  • mimikatz.py(通过 RPC 的有限 Mimikatz)
  • goldenPac.py(MS14-068 - 在已修补系统上已过时)
  • smbrelayx.py(已被 ntlmrelayx 取代)
  • kintercept.py(Kerberos 拦截)

这些差距优先级较低——大多数需要特定基础设施来测试,或已被更新的技术淘汰。

已知限制

这些是与 Impacket 共享的协议级限制,而非 gopacket 错误:

  • SMB 到 LDAPS 中继在已修补的 DC 上因 NTLM MIC 验证(CVE-2019-1040 之后)而失败。请改用 HTTP 强制。
  • WinRM 中继在已修补的 Server 2019+ 上被 EPA(扩展认证保护)阻止。
  • RPC 中继攻击(tschexec、enum-local-admins)需要 PKT_INTEGRITY,而中继会话中不可用。
  • LDAP 中继到端口 389在要求 LDAP 签名的 DC 上失败。请始终中继到 LDAPS(端口 636)。

有关每个问题的详细信息和变通方法,请参见 KNOWN_ISSUES.md。

报告问题与贡献

这是一个 beta 版本。预期会有错误,欢迎贡献。

为什么我们要求你先用 Impacket 测试

因为 gopacket 实现与 Impacket 相同的线协议,很大一部分 “错误”最终是环境性的,而非 gopacket 特有的—— 已修补的 DC、LDAP 签名要求、EPA、PKT_INTEGRITY、SMB 签名、 CVE-2019-1040 之后的 NTLM MIC 验证、缺少 SPN、时间偏差、DNS 怪癖、 防火墙规则等等。用 Impacket 并排运行相同操作可以消除环境因素:

  • 如果 Impacket 以相同方式失败,问题几乎总是 环境性的,并且很可能已在 KNOWN_ISSUES.md 中记录。无需错误报告。
  • 如果 Impacket 成功而 gopacket 失败,那是真正的 gopacket 错误, 正是我们想听到的。

这一单一的分诊步骤可以节省大量往返,所以请不要跳过它。

提交错误报告

  1. 用 Impacket 运行相同操作,并记录其成功或失败
  2. 使用 -debug 重新运行 gopacket 并捕获完整输出
  3. 发布前匿名化任何敏感信息。 GitHub issue 是公开的。 删除或替换真实主机名、IP 地址、用户名、密码哈希、 Kerberos 票据、域名、SID,以及任何可能 追溯到真实行动的输出行。将 corp.internal → example.local 和 dc01.corp.internal → dc01.example.local 替换是可以的——保留 数据的结构,只是不要保留识别值。如有疑问, 就涂黑它。
  4. 打开一个 GitHub issue 并包含:
    • 两份输出(gopacket 和 Impacket),以文本而非截图形式,已匿名化
    • 你运行的确切命令行(已匿名化)
    • 目标操作系统、AD 功能级别,以及任何相关的加固 (签名、EPA、通道绑定、补丁级别)
    • gopacket 版本 / 提交哈希

功能请求

打开一个 GitHub issue 描述用例 和 Impacket 中的对应功能(如果有)。如果该功能在上面的 “缺失功能”列表中,请说明是哪一个——这有助于我们确定优先级。

拉取请求

欢迎 PR。在打开之前:

  • 运行 go build ./...、go vet ./...、gofmt -l . 和 go test ./... 并确保它们全部干净通过
  • 匹配你正在修改的包中的现有代码风格
  • 保持更改聚焦——将重构与功能工作分开
  • 对于非平凡的更改,先打开一个 issue 讨论方法

为什么这对防御者很重要

威胁行为者正在远离 Python。编译型 Go 和 Rust 工具 (Sliver、BRC4、Geacon 和定制加载器)在真实入侵中正日益取代 Impacket。大多数防御工具和检测 逻辑是围绕 Impacket 基于 Python 的网络行为构建的,随着攻击者生态系统转向编译型语言, 这种覆盖正在被侵蚀。

gopacket 的存在部分是为了帮助安全社区领先于这一 转变。通过提供相同协议和技术的开源、可读的 Go 实现, 防御者和检测工程师可以:

  • 研究基于 Go 的工具在网络上的行为,而不是等到 在事件中遇到它
  • 理解 Go 和 Python 实现之间的协议级差异, 这些差异使现有签名效果降低
  • 运行逼真的紫队演练,使用威胁行为者正在采用的相同编译型、 单二进制工具,而不是仅针对在网络层行为不同的 Python 脚本进行测试

当新工具保持私有时,攻击者工具与防御者可见性之间的差距最大。 开源 gopacket 缩小了这一差距。

注意事项

  • Kerberos 认证需要有效的 ccache 文件(TGT 或服务票据)
  • 对于 Kerberos,请使用 FQDN 主机名——而不是 IP 地址
  • 如果未设置 KRB5CCNAME,工具将在当前目录中查找 <username>.ccache
  • 所有工具都支持 proxychains 和内部 -proxy SOCKS5 标志(参见代理支持)
  • 本项目仅用于授权的安全测试和研究目的

许可证

根据 Apache License 2.0 发布。

gopacket 是 Impacket 的纯 Go 重新实现;完整第三方致谢请参见 NOTICE。

下载工具