您好,欢迎访问一九零五行业门户网

怎样剖析CLDAP协议 Reflection DDoS

前言    2018年上半年,得益于memcache近5万的反射放大倍数,ddos的峰值流量已经达到了一个前所未有的新高度—1.7tbps,这也使得memcache reddos成为目前ddos的中坚力量。而与memcache reddos相比,2016年akamai曝光的cldap reddos虽然没有前者极高的效率,但是其56~70倍的放大倍数在ddos家族中也依然是一名佼佼者,因此也应引起关注。
一、cldap协议缺陷轻量目录访问协议(ldap)被定义在rfc2251(ldapv3)中,由于ldap是以tcp字节流的方式进行数据传输,其必要的绑定操作和频繁的数据搜索查询会在一定程度消耗较多的tcp连接资源,于是ietf在1995年发布了面向无连接的轻量目录访问协议(cldap),官方文档为rfc1798(2003年 rfc3352将cldap置为历史状态)。在cldap中只提供三种操作:searchrequest、searchresponse (searchresentry和searchresdone)、abandonrequest,在不提供身份验证功能的情况下,客户端可以使用udp数据报对ldap服务器389端口发起操作请求。由于客户端发起searchrequest后服务端将返回searchresentry和searchresdone两条应答消息,一般情况下执行该操作将具有较小数据包反射出较大数据包的效果,这一缺陷随即被利用进行反射放大ddos攻击。
二、cldap reflection ddos的现状根据akamai sirt发布的报告,目前捕获到的cldap reddos最高峰值流量为24gbps,最大反射倍数为70倍。由于cldap未被广泛运用,开源ldap软件openldap早已不再支持udp协议的请求。事实上,目前进行cldap reddos攻击被利用最多的服务是windows服务器的活动目录服务active directory(ad)。通常ad服务会在tcp端口389上监听来自客户端的ldap操作请求,同时也会在udp端口389上使用cldap协议来等待执行rootdse的搜索操作(rootdse条目在ad服务配置时创建,且允许未经身份验证的客户端对服务器的配置状态、功能和扩展属性进行查询,也被称作“ad ping”)。一些windows服务器的ad服务监听端口暴露在公网,进而被利用来执行rootdse查询产生放大反射ddos攻击,在exploit-db上已经有安全研究者公开了perl利用脚本:。要确认该漏洞,还可以使用nmap的ldap-rootdse脚本进行扫描
nmap -pn -ssu 389,636 --script ldap-rootdse <target_ip>
可见存在缺陷的服务器将会返回rootdse的条目、条目属性等配置信息。
三、对公开payload的改进和探索针对exploit-db中rootdse cldap reddos的利用脚本,其payload为:
由于ldap和cldap在传输数据时是先将数据封装成为ldapmessage消息体后使用asn.1下的ber进行编码后再传输的,我们可以使用在线工具asn.1 playground对此payload进行还原(还原时需先编译加载rfc2251中对ldapmessage的asn.1结构体定义,也可以直接使用github中相关研究者定义好的asn文件):
可以看出此payload是一次searchrequest操作的ber编码,其对top类的objectclass必选属性进行查询。经测试捕获,该 payload 平均产生的反射放大效率约为 50 倍
但是如果将解码出的ldapmessage再重新编码回去,会发现ber编码位数减少,与公开的payload相比缺失了一部分:
如果此编码可用,将会降低payload长度(需要在末尾再补一个\x00作为ldapmessage结尾):
通过与原payload相比较,可以发现原来payload多出的部分(\x30\x84…)其实上是一段ldapmessage响应消息,因此在编码时被认为不应当出现在请求报文中,所以完全可以去掉(暂不清楚脚本原作者这里的意图)。测试捕获后发现,改进后的这段40字节的payload可用,且可以将反射放大效率提升至平均73倍左右,相比uscert公布的56~70倍数据提升了近18%,目前在公开渠道也暂未找到更为精简的payload:
事实上,要得到最精简的payload,还是要回到协议本身。从rfc2251中可以看出searchrequest操作共有8个字段,而接收自定义字符输入的字段只有baseobject、filter、attributes三个。在上述40字节payload基础上,我们能继续做文章的依然是filter字段和attributes字段。
经过构造filter和attributes字段,我们得到了长度为31字节的更为精简的payload。该payload能达到均值约89倍的反射放大效率,相比uscert公布的数据又提升了41%,如果以akamai捕获到的最高反射数据包大小3662字节计算,新的payload能达到最高118倍的反射放大倍数,这也将刷新目前已知的cldap reddos理论放大倍数:
四、影响面分析我们在zoomeye中通过搜索比较发现,存在缺陷的windows服务器具有特定的banner信息:
0\x84\x00\x00\x00\x10\x02\x01\x01a\x84\x00\x00\x00\x07\n\x01\x00\x04\x00\x04\x00
结合编码中的每一个标志位来看,该banner信息与ldap服务器bindresponse响应报文编码十分相似,因此推断出现该banner信息的原因,是由于zoomeye扫描引擎在扫描到存在缺陷的ldap服务器时服务器做出了一次绑定操作的响应,且告知客户端绑定成功,这也是在客户端searchrequest之前的必要操作:
使用此banner规则在zoomeye中搜索共有214673条记录,约占所有ldap服务器总数411527的52.2%:
考虑到不同服务器在不同时间节点上会出现配置上的变动,于是我们以2015、2016、2017这三年作为区分,使用爬虫分别采集前1000条数据对服务器缺陷进行有效性验证。结果如下表所示:
按照得出的占比,可以估算出目前互联网中存在缺陷的服务器总数:
因此我们认为,目前互联网中至少有2万台windows服务器正处于被利用进行cldap reddos攻击的风险之中,当然这仍然依赖于zoomeye所提供的数据,真实情况可能有更多。同时,我们获取了这3000条数据中153台缺陷服务器的反射数据包,其中最大的数据包长度为3208字节,最小的数据包长度为1918字节,153个数据包平均包长度为2665字节。根据这些捕获到的数据,现阶段cldap reddos的反射放大倍数应当处于62~103倍之间,平均反射放大倍数为86倍左右。
下面对cldap协议的缺陷及其造成反射放大ddos攻击的现状进行了介绍,同时对目前已公开的攻击载荷payload进行了探讨,并进一步探索出更精简的payload,将cldap reddos反射放大倍数从平均50倍提升至86倍,最后借助zoomeye对互联网中受影响的windows服务器进行了统计与分析。当前的cldap reddos攻击主要是由于windows服务器活动目录服务缺陷所引起,在防范上首先也应做到对389端口和636端口的限制,即确保端口不外漏或客户端ip白名单机制。
以上就是怎样剖析cldap协议 reflection ddos的详细内容。
其它类似信息

推荐信息