The Cybersecurity and Infrastructure Security Agency (CISA) recently released an Emergency Directive reporting on a long-running supply-chain attack actively exploiting product updates by the IT management company SolarWinds. 

Attackers were able to monitor SolarWinds’ network traffic and maintain persistence on affected systems and environments by leveraging trojanized versions of product updates. The campaign likely began between March and June 2020 and reportedly compromised organizations within multiple industry verticals spanning across North America, Europe, Asia, and the Middle East. 

Digital Shadows (now ReliaQuest) will continue to update this blog as further details of the campaign emerge. For now, we will explore what’s happening, how the campaign works, and who may be responsible. In addition to this, we have added relevant Shadow Search (now ReliaQuest GreyMatter Digital Risk Protection) queries that our clients can leverage to obtain relevant and valuable information as the situation unfolds. 

What’s happening?

As early as March 2020, threat actors began leveraging trojanized SolarWinds Orion products, specifically versions 2019.4 through 2020.2.1, to gain access to victim organizations. This campaign has affected multiple public and private organizations across government, consulting, technology, telecommunications, and extractive entity verticals throughout North America, Europe, Asia, and the Middle East. 

As the SolarWinds Orion platform serves a significant number of customers, organizations may find themselves victims of a related attack due to modern systems’ interconnectivity. To avoid system compromise, SolarWinds urges its customers to upgrade to Orion Platform version 2020.2.1 HF 1 as soon as possible. Additionally, an anticipated hotfix release, slated for 15 Dec 2020, will replace the compromised component and enhance security.  

The Campaign Unpacked

The malicious campaign, likely conducted by a state-sponsored threat group, was based on a “narrow, extremely targeted, and manually executed” supply-chain attack that leveraged trojanized SolarWinds Orion product updates to distribute a malware dubbed “SUNBURST” and “Solorigate” by FireEye and Microsoft respectively.

Initial access

From approximately March to June 2020, multiple trojanized updates were digitally signed and posted to the SolarWinds updates website. The trojanized file was likely hidden in standard Windows Installer Patch files that contained several legitimate resources associated with SolarWinds software updates. 

Execution 

The software updates include the trojanized SolarWinds.Orion.Core.BusinessLayer.dll component. Upon installation and depending on system configuration, the malicious dynamic link library (DLL) was loaded by the legitimate SolarWinds.BusinessLayerHost.exe or SolarWinds.BusinessLayerHostx64.exe

Persistence

The DLL file contains an obfuscated backdoor (SUNBURST), which communicates via HTTP to third-party servers and leverages obscured blocklists and scans for forensic and anti-virus tools. 

SUNBURST masquerades its network traffic as the Orion Improvement Program (OIP) protocol and stores reconnaissance results within legitimate plugin configuration files allowing it to blend in with legitimate SolarWinds activity.

Privilege Escalation

The malicious DLL enabled privilege escalation and connected to a command-and-control server (C2) to prepare further payloads, move laterally, and exfiltrate data. The C2 traffic to the malicious domains was designed to mimic normal SolarWinds API communications.

Lateral Movement

The attackers then exploited their foothold in the network to access trusted Security Assertion Markup Language (SAML) token-signing certificates, thus allowing attackers to impersonate any pre-existing users and accounts. 

Collection

Attackers leveraged their remote access to steal data from affected organizations, such as intellectual property and privileged information. 

Defense Evasion

Attackers obfuscated their activity by setting hostnames on their C2 infrastructure to match legitimate hostnames within victim environments, employing IP addresses originating within the victim organization’s country, and implanting a backdoor that obscured blocklists and scans for forensic and anti-virus tools. 

Upon gaining remote access with legitimate credentials, attackers removed their tools from victim systems to avoid detection. In this scenario, affected organizations may be left entirely unaware of a system compromise. 

Who is responsible?

TLDR; to be determined. Based on the nature of the attack, it is highly likely that the group responsible for this campaign are extremely sophisticated. Many surfacing reports are pointing fingers at Russian-state-sponsored threat group APT29, but at this point in time, we don’t know enough to confirm attribution. 

Closing remarks

As we mentioned earlier, we will continue to update this blog to reflect the most up-to-date details pertaining to this campaign. In the meantime, we have compiled a list of useful resources:

Shadow Search (now ReliaQuest GreyMatter Digital Risk Protection) recommendations 

If you’re already a Digital Shadows (now ReliaQuest) client, we’ve published a Public Intelligence alert and Threat Profile for this event, which include relevant indicators of compromise (IoCs), latest activity, and event updates. 

Additionally, we have consolidated a list of queries that you can use to stay on top of details as they emerge:

Indicator query:  

type=[indicator feeds] AND “solarwinds”

SolarWinds information query via threat intel feeds: 

(type=[blog posts] OR type=[intelligence incidents]) AND “solarwinds” AND date=[now-7d TO now]

Threat Actor UNC2452 specific query: 

“UNC2452” AND (type=[Blog posts] OR type=[Intelligence])

Threat Actor APT29 specific query:

“APT29” AND (type=[Blog posts] OR type=[Intelligence])

Query for discussions on forums, chats, and marketplaces: 

(“solarwinds” OR “UNC2452”) AND (type=[Forum posts] OR type=[Chat messages] OR type=[Marketplace listings])

Query for related vulnerabilities: 

(“solarwinds” OR “UNC2452”) AND (type=[Vulnerabilities & Exploits]) date=[now-6M TO now]