What is wordpress malware removal and what does it involve?

TechSteps removes WordPress compromises and establishes how the attacker got in and whether they kept access. Cleaning the malicious files is the straightforward half. Finding the entry point and the persistence, then closing both, is what stops the site being reinfected a fortnight later.

What this solves

The problem underneath the request.

A cleanup that removes malicious files and stops there is why sites get infected repeatedly. The files were a symptom. The vulnerability that allowed them and the mechanism the attacker left behind to return are the actual problem.

WordPress persistence is particularly varied because there are two layers to hide in. At the application level there are administrator accounts, must-use plugins that never appear in the plugin list, scheduled events, and modified theme functions. At the server level there are cron entries, SSH keys and system services.

There is also a decision to make early: whether the site can be cleaned or should be rebuilt from a known-good state. Delaying that decision usually makes it more expensive.

Who this is for

  • Sites serving malware, spam or unexpected redirects
  • Businesses whose site has been flagged by a browser or search engine
  • Stores where customer data may have been exposed
  • Sites that were cleaned before and became reinfected
  • Anyone who has found files or accounts they cannot explain

When people call us

Situations that usually start this conversation.

If more than one of these sounds familiar, the underlying cause is often a single issue rather than several separate ones.

  • 01 Visitors are redirected to unexpected sites
  • 02 The site is flagged as dangerous by a browser or search engine
  • 03 Spam pages or links have appeared in search results
  • 04 The host has suspended the account for malicious activity
  • 05 An administrator account nobody created exists
  • 06 The site was cleaned recently and the problem has returned

Technical scope

What the work actually covers.

Not every engagement includes all of this. The scope is agreed in writing before we start, and anything excluded is named rather than left ambiguous.

Containment

  • Immediate assessment of whether data exposure is likely
  • Preserving evidence before changing anything
  • Taking the site offline or into maintenance where the risk justifies it
  • Rotating credentials that the attacker could have read

Investigation

  • Timeline reconstruction from access, error and authentication logs
  • Core file integrity check against official checksums
  • Plugin and theme comparison against clean copies
  • Database review for injected content and unexpected users
  • Scheduled event and must-use plugin inspection
  • Server-level review for cron entries, keys and unexpected services

Removal

  • Malicious file removal or replacement of affected components
  • Database cleanup of injected content
  • Removal of attacker-created accounts and scheduled events
  • Restoration of modified core, plugin or theme files
  • Cleanup of any server-level persistence found

Closing it properly

  • Identification and patching of the entry point
  • Full credential rotation across WordPress, database, hosting and API keys
  • Hardening to reduce the surface that was exploited
  • Monitoring so recurrence is detected quickly
  • Search engine review request where the site was flagged

How we approach it

The order matters more than the checklist.

  1. 01

    Preserve evidence first

    Before cleaning, we capture logs and a copy of the compromised state. Cleaning destroys the evidence needed to establish the entry point, and without that the fix is guesswork.

  2. 02

    Establish the timeline

    When it started determines which backups are trustworthy. Restoring from a backup taken after the compromise reinstalls it, which is a very common way to lose a second week.

  3. 03

    Find the entry point

    Usually a known vulnerability in an outdated plugin, a compromised credential, or something at the server level. Access logs generally show the request that first succeeded.

  4. 04

    Hunt persistence deliberately

    Administrator accounts, must-use plugins, scheduled events, modified theme functions, and at the server level cron entries and SSH keys. Persistence is where reinfection comes from.

  5. 05

    Clean or rebuild

    For an application-layer compromise on a healthy server, cleaning is defensible. Where the attacker had server-level access, or the timeline cannot be established, rebuilding from known-good sources is the honest recommendation.

  6. 06

    Rotate everything and harden

    Every credential the compromised environment could see is treated as read. Then the vulnerability is patched and the surface reduced.

  7. 07

    Monitor and request review

    Monitoring so a recurrence is caught quickly, and a review request where the site was flagged by a search engine or browser.

What goes wrong

How this work fails when it is done badly.

These are the patterns we see most often when we are called in to fix someone else's work, or our own from earlier in our careers.

  • Restoring from a backup without a timeline

    The backup predates the discovery and postdates the compromise, so the malware is reinstalled along with the site. The apparent fix lasts days.

  • Files cleaned, credentials not rotated

    The attacker still has the database password, an API key or an administrator login. They simply return through the front door.

  • Only the application layer checked

    A compromised server keeps reinfecting a clean WordPress install. If the attacker reached the operating system, cleaning WordPress achieves nothing.

  • Entry point never identified

    The site is clean and the vulnerable plugin is still installed at the same version. This is the most common reason for repeated infection.

  • Evidence destroyed before investigation

    Logs deleted and files overwritten during a panicked cleanup, so the entry point can never be established and nobody can say what data was accessed.

What each side brings

What we need from you

  • WordPress administrator and server access, urgently
  • Hosting account access, including logs
  • Information about when the problem was first noticed
  • Details of any changes made before contacting us, including attempted cleanups
  • A decision maker available for the clean-versus-rebuild question

What you get

  • A clean, working site
  • A written timeline of the compromise as far as evidence allows
  • Identification of the entry point, or a clear statement that it could not be determined
  • A list of persistence mechanisms found and removed
  • Credential rotation record
  • Hardening applied to prevent recurrence
  • Monitoring, and a search engine review request where applicable

Where we stop

  • Where evidence has been destroyed, the entry point sometimes cannot be established. We will say so plainly rather than invent a cause, and recommend rebuilding.
  • We are not a forensic firm and do not produce evidence for legal proceedings. For an incident with legal implications, engage a specialist alongside us.
  • We cannot determine with certainty what data was accessed unless logging was adequate beforehand. That is usually the most uncomfortable finding.

Questions we actually get asked

Straight answers.

How quickly can you clean our site?

Containment is usually same day. A full cleanup with the entry point identified typically takes longer, because finding how they got in is the part that requires investigation. We would rather take an extra day and close the vulnerability than clean quickly and see you again in three weeks.

Can we just restore from a backup?

Only if you know when the compromise started, and most people do not. Restoring from a backup taken after the initial breach reinstalls it. Even with a clean backup, the vulnerability that allowed the compromise is still present unless it is separately patched.

Was our customer data stolen?

Often it cannot be established with certainty, and we will tell you that rather than reassure you. If the attacker had database access, assume the data was readable. What logging existed determines how much we can say. This is the strongest practical argument for logging before you need it.

Should we rebuild instead of cleaning?

Rebuild if the attacker had server-level access, if the timeline cannot be established, if persistence was found in several distinct mechanisms, or if system files were modified. Cleaning is reasonable when the compromise was clearly confined to the application layer and the timeline is short and known.

How do we stop it happening again?

Close the entry point, rotate every credential, remove plugins you do not need, establish an update routine you will actually follow, and add logging so a recurrence is visible early. Reinfection almost always traces to one of those being skipped.

Request Malware Help.

Describe the system and what is going wrong with it. A short technical conversation is usually enough for us to tell you whether this is the right work and roughly what it involves.