Keksec & Tsunami-Ryuk

Lacework LabsJune 10, 20216 min read

Chris Hall
Cloud Security Researcher – Lacework Labs

 

Key Takeaways 

  • Keksec is now leveraging a new Tsunami DDoS malware dubbed “Ryuk” (not the ransomware family)
  • The group has updated their DGA algorithm used by the Necro python malware
  • An inventory of Keksec’s malware distribution infrastructure is provided
  • New persona details are included

 

Keksec, aka Necro, & Freakout, is a prolific actor targeting cloud infrastructure for the purposes of carrying out crypto mining and DDoS operations. The group recently made it into the news again by expanding their infrastructure and capabilities to include new exploits and propagation techniques. This blog takes a comprehensive look at Keksec’s intrusion infrastructure and includes previously unreported content such as the use of a new Tsunami variant named Ryuk, new DGA algorithm, and new persona details.

 

Necro – DGA

Necro is the name for Keksec’s Python IRC malware and botnet, with the latest version documented by Talos. The malware is characterized by its unique obfuscation that leverages a combination of zlib compression and a multibyte XOR key. In March 2021, Lacework Labs released a script which also decodes this latest variant.

Significant updates were made in the most recent version to include exploits targeting Vesta Control Panel, ZeroShell 3.9.0, SCO OpenServer 5.0.7, and VMWare vCenter (CVE-2021-21972). The malware now also attempts to propagate via SSH brute-forcing. A new DGA algorithm was also included which is very similar to the previous necro version but with a couple of small updates to the see and random-range parameters.

DGA component old new
seed 0x7774DEAD 0x7228827A
randrange parameters range(random.randrange(10,19)))).lower() range(random.randrange(8,19)))).lower()

 

Two DGA domains have been seen in the wild. There are a total of 255 possible domains. Previously keksec only used the first few domains before changing the DGA scheme so it’s possible that will be the case this time

  • ngiwge486ln9daoo.hopto.org
  • can6dodp.servepics.com

This script may be used to generate these new DGA domains.

 

Malware Distribution Infrastructure

Keksecs infrastructure is primarily composed of 20 hosts and is structured around URI path names in download URLs. The most frequently used of these include ‘’/Ryuk/’,’/Simps/’ and ’/S1eJ3/’. Examples:

  • http://107.172.156.158/Ryuk/ur0a.x86_64
  • http://206.81.26.46/Simps/mipsel
  • http://23.95.80.200/SimpsX/m68k
  • http://45.144.225.65/S1eJ3/IObeENwjspc

The following table lists these hosts which are ranked by the malware file count (from 2021-01-01 – 2021-06-09 ). Some hosts are unique to URI paths mentioned above while others overlap.

Host ASN country Hosted malware count URI Path name(s)
195.133.40.24 “SPDNet Telekomunikasyon Hizmetleri Bilgi Teknolojileri Taahhut Sanayi Ve Ticaret A.S.” Russia 235 S1eJ3 & Simps
45.145.185.83 213035:”Des Capital B.V.” Netherlands 81 S1eJ3
45.14.224.127 62068:”SpectraIP B.V.” Netherlands 55 Ryuk & Simps
185.224.129.235 62068:”SpectraIP B.V.” Netherlands 54 Ryuk & Simps
185.224.129.224 62068:”SpectraIP B.V.” Netherlands 40 Simps
45.144.225.65 35913:”DEDIPATH-LLC” United States 39 S1eJ3
23.95.80.200 36352:”AS-COLOCROSSING” United States 34 fagggotbaggot, Simps, SimpsX
45.144.225.96 35913:”DEDIPATH-LLC” United States 29 S1eJ3
45.153.203.124 213035:”Des Capital B.V.” Netherlands 18 S1eJ3
206.81.26.46 14061:”DIGITALOCEAN-ASN” Germany 15 Simps
45.14.224.197 62068:”SpectraIP B.V.” Netherlands 15 Simps
185.203.116.7 44901:”Belcloud LTD” Bulgaria 14 S1eJ3
172.245.36.128 36352:”AS-COLOCROSSING” United States 13 S1eJ3
b0tz.xyz NA NA 8 Simps & SimpsX
107.172.156.158 36352:”AS-COLOCROSSING” United States 5 Ryuk
45.14.224.200 62068:”SpectraIP B.V.” Netherlands 4 Simps
164.90.164.132 14061:”DIGITALOCEAN-ASN” Germany 3 S1eJ3
134.122.78.91 14061:”DIGITALOCEAN-ASN” Germany 1 Simps
192.236.146.182 54290:”HOSTWINDS” United States 1 Ryuk & S1eJ3

 

The most active host continues to be IP 195.133.40.43 which is mostly being used in the ‘S1eJ3’ portion of the infrastructure to deliver Keksec’s Tor-based Tsunami variant. Lacework Labs detailed this malware in a blog – ‘The “Kek Security” Network. At the time of that analysis, Keksec was using .onion c2 host vp3te7pkfczmnnl.onion, however new specimens are using host dimumdjenyy4jwlc.onion along with the same cipher key used for decryption:

%q*KC)&F98fsr2to4b3yi_:wB>z=;!k?”EAZ7.D-md<ex5U~h,j|$v6c1ga+p@un

 

Tsunami-Ryuk

A new component in the Keksec malware inventory is yet another Tsunami-based DDoS malware dubbed ‘Ryuk’. A total of 83 specimens were identified with the first appearing in mid May and going into June . This name is not to be confused with the Ryuk ransomware and is most likely a reference to the fictional character from the manga series ‘Death Note’. Additionally, there are indications that the malware is being used as a payload in Necro’s SSH brute-forcing campaigns, as there are comments in VirusTotal reporting that the files were observed in SSH honeypots.

There are several different variations of Ryuk and are hosted by the previously described ‘Ryuk’ component of the keksec infrastructure. Many specimens are UPX packed and also leverage a simple encoding method to obfuscate C2 IPs, as well as a message that is written to a log file. The encoded version is statically observable as the following string:

Ymnx2Ij{nhj2Nx2Nskjhyji2G~2W~zp2Gtysjy2Nsxyflwfr?Ezw5fdInxhtwi?ZW5F(76>>2W~zp(9;:7

The decoded message reveals Instagram and Discord accounts.

This-Device-Is-Infected-By-Ryuk-Botnet-Instagram:@ur0a_Discord:UR0A#2199-Ryuk#4652

The function in the binary responsible for the decoding is named ‘util_encryption’. The routine simply decrements each character in the string by 5. Examination of the function xrefs revealed that it is leveraged decoding the log file contents, c2, and DDos commands. Searching on this artifact in VirusTotal revealed a number of other Tsunami variants with a similar decoding routing of the same name but with a decrement value of 1 instead of 5.

   

Figure 1. Tsunami-Ryuk Decoding Routine  IDA Pro

 

The following python script may be used for decoding these Ryuk configurations as well as for other malware using similar methods.

 

1 2 3 4 5 6 7 ryuk_strings = ['Ymnx2Ij{nhj2Nx2Nskjhyji2G~2W~zp2Gtysjy2Nsxyflwfr?Ezw5fdInxhtwi?ZW5F(76>>2W~zp(9;:7','9:3693779367<'] for str_ in ryuk_strings: decoded_ = [] for s in str_: decrement = chr(ord(s) - 5) decoded_.append(decrement) print ''.join(decoded_)

Decoding Script for Ryuk configs

There are a few other Ryuk variants, with plaintext versions of the log file contents and c2 IP addresses. This message is consistent with Keksec’s habit of self-attributing malware and infrastructure.

This Device Has Been Infected by Ryuk Botnet Made By ur0a And Keksec Group 🙂

Additionally, the ‘ur0a’ handle is also used for several of the Ryuk payload names. For example:

  • ur0a.mipsel
  • ur0a.mips
  • ur0a.i686

 

Social Media

Kekec, similar to TeamTNT is notorious for self-promotion. This was illustrated in the Ryuk malware artifacts listing social media information for Discord, and Instagram. While the Discord account was a dead end, the Instagram account is online.

  

Figure 2. Instagram Account of Actors

The ur0a_ Instagram account does not have any posts however several accounts followed by ur0a_ are of interest. One of these is named “hellabootersonbotnet”. On May 10th, this account posted a screenshot of the Necro IRC control channel. This was identified as Necro by the Irc messages, especially the MB RAM total and [HAX| artifacts in the IRC messages. These are observable as formatting strings in the Necro source code. Additionally, the account mentions Freakout as a comment to the post – ‘Freak out on top’.

 

  

Figure 3. Necro IRC bots – “hellabootersonbotnet” Instagram

 

Keksec frequently updates their toolset and suite of exploits making them an evolving threat. Fortunately, their habit of self-attributing malware and infrastructure makes for easier tracking. Indicators and tools for this activity are available on our GitHub. If you found this blog useful then please share and follow us on LinkedIn and Twitter!

Categories

Suggested for you