Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

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

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

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

工具目录

分类

查看所有分类
Loading categories
icebreaker — 当你在内部网络但不在AD环境时,获取明文Active Directory凭据。 | Kitploit
工具/GitHubGitHub/danmcinerney/icebreaker
密码破解侦察漏洞分析后渗透利用渗透测试红队
GitHubdanmcinerney/icebreaker

icebreaker

当你在内部网络但不在AD环境时,获取明文Active Directory凭据。

查看仓库
1.2k15967年前Kitploit 审核通过

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

icebreaker

打破那个可爱的Active Directory环境的冰。当你孤独寒冷地凝视着一个Active Directory派对,却连一个AD凭据都没有,无法加入狂欢时,这个工具就是为你准备的。

它依次自动化执行5种针对Active Directory的内部网络攻击,为你交付明文凭据。使用--auto选项,可在获得立足点后自动获取域管理员权限。

概要详情

以下攻击按顺序执行,直至第四和第五种攻击(它们并行且无限期运行)。

  • 反向暴力破解
    • 自动获取用户名列表,并用两个最常见的AD密码(超过两次尝试可能触发账户锁定策略)逐一测试
  • 上传到网络共享
    • 通过恶意文件上传到可用网络共享来捕获用户密码
  • 毒化广播网络协议
    • 利用常见网络协议诱骗用户计算机向你发送密码
  • 中间人SMB连接
    • 对AD计算机执行远程命令执行以收集密码
  • 毒化IPv6 DNS
    • 利用DNS欺骗AD计算机将其用户密码发送给你

技术细节

以下技术中捕获的所有NetNTLMv2哈希值均使用JohnTheRipper和一个长度为100万的AD专用密码列表自动破解。

  • 反向暴力破解
    • 使用rpcclient查找接受空SMB会话的主机
    • 使用ridenum通过RID循环在空SMB主机上发现有效用户名
    • 可选择使用theHarvester从指定互联网域收集更多潜在用户名
    • 对发现的用户名执行2密码反向暴力破解,或可指定密码列表
    • 默认测试密码:P@ssw0rd和<当前季节><年份>,例如Spring2018
  • SCF上传
    • 使用Nmap通过NSE脚本smb-enum-shares查找匿名可写网络共享
    • 向共享写入一个SCF文件,其文件图标路径指向你的机器
    • 当AD用户在文件资源管理器中打开该共享时,其NetNTLMv2哈希值会发送给你
  • LLMNR/NBTNS/mDNS毒化
    • 使用Responder.py毒化第2层广播/多播网络协议(LLMNR、NBT-NS、mDNS),捕获NetNTLMv2哈希值
  • SMB中继
    • 使用ntlmrelayx.py和Responder.py中继SMB哈希值
    • 使用Nmap通过NSE脚本smb-security-mode识别易受攻击的中继目标
    • 易受攻击的目标将启用SMBv1且禁用SMB签名
    • 成功中继哈希值将导致捕获用户的NetNTLMv2哈希值,并自动破解
    • 如果用户哈希值被中继到一台机器且该用户是本地管理员,将执行命令并远程执行以下操作:
      • 添加一个管理员用户 - icebreaker:P@ssword123456
      • 运行经过混淆并绕过AMSI的Mimikatz版本
      • 解析Mimikatz输出以获取NTLM哈希值和明文密码
      • 运行经过混淆并绕过AMSI的Invoke-PowerDump版本以获取SAM哈希值
      • 解析输出以获取NTLM哈希值
  • IPv6 DNS毒化
    • 使用mitm6和ntlmrelayx.py毒化IPv6 DNS以捕获NetNTLMv2用户哈希值
    • 创建带有认证的虚假WPAD服务器
    • IPv6 DNS在Active Directory环境中默认启用
    • 注意:这可能导致用户的网络连接问题

工作原理

它将按顺序执行上述5种网络攻击。反向暴力破解和SCF文件上传通常很快,然后它会停留在第3种攻击(Responder.py)上,默认持续10分钟。在该时间(或用户指定的时间)过去后,它将进入最后两种攻击,这两种攻击并行且无限期运行。

如果发现任何主机允许空SMB会话,icebreaker将使用ridenum执行RID循环以获取有效用户名。如果你使用"-d <somedomain.com>"选项,theHarvester将从指定网站抓取电子邮件地址。任何与AD兼容的电子邮件用户名都将被添加到反向暴力破解用户名列表中。Icebreaker使用asyncio库,通过linux工具rpcclient并使用10个异步工作线程执行反向暴力破解。

SCF上传攻击滥用Shell命令文件攻击匿名可写网络共享。SCF是可以执行基本操作(如显示桌面或打开文件资源管理器窗口)的文件。它们有一个奇特的属性:允许你将其文件图标设置为网络路径。如果你将此网络路径设置为你自己的机器,在文件资源管理器中打开该文件共享的用户将自动将其NetNTLMv2密码哈希值发送给你。Icebreaker使用Nmap脚本smb-enum-shares查找匿名可写共享,然后自动生成并上传包含有效载荷的SCF。

第三种攻击使用Responder.py毒化LLMNR、NBT-NS和mDNS多播/广播协议。当用户导航到一个不存在的网络路径时,Responder会告诉他们你的攻击者机器是正确的路径。用户的NetNTLMv2密码哈希值现在归你了。Responder会捕获通过SCF攻击发送的哈希值,但下一种攻击通常对捕获SCF哈希值更有用,因为它有可能使用该哈希值执行命令。

SMB中继是一种古老的网络攻击,攻击者将自己置于SMB客户端和SMB服务器之间。这使攻击者能够捕获并中继NetNTLMv2哈希值到启用了SMBv1且禁用了SMB签名的主机。使用Impacket库中的ntlmrelayx.py进行中继,同时使用Responder.py进行SMB连接的中间人攻击。如果SMB客户端用户对网络上任何禁用了SMB签名的主机拥有管理权限,ntlmrelayx.py将在该主机上执行命令。

一旦ntlmrelayx中继了一个捕获的哈希值,它将运行一个base64编码的powershell命令,该命令首先添加一个管理员用户(icebreaker:P@ssword123456),然后运行一个经过混淆并绕过AMSI的Mimikatz版本,接着运行一个经过混淆并绕过AMSI的Invoke-PowerDump版本。Invoke-Mimikatz和Invoke-PowerDump的输出会被解析为明文密码或NTLM哈希值,并交付给用户,显示在标准输出以及found-passwords.txt文件中。NTLM哈希值与NetNTLMv2哈希值不同,可以像明文密码一样用于对其他AD主机的认证。唯一需要注意的是,自从微软的KB2871997补丁之后,只有内置的RID 500本地管理员账户才能用于传递哈希攻击。

最后一种攻击使用工具mitm6对整个网络执行中间人IPv6 DNS攻击。这迫使网络上的主机使用攻击者的机器作为其DNS服务器。一旦设置为他们的DNS服务器,攻击者将向受害者提供恶意的WPAD代理设置文件,并收集他们的NetNTLMv2哈希值。这些哈希值使用ntlmrelayx.py进行中继,以进一步实现远程代码执行。需要注意的一点是,这种攻击容易在网络中引发问题。它通常会在客户端的浏览器中导致证书错误,还可能减慢网络速度。然而,这种攻击的美妙之处在于,Windows AD环境默认是存在漏洞的。

如果icebreaker使用--auto [tmux/xterm]标志运行,那么当到达第4种攻击时,icebreaker将在tmux会话或xterm窗口中运行Empire和DeathStar。使用此选项时,icebreaker不会在我们中继哈希值的远程主机上运行mimikatz,而是添加一个管理员用户,然后运行Empire的powershell启动器代码以在远程机器上获取一个代理。DeathStar将利用这个代理自动完成获取域管理员的过程。Empire和DeathStar不会在你退出icebreaker时关闭。

密码破解使用JohnTheRipper和一个自定义词表完成。该词表的来源是merged.txt,它包含了SecLists GitHub账户中所有密码的组合。词表经过修剪,不包含:全小写、全大写、全符号、少于7个字符、多于32个字符的密码。这些规则符合Active Directory的默认密码要求,并将词表从2000万缩减到刚好超过100万,这使得密码破解极快。

安装

以root身份运行:

root@kitploit:~
./setup.sh
pipenv install --three
pipenv shell

运行pipenv install后可能会遇到错误。如果是这种情况,请更新到高于11.9.0的pipenv版本。你可以从github克隆pipenv,然后在文件夹内运行apt-get remove python-pipenv && python setup.py install。

Docker使用

Docker镜像还有一些bug需要解决,因此这可能会出错,但已接近完成。从Git仓库:

root@kitploit:~
docker build --rm -t danmcinerney/icebreaker .
docker run danmcinery/icebreaker

或者附加你通常会添加到icebreaker的命令(不要忘记映射卷):

root@kitploit:~
docker run -v $(pwd)/logs:/icebreaker/logs -v $(pwd)/hashes:/icebreaker/hashes -v $(pwd)/icebreaker-scan.xml:/icebreaker/icebreaker-scan.xml -v $(pwd)/submodules:/icebreaker/submodules -e PYTHONUNBUFFERED=0 danmcinerney/icebreaker -x icebreaker-scan.xml

**注意:你需要使用docker的-p <host>:<container>标志映射监听器端口。

用法

以root身份运行。 从一个以换行符分隔的IP地址列表(单个IP或CIDR范围)中读取,并让ntlmrelayx在哈希中继后不在受害者机器上添加用户并运行mimikatz,而是在受害者机器上执行自定义命令。在此示例中,我们提供了一个类似于Empire可能提供的powershell启动器单行命令。

./icebreaker -l targets.txt -c "powershell -nop -w hidden -exec bypass -enc WwFk..."

从主机列表读取,告诉Responder使用eth0接口而不是默认网关接口,让Responder运行30分钟而不是通常的10分钟,并运行默认的ntlmrelayx中继后命令以从受害者服务器中转储SAM。

./icebreaker -l targets.txt -i eth0 -t 30 -c default

使用一个Nmap XML输出文件,跳过所有五种攻击并且不自动破解哈希值,并使用自定义密码列表进行反向暴力破解攻击(注意:由于此示例通过'-s rid'跳过了攻击1,指定的密码列表实际上不会被使用;这只是一个示例)

./icebreaker.py -x nmapscan.xml -s rid,scf,llmnr,relay,dns,crack -p /home/user/password-list.txt

即发即忘用法:输入目标文件,抓取companydomain.com的电子邮件用户名以添加到反向暴力破解攻击中,跳过mitm6的IPv6 DNS毒化,并在第4种攻击开始时在tmux或xterm窗口中运行Empire和DeathStar,以获得自动域管理员权限。此用法的目标是周一早上9点发出命令,然后去享受一个短暂且不间断的休息,直到周五下午4:30,届时我们会有一个域管理员shell等着我们。我们跳过第5种攻击(mitm6),因为它有时会导致网络问题,我们不希望愤怒的客户打扰我们辛苦赚来的休息。

./icebreaker.py -l targets.txt -d companydomain.com -s dns --auto [tmux/xterm]

下载工具