用手机从锁定的计算机中偷取凭证信息

简介

Room362之前发布从锁定计算机中盗取凭证信息一文,其中的方法很棒。这种攻击方式之所以能成功,主要原因在于系统访问设备的时候,会自动加载设备驱动,即便计算机处在锁定状态也是如此,当然也包括USB网络适配器的驱动程序。

了解到这一点之后,我们就可以尝试用Android网络共享功能——也就是所谓的Tethering来创建网络。启用网络共享功能之后,手机设备就能够接收来自主机的所有通信数据,手机是作为网关存在。这样一来要执行中间人攻击简直轻而易举。

本文中,我将为大家讲解其中涉及的步骤,工具,以及进行一次成功攻击所需要的配置。

Android网络共享功能

Android设备进入USB Tethering网络共享模式的时候,系统会在USB接口新增一个USB接口描述符并重启。

主机操作系统会查询Android设备,也就是通过USB端口连接手机的时候, 它会接收USB网络设备描述符,之后加载驱动程序。

驱动一旦加载,主机操作系统会创建一个新的网络接口(通过USB)。主机处理该网络接口与处理其他接口的方式没有差别。此时USB连接处在活跃状态,主机就会发送DHCP请求来获取IP。

在原生的Android网络共享配置中,系统会用dnsmasp建立一个DHCP和DNS服务器来响应该请求。它为主机提供连接到网络所需的IP地址以及路由信息。

在Android Tethering网络共享的具体实施中,这些配置细节是硬编码到Tethering.java程序包中的。显然,在已获得root权限的Android设备中,我们自己动手配置这些信息不是难事。

除此之外,iptables转发规则可以设置为从USB到外部接口(通常为Wi-Fi或3G)间转发流量。完成这项操作后,主机就可以使用USB网络连接到互联网了(即网络共享功能)。

中间人攻击

攻击者在网络中投放恶意数据包,迫使网络设备连接攻击者的网络,那么发动中间人攻击也就不需要Tethering了。就像前文所说的那样,通过Tethering网络共享连接的话,主机所有的流量都会流经设备。

即便设备连接到其他网络,部分网络流量还是会流经USB网络,这对于某些身份凭证信息的泄露已经足够了。

盗取凭证

这一例中,中间人攻击工具我们选择了Responder。这是个被动凭证收集工具,Responder监听指定的NetBIOS Name Service(NBT-NS)以及本地链路多播名称解析 (LLMNR)查询。该工具包含了通过TCP和UDP端口监听的欺骗身份验证服务器。

受害者被重定向至这些服务器,这样就能获取到这些人的身份验证凭证了。

使用Responder劫持流量并捕获凭证非常高效。特别是当用户在网上的动作比较活跃的时候(例如,浏览网页,访问内部共享等)。

从锁定机器中盗取凭证

该攻击向量首先假定用户不在或者在网络中不活跃。还有些先决条件,用户之前必须已经登录过主机,或者说已经在主机上进行过身份认证,另外当然也需要我们能够实际接触到这台主机及其USB端口。

网络代理自发现协议 (WPAD)协议可用来自动定位proxy auto-config (PAC)文件。PAC的位置可以通过DHCP响应“site-local”选项252(即auto-proxy-config)与“ http://example.com/wpad.dat”值提供给用户。

DHCP比DNS拥有更高的优先权。如果DHCP提供WPAD URL,则DNS不会执行查询,这只适用于DHCPv4。在DHCPv6中没有定义WPAD选项。

所有的Web浏览器都支持该协议,包括Windows,MacOSX,Linux以及iOS和Android系统的。不过默认只有在Windows操作系统中启用。

方法结合

谈到网络共享功能和DHCP,我们前面已经提过,用Android设备可以创建网络和DHCP服务器。使用Android的dnsmasq也可以很方便的创建DHCP服务器,并且配置WPAD选项指向Responder。

至于身份验证,在锁定的计算机上之所以可以这样攻击是因为代理自动配置文件包含了DHCP响应所需的细节信息。

当主机尝试检索PAC文件,Responder的HTTP服务会返回一个“(407)身份验证请求”信息。在大多数情况下,主机通过用户缓存的凭证进行身份验证。

Windows使用NTLM协议来完成认证,这是个challenge-response身份验证协议。用户密码hash以及challenge-response步骤在此作为用户身份验证的token。

虽然没有明文凭证可供攻击者直接使用,但破解出hash并获得用户密码还是有可能的。如果密码强度比较弱,那么破解所需的时间不会太长。

不过对于刚启动的机器来说由于还没有缓存凭证,所以这种攻击方式是无效的。然而一旦用户先前就进行过身份验证,主机就可以尝试再次获取文件。

不过还面临一个挑战,就是如何在Android设备上跑Responder(这是个Python项目)。这里提供多种解决方案供考虑,最简单粗暴的方法就是安装qPython应用。

qPython是一款针对Android的Python编译器,它能够完美的运行Responder。还有个替代方案是安装NetHunter,NetHunter是从Kali Linux移植到Android之上的,同样的它也包含Python编译器。

一台已root的Android设备,一颗好奇的心?

安装qPython,下载脚本和Responder,然后按指示进行。

这段视频展示的是Windows 10锁屏界面。测试主机最新安装了Windows操作系统,且没有加入任何域,未连接到其他任何网络,用户之前通过了身份验证后锁定了屏幕。

连接一台Android设备,运行上面提到的Responder脚本。注意在执行Responder后的几秒钟,在没有进行任何交互的情况下,用户的NTLM hash已经捕获到。下图展示了捕获到的数据:

脚本执行步骤,通过设置网络并运行Responder启用网络共享功能。

黄色部分为捕获到的hash

解决方案

在操作系统和浏览器中禁用自动代理配置设置,至少可以防止上述锁屏攻击。不过在公司网络中需要用到代理或者依赖于自动配置,当然就会有些麻烦了。不过我们要使用代理,最好是硬编码设置或者由自动配置脚本提供。以下为不同操作系统规避这种攻击的设置方法:

Windows 10, 8.1, and 8

打开设置 (开始 → 在Windows 10中为设置 / 左下角 → Windows 8, 8.1为更改计算机设置). 选择 网络 之后选择左边的代理. 确保“自动检测设置”已禁用.

Windows 7, Vista, XP

单击开始进入控制面板. 在控制面板中选择互联网选项. 在连接选项卡中选择LAN设置. 确保“自动检测设置”已禁用.

MacOSX

打开系统偏好.选择网络之后选择活跃连接 选择高级之后进入代理选项卡. 确保“自动发现代理”已禁用.

*参考来源:Cigital,FB小编鸢尾编译,转载请注明来自FreeBuf(FreeBuf.COM)

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2016-12-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏WeChat Pay

微信支付成功但并未走回调方法(小程序支付)

项目采用: Spring Cloud + Boot + Gateway服务网关 + Consu 注册中心

1.6K00
来自专栏北京马哥教育

Linux主机被入侵后的处理案例

IT行业发展到现在,安全问题已经变得至关重要,从“棱镜门”事件中,折射出了很多安全问题,信息安全问题已变得刻不容缓,而做为运维人员,就必须了解一些安全运维准则,...

791120
来自专栏晨星先生的自留地

提权(1)信息收集

39840
来自专栏FreeBuf

Windows 10 S中的Device Guard详解(上篇)

本文探讨Windows 10 S(下称Win10S)中的Device Guard(设备保护,下称DG)。我将提取策略,并弄清楚在默认Win10S系统上可以和不可...

436110
来自专栏FreeBuf

记我的一次账号劫持和BLIND XSS漏洞发现过程

我发现的第一个漏洞就是不安全对象引用漏洞(IDOR),利用该漏洞我能在每个账户中创建一个 element x元素,经过和朋友的交流,他建议我可以试试在其中注入一...

18900
来自专栏Python数据科学

Python爬虫之模拟登录京东商城

首先感谢大家的大力支持,博主会持续更新精彩文章,分享更多技术干货。另外,最近在新建的QQ群中结识了一些朋友,气氛很好,大家互相分享技术内容,博主也从中收获了不少...

45120
来自专栏FreeBuf

我的天!又一个僵尸网络开源了BYOB僵尸网络开源代码

BYOB是一个开源项目,该项目给研究人员和开发者提供了一个能够搭建和操作基础僵尸网络的框架。大家都知道,僵尸网络每年都会感染数百万台联网设备,为了研究现代僵尸网...

31130
来自专栏非著名程序员

如何在 Windows 下像 Mac 一样优雅开发

起因:之前一直用 Mac 开发,换了家公司,只许用 Windows 下开发,说实话,一开始我是拒绝的,可自从看到了这几个工具以后...... 下文大标题说明:(...

50790
来自专栏DevOps时代的专栏

[Jenkins 新插件] 兼容阿里开发手册 (P3C) 的火线插件安装使用教程

火线(Fireline)的Jenkins官方插件已经上线,目前火线不仅能检查出安卓代码中的安全类问题和内存泄露问题,还兼容了阿里开源的Java开发规约(P3C项...

49170
来自专栏北京马哥教育

一次Linux系统被攻击的分析过程

IT行业发展到现在,安全问题已经变得至关重要,从最近的“棱镜门”事件中,折射出了很多安全问题,信息安全问题已变得刻不容缓,而做为运维人员,就必须了解一些安全运维...

72870

扫码关注云+社区

领取腾讯云代金券