Skip to content
Grit Blog

Analysis of the SolarWinds Supply Chain Attack

Latest Update 1/8/21 at 4pm ET

The intent of this analysis is to aggregate the wide distribution of information being shared, provide insights, and recommendations. As we continue to learn more about the recent SolarWinds attack, the GuidePoint team continues to gather and distill the information for consumption. Currently our team is tracking the group as defined by FireEye as UNC2452 which is linked to the actor being tracked by the Volexity team as Dark Halo. 

Ongoing Analysis of the SolarWinds Breach

Update: 1/8/21 at 4pm ET

Continuing our updates to the ever evolving SolarWinds whirlwind, CISA released updated guidance and  Alert (AA20-352A)  for Federal Agencies affected by the Orion Platform breach. This guidance confirms that an NSA static code review was conducted on the SolarWinds Orion Platform version 2020.2.1 HF2 update to ensure that both the vulnerabilities and the previously included malicious code had been remediated. CISA further recommends that agencies who have not seen the follow-on malicious activity to either rebuild their SolarWinds Orion server(s) to the current version or to simply update their existing SolarWinds Orion instance in accordance with their Hardening guidance. Agencies who have seen follow-on activity should keep their SolarWinds Orion infrastructure disconnected from their network while conducting an investigation. 

The updated alert includes new information on initial access vectors, updated mitigation recommendations, and new indicators of compromise (IOCs). An important takeaway from the CISA alert is that during the course of several recent investigations sharing commonalities in adversarial behavior, SolarWinds was not the only intrusion vector observed. This highlights the importance of continuing to monitor and hunt for intrusion vectors not related to SolarWinds vulnerabilities – many clients may have a false sense of security if they do not have SolarWinds in their environment. The other forms of initial access detailed in the updated alert include password guessing, password spraying, and exploiting external remote access services with inappropriately secured administrative credentials. As more details continue to develop, we expect the list of initial intrusion vectors to continue to grow. 

Another point CISA brings up in their Alert is the concept of Operational Security during the Incident Response process, especially when planning and implementing remediation steps. Ensuring that your incident response plan includes out of band communication methods can be the difference between a successful remediation or the adversary keeping a foothold in your environment.

Additionally, the SolarWinds Orion 0-day vulnerability which allowed for the Supernova Webshell to be installed is being tracked as CVE-2020-10148 (Thanks for the confirmation from Nick Carr @ItsReallyNick). This vulnerability could enable an attacker to bypass authentication and allow for API command execution, which may lead to a compromise of the Orion application. While Supernova is being attributed to a different threat actor than was observed with Sunburst, this is still a potentially high impact vulnerability and we recommend implementing proactive hunting and detection measures to determine if your SolarWinds instance has been affected. 

Update: 12/23/20 at 9am ET

The Volexity team discovered three incidents attributed to the same actor (Dark Halo) starting in late 2019 targeting an unnamed think tank. In the initial attack, the actor utilized a Microsoft Exchange vulnerability that allowed them to bypass multi-factor authentication (MFA) used to secure email access. Once in the environment, the actor utilized living-off-the-land binaries (LOL-BAS) in weekly operations with the intent of extracting emails from targeted individuals. Upon identification of the threat actor’s activities, the actor was successfully removed from the network as a result of response efforts. 

However, a short time after the remediation, the actor once again infiltrated the environment using a remote code execution vulnerability (CVE-2020-0688) targeting an on-premise Microsoft Exchange server. Utilization of this exploit allowed the threat actor further access to the environment, at which time they were able to use a “novel technique” to exploit the normal Duo MFA execution flow. Using this technique, the actor compromised the Duo integration secret key from the present OWA instance. This allowed the threat actors to pre-compute the security identifier for authentication and authorization. It’s important to note that this was not a vulnerability in the Duo software itself. By simply having the privileges required to garner the key the actor was able to calculate the value of the required cookie for authentication. The actors were discovered once again and eradicated from the network.

In the third and final attack dating back to July 2020, the actors were seen utilizing the compromised SolarWinds DLL to gain access to the targeted environment. Once inside the network, the actors operated using similar tactics observed in previous intrusions. One noted objective for the actor in each of these intrusions was access to the Exchange environment. 

Recent information on the SolarWinds DLL, tracked as SUNBURST (FireEye) and Solorigate (Microsoft), has shown that the actors behind the compromise may have had access to the Orion codebase as far back as October 10th, 2019. It’s been determined that SolarWinds Orion 2019.4 HF 5 through 2020.2.1 were affected with the following hotfixes released to fix the issues:

  • 2020.2.1 HF 1
  • 2020.2.1 HF 2

Additional analysis by various teams has determined that SUPERNOVA webshell discovered during initial analysis by FireEye may not be related to UNC2452/Dark Halo. Researchers have concluded that due to the unsigned nature of the binary that it is likely not as sophisticated as the Sunburst/Solorigate attack and potentially a second actor. Further research is being conducted to determine the attribution of the webshell.   

Initial Analysis of the SolarWinds Breach

Posted on 12/14/20

Recent disclosure and documentation by FireEye, beginning on 14 December, reported that FireEye was the victim of a highly sophisticated, state-sponsored attack. As more and more details are released about the attack, it has been confirmed this was part of a much larger campaign affecting numerous organizations and government agencies globally. This attack, which may have started as early as March 2020, was executed through the use of a supply chain compromise originating out of the SolarWinds Orion product. While full details around the compromise of the SolarWinds product are not currently known, we do know that a legitimate DLL used to support the product was modified to allow the actors remote access into SolarWinds customer environments. This access could allow for actors to deliver second-stage payloads, move laterally, and ultimately achieve their attack objectives.  

What has been reported thus far is that actors compromised a version of SolarWinds Orion, which was deployed to SolarWinds Clients through legitimate software updates. Once successfully deployed, the actors achieved initial access to the environment, which was then followed by attempts to achieve persistent access through compromising privileged accounts or by forging SAML tokens to allow for specific level of access. The primary goal for the actors appears to be establishing a legitimate and persistent access mechanism into the environment that can be used as the primary method of ingress.  After they have established this access method, the actor subsequently utilizes known tools such as Cobalt Strike’s BEACON module to move laterally and perform environment-specific actions-on-objective, as well as ensure they have foothold access into Exchange email environments.

It is important to note that while this particular attack focuses on SolarWinds as the initial access point through a supply chain vector, this could easily be applied to other products or services being widely used in customer environments. This solidifies and reiterates the need to fully understand your network and follow best-practices for hygiene, proactive defense measures, threat hunting, and response.  Also, we highly recommended threat modeling similar attack scenarios, followed by threat hunts to determine the likelihood an organization has been affected.  

Tactical Information & Recommendations

In order to provide customers with a solid strategy to identify and respond to this attack, as well as to ensure protection against similar types of attacks, GuidePoint Security’s DFIR team has developed the following tactical information and recommendations based on details collected from FireEye, Microsoft and SolarWinds reports. 

The following information can be used agnostic of any specific toolset while vendors continue to develop product-specific detection capabilities. 

Below are the high-level steps that GuidePoint recommends for anyone using SolarWinds Orion, along with supporting technical details.

Isolate

  • Ensure that the SolarWinds Orion appliance is isolated from the network until a patch can be deployed. If any evidence of compromise is found it should be further isolated from the internal network.

Patch / Stay Up to Date

  • SolarWinds: Organizations leveraging SolarWinds Orion Platform v2020.2 without a hotfix or 2020.2 HF 1 should upgrade ASAP to Orion Platform version 2020.2.1 HF 2 as soon as possible. For more information on SolarWinds’ guidance, go to https://www.solarwinds.com/securityadvisory.  
  • Security Products: As security vendors release additional content related to this attack, it is important to remain up to date and vigilant on what the content detects/protects.  

Hunt / Validate

  • Multiple Indicators of Compromise (IOCs) have been released thus far in the investigation. Confirm not only whether you were vulnerable, but also leverage the indicators provided here, as well as those distributed by the various vendors, to validate that you haven’t been further impacted. GuidePoint recommends that organizations perform threat hunting activities in order to identify if any IOCs are present in their environment. 

SolarWinds Supply Chain Attack IOCs

Behavioral Indicators

The primary communication mechanisms reported are HTTP with domain name fields matching the domains listed in the FireEye IOCs, and HTTP communications containing XML responses containing control codes embedded in various locations in the XML tree.  

SUNBURST SolarWinds Orion Backdoor

The SUNBURST malware communicates over an HTTP C2 channel with callouts delayed by a configurable timeframe.  The default value for this delay is one minute between callouts.  This communication channel uses a separate set of HTTP methods for requesting data from and sending data to the C2 server.  The HTTP GET or HEAD methods are used when the malware is requesting data from the C2 server, and the HTTP PUT or POST methods are used when the malware needs to send data to the C2 server. The malware will use the PUT method to send data when the payload (HTTP body length) is less than 10,000 bytes. Any payloads larger than 10,000 bytes will use the POST method.  The payload format being sent to the C2 server for both the PUT and POST requests is JSON containing the following schema:

Each HTTP Request contains the ‘If-None-Match’ HTTP header, with a XOR encoded value.  Methods of hunting for this activity are as follows:

  • Outbound HTTP PUT Requests with Content-Length < 10000 and ‘If-None-Match’ HTTP Header
  • Outbound HTTP POST Requests with Content-Length > 10000 and ‘If-None-Match’ HTTP Header
  • Outbound HTTP PUT or POST Requests with HTTP Request Content-Type Header value of ‘application/json’

Analysis conducted by FireEye and Microsoft determined that the SUNBURST backdoor used DNS resolutions of avsvmcloud[.]com as a built in killswitch depending on the IP address returned during the DNS query. FireEye and Microsoft worked together with GoDaddy to take over the malicious domain and modify the IP address returned during DNS resolution to mitigate the effectiveness of the SUNBURST backdoor.

TEARDROP Dropper

During FireEye’s analysis of the SolarWinds Supply Chain Compromise, they discovered a previously unobserved dropper that they have dubbed TEARDROP. This dropper has been found to run as a service and is responsible for loading additional executable code into memory with no on-disk presence. Based on details from FireEye, it appears that the TEARDROP dropper is associated with the file “C:\Windows\SYSWOW64\netsetupsvc.dll.”

Additionally, FireEye observed TEARDROP’s loading process which reads from the file “gracious_truth.jpg,” which contains the obfuscated payload, uses a fake JPG file header, and uses a rolling XOR algorithm to decode the payload before executing it in memory. According to FireEye’s analysis of TEARDROP, this dropper could load any executable code into memory for execution, but was likely used to execute a customized Cobalt Strike BEACON.

FireEye created YARA signatures that can be used to detect TEARDROP on impacted systems which can be found here.

SUPERNOVA .NET SolarWinds Service Webshell

GuidePoint recently released a blog regarding the SUPERNOVA .NET webshell backdoor masquerading as a legitimate SolarWinds web service handler.  This .NET module inspects inbound HTTP requests and responds to HTTP requests sent with specific query strings, cookies, or HTML form values.  The .NET webshell is located under the filename ‘app_web_logoimagehandler.ashx.<8 alphanumeric chars>.dll’. The request will also contain values for the following parameters that are used to compile anonymous code for execution by the webshell:

  • codes: This parameter stores compiler codes to be passed to the webshell during compilation
  • clazz: The C# Class name to compile as module for execution by the webshell
  • method: The C# Class Method to be called within the C# Class listed by the ‘clazz’ parameter
  • args: Newline-delimited list of arguments to pass as parameters to the C# Method listed by the ‘method’ parameter

The result of the memory execution of this compiled code will be written directly to the HTTP Response body, and the HTTP Response Content-Type Header will have the value of ‘text/plain’. Methods to identify this activity are as follows:

  • Inbound HTTP GET Requests with: 
    • URI file ending with logoimagehandler.ashx AND
    • HTTP body parameters of ‘codes’, ‘clazz’, ‘method’, or ‘args’ AND
    • HTTP Response Status Code of 200, AND
    • HTTP Response Content-Type Header Value of text/plain
  • Inbound HTTP POST Requests with:
    • URI file ending with logoimagehandler.ashx AND
    • HTTP Response Status Code of 200, AND/OR
    • HTTP Response Content-Type Header Value of text/plain 

Cobalt Strike BEACON

One method of lateral movement was reported as remote scheduled tasks implementing Cobalt Strike BEACON via %COMSPEC% or PowerShell encoded command executions. For each Cobalt Strike BEACON Scheduled Task, there would be a network communication occurring commensurate with the execution of the Scheduled Task.  One method of identifying this activity is to review Scheduled Task execution in the environment, specifically Task Names and their associated binary/command executions.  Since these actors have been reported to execute the malicious Task in-between a remove-and-restore cycle of a legitimate Schedule Task, analysts will want to review:

  • Any Scheduled Task modifications conducted in rapid succession
  • Multiple Scheduled Task executions of the same Task Name with differing binaries/command executions on the same host
  • Scheduled Task executions in which there is a network connection outbound to TCP/443 by the Task binary
  • Scheduled Task executions with a Command Line value containing ‘%COMSPEC%’, ‘cmd’, or ‘powershell’, or with cmd.exe or powershell.exe executions associated with the Scheduled Task execution

Additional behavioral indications of usage of modules present within Cobalt Strike BEACON and reported lateral movement are as follows:

  • Windows Service (Event ID 7045) or Scheduled Task (EventID 4698, 4700) creations with 7-character pseudo-random alphanumeric character Service or Task Names
  • Windows Services (Event ID 7045) or Scheduled Tasks (EventID 4698, 4700) with Service Filename or Command containing UNC ADMIN$ share path references, beginning with either the loopback IP address or RFC1918 localhost IP address (ex: ‘\\127.0.0.1\ADMIN$\<7-character>.exe’)
  • PowerShell (Event ID 400) with the following values:
    • HostName: ConsoleHost
    • HostApplication contains ‘rundll32.exe’
    • HostVersion and EngineVersion with different version numbers
      • Ex: HostVersion:1.0 and EngineVersion: 5.1.17763.1
  • PowerShell (Event ID 400) with Base64 encoded value in HostApplication field
  • Recent changes in NTFS FileName Creation Time for Scheduled Task or at job files located in C:\Windows\System32\Tasks or C:\Windows\Tasks.  Each Scheduled Task and at job should be reviewed for any outlying recent NTFS Creation timestamps or unauthorized commands.

Atomic Indicators 

Domains

DomainAssociation
aysymcloud[.]comSUNBURST
databasegalore[.]comSUNBURST/BEACON
deftsecurity[.]comSUNBURST
digitalcollege[.]orgSUNBURST
ervsystem[.]comTEARDROP
freescanonline[.]comSUNBURST
globalnetworkissues[.]comSUNBURST
highdatabase[.]comSUNBURST
incomeupdate[.]orgBEACON
infinitysoftwares[.]comTEARDROP
kubecloud[.]comBEACON
lcomputers[.]comBEACON
mobilnweb[.]comUnknown Association
panhardware[.]comSUNBURST/BEACON
seobundlekit[.]comSUNBURST
solartrackingsystem[.]netBEACON
thedoccloud[.]comSUNBURST
virtualdataserver[.]comSUNBURST
virtualwebdata[.]comSUNBURST
webcodez[.]comBEACON
websitetheme[.]comSUNBURST
zupertech[.]comSUNBURST/BEACON

IP Addresses

IP AddressAssociation
162.223.31[.]184BEACON
173.237.190[.]2BEACON
3.87.182[.]149BEACON
34.219.234[.]134BEACON
45.141.152[.]18BEACON
13.57.184[.]217SUNBURST
13.59.205[.]66SUNBURST
139.99.115[.]204SUNBURST
18.220.219[.]143SUNBURST
18.253.52[.]187SUNBURST
204.188.205[.]176SUNBURST
3.16.81[.]254SUNBURST
34.203.203[.]23SUNBURST
5.252.177[.]21SUNBURST
5.252.177[.]25SUNBURST
51.89.125[.]18SUNBURST
54.193.127[.]66SUNBURST
54.215.192[.]52SUNBURST
107.152.35[.]77SUNBURST
167.114.213[.]199Unknown Association
18.217.225[.]111Unknown Association
184.72.1[.]3Unknown Association
184.72.101[.]22Unknown Association
184.72.113[.]55Unknown Association
184.72.145[.]34Unknown Association
184.72.209[.]33Unknown Association
184.72.21[.]54Unknown Association
184.72.212[.]52Unknown Association
184.72.224[.]3Unknown Association
184.72.229[.]1Unknown Association
184.72.240[.]3Unknown Association
184.72.245[.]1Unknown Association
184.72.48[.]22Unknown Association
196.203.11[.]89Unknown Association
198.12.75[.]112Unknown Association
20.141.48[.]154Unknown Association
8.18.144[.]11Unknown Association
8.18.144[.]12Unknown Association
8.18.144[.]130Unknown Association
8.18.144[.]135Unknown Association
8.18.144[.]136Unknown Association
8.18.144[.]149Unknown Association
8.18.144[.]156Unknown Association

File Hashes: SUNBURST

Microsoft published a list of nineteen malicious SolarWinds.Orion.Core.BusinessLayer.dll DLL files spotted in the wild. We have listed them below with the file version and date first seen.

SHA256File VersionDate First Seen

e0b9eda35f01c1540134ab
a9195e7e6393286dde3e0
01fce36fb661cc346b91d

2020.2.100.11713
February 2020
a58d02465e26bdd3a839fd
90e4b317eece431d28cab2
03bbdde569e11247d9e2
2020.2.100.11784March 2020
32519b85c0b422e4656de6
e6c41878e95fd95026267d
aab4215ee59c107d6c77
2019.4.5200.9083March 2020
dab758bf98d9b36fa057a66
cd0284737abf89857b73ca8
9280267ee7caf62f3b
2020.2.100.12219March 2020
eb6fab5a2964c5817fb239a
7a5079cabca0a00464fb3e0
7155f28b0a57a2c0ed
2020.2.100.11831March 2020
c09040d35630d75dfef0f80
4f320f8b3d16a481071076
918e9b236a321c1ea77
N/AMarch 2020
ffdbdd460420972fd2926a7
f460c198523480bc6279dd
6cca177230db18748e8
2019.4.5200.9065March 2020
b8a05cc492f70ffa4adcd446
b693d5aa2b71dc4fa2bf502
2bf60d7b13884f666
2019.4.5200.9068March 2020
20e35055113dac104d2bb0
2d4e7e33413fae0e5a426e
0eea0dfd2c1dce692fd9
2019.4.5200.9078March 2020
0f5d7e6dfdd62c83eb096ba
193b5ae394001bac036745
495674156ead6557589
2019.4.5200.9078March 2020
cc082d21b9e880ceb6c96d
b1c48a0375aaf06a5f444cb
0144b70e01dc69048e6
2019.4.5200.9083March 2020
ac1b2b89e60707a20e9eb1
ca480bc3410ead40643b38
6d624c5d21b47c02917c
2020.4.100.478April 2020
019085a76ba7126fff22770
d71bd901c325fc68ac55aa7
43327984e89f4b0134
2020.2.5200.12394April 2020
ce77d116a074dab7a22a0fd
4f2c1ab475f16eec42e1ded3
c0b0aa8211fe858d6
2020.2.5300.12432May 2020
2b3445e42d64c85a5475bdb
c88a50ba8c013febb53ea971
19a11604b7595e53d
2019.4.5200.9078May 2020
92bd1c3d2a11fc4aba2735d9
547bd0261560fb20f36a0e7c
a2f2d451f1b62690
2020.4.100.751 May 2020
a3efbc07068606ba1c19a7ef
21f4de15d15b41ef680832d7
bcba485143668f2d
 N/AN/A
a25cadd48d70f6ea0c4a241d
99c5241269e6faccb4054e62
d16784640f8e53bc
2019.4.5200.8890October 2019
d3c6785e18fba3749fb785bc3
13cf8346182f532c59172b69
adfb31b96a5d0af
2019.4.5200.8890October 2019

File Hashes: SUPERNOVA and TEARDROP

SHA256 HashAssociation
c15abaf51e78ca56c0376522d699c97821
7bf041a3bd3c71d09193efa5717c71
SUPERNOVA
118189f90da3788362fe85eafa55529842
3e21ec37f147f3bf88c61d4cd46c51
TEARDROP
1817a5bf9c01035bcf8a975c9f1d94b0ce7
f6a200339485d8f93859f8f6d730c
TEARDROP

Resources

While we’ve collected some general guidance and recommendations regarding this threat, our partnering solution providers should be developing specific content unique to their technologies as more information is becoming available.  Further details on the attack and recommendations can also be found in the following posts by Microsoft, SolarWinds & FireEye who are currently working to overcome these attacks.