Since May 12, a large number of organisations has fallen victim to the “wcry” (or “Wanacry”) ransomware, which abuses the SMB exploits / vulnerabilities that were famously released in the Shadow Brokers data dump in April 2017. Our aim in this short blog post is not to repeat existing information, but communicate some additional information that was derived by our NVISO CERT.
Note that our analysis is still ongoing and we will update our post with additional information, our CERT team is advising NVISO’s customers as we speak. Should you have any questions or require emergency support, please don’t hesitate to contact our 24/7 hotline on +32 (0)2 588 43 80 or firstname.lastname@example.org.
In short, the ransomware appears to initially enter the environment by traditional phishing (or via systems exposing SMB to the Internet), after which it leverages aforementioned SMB RCE (Remote Code Execution) vulnerabilities (MS17-010) to spread in the network like wildfire. The combination of “standard” ransomware with a recent remote code execution exploit make for a very effective attack, which is evidenced by the impact it has caused on a global scale.
On 13 May, it was reported that wcry, before starting its encryption process, attempts to connect to a seemingly random domain name (www[.]iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea[.]com) (EDIT: On May 15th, a second kill-switch domain was found in a new sample: www[.]ifferfsodp9ifjaposdfjhgosurijfaewrwergwea[.]com).
If these domains can be contacted, the malware stops its operations. This is most likely a kill-switch that was built in, but not effectively used, as the domain name had not been registered by the attackers. It has been registered by security researches in the meantime, hindering the ransomware’s advance. Note that the kill-switch is not proxy aware and is thus ineffective in environments where a proxy is used to access the Internet (NVISO’s analyst Didier Stevens published a quick-post on the killswitch here).
For additional background information, the following articles & blog post provide a good description of the observed wcry activity:
- https://blog.malwarebytes.com/threat-analysis/2017/05/the-worm-that-spreads-wanacrypt0r/ (article about the worm, not the ransomware itself)
The main recommendations to prevent / limit the impact of wcry:
- Ensure Microsoft’s patch (MS17-010) is rolled out throughout your organisation (also in the internal network) to prevent the spread of the malware using the SMB exploit;
- If you cannot install the patch timely, TearSt0pper (developed by Rendition InfoSec) can be deployed to prevent the encryption from taking place;
- Ensure Windows SMB services (typically TCP port 445) are not directly exposed to the Internet;
- Implement network segmentation between different trust zones in the network;
- Ensure recent back-ups are available offline and can be easily restored;
- Upon infection: isolate any infected hosts from the network;
- Continue end-user awareness to prevent the initial compromise through phishing;
- Implement mail sandboxing solutions to block incoming malicious mail attachments.
Throughout the weekend, our analysts further investigated the attack, noticing only 2 known variants of the “wcry” ransomware were uploaded from Belgium on VirusTotal. Given the global scale of the attack, this is a surprisingly low number of hits.
From an analyst perspective, the malware does not take big efforts to obfuscate itself and a simple static analysis (e.g. looking for strings) comes up with a large number of strings that could be used in YARA rules:
- The ransomware manual language files that are dropped: (*.wnry)
- It uses icacls to change permissions, using the following hard-coded command: “icacls . /grant Everyone:F /T /C /Q“
- Unicode string in the executable “WanaCrypt0r”
- The ransomware creates a Windows registry value to ensure persistence (survival upon reboot). We observed different variants of this behaviour, 2 examples are below:
cmd.exe /c reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v obsbeuqp321″ /t REG_SZ /d “\”C:\WINDOWS\system32\tasksche.exe\”” /f
cmd.exe /c reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v “mzaiifkxcyb819” /t REG_SZ /d “\”C:\tasksche.exe\”” /f
Note the creation of the “taschsche.exe” executable, which is different from the normal “taschsche.exe” (part of Windows).
As stated, on networks where a proxy is the only way to access the Internet (e.g. corporate networks), the killswitch will not work because the code is not proxy aware. This means that the malware will attempt to resolve the killswitch domain name with internal DNS, and if it receives a DNS reply with an IP address, it will proceed with an HTTP request. It will not connect to the proxy.
Corporations are configuring internal DNS with the killswitch domain name and an internal sinkhole as mitigation. This prevents the sample from activating, provided that the sinkhole server sends a reply.
The reply can be a 404, that will work too. It can even be a single character x send via the TCP connection, that is fine too. But something has to be replied, just opening the connection and closing it, without sending anything to the malware, will result in activation of the malware.
FYI: this was tested via dynamic analysis with sample 5ad4efd90dcde01d26cc6f32f7ce3ce0b4d4951d4b94a19aa097341aff2acaec and with our own custom code simulating the killswitch test in the malware.
Our analysis is still ongoing and we will update our post with additional information, as our CERT team is advising NVISO’s customers as we speak. Should you have any questions or require emergency support, please don’t hesitate to contact our 24/7 hotline on +32 (0)2 588 43 80 or email@example.com. We would be happy to help!
4 thoughts on “Wcry ransomware – Additional analysis”
Hi evanbuggenhout., How effective do you think TearSt0pper works? Any analysis on the tool please.
@NoMalware TearSt0pper is very effective at preventing Wcry samples from encrypting files and spreading. When Wcry samples start to run, they check for the presence of certain mutexes (these are Windows syncronization objects). If one of the mutexes is present, the Wcry sample stops its execution.
TearSt0pper creates all the right mutexes that the current Wcry samples check for (for more info: https://blog.didierstevens.com/2017/05/14/quickpost-wannacrys-mutex-is-mswinzonescachecountermutexa0-digit-zero-at-the-end/).
You just have to make sure that TearSt0pper is running all the time on the machines it has to protect. This can be done via an autorun key.
TearSt0pper does not display any message to the user when it runs (but you can check with task manager that it is running).
Future Wcry samples that use different mutexes will not be blocked by TearSt0pper, therefor it is important to deploy new versions of TearSt0pper as soon as they are released (they will contain the new mutexes).