www.proofpoint.com Open in urlscan Pro
45.60.155.207  Public Scan

Submitted URL: https://www.proofpoint.com/us/blog/threat-insight/malware-must-not-be-named-suspected-espionage-campaign-delivers-voldemort...
Effective URL: https://www.proofpoint.com/us/blog/threat-insight/malware-must-not-be-named-suspected-espionage-campaign-delivers-voldemort
Submission: On October 01 via api from IN — Scanned from DE

Form analysis 4 forms found in the DOM

<form class="header-nav__search-form">
  <input type="text" class="header-nav__search-input" placeholder="">
  <input type="submit" class="header-nav__search-button" val="Search">
</form>

<form id="mktoForm_19277" data-mkto-id="19277" data-mkto-base="//app-abj.marketo.com" data-munchkin-id="309-RHV-619" data-submit-text="" data-redirect-link="" data-prefill="" data-event-label="" data-lang-code="us" data-validate-email="1"
  class="mk-form__form marketo-form-block__form mktoForm mktoHasWidth mktoLayoutLeft js-visible mkto-form-processed" data-asset-type="Blogs Subscribe" novalidate="novalidate"
  style="font-family: inherit; font-size: 16px; color: rgb(51, 51, 51); width: 1601px;">
  <style type="text/css"></style>
  <div class="mktoFormRow">
    <div class="mktoFieldDescriptor mktoFormCol" style="margin-bottom: 5px;">
      <div class="mktoOffset" style="width: 5px;"></div>
      <div class="mktoFieldWrap mktoRequiredField"><label for="Email" id="LblEmail" class="mktoLabel mktoHasWidth" style="width: 150px;">
          <div class="mktoAsterix">*</div>Business Email:
        </label>
        <div class="mktoGutter mktoHasWidth" style="width: 5px;"></div><input id="Email" name="Email" placeholder="Business Email  *" maxlength="255" aria-labelledby="LblEmail InstructEmail" type="email"
          class="mktoField mktoEmailField mktoHasWidth mktoRequired" aria-required="true" style="width: 200px;"><span id="InstructEmail" tabindex="-1" class="mktoInstruction"></span>
        <div class="mktoClear"></div>
      </div>
      <div class="mktoClear"></div>
    </div>
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="blogInterest" class="mktoField mktoFieldDescriptor mktoFormCol" value="All Blog Posts" placeholder="" style="margin-bottom: 5px;">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="Employees_Picklist__c" class="mktoField mktoFieldDescriptor mktoFormCol" value="" placeholder="" style="margin-bottom: 5px;">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="State" class="mktoField mktoFieldDescriptor mktoFormCol" value="State/Province" placeholder="" style="margin-bottom: 5px;">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="Most_Recent_Medium__c" class="mktoField mktoFieldDescriptor mktoFormCol" value="Website" placeholder="" style="margin-bottom: 5px;">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="Most_Recent_Medium_Detail__c" class="mktoField mktoFieldDescriptor mktoFormCol" value="www-pfpt" placeholder="" style="margin-bottom: 5px;">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="Industry" class="mktoField mktoFieldDescriptor mktoFormCol" value="" placeholder="" style="margin-bottom: 5px;">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="Website" class="mktoField mktoFieldDescriptor mktoFormCol" value="" placeholder="" style="margin-bottom: 5px;">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="AnnualRevenue" class="mktoField mktoFieldDescriptor mktoFormCol" value="" placeholder="" style="margin-bottom: 5px;">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="demandbasesid" class="mktoField mktoFieldDescriptor mktoFormCol" value="" placeholder="" style="margin-bottom: 5px;">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="demandBase_Data_Source" class="mktoField mktoFieldDescriptor mktoFormCol" value="" placeholder="" style="margin-bottom: 5px;">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="Primary_Product_Interest__c" class="mktoField mktoFieldDescriptor mktoFormCol" value="" placeholder="" style="margin-bottom: 5px;">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="UTM_Post_ID__c" class="mktoField mktoFieldDescriptor mktoFormCol" value="" placeholder="" style="margin-bottom: 5px;">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="utmcampaign" class="mktoField mktoFieldDescriptor mktoFormCol" value="" placeholder="" style="margin-bottom: 5px;">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="utmterm" class="mktoField mktoFieldDescriptor mktoFormCol" value="" placeholder="" style="margin-bottom: 5px;">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="db_employee_count" class="mktoField mktoFieldDescriptor mktoFormCol" value="" placeholder="" style="margin-bottom: 5px;">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="Unsubscribed" class="mktoField mktoFieldDescriptor mktoFormCol" value="0" placeholder="" style="margin-bottom: 5px;">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoButtonRow"><span class="mktoButtonWrap mktoNative" style="margin-left: 110px;"><button type="submit" class="mktoButton">Submit</button></span></div><input type="hidden" name="formid" class="mktoField mktoFieldDescriptor"
    value="19277" placeholder=""><input type="hidden" name="munchkinId" class="mktoField mktoFieldDescriptor" value="309-RHV-619" placeholder=""><input type="hidden" name="Website_Conversion_URL__c" class="mktoField mktoFieldDescriptor"
    value="https://www.proofpoint.com/us/blog/threat-insight/malware-must-not-be-named-suspected-espionage-campaign-delivers-voldemort#new_tab" placeholder=""><input type="hidden" name="gAClientID" class="mktoField mktoFieldDescriptor"
    value="1651431742.1727766293" placeholder="">
  <style type="text/css"></style>
  <div class="mktoFormRow">
    <div class="mktoFieldDescriptor mktoFormCol" style="margin-bottom: 5px;">
      <div class="mktoOffset" style="width: 5px;"></div>
      <div class="mktoFieldWrap mktoRequiredField"><label for="Email" id="LblEmail" class="mktoLabel mktoHasWidth" style="width: 150px;">
          <div class="mktoAsterix">*</div>Business Email:
        </label>
        <div class="mktoGutter mktoHasWidth" style="width: 5px;"></div><input id="Email" name="Email" placeholder="Business Email *" maxlength="255" aria-labelledby="LblEmail InstructEmail" type="email"
          class="mktoField mktoEmailField mktoHasWidth mktoRequired" aria-required="true" style="width: 200px;"><span id="InstructEmail" tabindex="-1" class="mktoInstruction"></span>
        <div class="mktoClear"></div>
      </div>
      <div class="mktoClear"></div>
    </div>
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="blogInterest" class="mktoField mktoFieldDescriptor mktoFormCol" value="All Blog Posts" placeholder="" style="margin-bottom: 5px;">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="Employees_Picklist__c" class="mktoField mktoFieldDescriptor mktoFormCol" value="" placeholder="" style="margin-bottom: 5px;">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="State" class="mktoField mktoFieldDescriptor mktoFormCol" value="State/Province" placeholder="" style="margin-bottom: 5px;">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="Most_Recent_Medium__c" class="mktoField mktoFieldDescriptor mktoFormCol" value="Website" placeholder="" style="margin-bottom: 5px;">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="Most_Recent_Medium_Detail__c" class="mktoField mktoFieldDescriptor mktoFormCol" value="www-pfpt" placeholder="" style="margin-bottom: 5px;">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="Industry" class="mktoField mktoFieldDescriptor mktoFormCol" value="" placeholder="" style="margin-bottom: 5px;">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="Website" class="mktoField mktoFieldDescriptor mktoFormCol" value="" placeholder="" style="margin-bottom: 5px;">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="AnnualRevenue" class="mktoField mktoFieldDescriptor mktoFormCol" value="" placeholder="" style="margin-bottom: 5px;">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="demandbasesid" class="mktoField mktoFieldDescriptor mktoFormCol" value="" placeholder="" style="margin-bottom: 5px;">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="demandBase_Data_Source" class="mktoField mktoFieldDescriptor mktoFormCol" value="" placeholder="" style="margin-bottom: 5px;">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="Primary_Product_Interest__c" class="mktoField mktoFieldDescriptor mktoFormCol" value="" placeholder="" style="margin-bottom: 5px;">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="UTM_Post_ID__c" class="mktoField mktoFieldDescriptor mktoFormCol" value="" placeholder="" style="margin-bottom: 5px;">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="utmcampaign" class="mktoField mktoFieldDescriptor mktoFormCol" value="" placeholder="" style="margin-bottom: 5px;">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="utmterm" class="mktoField mktoFieldDescriptor mktoFormCol" value="" placeholder="" style="margin-bottom: 5px;">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="db_employee_count" class="mktoField mktoFieldDescriptor mktoFormCol" value="" placeholder="" style="margin-bottom: 5px;">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="Unsubscribed" class="mktoField mktoFieldDescriptor mktoFormCol" value="0" placeholder="" style="margin-bottom: 5px;">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoButtonRow"><span class="mktoButtonWrap mktoNative" style="margin-left: 110px;"><button type="submit" class="mktoButton">Submit</button></span></div>
</form>

<form data-mkto-id="19277" data-mkto-base="//app-abj.marketo.com" data-munchkin-id="309-RHV-619" data-submit-text="" data-redirect-link="" data-prefill="" data-event-label="" data-lang-code="us" data-validate-email="1"
  class="mk-form__form marketo-form-block__form mktoForm mktoHasWidth mktoLayoutLeft" data-asset-type="Blogs Subscribe" novalidate="novalidate"
  style="font-family: inherit; font-size: 16px; color: rgb(51, 51, 51); visibility: hidden; position: absolute; top: -500px; left: -1000px; width: 1600px;"></form>

<form data-mkto-id="19277" data-mkto-base="//app-abj.marketo.com" data-munchkin-id="309-RHV-619" data-submit-text="" data-redirect-link="" data-prefill="" data-event-label="" data-lang-code="us" data-validate-email="1"
  class="mk-form__form marketo-form-block__form mktoForm mktoHasWidth mktoLayoutLeft js-visible mkto-form-processed" data-asset-type="Blogs Subscribe" novalidate="novalidate"
  style="font-family: inherit; font-size: 16px; color: rgb(51, 51, 51); width: 1600px; visibility: hidden; position: absolute; top: -500px; left: -1000px;"></form>

Text Content

Skip to main content
English (Americas)
Search
Login
 * Platform
 * Products
 * Solutions

Proofpoint
Contact

Search

 * Platform
 * Products
 * Solutions
 * Partners
 * Resources
 * Company

Search
Login
English (Americas)
Platform
Products
Solutions
Partners
Resources
Company
Protect People
Multi-layered, adaptive defenses for threat detection, impersonation, and
supplier risk.
Email Security
Impersonation Protection
More products
Defend Data
Transform your information protection with a human-centric, omni-channel
approach.
Enterprise DLP
Adaptive Email DLP
Insider Threat Management
Intelligent Compliance
Mitigate Human Risk
Unlock full user risk visibility and drive behavior change.
Security Awareness
Augment Your Capabilities
Managed Services
Product Packages

More Protect People Products
Account Take-Over and Identity Protection
Secure vulnerable identities, stop lateral movement and privilege escalation.
Adaptive Email Security
Stop more threats with a fully integrated layer of behavioral AI.
Secure Email Relay
Secure your application email and accelerate DMARC implementation
Solutions by Use Case
How Proofpoint protects your people and data.
Authenticate Your Email
Protect your email deliverability with DMARC.
Combat Email and Cloud Threats
Protect your people from email and cloud threats with an intelligent and
holistic approach.
More use cases
Solutions by Industry
People-centric solutions for your organization.
Federal Government
Cybersecurity for federal government agencies.
State and Local Government
Protecting the public sector, and the public from cyber threats.
More industries
Comparing Proofpoint
Evaluating cybersecurity vendors? Check out our side-by-side comparisons.
View comparisons


SOLUTIONS BY USE CASE

How Proofpoint protects your people and data.
Change User Behavior
Help your employees identify, resist and report attacks before the damage is
done.
Combat Data Loss and Insider Risk
Prevent data loss via negligent, compromised and malicious insiders.
Modernize Compliance and Archiving
Manage risk and data retention needs with a modern compliance and archiving
solution.
Protect Cloud Apps
Keep your people and their cloud apps secure by eliminating threats and data
loss.
Prevent Loss from Ransomware
Learn about this growing threat and stop attacks by securing ransomware's top
vector: email.
Secure Microsoft 365
Implement the best security and compliance solution for Microsoft 365.


SOLUTIONS BY INDUSTRY

People-centric solutions for your organization.
Higher Education
A higher level of security for higher education.
Financial Services
Eliminate threats, build trust and foster growth for your organization.
Healthcare
Protect clinicians, patient data, and your intellectual property against
advanced threats.
Mobile Operators
Make your messaging environment a secure environment.
Internet Service Providers
Cloudmark email protection.
Small and Medium Businesses
Big-time security for small business.


PROOFPOINT VS. THE COMPETITION

Side-by-side comparisons.
Proofpoint vs. Abnormal Security
Proofpoint vs. Mimecast
Proofpoint vs. Cisco
Proofpoint vs Microsoft
Proofpoint vs. Microsoft Purview
Proofpoint vs. Legacy DLP


PARTNERS

Deliver Proofpoint solutions to your customers.
Channel Partners

Archive Extraction Partners
Learn about Extraction Partners.
GSI and MSP Partners
Learn about our global consulting.
Technology and Alliance Partners
Learn about our relationships.
Social Media Protection Partners
Learn about the technology and....
Proofpoint Essentials Partner Programs
Small Business Solutions .
Become a Channel Partner


RESOURCES

Find reports, webinars, blogs, events, podcasts and more.
Resource Library

Blog
Keep up with the latest news and happenings.
Webinars
Browse our webinar library to learn about the latest threats, trends and issues
in cybersecurity.
Cybersecurity Academy
Earn your certification to become a Proofpoint Certified Guardian.
Podcasts
Learn about the human side of cybersecurity.
New Perimeters Magazine
Get the latest cybersecurity insights in your hands.
Threat Glossary
Learn about the latest security threats.
Events
Connect with us at events to learn how to protect your people and data from
ever-evolving threats.
Customer Stories
Read how our customers solve their most pressing cybersecurity challenges.


COMPANY

Proofpoint protects organizations' greatest assets and biggest risks: their
people.
About Proofpoint

Why Proofpoint
Learn about our unique people-centric approach to protection.
Careers
Stand out and make a difference at one of the world's leading cybersecurity
companies.
News Center
Read the latest press releases, news stories and media highlights about
Proofpoint.
Privacy and Trust
Learn about how we handle data and make commitments to privacy and other
regulations.
Environmental, Social, and Governance
Learn how we apply our principles to positively impact our community.
Support
Access the full range of Proofpoint support services.


PLATFORM

Discover the Proofpoint human-centric platform.
Learn More

Proofpoint Nexus
Detection technologies to protect people and defend data.
Proofpoint Zen
Protect and engage users wherever they work.
Search Proofpoint
Try searching for
Email Security Phishing DLP Email Fraud
Select Product Login
 * Support Log-in
 * Proofpoint Cybersecurity Academy
 * Digital Risk Portal
 * Email Fraud Defense
 * ET Intelligence
 * Proofpoint Essentials
 * Sendmail Support Log-in

Select Language
 * English (Americas)
 * English (Europe, Middle East, Africa)
 * English (Asia-Pacific)
 * Español
 * Deutsch
 * Français
 * Italiano
 * Português
 * 日本語
 * 한국어

Blog
Threat Insight
The Malware That Must Not Be Named: Suspected Espionage Campaign Delivers
“Voldemort”


THE MALWARE THAT MUST NOT BE NAMED: SUSPECTED ESPIONAGE CAMPAIGN DELIVERS
“VOLDEMORT”

Share with your network!

August 29, 2024 Tommy Madjar, Pim Trouerbach, Selena Larson and the Proofpoint
Threat Research Team


KEY FINDINGS 

 * Proofpoint researchers identified an unusual campaign delivering malware that
   the threat actor named “Voldemort”.  
 * Proofpoint assesses with moderate confidence the goal of the activity is to
   conduct espionage.  
 * The activity impersonated tax authorities from governments in Europe, Asia,
   and the U.S. and targeted dozens of organizations worldwide. 
 * The ultimate objective of the campaign is unknown, but Voldemort has
   capabilities for intelligence gathering and to deliver additional payloads.  
 * Voldemort’s attack chain has unusual, customized functionality including
   using Google Sheets for command and control (C2) and using a saved search
   file on an external share.  


OVERVIEW 

In August 2024, Proofpoint researchers identified an unusual campaign using a
novel attack chain to deliver custom malware. The threat actor named the malware
“Voldemort” based on internal filenames and strings used in the malware. 

The attack chain comprises multiple techniques currently popular within the
threat landscape as well as uncommon methods for command and control (C2) like
the use of Google Sheets. Its combination of the tactics, techniques, and
procedures (TTPs), lure themes impersonating government agencies of various
countries, and odd file naming and passwords like “test” are notable.
Researchers initially suspected the activity may be a red team, however the
large volume of messages and analysis of the malware very quickly indicated it
was a threat actor.  

Proofpoint assesses with moderate confidence this is likely an advanced
persistent threat (APT) actor with the objective of intelligence gathering.
However, Proofpoint does not have enough data to attribute with high confidence
to a specific named threat actor (TA). Despite the widespread targeting and
characteristics more typically aligned with cybercriminal activity, the nature
of the activity and capabilities of the malware show more interest in espionage
rather than financial gain at this time. 

Voldemort is a custom backdoor written in C. It has capabilities for information
gathering and to drop additional payloads. Proofpoint observed Cobalt Strike
hosted on the actor's infrastructure, and it is likely that is one of the
payloads that would be delivered.  


CAMPAIGN DETAILS 

VOLUME AND TARGETING 

Beginning on 5 August 2024, the malicious activity included over 20,000 messages
impacting over 70 organizations globally. The first wave of messages included a
few hundred messages daily but then spiked on 17 August with nearly 6,000 total
messages.  

Messages purported to be from various tax authorities notifying recipients about
changes to their tax filings. Throughout the campaign the actor impersonated tax
agencies in the U.S. (Internal Revenue Service), the UK (HM Revenue & Customs),
France (Direction Générale des Finances Publiques), Germany (Bundeszentralamt
für Steuern), Italy (Agenzia delle Entrate), and from August 19, also India
(Income Tax Department), and Japan (National Tax Agency). Each lure was
customized and written in the language of the authority being impersonated. 

Proofpoint analysts correlated the language of the email with public information
available on a select number of targets, finding that the threat actor targeted
the intended victims with their country of residence, rather than the country
that the targeted organization operates in, or country or language that could be
extracted from the email address. For example, certain targets in a
multi-national European organization received emails impersonating the IRS
because their publicly available information linked them to the US. In some
cases, it appears that the threat actor mixed up the country of residence for
some victims when the target had the same (but uncommon) name as a more
well-known person with a more public presence.   

Emails were sent from suspected compromised domains, with the actor including
the real domain of the agency in the email address. For example, an email
impersonating the U.S. IRS appeared to be: 

        From: Federal IRS <no_reply_irs[.]gov@amecaindustrial[.]com>  

Other sender domains included: 

        tblsys[.]com 
        joshsznapstajler[.]com 
        ideasworkshop[.]it 



Emails impersonating HRMC and DGFIP.  

The threat actor targeted 18 different verticals, but nearly a quarter of the
organizations targeted were insurance companies. Aerospace, transportation, and
university entities made up the rest of the top 50% of organizations targeted by
the threat actor.  



Vertical targeting breakdown of Voldemort malware email campaigns. 

ATTACK CHAIN 

The messages contain Google AMP Cache URLs that redirect to a landing page
hosted on InfinityFree, or later in the campaign, linking directly to the
landing page. The landing page includes a "Click to view document" link that,
when clicked, checks the User Agent of the browser. 



InfinityFree hosted landing page with a background User Agent check, with popup
asking the victim to open Windows Explorer after clicking the “View Document”
button.  

If the User Agent contains "windows", the browser is redirected to a search-ms
URI, pointing to a  TryCloudflare-tunneled URI ending with .search-ms, prompting
the victim to open Windows Explorer; however, this query is never visible to the
victim, only the resulting popup is. It will also load an image from a URL
ending in /stage1 on an IP address running the logging service pingb.in to log a
successful redirect. The use of the pingb.in service allows the threat actor to
gather additional browser and network information about the victim. 



HTML Redirect Logic embedded on landing page.   

If the User Agent does not contain "windows," the browser will be redirected to
a Google Drive URL that is empty, and it will load an image similarly from the
pingb.in IP, but with the URL ending in /stage0. This allows the threat actor to
track browser and network details for those that did click the button but were
not served any malicious content. 

If the victim accepts opening Windows Explorer, Windows Explorer will silently
perform a Windows Search query as directed by the linked .search-ms file. The
.search-ms file is never downloaded or displayed to the user but instead  abuses
the file format which will be discussed in the “Abusing the Saved Search File
Format” section of this blog. This will result in displaying a Windows shortcut
file (often referred to as a LNK because of the file extension it uses) or,
later in the campaign, a ZIP file containing a similar LNK in Windows Explorer
using a filename related to the original email lure. This LNK or ZIP is hosted
on the same TryCloudflare host, but in another WebDAV share, \pub\. Notably, the
file looks like it is hosted directly in the Downloads folder on the recipients’
host as opposed to the external share. It also uses a PDF icon to masquerade as
a different file type. These two techniques may lead the recipient to believe it
is a local PDF file, which may increase the likelihood of clicking on the
content.  



Shortcut masquerading as a PDF hosted on an external WebDAV in a way that makes
it appear as if it were in the user’s local Downloads folder. 

If the LNK is executed, it will invoke PowerShell to run Python.exe from a third
WebDAV share on the same tunnel (\library\), passing a Python script on a fourth
share (\resource\) on the same host as an argument. This causes Python to run
the script without downloading any files to the computer, with dependencies
being loaded directly from the WebDAV share. 



Security notification displayed to the user when the LNK is opened. 

The executed Python script is specific to the original lure, depending on
language and geographic targeting. Interestingly, it begins by checking the
operating system, even though this check was already done on the landing page.
If the script detects a Windows environment, it proceeds with specific actions.
No functions are executed on other operating systems, however. These actions on
Windows include: 

 * Collecting information about the computer using the Python function
   platform.uname(), including the computer name, Windows version information,
   and CPU information.  
 * Sending data as base64 in a URL via a GET request to the same pingb.in IP as
   on the landing page, but with /stage2-2/ in the URL, for example: 

   hxxp://83[.]147[.]243[.]18/p/7c31e3ebfb77ead34ea71900b1b0/stage2-2/[base64
string] 



Threat actor’s pingb.in web interface. 



PCAP of pingb.in traffic.  

The GET request does not contain any other data except the standard headers
automatically generated by the Python HTTP library. It then downloads a decoy
PDF, relevant to the targeted country, from OpenDrive (a file hosting service
like OneDrive) and opens it. 



Decoy PDF impersonating DGFIP. 

The script collects the computer name, username, domain, and again the result of
platform.uname(), storing it as a base64 string and posting it as described
above but this time with /stage1-2/ in the URL (despite being executed after
stage2-2). 

It downloads a password-protected ZIP file called test.png or logo.png from
OpenDrive saves it as %localappdata%\Microsoft\Windows\test.zip or logo.zip, and
extracts the contents, CiscoCollabHost.exe and CiscoSparkLauncher.dll, using the
password “test@123.” 

It executes the file CiscoCollabHost.exe and deletes the downloaded ZIP as the
final action of the Python script. CiscoCollabHost.exe is a legitimate
executable related to WebEx and is used to side-load the DLL named
CiscoSparkLauncher.dll 

CiscoSparkLauncher.dll, which has the exported DLL name
“Voldemort_gdrive_dll.dll” or, later in the campaign, “Voldemort_gdrive_c.dll”,
is detailed in the Malware Analysis section of this report. Proofpoint tracks
this payload as Voldemort. 

While the URLs to the respective landing pages have been static, the hostname
for the TryCloudflare tunnel used in the initial seach-ms query and subsequent
WebDAV shares has changed frequently, often daily. Even though the hostname has
changed, the structure of the WebDAV shares has been the same: 

        \public\ - contains the .search-ms files. 
        \pub\ - contains the LNK or later ZIP files 
        \library\ - contains the Python distribution and dependencies 
        \resource\ - contains the Python scripts 

Voldemort is a backdoor with capabilities for information gathering and can load
additional payloads. A full technical breakdown of the malware and related
payloads is available below.  

APT ACTIVITY WITH CYBERCRIME VIBES 

Interestingly, the actor used multiple techniques that are becoming more popular
in the cybercrime landscape, which—in addition to the volume and targeting that
is also more aligned with ecrime campaigns—is unusual. While the lures in the
campaign are more typical of a criminal threat actor, the features included in
the backdoor are more similar to the features typically found in the tools used
for espionage. 

Threat actors abuse file schema URIs to access external file sharing resources
for malware staging, specifically WebDAV and Server Message Block (SMB). This is
done by using the schema “file://” and pointing to a remote server hosting the
malicious content. This technique is observed with increasing frequency from
cybercriminal threats including IABs.  

Proofpoint researchers recently observed an uptick in the abuse of Cloudflare
Tunnels, specifically the TryCloudflare feature that allows an attacker to
create a one-time tunnel without creating an account. Tunnels are a way to
remotely access data and resources that are not on the local network, like using
a virtual private network (VPN) or secure shell (SSH) protocol.  Each use of
TryCloudflare Tunnels generates a random subdomain on trycloudflare[.]com, for
example ride-fatal-italic-information[.]trycloudflare[.]com. Traffic to the
subdomains is proxied through Cloudflare to the operators’ local server.
Notably, with Voldemort activity, the threat actors used just four unique
TryCloudflare tunnels over the month of August 2024, as opposed to creating a
new tunnel for each wave of messages, as Proofpoint has observed with other
malicious activity clusters. Unlike previously observed activity, in this
campaign the Python dependencies were not downloaded directly on the host and
were loaded from the WebDAV share instead.  

ABUSING THE SAVED SEARCH FILE FORMAT 

In general, threat actors abuse the Windows search protocol (search-ms) in order
to locally, in a folder, display files hosted on a remote machine. This
technique is often used to deploy various remote access trojans (RATs).
Search-ms allows applications, JavaScript, or HTML to display remote files that
look like trusted content directly on a host. Proofpoint has observed multiple
cybercrime threat actors – from commodity malware users to initial access
brokers (IABs) – leverage this technique. The Voldemort malware campaign is
using the rarely observed technique of the saved search file format (.search-ms)
which lets the actor save a search query as a file on the WebDAV share.   

Normally when a threat actor abuses the Microsoft search protocol, the URI
includes the host on which the search is going to be performed, the query that
is going to be executed, and the display name of the search. In this case, the
search-ms URI contained just the display name and a subquery for a URI on a
WebDAV share that also ended in .search-ms. For example: 

       
Search[:]displayname=Downloads&subquery=%5C%ways-sms-pmc-shareholders[.]trycloudflare.com@SSL%5Cpublic%5CSA150_Notes_2024.search-ms 

Even more puzzling, when the query was opened in Windows Explorer, the user was
instead directed to a search for an .lnk or .zip file without any indication
that a file was opened or something similar—the query was performed silently.
Moreover, when Proofpoint researchers manually inspected the location of the
file, it was no longer in the \public\ share. Instead, the displayed file
resided in the \pub\ share on the same host. Upon investigation, researchers
discovered virtual folders that, if opened, resulted in the same experience as
opening the search URI. The virtual folders were actually the .search-ms files
used in the search URI. 



Manual browsing of WebDAV share via browser. 

These .search-ms files turned out to be XML files of the type "Saved Search File
Format." Typically, these files are created when performing a search in Windows
and manually saving the search, for example, by right-clicking in the search
window and selecting "Save search." 



Searching locally and saving the search to create a .search-ms file. 



Resulting .search-ms file after saving the search. 

Saving a search will create a .search-ms file in the saved search folder on a
Windows host. However, the extension is hidden, even if the option to view
extensions for known file types is selected. This is similar to how a user does
not typically see the .lnk extension for Windows shortcuts. The functionality of
a saved search is intended for situations where someone performs the same
searches regularly and wants to easily repeat them with the results presented in
a consistent manner. Similar to a search: or search-ms: URI, this will perform
the same search again. But with the .search-ms file, a user can also specify how
they want Windows Explorer to display the results more specifically. If abused,
.search-ms files can more effectively hide elements that would otherwise
indicate that the victim is not in a folder on their local machine. 

Here are some interesting parts from one of the .search-ms files the actor was
using: 

 * Manually editing a file to specify, among other things, that the view should
   just be shown as “Downloads.” 

   <viewInfo iconSize="32" stackIconSize="0" displayName="Downloads"
autoListFlags="0"> 

 * Defining a narrow view in Windows Explorer to more effectively hides
   artifacts that could show what share the file is hosted on. 

   <column viewField="System.ItemFolderPathDisplayNarrow"/> 

 * A search condition only showing the malicious file on the share. 

   <condition type="leafCondition" property="System.FileName" operator="starts
with"   propertyType="string" value="ABC_of_Tax.zip" localeName="en-US"> 

 * Specifying the path to the folder or share that should be searched. The GUID
   represents a network location. 

   <include
path="::{F02C1A0D-BE21-4350-88B0-7367FC96EF3C}\\\invasion-prisoners-inns-aging[.]trycloudflare[.]com@SSL\pub"
attributes="1887437133"/> 

 * Author type containing the display name of the Windows user that created the
   .search-ms file. 

   <author type="string">test</author> 


MALWARE ANALYSIS 

The malware is executed by utilizing CiscoCollabHost.exe, which is vulnerable to
DLL hijacking. The executable attempts to load a DLL called
CiscoSparkLauncher.dll which is kept in the same directory as the executable,
but in this case, is malware. The only requirement is the DLL has the correct
name and exports a function called SparkEntryPoint.  

This SparkEntryPoint starts with a sleep mechanism of roughly 5 –10 minutes with
a jitter amount to try and evade sandboxes that run for short periods of
time.    



Calculating sleep time. 

The malware then has a routine to dynamically invoke APIs that is relatively
unique. To resolve functions and call them, the malware passes a DLL handle, a
callback to a function, and the arguments to the function it’s trying to call.  



Call to resolve and invoke a function. 

The callback is a function that decrypts a string that is called in the function
invoking the Windows APIs.  



Stub to call the resolved function and preserve the arguments on the stack. 

Cobalt Strike shellcode commonly uses this technique, wherein the resolver
resolves the function it’s looking for as well as calling it. 

To decrypt strings, the malware relies on an algorithm that looks very similar
to XTEA but is unrolled to remove the loops with the block decryption.



Decryption algorithm. 

The unrolled algorithm can be seen below: 



Unrolled algorithm.  

During the analysis, Proofpoint found the algorithm was nonstandard and
therefore we  used emulation methods to decrypt the embedded strings, which we
will detail below. 

Utilizing the fantastic tool Dumpulator by MrExodia, we can create a dump of the
malware in x64dbg and use that as custom tooling within a Python environment.  



Python code showcasing Dumpulator usage to decrypt strings. 

This allows us to call functions within the malware given they are relatively
simple and do not rely on Windows internals. Great candidates for this are
functions that do not make any other calls and just translate data.  

The Python script implements string decryption using emulation, and at the end
we can read the decrypted string from the allocated memory to which we wrote the
encrypted contents. Running this code over the entire data section of the DLL
gives us all the decrypted strings within the sample:  



Decrypted strings. 

With API calls resolved, the malware continues by decrypting its own
configuration. Unlike other malware that stores a direct reference to the
encrypted configuration, this malware contains a string that it searches for in
its own file, more commonly referred to as “egg hunting” -- the egg being “g00”
in this case.  



Start of encrypted configuration denoted by “g00”. 

After the egg, the next four bytes indicate how long the config is, and the rest
of the data is decrypted via an XOR cipher using the executable name
“CiscoCollabHost.exe”. Decrypting this data gives the keys required for the
malware to communicate with the command and control (C2) server. The following
table shows the relevant decrypted strings from the configuration.  

test 

962194083343-nevo9pjnlr7cgirjs1eonpebakrlq3qc.apps.googleusercontent.com 

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 

1//0eg8RBquaRQvhCgYIARAAGA4SNwF-L9IrSsPADLEx_CMsoJYspPSfaoeUbxii4xLVK10CafejzYAEBi2IptPt9KpwO7vphUTPFtest 

962194083343-nevo9pjnlr7cgirjs1eonpebakrlq3qc.apps.googleusercontent.com 

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 

1//0eg8RBquaRQvhCgYIARAAGA4SNwF-L9IrSsPADLEx_CMsoJYspPSfaoeUbxii4xLVK10CafejzYAEBi2IptPt9KpwO7vphUTPF28 

Rather than using dedicated infrastructure or even compromised infrastructure,
the malware utilizes Google Sheets infrastructure for C2, data exfiltration and
executing commands from the operators.  

At this point, the malware has all the information it needs to start
communicating with the C2. Since the malware is using Google Sheets with a
client token, it needs to authenticate before it can write data to Google
Sheets.  



POST request getting an access token from Google. 

The client ID, client secret, and refresh token value are taken from the
decrypted configuration and sent to receive an access token.  



Raw request of getting the access token from Google.  

With the access token acquired, the malware can read the given Google Sheet that
contains commands for the bot. 



Code to read data from the Sheet acting as the C2.  

The first request made to read the Sheet is to check where to write its own
data. The malware starts by reading value A1:A1 of the Sheet; if a UUID is
returned, it knows there is already victim data within that set. It then
proceeds to read 2:2 and so on until a UUID is not returned. Following is a
request showing a UUID returned:  



Raw response showing a UUID being returned from the Sheet.  

After six iterations, if the malware does not get a UUID back, that indicates
that it can freely write to those cells without overwriting existing bot data.  



Raw response showing a UUID not being returned. 

As an unintended consequence, this loop of iterating over cells shows how many
victims there are within the given Google Sheet.  

After the malware has found a set of cells it can write data to, it sends an
array of host information in the sixth row:  



Raw request of the bot uploading its host info to the Google Sheet.  

The following table shows some of the notable fields included in this request.
Most values within this request are base64 encoded, and RC4 encrypted using the
executable's filename as the RC4 key, e.g., "CiscoCollabHost.exe": 

Bot UUID  

Local IP 

Hostname 

Username 

Program Files list 

Program Files (x86) list  

Environment Variables 

Filename of executable 

Infection Timestamp 

Description of fields. 

At this point in the malware, the actors can issue commands to the bot via the
Google Sheet. The commands the malware supports are as follows: 

 * Ping 
 * Dir 
 * Download 
 * Upload 
 * Exec 
 * Copy 
 * Move 
 * Sleep 
 * Exit 

All of these come with their own status messages indicating whether the
operation was successful or not, as well as a leaked name for the malware,
“Voldemort”.  



Decrypted status messages related to executing commands.  

GOOGLE EXPLORING 

After observing the malware uses a standard service as its communication
protocol and that service exposes a client ID and client secret to be able to
read data from the Google Sheet, we felt it was worth exploring the given Google
Sheet to see what information was available. With the following Python code,  we
identified all the active infections that had made it to the point of sending
host information to the Google Sheet. In total, we observed six total victims in
the Sheet, with all but one of them being a sandbox or a known researcher. 



Python code showcasing how to read data from a Google Sheet. 

Exploring the other pages within the Google Sheet also allowed us to see
commands executed via the actors for the few bots that were registered in the
spreadsheet. For each victim machine the actor interacts with, a new page is
created that uses the hostname + username as the name. As of this writing, the
actors had only executed commands to show directory listings of two
directories.  

After seeing the success of being able to read the given Google Sheet, we felt
the need to see what else these client secrets allowed us to read. Taking
similar Python code as the Sheet reader but using it to read Google Drive showed
some interesting artifacts. To do this, we needed a folder ID. Luckily just as
with the Sheet ID, this Drive ID was embedded with the configuration for
infected machines to upload files of interest to Drive.  



Python code showing how to list files within a Google Drive.  

This scraping let us query the entire folder contents and download specific
uploaded files. From this work we identified the following files: 

 * API (Google Sheet used for C2) 
 * 7za.exe (7z executable) 
 * Test.7z (Password protected 7z) 

In addition to the following folders: 

 * V1 [2023] 
 * V2 [2023] 
 * V1 [2023] 

These directories contained training materials related to OpenWRT firmware
code.  



Directory output of the threat actor’s Google Drive.  

In addition to these firmware images was a single picture shown below: 



Image showing OpenWRT’s GUI.  

Proofpoint researchers are unsure what the purpose of these files are as they
are not being used to interact with any of the victims. It is possible they
might be leftover from other activities performed by the actor.  

The file named test.7z in the Google Drive is a password-protected 7-zip
archive. Although no password was evident, the archive was easily decrypted with
the commonly observed password “test123”. This archive contained a DLL and
executable.  



Directory listing showing the test files uploaded by the threat actor.  

The executable “Shuaruta.exe” is another executable vulnerable to DLL side
loading. The Shuaruta.exe program could be used to side-load
"nvdaHelperRemote.dll" which was written in Go language and simply loads a
Cobalt Strike Beacon. Fortunately, the developers of the Go binary compiled it
with symbols and debug information. 



Debug output contained within the Go binary to inject Cobalt Strike.  

This gives us information on a potential username (yOIR) as well as when the DLL
was compiled. Finally, extracting the configuration from the Cobalt Strike
beacon itself gives us the following relevant fields:  

        DOMAINS: ['autodiscover[.]iitt[.]eu[.]org'] 

        URIS: ['/ows/v1/OutlookCloudSettings/settings/global'] 

        WATERMARK: 987654321 

        USERAGENT: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64;
x64;Trident/6.0) 

The watermark in this Cobalt Strike configuration is associated with a cracked
version of the software. The watermark has been observed in multiple unrelated
threats in open-source reporting. The eu[.]org domain is a publicly available
domain that offers free subdomains to non-profit organizations.  


ATTRIBUTION  

Proofpoint does not attribute this activity to a tracked threat actor. Based on
the functionality of the malware and collected data observed when examining the
Sheet, information gathering was one objective of this campaign. While many of
the campaign characteristics align with cybercriminal threat activity, we assess
this is likely espionage activity conducted to support as yet unknown final
objectives.  

The Frankensteinian amalgamation of clever and sophisticated capabilities,
paired with very basic techniques and functionality, makes it difficult to
assess the level of the threat actor’s capability and determine with high
confidence the ultimate goals of the campaign. It is possible that large numbers
of emails could be used to obscure a smaller set of actual targets, but it’s
equally possible the actors wanted to genuinely infect dozens of organizations.
It is also possible that multiple threat actors with varying levels of
experience in developing tooling and initial access worked on this activity.
Overall, it stands out as an unusual campaign.   


WHY IT MATTERS  

The behavior combines a variety of recently popular techniques observed in
several disparate campaigns from multiple cybercriminal threat actors that have
used similar techniques as part of ongoing experimentation across the initial
access ecosystem. Many of the techniques used in the campaign are observed more
frequently in the cybercriminal landscape, demonstrating that actors engaging in
suspected espionage activity often use the same TTPs as financially motivated
threat actors. 

While the activity appears to align with espionage activity, it is possible that
future activities associated with this threat cluster may change this
assessment. In that case, it would indicate cybercriminal actors, while
demonstrating some typical ecrime delivery characteristics, used customized
malware with unusual features currently only available to the operators and not
abused in widespread campaigns, as well as very specific targeting not normally
seen in financially motivated campaigns. 

Defense against observed behaviors includes restricting access to external file
sharing services to only known, safelisted servers; blocking network connections
to TryCloudflare if it is not required for business purposes; and monitoring and
alerting on use of search-ms in scripts and suspicious follow-on activity such
as LNK and PowerShell execution. 

Proofpoint reached out to our industry colleagues about the activities in this
report abusing their services, and their collaboration is appreciated. 


EMERGING THREATS SIGNATURES 

2857963 - ETPRO HUNTING GoogleSheets API V4 Activity (Fetch Single Cell with A1
Notation)  

2857964 - ETPRO HUNTING GoogleSheets API V4 Response (Single Cell with UUID)  

2857976 - ETPRO HUNTING GoogleSheets API V4 Activity (Possible Exfil)  

2858210 - ETPRO MALWARE Voldemort System Info Exfil  


INDICATORS OF COMPROMISE 

Indicator 

Description 

First Observed 

hxxps://pubs[.]infinityfreeapp[.]com/SA150_Notes_2024[.]html 

Redirect Target / Landing Page 

2024-08-12 

hxxps://pubs[.]infinityfreeapp[.]com/IRS_P966[.]html 

Redirect Target / Landing Page 

2024-08-06 

hxxps://pubs[.]infinityfreeapp[.]com/Notice_pour_remplir_la_N%C2%B0_2044[.]html 

Redirect Target / Landing Page 

2024-08-13 

hxxps://pubs[.]infinityfreeapp[.]com/La_dichiarazione_precompilata_2024[.]html 

Redirect Target / Landing Page 

2024-08-05 

hxxps://pubs[.]infinityfreeapp[.]com/Steuerratgeber[.]html 

Redirect Target / Landing Page 

2024-08-13 

hxxps://od[.]lk/s/OTRfNzQ5NjQwOTJf/test[.]png 

Python Payload (Renamed ZIP containing Voldemort) 

2024-08-05 

hxxps://od[.]lk/s/OTRfODQ1Njk2ODVf/2044_4765[.]pdf 

Python Payload (Decoy PDFs) 

2024-08-05 

hxxps://od[.]lk/s/OTRfODM5Mzc3NjFf/irs-p966[.]pdf 

Python Payload (Decoy PDFs) 

2024-08-06 

hxxps://od[.]lk/s/OTRfODM3MjM2NzVf/La_dichiarazione_precompilata_2024[.]pdf 

Python Payload (Decoy PDFs) 

2024-08-05 

hxxps://od[.]lk/s/OTRfODQ1NDc2MjZf/SA150_Notes_2024[.]pdf 

Python Payload (Decoy PDFs) 

2024-08-12 

hxxps://od[.]lk/s/OTRfODQ1NzA0Mjlf/einzelfragen_steuerbescheinigungen_de[.]pdf 

Python Payload (Decoy PDFs) 

2024-08-13 

hxxp://83[.]147[.]243[.]18/p/ 

pingb.in base URL 

2024-08-05 

3fce52d29d40daf60e582b8054e5a6227a55370bed83c662a8ff2857b55f4cea 

test.png/zip SHA256  

2024-08-05 

561e15a46f474255fda693afd644c8674912df495bada726dbe7565eae2284fb 

CiscoSparkLauncher.dll SHA256 (Voldemort Malware) 

2024-08-05 

6bdd51dfa47d1a960459019a960950d3415f0f276a740017301735b858019728 

CiscoCollabHost.exe SHA256 (Benign file used for side-loading) 

2024-08-05 

pants-graphs-optics-worse[.]trycloudflare[.]com 

TryCloudflare Tunnel Hostname 

2024-08-05 

ways-sms-pmc-shareholders[.]trycloudflare[.]com 

TryCloudflare Tunnel Hostname 

2024-08-05 

recall-addressed-who-collector[.]trycloudflare[.]com 

TryCloudflare Tunnel Hostname 

2024-08-05 

hxxps://sheets[.]googleapis[.]com:443/v4/spreadsheets/16JvcER-0TVQDimWV56syk91IMCYXOvZbW4GTnb947eE/ 

Voldemort C2 

2024-08-05 

hxxps://resource[.]infinityfreeapp[.]com/ABC_of_Tax[.]html 

Redirect Target / Landing Page 

2024-08-19 

hxxps://resource[.]infinityfreeapp[.]com/0023012-317[.]html 

Redirect Target / Landing Page 

2024-08-19 

hxxps://od[.]lk/s/OTRfODQ4ODE4OThf/logo[.]png 

Python Payload (Renamed ZIP containing Voldemort) 

2024-08-19 

hxxps://od[.]lk/s/OTRfODQ5MzQ5Mzlf/ABC_of_Tax[.]pdf 

Python Payload (Decoy PDFs) 

2024-08-19 

0b3235db7e8154dd1b23c3bed96b6126d73d24769af634825d400d3d4fe8ddb9 

logo.png/zip SHA256 

 

2024-08-19 

fa383eac2bf9ad3ef889e6118a28aa57a8a8e6b5224ecdf78dcffc5225ee4e1f 

CiscoSparkLauncher.dll Hash (Voldemort Malware) 

2024-08-19 

invasion-prisoners-inns-aging[.]trycloudflare[.]com 

TryCloudflare Tunnel Hostname 

2024-08-19 

 

Previous Blog Post
Next Blog Post


SUBSCRIBE TO THE PROOFPOINT BLOG

*
Business Email:




















Submit
*
Business Email:




















Submit
Products
 * Protect People
 * Defend Data
 * Mitigate Human Risk
 * Premium Services

Get Support
 * Product Support Login
 * Support Services
 * IP Address Blocked?

Connect with Us
 * +1-408-517-4710
 * Attend an Event
 * Contact Us
 * Free Demo Request

More
 * About Proofpoint
 * Why Proofpoint
 * Careers
 * Leadership Team
 * News Center
 * Privacy and Trust

© 2024. All rights reserved.
Terms and conditions Privacy Policy Sitemap
 * 
 * 
 * 
 * 
 *