近年来,黑客通过企业无线网络发起的企业内网渗透事件频发,在某漏洞平台检索时发现仅2015年便发生了数十起知名企业因WiFi相关安全问题导致内网被入侵的事件,对企业造成了十分恶劣的影响。
到了2016年,无线网络已经成为企业移动化办公的重要基础设施,但这些无线网络普遍缺乏有效的管理,无线网络也越来越多的成为黑客入侵企业内网的突破口。
天巡实验室在今年上半年对几个大中型企业进行了基于无线的安全服务,发现实际情况比想象中更为严峻。本次,在得到了其中某一客户授权情况下,我们将为大家分享一次由无线为入口的黑盒渗透测试。
攻击过程
我们在目标公司附近发现存在两个无线网络,经过确认一个是开放式的WiFi,通过Portal进行认证;另一个则是802.1X网络。我们来分别进行检测。
Portal安全检测
在连上这个开放式热点后,跳转到了Portal认证页面。
很快我们就发现了一个很普遍的“漏洞”,通过Portal登录返回信息,可以判断用户名是否存在。
用户不存在如下:
用户存在如下:
根据他们的测试规则,可以看到用户名为姓名全拼。通过使用中国人姓名top1000,利用burp进行了爆破,抓取了一批存在的用户。我们利用这些存在的用户进行暴力破解。
可以从上图看到,对爆破做了限制,但是可以使用“多用户名,单密码”这样的策略,不会触发他们规则。很快获取到了一个账户密码,登录成功。有很多的Portal的ACL有问题,接入Portal直接分配到的IP可以访问内网的资源(对于对渗透人来说,能不能上网不关注,我只需要能接入你的内网就行了),如果存在这种情况,就不用非得获取Portal的用户名密码。
经过分析发现,这个网络与企业的办公网络隔离,大致是提供给员工进行日常上网用的。对于这次的渗透目的来说,此网段并不能接触到我们的目标。我们将目光看向另一个无线网络,这个WiFi使用的是802.1x认证。
802.1x破解
企业在部署802.1X无线网络时,出于兼容性及结合域账户便利性考虑,一般都会采用PEAP-MSCHAP v2的架构。PEAP的认证过程分为两个阶段:
阶段一:服务器身份验证和建立TLS隧道。Server向Client发送证书信息实现“Client对Server的认证”。
阶段二:客户端身份验证。在阶段一建立的TLS隧道内通过多种认证方法(一般为EAP-TLS 或 EAP-MSCHAPv2)与PEAP共用实现“Server对Client的认证”。
PEAP的问题目前主要出在客户端对服务器证书的验证上,它通过类似SSL机制为认证提供传输层的安全,需要企业去向CA购买证书,或者自建PKI系统,签署用于无线的证书,同时将根证书部署到每个客户端。大多数企业都选择自签名一个证书,但“将根证书部署到每个客户端”过于繁琐,被直接忽视。
攻击手法为建立伪热点骗取用户连接建立TLS隧道,在阶段二中获取MSCHAP v2认证时传输的账号hash值,利用字典破解出密码。
在这里我们利用hostapd-wpe建立一个1X的同名热点,我们静静的等待周围下楼来抽烟遛弯的鱼儿上钩即可。
不一会儿,就获取到了8条hash值。我们先尝试利用Top100W的字典跑一下,跑不出的话再花十几元找人跑一下。
比较幸运的是,在尝试第4条hash时,发现使用了top 100w里的弱密码。结合之前明文的用户名,我们可以接入这个无线网络了。
信息收集
前面说到了,采用PEAP-MSCHAP v2架构的原因之一是可以与域账户进行结合,这组账号密码同时也是这位员工的域账号密码。可以登录公司的OA、邮件等系统。但在其中并未发现到我们想要的一些信息,暂时放放,看下网段的其他机器。下图为扫描一下内网中开放http服务的主机。
Jenkins Hack
通过前期的信息收集,在内网发现一个Jenkins程序。Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作。当jenkins配置不当时,会默认存在一个未授权命令执行漏洞,但经过检验管理员已经进行了限制,不能利用。所以为了执行命令,我们需要获取一个能执行命令的账户。
由于配置不当的原因,在未登录的状态下获取到了用户列表。抓取所有用户名后,再次利用Burp来爆破弱密码,过程略。成功获取了3个账号,利用获取的用户登录jenkins,访问xxxx.com/script,如下图:
可执行命令,低权限,反弹shell回本地进行提权。由于环境中wget不能使用,使用了Groovy语法把反弹脚本写到服务器。
利用Linux Kernel的本地提权漏洞,我们获取到了root权限。下一步便是:收集配置文件、history、shadow等敏感文件的信息。
SSH Key
利用shadow中拿到的密码,解密后利用Hydra进行网段的SSH批量登录尝试。在登录到某台机器之后,竟然发现了一个私钥文件。
如果本地用putty使用linux拷贝过来的私钥文件,需要使用puttygen.exe进行格式转换,如上图的aaaaaa.ppk文件。
Zabbix
Zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案,常见的漏洞有弱口令(admin Zabbix)、CVE-2013-5743等。
为什么说Zabbix我最喜欢呢,因为Zabbix在后台中可自定义脚本,执行命令(自身包含agent都可)。Zabbix就像一个网吧的网管工具,通过它可以向客户端发送任何指令并执行,以黑客的角度来讲,这就是一个超级后门。所以,在网段隔离的情况下,只要能搞定Zabbix,几乎就意味着拿下大批机器。
在利用私钥登录的某台机器上便发现存在Zabbix,在配置文件中找到了Zabbix的server地址,这时候任务转变为寻找Zabbix的账户密码。我们通过收集之前拿下多台机器的history中的信息,对Zabbix进行账号猜解,最终进入了Zabbix。(这里为了避免泄漏敏感信息,放上个来源网络的图)
结论
1.未设置合理的域密码策略,导致大量弱密码存在。
2.内网vlan划分不严格。
3.内网中大量系统补丁不及时。
4.运维人员各系统使用一套密码。
这次的渗透测试,还做了大量其他的工作,但是因为涉及客户一些敏感信息,这里就不再介绍的那么详细,只公开比较核心的地方,还有一些其他的漏洞没有全部记录,如ElasticSearch代码执行,内部系统SQL注入,共享盘符可写,JavaDebug等。
但最值得注意的地方或许是文章开始部分的无线网络渗透。虽然针对802.1X的攻击未在国内普及,但可预见的是缺乏对无线网络做安全防护的企业将会深受其扰。
对于802.1X网络渗透更详细的介绍,可以参考之前所发的《企业级无线渗透之PEAP》
* 作者:360天巡实验室(企业账号),转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)