欢迎光临
我们一直在努力

用python编写的后渗透工具Impacket

Impacket是用于处理网络协议的Python类的集合。Impacket专注于提供对数据包和某些协议(例如SMB1-3和MSRPC)的低级编程访问协议实现本身。
数据包可以从头开始构建,也可以从原始数据中解析出来,面向对象的API使得使用深层次的协议很容易。该库提供了一系列工具,作为在该库的上下文中可以完成的示例。

在Impacket中有以下协议

  • 以太网,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协议实现的部分内容。

Impacket中提供了以下工具

远程执行

  • psexec.py:使用RemComSvc的PSEXEC类似功能示例(https://github.com/kavika13/RemCom)。
  • smbexec.py:使用RemComSvc的PSEXEC w / o的类似方法。这里描述的技术。我们的实现更进一步,实例化本地smbserver以接收命令的输出。这在目标机器没有可用的可写共享的情况下很有用。
  • atexec.py:本示例通过Task Scheduler服务在目标计算机上执行命令,并返回执行的命令的输出。
  • wmiexec.py:通过Windows Management Instrumentation使用的半交互式shell。它不需要在目标服务器上安装任何服务/代理。以管理员身份运行。非常隐蔽。
  • dcomexec.py:类似于wmiexec.py的半交互式shell,但使用不同的DCOM端点。目前支持MMC20.Application,ShellWindows和ShellBrowserWindow对象。

Kerberos的

  • GetTGT.py:给定密码,散列或aesKey,此脚本将请求一个TGT并将其保存为ccache。
  • GetST.py:在ccache中给定一个密码,哈希,aesKey或TGT,这个脚本将请求一个Service Ticket并将它保存为ccache。如果帐户限制了授权(使用协议转换)特权,则您将能够使用-impersonate开关代表另一个用户请求票证。
  • GetPac.py:此脚本将获得指定目标用户的PAC(特权属性证书)结构只具有正常的经过身份验证的用户凭证。它通过使用[MS-SFU]的S4USelf +用户到用户Kerberos认证的混合来实现。
  • GetUserSPNs.py:此示例将尝试查找和获取与普通用户帐户关联的服务主体名称。输出与JtR和HashCat兼容。
  • GetNPUsers.py:此示例将尝试列出并获取具有“不需要Kerberos预认证”属性(UF_DONT_REQUIRE_PREAUTH)属性的用户的TGT。输出与JtR兼容。
  • ticketer.py:该脚本将从零开始或基于模板(从KDC合法请求)创建Golden / Silver票据,允许您自定义PAC_LOGON_INFO结构中设置的一些参数,特别是组,ExtraSids,持续时间等。
  • raiseChild.py:该脚本使用Golden Tickets和ExtraSids的概念,通过(ab)实现了子域到森林特权升级。

Windows秘密

  • secretsdump.py:执行各种技术来从远程机器转储秘密而不执行任何代理。对于SAM和LSA秘密(包括缓存信用),我们尽可能从注册表中读取数据,然后将目标系统中的配置单元(%SYSTEMROOT%\ Temp目录)保存并从其中读取其余数据。对于DIT文件,我们使用DL_DRSGetNCChanges()方法转储NTLM哈希,纯文本凭据(如果可用)和Kerberos密钥。它也可以通过使用smbexec / wmiexec方法执行的vssadmin来转储NTDS.dit。如果脚本不可用(例如远程注册表,即使它被禁用),该脚本将启动其工作所需的服务。工作完成后,事情恢复到原来的状态。
  • mimikatz.py:用于控制由@gentilkiwi开发的远程mimikatz RPC服务器的迷你shell。

服务器工具/ MiTM攻击

  • ntlmrelayx.py:该脚本执行NTLM中继攻击,设置SMB和HTTP服务器,并将证书转发给许多不同的协议(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 Relay Attack攻击CVE-2015-0005。如果目标系统正在执行签名并提供了计算机帐户,则该模块将尝试通过NETLOGON收集SMB会话密钥。

SMB / MSRPC

  • smbclient.py:通用的SMB客户端,可让您列出共享和文件,重命名,上传和下载文件以及创建和删除目录,全部使用用户名和密码或用户名和散列组合。这是一个很好的例子,可以看到如何在实际中使用impacket.smb。
  • getArch.py​​:此脚本将连接目标(或目标列表)计算机,并使用记录的MSRPC功能收集由(ab)安装的操作系统体系结构类型。
  • rpcdump.py:该脚本将转储在目标上注册的RPC端点和字符串绑定列表。它也会尝试将它们与众所周知的端点列表进行匹配。
  • ifmap.py:该脚本将绑定到目标的MGMT接口以获取接口ID列表。它会将该列表用在野外看到的另一个接口UUID列表的顶部,试图绑定到每个接口并报告接口是否已列出和/或正在监听。
  • opdump.py:这绑定到给定的主机名:端口和MSRPC接口。然后,它会依次调用每个前256个操作号码,并报告每个呼叫的结果。
  • samrdump.py:与MSRPC套件中的安全帐户管理器远程接口通信的应用程序。它列出了系统用户帐户,可用资源份额以及通过此服务导出的其他敏感信息。
  • services.py:此脚本可用于通过[MS-SCMR] MSRPC界面操作Windows服务。它支持启动,停止,删除,状态,配置,列表,创建和更改。
  • netview.py:获取在远程主机上打开的会话列表,并跟踪它们循环遍历找到的主机,并跟踪从远程服务器登录/登出的人员
  • reg.py:通过[MS-RRP] MSRPC接口远程注册表处理工具。这个想法是提供与REG.EXE Windows实用程序相似的功能。
  • lookupsid.py:通过[MS-LSAT] MSRPC接口的Windows SID暴力破解器示例,旨在查找远程用户/组。

MSSQL / TDS

文件格式

  • esentutl.py:Extensibe存储引擎格式实现。允许转储ESE数据库的目录,页面和表格(例如NTDS.dit)
  • ntfs-read.py:NTFS格式的实现。该脚本提供了一个用于浏览和提取NTFS卷的迷你外壳,包括隐藏/锁定的内容。
  • registry-read.py:一个Windwows Registry文件格式实现。它允许解析离线注册表配置单元。

其他

  • GetADUsers.py:该脚本将收集有关该域用户及其相应电子邮件地址的数据。它还将包含有关上次登录和上次密码设置属性的一些额外信息。
  • mqtt_check.py:简单的MQTT示例,旨在使用不同的登录选项进行播放。可以很容易地转换成帐户/密码暴力破解软件。
  • rdp_check.py:[MS-RDPBCGR ]和[MS-CREDSSP]部分实现仅用于达到CredSSP身份验证。此示例测试目标主机上的帐户是否有效。
  • sniff.py:简单的数据包嗅探器,它使用pcapy库监听指定接口上传输的数据包。
  • sniffer.py:简单的数据包嗅探器,它使用原始套接字来侦听与指定协议相对应的传输数据包。
  • ping.py:使用ICMP echo和echo-r​​eply数据包检查主机状态的简单ICMP ping。如果远程主机启动,它应该回复echo回复数据包。
  • ping6.py:使用ICMP回显和echo-r​​eply数据包检查主机状态的简单IPv6 ICMP ping。

赞(0) 打赏
未经允许不得转载:IT新闻网 » 用python编写的后渗透工具Impacket
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏