Dolos Cloak
Dolos Cloak 是一个 Python 脚本,旨在帮助网络渗透测试人员和红队绕过 802.1x 解决方案,通过使用高级中间人攻击。该工具能够搭便车在已允许访问目标网络的受害者设备的有线连接上,而不会将受害者设备踢出网络。它设计运行在运行 Kali ARM 的 Odroid C2 上,需要两个外部 USB 以太网适配器。该工具应该可以在其他硬件和发行版上运行,但迄今为止仅在 Odroid C2 上经过测试。
作者:Forrest Kasler (fkasler)(ph3eds)

工作原理
Dolos Cloak 使用 iptables、arptables 和 ebtables 的 NAT 规则来伪装成受信任网络设备的 MAC 和 IP 地址,并融入常规网络流量。启动时,脚本禁止任何出站网络流量离开 Odroid,以隐藏其网络接口的 MAC 地址。
接下来,脚本创建一个桥接接口,并将两个外部 USB 以太网适配器添加到该桥接中。所有流量(包括任何 802.1x 认证步骤)通过这两个接口之间的桥接进行转发。在此状态下,设备充当一个窃听器。一旦 Odroid 被插入到受信任设备(台式机、IP 电话、打印机等)与网络之间,脚本会监听桥接接口上的数据包,以确定受害者设备的 MAC 地址和 IP。
一旦脚本确定了受害者设备的 MAC 地址和 IP,它会配置 NAT 规则,使得 OUTPUT 和 POSTROUTING 链上的所有流量看起来都来自受害者设备。此时,设备能够与网络通信而不被发现。
一旦 Odroid 成功伪装成受害者设备的 MAC 地址和 IP,脚本会发送一个 DHCP 请求以确定其默认网关、搜索域名和名称服务器。它利用响应来配置网络设置,以便设备能够与网络的其余部分通信。
此时,Odroid 作为网络上的隐蔽据点。操作员可以通过内置网卡 eth0 连接到 Odroid,以获得网络访问权限。该设备还可以配置为发送反向 shell,以便操作员将其用作跳板,并远程在网络上执行命令。例如,脚本可以配置为在运行中间人攻击后执行 Empire Python 启动器。然后,您可以使用 Empire C2 连接升级为 TCP 反向 shell 或 VPN 隧道。
安装和使用
- 在 Odroid C2 上默认安装 Kali ARM。查看 Blackhills 的说明 这里。
- 确保将此项目保存到 /root/tools/dolos_cloak
- 将一个外部 USB 网卡插入 Odroid,并运行 dhclient 以获取互联网访问权限,以便安装依赖项:
- 运行安装脚本以获取所有依赖项,并将 Odroid 设置为默认在启动时执行中间人攻击。请注意,这将大幅更改设备的网络设置并禁用 Network Manager。您可能希望在此步骤之前下载其他工具:
- 您可能希望安装一些 Kali ARM 不标配的工具,例如 'host'。Empire、enum4linux 和 responder 也是不错的补充。
- 确保您可以通过内置网卡 eth0 通过 SSH 连接到 Odroid。将您的公钥添加到 /root/.ssh/authorized_keys 以便快速访问。
- 修改 config.yaml 以满足您的需求。您应确保接口名称与您的 Odroid 分配给 USB 适配器的默认名称匹配。顺序无关紧要。除非您使用 LAN 嗅探器捕获了它们,否则应将 client_ip、client_mac、gateway_ip 和 gateway_mac 留空。脚本 应该 能够自行判断。仅当您确切知道其值时才设置这些选项。management_int、domain_name 和 dns_server 选项目前只是占位符,但很快就会有用。对于 shell,您可以在 config.yaml 中设置自定义自动运行命令,以便在中间人攻击自动配置完成时执行。您也可以设置一个 cron 任务来发送反向 shell。
- 连接两个 USB 以太网适配器,然后重启设备(您需要两个,因为内置以太网不支持混杂模式)
- 启动设备,等待几秒钟,让 autosniff.py 阻止 OUTPUT 以太网和 IP 链。然后将 Odroid 插入到受信任设备与网络之间。
- 攻陷菜鸟,赚钱,玩得开心,黑掉星球
提示
- 修改并运行 ./scripts/upgrade_to_vpn.sh,将一个隐蔽的 Empire agent 转换为完整的 VPN 隧道
- 修改并运行 ./scripts/reverse_listener_setup.sh,在设备上设置一个端口用于反向监听器。
- 运行 ./scripts/responder_setup.sh,以控制我们为 responder 捕获的协议。您应在桥接接口上运行 responder:
- 注意:某些 NAC 解决方案使用端口 445、443 和 80 定期验证主机。正在研究解决方案...
- 日志在 autosniff.py 行为异常时很有用。rc.local 被设置为将当前会话日志存储在 ./logs/session.log,并将历史日志存储在 ./logs/history.log,这样即使重启,我们也可以检查上一次会话的日志。日志文件包含网络信息、错误消息以及所有用于设置 NAT 忍者魔法的 bash 命令。
隐蔽性
使用 radio_silence 参数以防止任何来自我们的输出。这仅用于嗅探目的。
许可证
本项目是对 @jkadijk 编写工具的全面重写,并使用了原项目的类结构。根据他的要求:
"如果你在此基础上构建,请给我一些荣誉,并保持开源 :)" - @jkadijk