Skip to content

WordPress Malware Research Entry

system-control Plugin Restored from wp-content/.sc-backup

An unknown System Control plugin returns after deletion? See direct evidence of a backup copy restoring its must-use plugin loader.

Reviewed: July 22, 2026
Artifact class Self-restoring fake plugin persistence
Evidence confidence High
Risk assessment Critical

Start with the problem you are seeing

Could this match the problem on your WordPress site?

This research is directly relevant when an unfamiliar System Control must-use plugin reappears after its visible loader is removed. The supplied code checked a backup file and rewrote the destination when it was missing or changed.

Observed in this investigation

  • The retained System Control code compared its loader with a .sc-backup file and restored the destination copy when needed.

Possible warning signs

  • The unknown must-use plugin can return after only the destination file is deleted.
  • The plugin may not appear in the same way as an ordinary plugin because it uses the must-use plugin directory.

These signs are investigation leads, not proof of this artifact by themselves.

Questions this research can help answer

  • Why does an unknown WordPress plugin return after I delete it?
  • What is a .sc-backup file inside a must-use plugin?

Evidence boundary: Self-restoration is confirmed in the supplied code; other symptoms observed on the same site are not attributed to it without direct evidence.

Seeing one of these signs on your site?

I can investigate the files, database records, users, and server evidence, explain what is confirmed, and help plan a safe cleanup.

Research focus: Forensic analysis of sc-loader.php restoring and reactivating a system-control plugin from a hidden wp-content backup path.

Summary

This WordPress malware research entry documents self-restoring fake plugin persistence evidence observed during one anonymized client investigation. The narrow topic is system-control Plugin Restored from wp-content/.sc-backup: the page records the exact artifact, identifiers, and visible control flow instead of repeating a general malware-removal article.

The source and destination evidence establish self-restoring plugin persistence. Casino and fake-CAPTCHA screenshots occurred in the same investigation, but this page does not claim the loader alone produced those symptoms.

Investigation context

Anonymized multi-artifact investigation with nine screenshots and retained sc-loader.php, system-control.php, MU-plugin, and theme samples. The report date is retained from the original investigation notes. Broader cleanup guidance remains in the WordPress malware removal guide; this entry is limited to what the supplied code and screenshots support.

Observed artifact

A hidden system-control backup existed at the loader’s source path.

File manager showing system-control inside wp-content slash .sc-backup
The hidden .sc-backup directory contains system-control, matching the restoration path in sc-loader.php.

sc-loader.php and additional access artifacts existed under mu-plugins.

MU-plugin directory showing sc-loader.php and other suspicious PHP files
The MU-plugin directory contains sc-loader.php, site-compat-layer.php, test-mu-plugin.php, and WordPressSecureMode.php. The listing confirms co-location, while each behavior requires its own code evidence.

The system-control destination plugin directory existed.

WordPress plugins directory showing the system-control folder
The normal plugin directory contains system-control, the destination that sc-loader.php restores and reactivates.

Confirmed findings

  • sc-loader.php defines wp-content/plugins/system-control as the destination.
  • It defines wp-content/.sc-backup/system-control as the backup source.
  • The code copies from the backup when the destination is absent and calls activate_plugin.
  • The screenshots show the source, destination, and sc-loader.php under mu-plugins.

Technical analysis

How sc-loader.php restores the plugin

The following code keeps the identifiers and control flow needed for defensive verification while removing secrets, complete payloads, and operational request instructions.

Redacted defensive excerpt

$pluginDir = WP_PLUGIN_DIR . '/system-control';
$backupDir = WP_CONTENT_DIR . '/.sc-backup/system-control';
if (destination_missing() && is_dir($backupDir)) {
    copy_directory($backupDir, $pluginDir);
    activate_plugin('system-control/system-control.php');
}
// deletion resistance and helper implementation shortened

This excerpt is intentionally incomplete. It should be used for code search, baseline comparison, and incident review—not copied into a live site.

Analyst assessment

The source and destination evidence establish self-restoring plugin persistence. Casino and fake-CAPTCHA screenshots occurred in the same investigation, but this page does not claim the loader alone produced those symptoms.

The severity reflects the capability visible in this artifact and its position in the investigated WordPress environment. It is not a claim about campaign prevalence, a particular vulnerability, or an outcome that the retained evidence does not show.

Indicators of compromise

Higher-confidence indicators

  • wp-content/.sc-backup/system-control
  • sc-loader.php
  • system-control/system-control.php
  • Copy-then-activate persistence flow

Contextual indicators

  • plugins_loaded
  • activate_plugin()
  • MU plugin
  • Generated theme directory names

Contextual indicators are not proof of infection by themselves. Confirm them through trusted-file comparison, neighboring code, database provenance, request logs, or the distinctive combinations listed above.

What this evidence does not establish

  • The initial compromise method was not confirmed.
  • The relationship between each generated theme directory and system-control was not individually established.
  • Visitor-facing spam screenshots do not identify which component rendered the content.
  • Operational request triggers, credentials, secrets, and complete backdoor code are withheld.

Artifact-specific remediation

  • Preserve the source, destination, loader, and related MU-plugin files.
  • Remove sc-loader.php before deleting both system-control copies so the loader cannot restore them.
  • Review every MU plugin, administrator account, cron job, and generated directory in the same incident.
  • Replace compromised themes and plugins with trusted copies and rotate credentials.

For a complete response sequence, use the broader malware-removal guide or the WordPress malware-removal service when hands-on incident response is appropriate.

Recurrence verification

  • Confirm both system-control paths remain absent.
  • Monitor wp-content for recreation of .sc-backup and sc-loader.php.
  • Verify the plugin list and filesystem remain consistent after requests and scheduled tasks.

Browse the WordPress malware research hub.

Methodology and privacy note

This analysis is based on retained code, screenshots, paths, and notes from an anonymized WordPress client investigation. Confirmed findings are limited to visible or supplied evidence; professional interpretation is labeled as analyst assessment. Screenshots were reviewed for client identifiers, account paths, usernames, email addresses, credentials, tokens, database details, and unrelated records. Sensitive or operational material remains outside the public page, and every public code block is a redacted defensive excerpt.