一、Impacket 工具简介
Impacket 是一组用于处理网络协议的 Python 类集合,专注于提供对数据包的简单编程访问,实现了 SMB1-3、MSRPC 等多种网络协议。其面向对象的 API 便于处理复杂协议结构,还提供了一系列工具示例,展示各类基于其框架的操作。
支持的协议包括以太网、IP、TCP、UDP、ICMP 等基础网络协议,以及 SMB、MSRPC 等应用层协议,同时支持 NTLM、Kerberos 等身份验证方式,还部分或完全实现了多种 MSRPC 接口及 TDS、LDAP 等协议。
二、下载 Impacket
(一)从 GitHub 获取源码(推荐)
- 安装 Git 工具:
- Linux(Debian/Ubuntu):
sudo apt-get install git
- Windows:前往Git 官方网站下载安装
- macOS(Homebrew):
brew install git
- Linux(Debian/Ubuntu):
- 克隆仓库:
git clone https://github.com/SecureAuthCorp/impacket.git
(二)下载已编译版本
从 Impacket 的官方发布页面下载对应版本的压缩包(.tar.gz 或.zip),解压至目标目录即可。
三、安装 Impacket
(一)安装依赖项
- Python 解释器:推荐 Python 3.6 及以上版本(Python 2.x 已停止维护)。
- 其他依赖包:
# 基础依赖 pip install pyasn1 pycryptodomex pyOpenSSL ldap3 # 特定工具依赖 pip install ldapdomaindump flask # 用于ntlmrelayx.py pip install pyReadline # Windows环境专用
(二)安装 Impacket
- 源码安装:
cd impacket # 进入源码目录 python3 setup.py install # Python 3.x # 或 python setup.py install # Python 2.x(不推荐)
- pipx 安装(系统级推荐):
安装pipx(以Linux为例) sudo apt-get install pipx # 安装Impacket稳定版 python3 -m pipx install impacket
(三)Kali 更新问题及虚拟环境的使用
1. 常见更新问题
Kali 无法更新多因软件源配置错误、网络不稳定或版本过旧导致,此时虚拟环境是理想解决方案。
2. 虚拟环境优势
提供独立隔离的运行空间,避免系统环境干扰,且操作风险可控,便于维护调试。
3. 搭建步骤
# 安装virtualenv
sudo apt-get install python3-virtualenv
# 创建虚拟环境
python3 -m virtualenv impacket_env
# 激活虚拟环境
# Linux/macOS:
source impacket_env/bin/activate
# Windows:
impacket_env\Scripts\activate
# 退出虚拟环境
deactivate
在激活的虚拟环境中,按上述 Impacket 安装步骤操作即可避开系统更新问题。
四、使用 Impacket 工具
(一)远程执行工具
-
psexec.py(类似 PSEXEC,通过服务执行命令):
# 不带命令参数:打开交互式 shell python psexec.py username:password@target_ip # 带命令参数:执行单个命令并返回结果 python psexec.py username:password@target_ip "ipconfig" # 哈希认证(格式:LMHash:NTHash) python psexec.py -hashes lmhash:nthash username@target_ip "net user"
-
smbexec.py(与 psexec 类似,但使用本地 SMB 服务器接收输出):
# 交互式 shell(需目标有可写共享) python smbexec.py username:password@target_ip # 执行单个命令(适用于无写权限共享的场景) python smbexec.py username:password@target_ip "systeminfo" # 哈希认证 python smbexec.py -hashes lmhash:nthash username@target_ip "net users"
特点:- 无需在目标系统创建服务,通过本地 SMB 服务器接收输出
- 适合目标系统无写权限共享(如只读共享)的场景
- 执行后会在本地临时生成
output
文件存储命令结果
-
wmiexec.py(通过 WMI 实现半交互式 shell):
python wmiexec.py username:password@target_ip
-
atexec.py(利用任务计划服务执行命令):
python atexec.py username:password@target_ip
-
dcomexec.py(通过 DCOM 执行命令,需特定权限):
python dcomexec.py username:password@target_ip
(二)票据相关工具
-
GetTGT.py(请求 TGT 票据并保存为 ccache):
python GetTGT.py domain/username:password -dc-ip dc_ip
-
GetST.py(请求服务票据,支持约束委派 impersonate):
python GetST.py -spn service_principal_name domain/username -dc-ip dc_ip
(三)其他常用工具
-
smbclient.py(SMB 客户端,用于文件操作):
# 连接远程SMB服务 python smbclient.py username:password@target_ip # 交互命令:shares(列共享)、use share_name(挂载共享)、get/put(下载/上传)
-
secretsdump.py(提取本地密码哈希):
proxychains4 python secretsdump.py -hashes lmhash:nthash domain/username@target_ip
-
dcsync.py(提取域控信息):
proxychains4 python dcsync.py -hashes lmhash:nthash domain/admin@dc_host -all
工具对比表
工具 | 执行方式 | 输出获取方式 | 适用场景 |
---|---|---|---|
psexec.py | 创建服务 | 服务返回 | 标准场景,需 SYSTEM 权限 |
smbexec.py | 本地 SMB 服务器 | 临时文件 | 无写权限共享的场景 |
wmiexec.py | WMI 协议 | 交互式 shell | 隐蔽性要求高,需管理员权限 |
atexec.py | 任务计划服务 | 任务执行结果 | 目标无服务创建权限 |
dcomexec.py | DCOM 接口 | 交互式 shell | 需高权限(如域管理员) |
五、注意事项与法律声明
- 法律合规:必须获得目标系统所有者的明确授权,未经授权使用属违法行为。
- 安全风险:操作前做好测试环境验证,避免影响生产系统。
- 工具更新:定期更新 Impacket 至最新版本,以获取新功能和安全修复。