Wannacry: A DNS and Sinkhole View

Note: This article comes from Communications of China Computer Federation, No.7, 2017. The author is Li Fengpei from 360 Network Security Research Institute. This article's words and layout are slightly adjusted to fit in this technology blog. One of the motivations for this post is that this article provides a quantitative analysis of WannaCry's infection, which can be used as a benchmark by later other articles on this blog.


As a sampling method, domain name system (DNS) stream data can be used effectively to measure and analyze the domain name on large scale. In the past few years, we have used DNS data to track and analyze multiple security incidents, for example the Mirai botnet, DGA malicious domains, and the underground economic chain. For the very recent outbreak of WannaCry worm, the analysis from DNS data view could be also meaningful.


As we all know, WannaCry worm has a kill switch domain name, that is, www.iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com. Details of domain name can be seen in many relevant reports. During the worm's infection, after the payload is successfully landed through the MS17-010 port 445 vulnerability, the worm will try to visit a web page on this specific domain name. If the web page is feed, the worm will exit and thus be suppressed, no further attack. But if the worm can not reach the web page, it will begin the file encryption and eventual go to ransom. The first part of this article will show our view from the DNS data, presenting infection and defense situation in domestic.


On the other hand, this kill switch domain name is registered by researchers at Kryptos Logic Vantage (www.kryptoslogic.com) to their sinkhole without awareness of the importance. However, the web page on this sinkhole successfully suppressed the spread of the WannaCry worm, and the researchers self-joked that "accidentally saved the world." Thanks to the trust of Kryptos Logic Vantage, we obtained part of the log data for the key domain name sinkhole. The second part of this article will analyze the WannaCry infection based on the statistics of the sinkhole log.



The Domestic Infection and Defense Situation from the DNS View


First, it is necessary to introduce our "visibility to see", to ensure our reader that our data can present Chinese region. Our and our partners' DNS data handle more than one million requests and responses in a single second, with customers ranging from different geographic areas, industries, carriers, and other dimentions.


In this WannaCry event, we estimated that we could see about 10% of the relevant DNS traffic across the country. If we treat the entire Internet as a complex system, the DNS traffic can be treated a sampling of all traffic, and our DNSPAI a narrower sampling from all DNS traffic. Keep the huge scale in mind, even a 1% sampling could be very powerful. Through a carefully designed data pipeline and a fully utilize of big data analysis technology, we can own a comprehensive understanding of the Chinese mainland network security situation.


WannaCry Infection Trends in China Mainland


1. Early Infection Phase


On Friday 15:20, May 12, 2017 Beijing time, we saw the very first visit to the domain in our DNS data. At this time the domain name resolution is failed, so as the target web page. So once the worm infected one machine, there follows an attack. The DNS access curve for this phase is shown in Figure 1.




Figure 1 DNS access curve in early infection phase


This phase can be divided into the following smaller time spans.


 * 15: 00 ~ 17: 00, the infection number in three hours are 9,25 and 202, each hour to expand about an magnitude, this is the very early infection stage;
 * 17: 00 ~ 22: 00, the infection number per hour reach to a higher level, up to 2800 / hour, this is the first peak stage;
 * 22: 00 ~ 23: 00, the infection rate gradually decreased, this could be caused by more machines go offline at night, a natural night decline stage;


仔细观察这段时间的感染情况，可以得出以下结论：


 * 我们有理由认为15:00附近就是国内蠕虫最初感染发作的时间，尽管我们看到的仅是国内DNS数据的采样而非全部。这是因为最初的感染速度非常小，为个位数，并且在随后的每个小时内扩充约1个数量级，如果我们把时间向前追溯，就可以得到这个结论。
 * 压制域名的上线有重大意义：在整个早期感染阶段，蠕虫扩张的速度非常快，如果不是压制域名争取了时间，所有后续的防御行动都会困难很多。事实上，周五这天晚上22:00附近就是WannaCry感染速度的历史最高水平，即使是后来的周一早上上班大开机的时刻也没能超过这个水平。


2. 域名压制阶段


开关域名于周五23:30左右上线，开始了对WannaCry的压制。这段时间也可以继续细分为如下若干时间片段。


 * 压制域名同步到全网阶段。由于DNS本身的缓存，压制域名虽然最早于23:30左右上线，但是这个案例中还需要大约30分钟才能让全网所有节点都能感知到。在这30分钟里，全网范围内DNS应答中，NXDOMAIN（域名不存在）和A（回应IP地址）两种类型同时存在。前者在回落，后者在上升。域名上线后大约5～10分钟时，两条曲线出现十字交叉，域名上线30分钟后，NXDOMAIN被压制到地板附近（见图2）
 * 平稳控制阶段。NXDOMAIN被压制以后，过度到了平稳控制阶段。在这个阶段，一方面，微软补丁更新和安全社区的共同努力减少了感染机器的数量；另一方面，总有机器因为各种原因被新增感染。总体而言，总感染量处于动态平衡状态，并且会随着时间推移最终平稳下降。从既往其他类似情况看，下降过程也许会耗费数年，并且往往会出现以周为单位的规律性波动（见图3）。




图2 压制域名同步到全网阶段



图3 平稳控制阶段


在这个阶段，有以下情况值得一提。


在5月17日以后，DNS数据中信噪比逐渐下降，逐渐变得不再适合用来做分析和度量。这主要是由于开关域名被媒体和公众大量关注，越来越多的针对开关域名的访问是来自浏览器而非WannaCry。


尽管如此，每天的DNS访问曲线仍然是不多的风向标之一。在感染的早期，每个人都无法预测WannaCry的后续发展趋向，只能严密监视域名访问情况。白天相对夜晚有个波峰，这是正常现象；周日的波峰比周六更高一些，没人知道这是个什么样的兆头；直到周一早晨9:00的波峰开始回落，确认周一读数小于周五，我们才能基本认为感染情况大体得到控制；随后，在周三和周四感染情况有所反弹，每个人的心又提到嗓子眼；直到再下一周数据整体回落，我们才能最终确认局势受控，从应急状态回到平稳的工作状态。


WannaCry不同变种感染情况对比


随着时间推移，不断有WannaCry的不同变种被曝光，有的样本去掉了对开关域名的检测（但是幸运的是该样本被改坏了，无法正常启动），有的样本使用了不同的开关域名，但是从DNS数据层面来看，除了原始版本，其他版本并没有得到广泛传播。


我们至少捕获到以下WannaCry变种样本：


 * hxxp://www.iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com
 * hxxp://www.ifferfsodp9ifjaposdfjhgosurijfaewrwergwea.com
 * hxxp://www.udhridhfowhgibe9vheiviehfiehbfvieheifheih.com
 * hxxp://www.iuqssfsodp9ifjaposdfjhgosurijfaewrwergwea.com
 * hxxp://www.ayylmaotjhsstasdfasdfasdfasdfasdfasdfasdf.com


对应域名的DNS访问曲线如图4所示。


 * 传播的主体，是iuqerf的原始版本；
 * ifferf版本有少量传播，比原始版本小了一个数量级；
 * 其他版本只有零星访问或者干脆没有访问。




图4 对应域名的DNS访问曲线


变种版本的感染范围远小于原始版本，也许可以归为补丁防御工作开始启动。无论如何，可以预期后续变种如果仅仅修改了开源域名，并不会比 ifferf版本带来更大影响。总体而言，在这个案例中，非原始版本的WannaCry的感染情况不值得引起安全社区的密切关注。


微软WSUS补丁更新服务的访问情况


微软补丁是本次WannaCry防御体系的关键，理应获得比WannaCry变种更多的关注。查询微软WSUS服务的官网可知，WSUS服务与下列域名访问有关：


 * hxxp://windowsupdate.microsoft.com
 * hxxp://download.windowsupdate.com
 * hxxp://download.microsoft.com
 * hxxp://test.stats.update.microsoft.com
 * hxxp://ntservicepack.microsoft.com


简单查询可知，download.windowsupdate.com的访问量最大，我们选用这个域名的DNS访问情况来代表补丁更新情况，如图5所示。



图5 download.windowsupdate.com域名的DNS访问情况


通常而言，补丁更新分发的高峰是在“星期二补丁日”的第二天。按照惯例，微软是在每个月第二周的星期二发补丁，第二天（周三）是中国区用户更新的高峰时间。但是这一次，5月15日（周一）当天出现了一个波峰。这种情况可以理解为系统网络管理员、个人在经过周六和周日的宣传后，大量用户在周一更新了微软补丁。


从这个意义上来说，这一次整个安全社区在周六、周日紧急行动起来，向社会和公众说明情况，提供防御手段和解决方案，是非常必要的。如果错过了周六和周日宣传准备的时间窗口，周一早上的开机时刻也许就是灾难时刻。



从sinkhole视角看WannaCry的感染情况


如前所述，得益于Kryptos Logic Vantage对我们的信任，我们获得了域名sinkhole的关键日志。这段数据覆盖了全球，是WannaCry事件中全球视角的唯一权威数据。Kryptos Logic Vantage授权我们展示部分统计信息。


我们得到的sinkhole数据，发生在北京时间5月12日23:40～5月16日8:10，缺失了5月13日10:30～5月14日00:20之间的数据。这段数据显示，开关域名共计被访问了266万次，涉及16万个独立来源IP。


Sinkhole与DNS数据对比分析


将sinkhole数据与DNS数据放在一起对比，可以清晰地进行分析。如图6所示，蓝色部分为sinkhole数据，红色部分为DNS数据。DNS数据在纵轴上缩放了10倍，以便清晰地展示数据的趋势。




图6 sinkhole数据与DNS数据对比分析


按时间顺序解读图6，可以得知：


 * 域名刚刚上线后的5个小时之内是sinkhole访问的历史高峰，每分钟约3500次；
 * 上线6小时后sinkhole访问数量开始持续回落，到北京时间5月14日6时许降低到高峰时段的十分之一，到15日3时为最低点，约为历史高峰水平的三十分之一。可以认为，域名上线，有效压制了蠕虫的发展；


以上观察结果与之前DNS数据观察结果一致。我们猜测，缺失的14个小时的数据，趋势也是一直在下降。


来源端口和Windows动态端口范围设定


除了时序方面，来源端口方面的数据分布也引起了我们的注意。端口49150前后的来源访问次数差别非常大，端口1024前后也有一个局部的暴涨。图7～9分别是全端口分布、端口49150附近数据缩放以及端口1024附近数据缩放。




图7 全端口分布



图8 端口49150附近数据缩放



图9 端口1024附近数据缩放


我们查到，Windows操作系统对动态端口范围有如表1所示的设定。


表1 Windows操作系统对动态端口范围的设定




基于以上事实，我们有如下推测。


 * 相当比例机器被感染的时机，发生在Windows刚刚启动完成的阶段，这时动态端口几乎都没有被使用，操作系统按照预设范围由低到高，给请求分配了范围下限附近的端口；
 * 处在下限边缘但很少被使用到的端口，例如，49152/49153/49154和1024/1025/1026/1027，也许是被操作系统自身在启动过程中用掉；
 * 绝大部分被感染版本是Windows Vista/Windows 7/WindowsServer2008及以后版本，之前版本感染的不多。


致谢


我们特别致谢Kryptos Logic Vantage，不仅因为他们允许我们获得sinkhole的日志，从而得以从更多角度深入WannaCry蠕虫病毒；更主要是因为Kryptos Logic Vantage的sinkhole在此次案例中，为所有安全社区工作者争取了宝贵的时间，维护了所有人（也许病毒作者除外）的利益。


参考文献


[1] Windows服务器系统的服务概述和网络端口要求[OL].https://support.microsoft.com/zh-cn/help/832017/service-overview-and-network-port-requirements-for-windows