0x00 背景-更新
最近给服务器安装了uuWAF,但是发现站点部署之后立刻遭到了渗透攻击(的尝试),而部署的站点域名有很长一段时间没使用过了,说明攻击是由站点部署导致的,最坏的情况是个人电脑被挂马了,遂开始逐一排查。
Update:在Github提了issue,目前认为和uuWAF确实没啥关系,倒不如说是uuWAF的部署使得这一现象得到观察,因为之前只能看到攻击记录,但不会整理攻击事件、攻击方式等信息。ACME方式申请证书中间需要使用http进行文件验证,而中间链路任意节点流量被监听就能获取二级域名,对比手动证书(一般采取DNS验证的方式)简单多了。这或许也说明http在当今网络通信中几乎无安全性可言。
0x01 问题复现
为了方便描述,以下一级域名是host
,二级域名是*.host
。
在全新安装的WAF上,站点被配置为*
,也就是这个时候能解析所有域名访问,并且自动申请证书。配置完成之后不会有攻击记录,而在第一次HTTPS访问的时候有攻击记录。如果使用HTTP访问域名,或使用自己的证书,则访问新的域名也不会有攻击记录。
基于以上的观察,基本可以确定问题出在自动SSL证书这一步,下面的问题排查过程把其它可能性进一步否定。
攻击方式
基本上是第一次访问的时候伴随两次攻击,随后像是被记录到了一个数据库一样,时不时“回访”一下。
攻击时间与访问时间对齐
0x02 问题排查
猜想
由于只有第一次访问会触发攻击,而后续的攻击时间和访问时间都不匹配,猜测攻击方可能是为了攻击效率和隐蔽性而有一次过滤。而且观察到,如果访问了没有配置的域名,服务器会返回403(被WAF拦截),此时不会触发攻击,而返回400和502/504都可以触发攻击。因而问题可能是我访问互联网的某个环节出现了问题。
排查客户端内鬼
其实第一个想到的是浏览器是否存在插件泄露了访问记录,因为服务器使用的组件基于经验来说算是可信安全的。所以在关闭了存疑的插件,以及在隐私模式下进行了测试,发现问题仍然存在,说明不是插件导致的浏览记录泄露。
排查浏览器感染
再次之后检查了一下浏览器参数,并且换了一个浏览器,发现问题仍然存在。说明不是浏览器被感染了。
排查网络链路
使用浏览器接入代理,借其它服务器访问此服务器的服务,发现仍然会引发渗透攻击。因而不是诸如校园网之类的劫持流量。
用抓包软件分析本地流量,也没发现传输访问记录的可以流量。中间有两个包含nel的域名,结果问了群友查了微步发现是微软和谷歌的。
契机
由于发现WAF不像以前那样强制走HTTPS,所以先把HTTP端口直接关了,这直接导致了自动SSL无法完成验证。考虑到后续使用,遂购买了泛域名证书。
其实从结果来看,从这之后的测试就再也不会触发攻击了,但是当时还不知道,于是做了几个边角测试验证想法:
- 电脑挂马:用手机访问,发现没有触发,难道是我电脑的问题?
- 浏览器挂马:用wget试了试,发现没有触发,难道浏览器被篡改了?
- 卡巴斯基中间人证书泄露:关闭卡巴斯基,发现没有触发,啊?
但是,出于对卡巴斯基的信任,我很快否决了这个可能性。于是恢复卡巴斯基再次进行测试,发现仍然没有触发?等了半个小时这个测试域名啥事也没有。
难道是攻击方消停了?
分析
下午先复习了会英语,清空了下脑子,再仔细分析:出现实验结果的大幅转变来自于我弃用了自动SSL!虽然不太相信,但是我有强烈的预感,问题就在这。于是补充两个测试:
- 使用第二个域名,加上自动SSL,发现攻击记录又出现了;
- 使用HTTP访问网站,加上自动SSL,发现不会有攻击记录。
到这里,结合之前自动SSL失效/使用自己的证书没有触发攻击,HTTP没有触发攻击,基本可以推测出是自动SSL环节出现了问题。但是具体原因还在进一步调查。
0x03 问题分析
问题已提交给uuWAF,本人暂时没时间做详细分析。
0x04 思考
无论是基于挂马的攻击还是在自动申请证书/域名上进行攻击都是很高效的。
如果攻击者按照一个正常用户的访问顺序去攻击网站的话,它的足迹和一个正常用户基本一致,这将使得一些分析方法失效。而且如果攻击者能获得访问结果,甚至应用类型,那可以以此筛选攻击对象,攻击效率可以进一步提高。
而在证书申请/域名申请完之后立即进行攻击也是非常高效的,因为很多服务器此时甚至来不及修改默认密码!考虑这样一种情况:我在服务器进行证书验证的阶段获得了服务器开放的端口,然后根据端口推测应用程序,并且立即通过默认密码执行脚本。对于部分应用,在管理员第一次登陆之前使用默认密码,管理员也可能没有方便的方案以其它的方式登录后台,此时是攻击的最佳时机。
预览: