1、概述
传统的DDoS 反射攻击通常会利用有缺陷的公网服务器实施反射放大攻击,反射源数量的多少决定了反射流量的大小。然而随着公共服务的维护方式越来越标准,安全性也越来越高,可被利用的公共服务器也越来越少。2018年初爆发Memcache反射攻击后,由小蚁云盾平台监测到的数据表明,上半年发生的Memcache反射攻击事件中,反射源数量超过1000的攻击次数高达139次;而到了下半年,反射源数量多的攻击次数明显减少,截止到11月底,类似的攻击次数只有24次。很明显可被利用的Memcache服务器越来越少了。
但是,从事黑产的DDoS攻击者从来没有停止对流量放大攻击新方式的寻找和尝试。
小蚁云盾团队在2018年11月底捕获到一次利用游戏客户端运行时开放的UDP服务做反射实施的攻击。智云盾系统在2秒内识别到攻击,实时对攻击流量做了隔离和清洗,保障用户免遭DDoS的伤害。
2、攻击研究
智云盾系统检测到攻击时,自动对攻击流量进行采样,安全分析专家对采样包及时进行了深层次的分析。
本次事件智云盾平台采集到6个采样包文件,涉及到反射源IP 872个。
2.1 攻击包分析
通过对智云盾的攻击包分析发现,反射的来源端口是UDP 2303,我们尝试扫描反射源IP的2303端口,但是无一响应,由此推测该端口不是互联网的公共服务,下图是反射端口图:
图1 采样包内攻击来源端口
数据包中的payload多次重复Arma3的字符串,通过百度搜索,这是一款中文名叫“武装突袭”的游戏。
图2 采样包内攻击载荷
为了进一步分析,我们下载了Aram3并且对游戏的通信进行抓包,进入游戏之后我们在游戏内部搜寻互联网上可加入的游戏房间,与此同时观察抓包信息我们发现了有类似图1和图2攻击数据包的请求,如下图:
图3 游戏内采样包来源端口
图3显示为2303端口返回的UDP数据包,从数据包携带的payload相比较,与图2特征一致,下图为数据包截图:
图4 游戏内攻击载荷
从图2与图4的对比中可以确认,这是一次利用了Arma3游戏客户端作为反射源的DDoS攻击。
2.2 放大倍数
按照我们前期对反射放大攻击倍数的研究,采用科学的统计放大倍数时,请求响应的包头甚至是网络帧间隙都要考虑在内。详细的方案可以参阅《Memcached DRDoS攻击趋势》一文,详见链接:https://bsi.bAIdu.com/article/detail/110
由于2303端口服务为游戏自定义服务,通过对此游戏的攻击复现发现,请求包数据长25字节,响应包数据长184字节,下图是复现截图:
图5
所以计算得到放大倍数为(184+66)/(25+66) = 2.7倍。
2.3 反射源采集
由于该端口是在游戏客户端运行时才打开,且只响应特定的请求字符串,因此传统的DDoS反射源的扫描手段在此处并不适用。攻击者可以登录游戏查看玩家房间列表并抓包时可获取大量的反射源IP。
2.4 攻击原理
反射类型的DDoS攻击并不会直接攻击受害者IP,而是以受害者的IP构造UDP数据包,伪造UDP数据包,对反射源发送伪造的数据包,反射源向受害者IP响应的流量远超过攻击者伪造UDP流量的数据,DDoS黑客组织依靠此方式对受害者实施DDoS攻击,反射类型DDoS攻击如下图6所示:
图6 反射攻击示意图
图6中黑客给放大器发送伪造的UDP数据包,经过智云盾团队对DDoS事件攻击的复现发现黑客伪造UDP数据包的载荷长度为25个字节的固定字符串,对应的游戏服务器会返回与攻击事件采样包相似的攻击载荷。
UDP发送的固定25字节字符串如下:
xffxffxffxffx54x53x6fx75x72x63x65x20x45x6ex67x69x6ex65x20x51x75x65x72x79x00
发送该固定字符串UDP请求之后,服务端返回数据包长度180-260不等。
通过检索UDP发送的固定25个字节的载荷我们发现该查询请求是steam平台提供的A2S_INFO服务查询规范。
3、A2S_INFO协议
A2S_INFO是steam给游戏厂商提供了一系列服务查询规范之一,主要是对联机游戏中玩家公网服务器的信息定义。
steam平台目前是全球最大的综合性数字发行平台之一,玩家可以在里面购买,分享,讨论,下载游戏和软件。
参考steam百度百科链接:
https://baike.baidu.com/item/steam/10092959?fr=aladdin
3.1 A2S_INFO规范缺陷
steam平台为了使各个玩家之间联机对战,采用了p2p通信技术实现客户端之间的通信,玩家在新建了房间之后,游戏将玩家的主机地址转换成公网地址,端口号不变。Steam提供A2S_INFO规范,允许其他地区的玩家采用UDP/IP协议按照A2S_INFO规范查询房间信息。具体的A2S_INFO标准如下图7所示:
图7
Steam wiki链接:https://developer.valvesoftware.com/wiki/Server_queries
图7中,玩家通过符合规范的请求,从服务器获取到玩家服务器名称,游戏文件夹名称等信息。可见A2S_INFO标准包发送请求数据是25个字节,但是返回的数据字段较多,根据不同的服务器返回内容不同,总之是远超请求数据的长度。
黑客正是利用了A2S_INFO的这一特点利用做DRDoS的攻击载荷。
反射源随着玩家参与游戏数量的变化而变化,反射放大比例一般维持在2.7左右,也不排除steam平台上有其他游戏更大的反射比例存在。
此种反射攻击成因可以分为两部分。
1. 玩家之间采用p2p通信方式,联机类游戏服务很看重网络传输效率,所以会使用大量udp的服务,将玩家客户端地址映射在公网,导致被攻击者利用。
2. A2S_INFO查询协议本身规范存在漏洞,发送数据字段过少,返回字段较多,导致可以被利用为反射协议。
3.2 A2S_INFO应用范围
A2S_INFO作为联机游戏的服务查询规范,应用范围十分之广,目前平台上比较流行的Dota2、反恐精英系列、求生之路系列、Aram系列等联机游戏的玩家都可能会被黑客用作反射源进行攻击。
4、其他游戏平台延伸对比
由于本次攻击利用了游戏平台对联机游戏为了保持网络传输效率选择UDP实现内网通信,采用P2P通信,我们对多家类似平台做了调研,发现在玩家联机时会出现部分UDP请求存在放大现象。
图8是针对某游戏平台抓包,截取到可被利用放大的UDP服务图:
图8 存在放大现象的UDP请求
与传统的DDOS反射服务寻找反射源在公网扫描有缺陷的公共服务,本次攻击选用了steam平台上UDP的服务端口,反射源根据游戏在线玩家的数量而变化。
DDoS攻击团队在寻找反射方式上,已经从传统的公共服务往订制化的服务上探索,而游戏平台玩家联机的特点将会成为被利用打DDoS的重灾区。
5、DDoS反射攻击趋势
此次攻击是steam平台的A2S_INFO规范存在被利用的漏洞,并且可以将steam平台上所有联机游戏的玩家客户端作为反射源,攻击倍数虽然不高但是反射来源数量众多。与传统的DDoS反射相比,此类型攻击涉及反射源数量众多,并且不依赖某一种公共服务,不依赖某一特定端口,攻击灵活性很高。
A2S_INFO DDoS反射攻击以一种全新的攻击思路来寻找反射源,以往的黑客组织追求反射协议的反射比例越大越好,本次攻击的特点反射源分布极广。A2S_INFO的服务查询依靠了p2p通信技术的实现,p2p的技术特点决定了一旦客户端有可被利用的UDP服务,每一台使用该UDP服务的主机都将成为反射源。
小蚁云盾团队预测,在接下来一段时间内,还将会出现更多利用A2S_INFO规范或者其他类似的UDP服务发起攻击。
6、防范建议
1) 对互联网服务
a) 禁用UDP,不能禁用时,确保请求与响应不要有倍数关系
b) 启用授权验证
2) 对企业用户
a) 如果没有UDP相关业务,可以在上层或者本机防火墙过滤掉UDP包。
b) 可以寻求运营商提供UDP黑洞的IP网段做对外网站服务
c) 可以选择接入DDoS云防安全服务
数字游戏平台服务不仅简化了游戏本身的销售,还为开发商提供了额外的盈利手段。例如,游戏中的皮肤、设备和角色增强元素,都可以获得大量的收益。用户自己也可以互相推销商品,最稀有的可以卖到几千美元。
哪里有钱,哪里就有欺诈。骗子们试图获得登录信息,以“剥离”受害者的角色,并以丰厚的价格出售他们辛苦得来的物品。
其中一个最受欢迎的平台:Steam,自六月以来,针对该平台的攻击变得更加频繁,更为复杂。
攻击分析
骗局是基于网络钓鱼实施的,攻击者将用户引诱到假冒的在线商店(在本例中,是与STEAM链接的商店)网站,这些网站出售游戏内物品。假冒网站质量很高,有时很难直接辨别网站真伪。网站具有以下特征:
1、假冒网站会对真网站的每一个细节进行仿造
2、有安全证书并支持https
3、发出使用cookies的警告
4、提供一些到原始网站的链接(单击时这些链接不起作用)
用户在网站上花费的时间越长,就越有可能发现一些奇怪的东西。因此,骗子不想让用户停留太久,在钓鱼网站点击任何链接,用户都会立即有窗口询问steam登录名和密码。Steam帐户可以用于登录第三方交易平台,以获得受害者拥有的物品数据。
假登录/密码窗口与真实窗口非常相似:地址栏包含Steam门户的正确URL,页面具有自适应布局,如果用户使用不同的界面语言在另一个浏览器中打开链接,则假页面的内容和标题将根据新的“区域设置”进行更改。
但是,右键单击此窗口的标题(或控件元素)会显示网页的菜单,选择“查看代码”会看到当前为假冒窗口,使用的html和css实现:
在样本中,用户名和密码使用post方法通过另一个域上的api进行传输。
通过使用原始服务对输入的数据进行验证,输入错误的登录名和密码时,会向用户显示一条错误消息:
当输入有效的登录和密码时,系统请求通过输入在电子邮件中或在Steam Guard应用程序中生成的授权代码。输入的代码也会转发给骗子,从而获得对帐户的完全控制:
其他方式
除了使用html和css创建登录窗口外,攻击者还采用了一种古老的技巧:在单独的窗口中使用一个假的表单,但地址值为空。虽然窗口显示方式不同,但工作原理同上,表单验证输入的数据,如果登录名和密码匹配,则提示受害者输入双因素授权码。
如何防范
防范此类诈骗的主要方法与识别钓鱼网站的方法没有本质区别。
1、仔细查看地址栏及其内容的显示,观察它是否包含了正确的url,例如,网站地址可能与商店名称不匹配,或者显示“about:blank”字样。
2、密切关注“外部”资源的登录表单。在包含窗体的窗口标题栏上单击鼠标右键,或者尝试将其拖到主浏览器窗口之外,以确保它不是假的。
4、如果怀疑登录窗口不是真的,请在新的浏览器窗口中打开STEAM主页,然后从那里登到帐户。然后返回可疑登录网站并刷新页面。如果是真的,会显示账户已经登录。
5、如果一切看起来正常,但仍有可疑之处,请使用WHOIS检查域名注册信息,真正的公司不会在短时间内注册域名,也不会隐藏他们的联系方式。