Threat Level: green Handler on Duty: Russell Eubanks

SANS ISC: InfoSec Handlers Diary Blog - Sage 2.0 Ransomware InfoSec Handlers Diary Blog

Sign Up for Free!   Forgot Password?
Log In or Sign Up for Free!

Sage 2.0 Ransomware

Published: 2017-01-21
Last Updated: 2017-01-21 19:29:10 UTC
by Brad Duncan (Version: 1)
8 comment(s)


On Friday 2017-01-20, I checked a malicious spam (malspam) campaign that normally distributes Cerber ransomware.  That Friday it delivered ransomware I'd never seen before called "Sage."  More specifically, it was "Sage 2.0."

Shown above:  It's always fun to find ransomawre that's not Cerber or Locky.

Sage is yet another family of ransomware in an already crowded field.  It was noted on BleepingComputer forums back in December 2016 [1, 2], and Sage is a variant of CryLocker [3].  Unfortunately, I can't find an in-depth write-up on Sage that I like.  With that in mind, this diary examines Sage 2.0.

The malspam

Emails from this particular campaign generally have no subject lines, and they always have no message text.  The only content is a zip attachment containing a Word document with a malicious macro that downloads and installs ransomware.  Sometimes, I'll see a .js file instead of a Word document, but it does the same thing.

Shown above:  Data from a spreadsheet tracking the malspam (1 of 3).

Often, the recipient's name is part of the attachment's file name.  I replace those names with [recipient] before I share any info.  A more interesting fact is the attachments are often double-zipped.  They contain another zip archive before you get to the Word document or .js file.

Shown above:  Data from a spreadsheet tracking the malspam (2 of 3).

Shown above:  Example of a Word document with a malicious macro.

Shown above:  Another example of the Word document with a malicious macro.

The Word document macros or .js files are designed to download and install ransomware.  In most cases on Friday, the ransomware was Sage 2.0.

Shown above:  Data from a spreadsheet tracking the malspam (3 of 3), mostly Sage 2.0.

The infected host

Under default settings, an infected Windows 7 host will present a UAC window before Sage continues any further.  It keeps appearing until you click yes.

Shown above:  UAC pop-up caused by Sage.

The infected Windows host has an image of the decryption instructions as the desktop background.  There's also an HTML file with the same instructions dropped to the desktop.  The same HTML file is also dropped to any directory with encrypted files.  ".sage" is the suffix for all encrypted files.

Shown above:  Desktop of an infected Windows host.

Sage ransomware is kept persistent by a scheduled task, and it's stored as an executable in the user's AppData\Roaming directory.

Shown above:  Sage ransomware and it's scheduled task for persistence.

Following the decryption instructions should take you to a Tor-based domain with a decryptor screen.  On Friday, the cost to decrypt the files was $2,000 US dollars (or 2.22188 bitcoin).

Shown above:  The Sage 2.0 decryptor.

Sage 2.0 traffic

Sage ransomware generates post-infection traffic.  In the image below, an initial HTTP GET request to was caused by a .js file retrieving the ransomware.  The remaining HTTP POST requests are callback traffic generated by Sage 2.0 from the infected Windows host.

Shown above:  Screenshot of the infection traffic, filtered in Wireshark.

Shown above:  TCP stream of an HTTP request for the post-infection traffic.

When the callback domains for Sage didn't resolve in DNS, the infected host sent UDP packets sent to over 7,000 IP addresses.  I think this could be UDP-based peer-to-peer (P2P) traffic, and it appears to be somehow encoded or encrypted.  BleepingComputer's September 2016 write-up on CryLocker shows the same type of UDP post-infection traffic, but CryLocker's traffic was not encrypted [4].

Shown above:  An HTTP request for the Sage 2.0 binary, followed by callback domains not resolving in DNS.

Shown above:  UDP traffic caused by Sage 2.0 when callback domains were unavailable.

Shown above:  Examining one of the UDP packets.

Indicators of Compromise (IOCs)

Below are IOCs for Sage 2.0 from Friday 2017-01-20:

Ransomware downloads caused by Word document macros or .js files:

  • port 80 - - GET /read.php?f=0.dat
  • port 80 - - GET /read.php?f=0.dat
  • port 80 - - GET /user.php?f=0.dat

Post-infection traffic:

  • port 80 - - POST /
  • port 80 - - POST /
  • (DNS queries did not resolve)
  • Various IP addresses, UDP port 13655 - possible P2P traffic

Tor-based domains to view the decryption instructions:

  • 7gie6ffnkrjykggd.onion

SHA256 hashes for the Sage 2.0 ransomware samples:

  • 0ecf3617c1d3313fdb41729c95215c4d2575b4b11666c1e9341f149d02405c05   (352,328 bytes)
  • 362baeb80b854c201c4e7a1cfd3332fd58201e845f6aebe7def05ff0e00bf339   (352,328 bytes)
  • 3b4e0460d4a5d876e7e64bb706f7fdbbc6934e2dea7fa06e34ce01de8b78934c   (352,328 bytes)
  • 8a0a191d055b4b4dd15c66bfb9df223b384abb75d4bb438594231788fb556bc2   (352,328 bytes)
  • ccd6a495dfb2c5e26cd65e34c9569615428801e01fd89ead8d5ce1e70c680850   (352,328 bytes)

Examples of locations on the infected Windows host where Sage 2.0 was made persistent:

  • C:\Users\[username]\AppData\Roaming\gNwO5YoE.exe
  • C:\Users\[username]\AppData\Roaming\wiqpNWm7.exe
  • NOTE: File names appear to consists 8 random alphabetic characters with an .exe suffix.

Final words

An important note:  URLs for the ransomware download will send Cerber one day, but the same URLs can send something like Sage ransomware the next.

I'm not sure how widely-distributed Sage ransomware is.  I've only seen it from this one malspam campaign, and I've only seen it one day so far.  I'm also not sure how effective this particular campaign is.  It seems these emails can easily be blocked, so few end users may have actually seen Sage 2.0.

Still, Sage is another name in the wide variety of existing ransomware families.  This illustrates how profitable ransomware remains for cyber criminals.

Pcaps, emails, malware, and artifacts for this diary are available here.

Brad Duncan
brad [at]



8 comment(s)
Diary Archives