Duo RDP双因素身份验证防护绕过
2020-06-18 10:34:51 Author: xz.aliyun.com(查看原文) 阅读量:564 收藏

简介

  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或控制台会话。

症状-1:

The username you have entered is not enrolled with Duo Security. Please contact your system administrator.(您输入的用户名没有在Duo Security注册)。

症状-2:

Access Denied. The username you have entered cannot authenticate with Duo Security. Please contact your system administrator.(拒绝访问,您输入的用户名无法通过Duo Security进行身份验证)。

症状-3:

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仪表板保护)。


注:Duo Security保护的用户名或用户名别名在多次登录失败后可能会出现此提示:Your account has been locked out due to excessive authentication failures(已被锁定,该用户超过了自动锁定阈值),得在Duo仪表板里Require two-factor authentication(default)选项重新激活。

解决方案

Shell命令行绕过

利用目标机器的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

如果执行ipconfig /displaydns命令没有找到Duo API DNS缓存记录,这时可以尝试新建一个管理员账户密码,然后用Microsoft RDP登录,再执行ipconfig /displaydns命令时就能看到Duo API DNS缓存记录了。
千万不要使用目标机器上已有的管理员账户登录,因为它们可能已在Duo Security注册并保护,如果用已有的管理员账户进行登录就会向手机端Duo Mobile应用发送推送信息。

ARP+DNS欺骗绕过

利用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...]
Ettercap ARP+DNS欺骗配置:
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


如果停止ARP、DNS欺骗并关掉Ettercap软件以后DNS解析记录仍然是127.0.0.1,这时只需在受害者机器上执行“ipconfig /flushdns”命令刷新一下DNS解析缓存就好了。另外ARP、DNS欺骗这类攻击方式动静都比较大,不是迫不得已的情况下并不建议使用。

文章来源: http://xz.aliyun.com/t/7880
如有侵权请联系:admin#unsafe.sh