Fri, May 2, 2025

PDFast But Luckily Not So Furious

Key Takeaways

  • Kroll has observed a wave of malicious activity surrounding “PDFast” software.
  • The updater file ran via scheduled task which downloaded and executed a binary from actor-controlled command and control (C2) domains through several PowerShell commands.
  • Kroll detections and security technologies contained and eradicated the threat before further malicious actions were taken.
  • This downloaded binary, named PDF.exe, was analyzed by Kroll and creates and executes a randomly named PyArmor packed executable.
  • It is highly recommended to remove installations of PDFast and block the domains listed in the Indicator of Compromise table below.

Beginning in early April 2025, Kroll has observed a large wave of malicious activity surrounding "PDFast" software. Initial access for the campaign appeared to begin either through a new install of the application, through drive-by compromise on the site pdf-fast[.]com, or via pre-installed versions of the application that have since been updated with a malicious version.

PDFast But Luckily Not So Furious

Figure 1: Contents of pdf-fast[.]com website on April 23, 2025

In each case, the malicious file ("upd.exe") was executed via a scheduled task that is set up during the initial installation, which executes several PowerShell commands.

The first PowerShell command attempts to download a "pdf.bin" file from a C2 domain, that Kroll observed to be either "varendot[.]com" or "everviaf[.]com". This downloaded file is saved locally as "file.bin".

PDFast But Luckily Not So Furious

Figure 2: Binary file downloaded from C2

Another PowerShell is also executed that creates a directory-named pdf inside the temporary files directory; and if the folder already exists, it will read the recently downloaded "file.bin" that contains a Base64 string, decode that string back into binary, and write it as an executable file named pdf.exe.

PDFast But Luckily Not So Furious

Figure 3: First PowerShell command

PDF.exe Technical Analysis

The executable will start by checking if the arguments provided contain the option --safetorun where, if not, the executable will simply exit. If it does contain the --safetorun option, the executable will start to operate on its PE Resources.

When pdf.exe is executed, one of the subroutines is to retrieve the size of its PE resource by executing the SizeofResource API, which is then used as the seed to the rand function within the executable.

It is important to note the importance of rand here. This function is responsible for creating the filename which will receive the contents of the next stage.

First, the %TEMP% directory is retrieved by the executable, and the string "%s\\system%da%db%dc" is built with the fprintf function. It is noted that there are four format specifiers in the built string. The first, %s, receives %TEMP%, and the other 3 %d's will each receive the output of a different rand call. The resulting string is similar to: system26506a16168b4007c.exe.

After the process described above, there is a call to Sleep with the parameter of 0x7530 (30000), making the malware "hang" for 30 seconds. In this meantime, the file system26506a16168b4007c.exe is written in the %TEMP% folder, being deleted right after the 30 seconds passes.

PDFast But Luckily Not So Furious

Figure 4: Command to run "system" executable

This file, system26506a16168b4007c.exe, is a PyArmor packed executable which, when unpacked, will come in the format of .pyc files, that is, compiled python scripts in a bytecode format.

This new file, when ran by the PyArmor runtime, loads several DLLs and appears to execute Python content. It also runs WMIC commands to detect whether a hypervisor is present, which is likely anti-VM behavior to prevent sandbox analysis. Finally, Kroll observed the file deleted the Python files as a cleanup operation.

PDFast But Luckily Not So Furious

Figure 5: Commands for gathering defense technology and VM awareness

Analysis

Surveying the sectors impacted by this campaign so far shows the largest affected as healthcare. At the time of writing, there is, however, no evidence suggesting any targeting toward the sector directly and likely coincidental. This is based on the drive-by nature of the compromise and the generic lure, being PDF conversion, that is not specifically focused on healthcare. It is likely that when more data is collected, the spread of impacted sectors will grow across more sectors.

PDFast But Luckily Not So Furious

 Figure 6: PDFast campaign sectors impacted

Indicators of Compromise (IOCs)

Indicator

Description

686926b4710ba09d1453e7fb968c416c68063872

PDFast.exe

667b91d2cceb9d2d96f40b2a6d66ad0a8d4aa2b7

PDFast.exe

db3219531c43ac483667b725750c0b521a79d541

PDFast.exe

pdf-fast[.]com

Drive-by Compromise Domain

varendot[.]com

C2 Domain

everviaf[.]com

C2 Domain

Recommendations

  • Remove installations of PDFast immediately.
  • Block connections to the domains listed in the IOC table.
  • Require all installations to be performed by information technology staff from vetted binary repositories.
  • Where possible, restrict staff from downloading executables, a feature of many web-filtering capable proxy servers.
  • Deploy endpoint detection and response (EDR) and next-generation antivirus (NGAV) on all endpoints within your environment to assist with detecting suspicious behavior.

Cyber and Data Resilience

Incident response, digital forensics, breach notification, security strategy, managed security services, discovery solutions, security transformation.

Threat Exposure and Validation

Proactively identify your highest-risk exposures and address key gaps in your security posture. As the No. 1 Incident Response provider, Kroll leverages frontline intelligence from 3000+ IR cases a year with adversary intel from deep and dark web sources to discover unknown exposures and validate defenses.

Cyber Threat Intelligence

Threat intelligence are fueled by frontline incident response intel and elite analysts to effectively hunt and respond to threats.