
什么是Impacket?
Impacket是用于处理网络协议的Python类的集合。Impacket专注于提供对数据包的低级程序访问,对于某些协议(例如:SMB1-3和MSRPC,协议实现本身。数据包可以从零开始构建,也可以从原始数据中解析,面向对象的API使得处理协议的深层层次结构变得简单。图书馆提供了一组工具,作为在此库中可以做什么的示例。
Impacket 可在 Fortra 的 github 库中下载。
协议
以太网,Linux“煮”捕获。
IP,TCP,UDP,ICMP,IGMP,ARP。
IPv4 和 IPv6 支持
NMB 和 SMB1、SMB2 和 SMB3(高级实现)。
MSRPC版本5,通过不同的传输:TCP,SMB / TCP,SMB / NetBIOS和HTTP。
Plain、NTLM 和 Kerberos 身份验证,使用密码/哈希/票/钥匙。
以下MSRPC接口的部分/完整实现:EPM、DTYPES、LSAD、LSAT、NRPC、RRP、SAMR、SRVS、WKST、SCMR、DCOM、WMI
TDS(MSSQL)和LDAP协议实现的部分。
工具
✅ 远程命令执行
psexec.py:使用RemComSvc(https://github.com/kavika13/RemCom)的PSEXEC类似功能示例。
smbexec.py:使用RemComSvc的PSEXEC w/o类似方法。here技术在这里描述。我们的实现更进一步,实例化了本地 smbserver 来接收命令的输出。在目标机器没有可写份额的情况下,这很有用。
atexec.py:此示例通过任务计划程序服务在目标计算机上执行命令,并返回已执行命令的输出。
wmiexec.py:一个半交互式shell,通过Windows Management Instrumentation使用。它不需要在目标服务器上安装任何服务/代理。以管理员身份运行。高度隐身。
dcomexec.py:类似于wmiexec.py的半交互式shell,但使用不同的DCOM端点。目前支持MMC20。应用程序、ShellWindows 和 ShellBrowserWindow 对象。
🔐 Kerberos 工具
GetTGT.py:给定一个密码,哈希或aesKey,这个脚本将请求一个TGT并将其保存为ccache。
GetST.py:给定一个密码,散列,aesKey或TGT在ccache,这个脚本将请求服务票,并将其保存为ccache。如果帐户限制了授权(具有协议转换)权限,则可以使用 -impersonate switch 代表其他用户申请票证。
GetPac.py:此脚本将获得指定目标用户的PAC(特权属性证书)结构,该结构只是具有正常身份验证的用户凭据。它通过使用[MS-SFU]的S4USelf +用户到用户Kerberos身份验证的混合来做到这一点。
GetUserSPNs.py:此示例将尝试查找和获取与普通用户帐户关联的服务主体名称。输出与 JtR 和 HashCat 兼容。
GetNPUsers.py:此示例将尝试列出并获取具有属性“不需要Kerberos预身份验证”集(UF_DONT_REQUIRE_PREAUTH)的用户的TGT。输出与JtR兼容。
rbcd.py: 用于处理目标计算机的 msDS-AllowedToActOnBehalfOfForIfOfUserIdentity 属性的示例脚本。
ticketConverter.py:此脚本将 mimikatz 常用的 kirbi 文件转换为 Impacket 使用的 ccache 文件,反之亦然。
ticker.py:此脚本将从头开始创建Golden/Silver票,或基于模板(从KDC合法要求),允许您自定义PAC_LOGON_INFO结构中设置的一些参数,特别是组,ExtraSids,持续时间等。
raiseChild.py:此脚本通过(ab)使用Golden Tickets和ExtraSids的概念实现了森林特权升级的子域。
🔍 凭据/机密提取
secretdump.py:执行各种技术,从远程机器中转储秘密,而无需在那里执行任何代理。对于 SAM 和 LSA Secrets(包括缓存的 creds),我们尝试尽可能多地从注册表中读取,然后将蜂巢保存在目标系统 (%SYSTEMROOT%\Temp 目录中)并从那里读取其余数据。对于 DIT 文件,我们使用 DL_DRSGetNCChanges() 方法转储 NTLM 哈希、Plaintext 凭据(如果可用)和 Kerberos 密钥。它还可以通过使用smbexec / wmiexec方法执行的vssadmin转储NTDS.dit。脚本启动其工作所需的服务,如果它们不可用(例如:远程注册表,即使已禁用)。工作完成后,事情恢复原状。
mimikatz.py:用于控制由@gentilkiwi开发的远程mimikatz RPC服务器的迷你外壳。
⚔️ 中间人攻击与服务模拟
ntlmrelayx.py:此脚本执行NTLM中继攻击,设置SMB,HTTP,WCF和RAW服务器,并将凭据中继到许多不同的协议(SMB,HTTP,MSSQL,LDAP,IMAP,POP3等)。
脚本可以与预定义攻击一起使用,当连接中继时(例如,通过 LDAP 创建用户)或可以在 SOCKS 模式下执行时,可以触发这些攻击。
在此模式下,对于中继的每个连接,它将通过 SOCKS 代理多次使用。karmaSMB.py:一个SMB服务器,无论指定的SMB共享和路径名如何,都可以回答特定的文件内容。
smbserver.py:一种 SMB 服务器的 Python 实现。允许快速设置共享和用户帐户。
🖥️ WMI
wmiquery.py:它允许在目标系统上发出WQL查询并获取WMI对象的描述(例如从win32_account中选择名称)。
wmipersist.py:此脚本创建/删除WMI事件消费者/过滤器,并在两者之间链接,以根据指定的WQL过滤器或计时器执行Visual Basic。
🧪 漏洞利用脚本
goldenPac.py:为 MS14-068 开发。保存金票,并在目标处启动PSEXEC会话。
sambaPipe.py:此脚本将利用CVE-2017-7494,通过 -so 参数上传和执行用户指定的共享库。
smbrelayx.py:使用SMB中继攻击为CVE-2015-0005开发。
如果目标系统正在强制签名并提供机器帐户,则模块将尝试通过NETLOGON收集SMB会话密钥。
📁 SMB/MSRPC 协议与系统信息操作
smbclient.py:一个通用的SMB客户端,可让您列出共享和文件,重命名,上传和下载文件,并创建和删除目录,所有这些都使用用户名和密码或用户名和哈希组合。这是一个很好的例子,看看如何使用impacket.smb在行动。
addcomputer.py:允许使用 LDAP 或 SAMR (SMB) 将计算机添加到域中。
getArch.py:此脚本将连接到目标(或目标列表)机器/s,并收集(ab)使用记录的MSRPC功能安装的操作系统架构类型。
excher.py:用于通过 HTTP v2 通过 RPC 连接到 MS Exchange 的工具。
lookupsid.py:通过[MS-LSAT] MSRPC接口的Windows SID暴力强制器,旨在寻找远程用户/组。
netview.py:获取在远程主机处打开的会话列表,并跟踪它们在找到的主机上循环,并跟踪谁从远程服务器登录/退出
reg.py:通过[MS-RRP] MSRP接口远程注册表操作工具。这个想法是提供与REG.EXE Windows实用程序类似的功能。
rpcdump.py:此脚本将转储在目标处注册的RPC端点和字符串绑定列表。它还将尝试将它们与众所周知的端点列表相匹配。
rpcmap.py:用于监听 DCE/RPC 接口的扫描。这与MGMT接口绑定,并获得接口UUID的列表。
如果 MGMT 接口不可用,则需要在野外看到的接口 UUID 列表,并尝试绑定到每个接口。samrdump.py:从MSRPC套件与安全帐户管理器远程接口通信的应用程序。
它列出了通过此服务导出的系统用户帐户、可用资源共享和其他敏感信息。services.py:此脚本可用于通过[MS-SCMR] MSRPC接口操作 Windows 服务。
它支持启动、停止、删除、状态、配置、列表、创建和更改。smbpasswd.py:此脚本是 smbpasswd 工具的替代品,用于在 SMB 上远程更改过期密码(MSRPC-SAMR)
changepasswd.py:在单个位置组合功能,通过不同协议更改或重置密码。
net.py: Windows net.exe 命令行实用程序的 Impacket 替代品。由于RPC协议,该工具使net.exe功能从远程计算机可用。
🛢️ MSSQL/TDS
mssqlinstance.py:从目标主机检索 MSSQL 实例名称。
mssqlclient.py:一个MSSQL客户端,支持SQL和Windows身份验证(也哈希)。也支持TLS。
🧬 文件格式
esentutl.py:一个扩展存储引擎格式实现。允许倾销ESE数据库的目录、页面和表格(例如NTDS.dit)
ntfs-read.py:NTFS 格式实现。此脚本提供了一个迷你外壳,用于浏览和提取 NTFS 卷,包括隐藏/锁定内容。
registry-read.py:Windwows 注册表文件格式实现。它允许解析离线注册表蜂巢。
🛠️ 其他工具
findDelegation.py:简单的脚本,可快速列出 AD 环境中的所有委派关系(不受约束、受限、资源受限 ) 。
GetADUsers.py:此脚本将收集有关域用户及其相应电子邮件地址的数据。
它还将包含一些有关上次登录和最后一个密码集属性的额外信息。Get-GPPPPsword.py:此示例使用流提取和解密组策略偏好设置密码,以处理文件,而不是挂载共享。此外,它可以脱机解析GPP XML文件。
mqtt_check.py:简单的 MQTT 示例,旨在使用不同的登录选项。可以很容易地转换成帐户/密码暴力。
rdp_check.py:[MS-RDPBCGR] 和 [MS-CREDSSP] 部分实现,以达到 CredSSP 身份验证。此示例测试帐户在目标主机上是否有效。
sniff.py:简单的数据包嗅探器,使用pcapy库通过指定的接口监听#中的数据包。
snighter.py:简单的数据包嗅探器,使用原始套接字来侦听与指定协议相对应的传输中的数据包。
ping.py:使用 ICMP 回声和回声回复数据包的简单 ICMP ping 来检查主机的状态。
如果远程主机向上,它应该用回声回复数据包来回复回声探头。ping6.py:简单的IPv6 ICMP ping,使用 ICMP 回声和回声回复数据包来检查主机的状态。
DumpNTLMInfo.py:它在 NTLM 身份验证模型中转储远程主机信息,没有 SMB 协议的凭据 (1/2/3)
-.-
评论区