Malware cleanup & security audit

WordPress malware removal. And it stays gone.

Whether your site is hacked, spammed, blacklisted, or simply exposed, deleting the malicious code is only half the job. I also close the vulnerability that let it in, with a 60-day reinfection guarantee.
  • 60-day reinfection guarantee
  • 48-hour standard turnaround, or immediate response

Trusted by development & marketing teams at

bigpanda.com
similarweb.com
forter.com
redis.io
monday.com
intel.com
theculturetrip.com
yotpo.com
logz.io

What is happening right now?

Different symptoms point to different compromises and levels of urgency. Send me the one that matches your situation.
Critical · act today Google shows a red warning

“Deceptive site ahead” in Chrome, or a Search Console security notice. Traffic is already being lost, and your domain's reputation is at risk.

Critical · act today The site redirects somewhere else

Visitors are redirected to a pharmacy, casino, or scam page. The usual cause is an injected loader in the theme header or a rewritten .htaccess file.

Critical · act today Your host suspended the account

Outbound spam or abuse complaints have forced the host to act. Restoration now depends on them, and every hour offline costs you orders.

High You are locked out of wp-admin

Your password stopped working, or your account vanished. The attacker has administrator access and is actively protecting it.

High Spam pages in your search results

Hundreds of Japanese or pharma URLs indexed under your domain. Cleaning the files does not remove them from Google on its own.

Medium · still serious Unknown admin users, odd slowdowns

There is no visible damage, but the site has slowed down and contains accounts you did not create. The infection may be dormant: one case I investigated remained inactive for 84 days before it was activated.

Medium · do not wait Nothing looks wrong, but you were flagged

A scanner or your host says the site is vulnerable, but you cannot see anything wrong. This is common: there may be no malware yet, but one automated attack could trigger any of the problems above.

Deleting the malware is not the fix

A bot finds a known weakness, drops its code and moves on. Delete the code and leave the weakness, and the same bot is back on its next pass.
What most cleanups do

Delete the files and hope

Your host's scanner deletes the infected files, usually while the site is still running. An hour later they are back. Nothing changed about how the attacker got in, and the malware keeps spare copies the scanner never checks.

Day 0 - looks cleanDay 3 - reinfected
What this service does

Stop it running, then close the way in

The first step is to stop the malware from running. Most sites go offline for a few hours, while stores are cleaned on an isolated copy; I then trace the server logs to the initial attack, identify the entry point, remove every hidden copy, patch the vulnerability, and verify the result from outside the server.

Day 0 - clean and patchedDay 60 - still clean

What happens, hour by hour

The process takes up to 48 hours from the moment I receive access. I send an update at every stage so you always know the site's status.
  1. 00:00
    Contain

    I take a complete snapshot of the files and database before making any changes, then stop the malware from running. Most sites go offline for a few hours; where downtime affects revenue, I work on an isolated copy instead, then rotate passwords, regenerate authentication salts, and invalidate every session and cookie on the domain.

  2. 02:00
    Forensics

    I compare every WordPress file with a clean copy of the same version, manually review theme and plugin files, check the database for injected content, and trace the server access logs back to the initial attack. Scanners provide useful evidence, but I review every result myself: in one recent case, most of the 41 findings were security plugins detecting their own files.

  3. 08:00
    Clean

    A real infection rarely sits in one place; it stores additional copies across the site so one can restore another after deletion. In one recent case there were nine, and every copy had to be removed in the same pass:

    • Hidden plugins WordPress loads on its own, with no way to switch them off from the dashboardmu-plugins
    • A second, ordinary-looking copy sitting in your plugins folderplugins/
    • Files that pretend to be caching, and are loaded before anything elsedb.php · object-cache.php
    • A line in the server settings that runs their code before WordPress even starts.htaccess · .user.ini
    • Your theme's own functions file, with a few lines added to the bottomfunctions.php
    • A row in the database holding a complete copy of the codewp_options
    • Data files disguised as cache, holding a compressed copy ready to unpack.dat · .lkg
    • Zipped installers left behind so it can put itself back from scratchhashed .zip
    • Scheduled jobs whose only purpose is to rebuild all of the aboveWP-Cron

    I remove every copy manually instead of relying on an auto-repair button that may miss part of the infection or damage a working site.

  4. 24:00
    Patch and harden

    I close the vulnerability, update WordPress core, plugins and themes, and migrate unsupported PHP where needed. Unused plugins are removed, firewall and login protection are configured, admin accounts and file permissions are audited, wp-config and xmlrpc are locked down, and off-site automated backups are set up.

  5. 36:00
    Verify and delist

    I confirm the clean scan from outside the server. If Google flagged the site, I request a security review and clear the Search Console warning so the red interstitial is removed.

  6. 48:00
    Report and hand back

    You receive a written report covering what I found, what I removed, what changed, and how the attacker got in. The service also includes 30 days of monitoring, so I can spot suspicious activity before you do.

Removal is half the job. Securing WordPress is the other half.

Skipping prevention is why so many sites get hit twice. Removal and prevention are both included in Full Recovery, whether or not I find active malware.

Removal

Getting the infection off the site

  • Manual malware removal across files and database
  • Every hidden copy removed, not only the files a scanner recognises
  • Rogue admins removed and every session on the domain invalidated
  • Core integrity restored from official WordPress files
  • Entry point identified and named in the report
  • Sibling sites on the same account checked - one database often serves several
  • Clean scan verified from outside the server

Prevention

Making sure it does not come back

  • Vulnerability patched - the actual hole, not a generic hardening checklist
  • Unsupported PHP migrated to a current version, with everything else updated
  • Unused and unlicensed plugins deleted - no licence means no patches, ever
  • Firewall and login protection configured, not just installed
  • Off-site automated backups with a tested restore process
  • Permissions, security headers and two-factor login in place
  • 30 days of monitoring and support after handover

One site. Fixed price. No hourly surprises.

Quoted per website, not per server. The assessment is free, and I will tell you if the site is not worth cleaning.

Cleanup

The infection is removed and the site is safe to put back online. Further hardening remains your responsibility.

$329 per site
  • Manual malware and backdoor removal
  • Rogue users and cron tasks cleared
  • WordPress's own files restored from the official release
  • Entry point identified and named in the report
  • WordPress, plugins and themes updated
  • Google review requested if flagged
  • Written report with recommended next steps
  • 48-hour turnaround
  • 60-day reinfection guarantee
  • Hardening, backups and monitoring not included
Get a free assessment
Most sites need this

Full Recovery

Cleaned, patched, hardened, backed up and monitored, so the way in is closed rather than just emptied.

$499 per site
  • Everything in Cleanup
  • Vulnerability test and patch
  • Firewall and login protection configured
  • Unsupported PHP migrated to a current version
  • Off-site automated backups configured
  • Hardening pass: permissions, wp-config, xmlrpc, 2FA
  • 30 days of monitoring and support
  • 60-day reinfection guarantee
Start on WhatsApp

Per website, not per server or hosting account. Several sites on one account are quoted per site - the account-level check is part of every job.

Standard Delivered in 48 hours Included I start the same day you send access.
Priority Delivered in 24 hours +$120 I start within four hours.
Emergency I start immediately +$190 Suspended or blacklisted sites, any hour.
Optional add-on

Search Console & SEO Recovery

Cleaning the server does not remove every trace from Google. Fake verified owners may retain access to your data, while injected spam URLs can remain indexed after their source files are removed.

  • Remove fake users and verification files from Search Console
  • Audit and clean leftover verification tokens and tracking code
  • Repair, revalidate and resubmit sitemaps and robots.txt
  • Serve 410 Gone on injected spam URLs to force fast de-indexing
Adds to either package +$125 per site

This add-on is optional. If you are comfortable handling the work yourself, the process takes time rather than specialist tools.

If it comes back, I clean it again for free.

For 60 days after handover, I will clean any reinfection on a site I recovered at no charge and with the same priority as a paid emergency. That is the whole promise, and it is why finding the way in is part of every job rather than an upgrade.

  • Included with both packages, on every site
  • Covers reinfection through any route I hardened
  • Excludes nulled plugins and themes added after handover

After 60 days, most clients move to ongoing WordPress maintenance so updates and backups never lapse again.

You get the report, not just a clean site

You receive more than a scanner export: the written report includes an executive summary, the root cause, a timeline, every changed component and version, and the final verification. It is suitable to forward to your host, client, or insurer.

A tool can list every known weakness on your site; it cannot tell you which one they actually walked through.

Want to try it yourself first?

I documented the complete recovery process, including every step I take, and made it available for free. If you have backups, some patience, and no live revenue at risk, work through it yourself and call me if the malware comes back.

Read the recovery guide

Questions I get every time

Access, downtime, cost, and what happens if the forensics come back clean.
How fast can you actually start?
Standard work begins the same day you provide access and is completed within 48 hours. Priority work begins within four hours and is completed within 24 hours; emergency service starts immediately, including during evenings and weekends, for suspended sites or sites displaying a Google warning.
What access do you need from me?
I need WordPress administrator access, access to your hosting control panel or SFTP, and database access. I work from a fresh account you create for me and delete after handover; I never need access to your domain registrar or payment provider.
Will the site be offline while you work?
That depends on the site: most sites are offline for a few hours while I stop the malware and clean them safely. For stores and other revenue-critical sites, I clean an isolated copy first, so the live site is offline only for the few minutes needed to switch to the clean copy.
What if the malware comes back?
If reinfection occurs within 60 days, on either package, I clean the site again for free. Reinfection almost always means the entry point was missed the first time, which is exactly what this service is built to find.
Do you handle WooCommerce and membership sites?
Yes. These sites require a different recovery process because orders, customer records, and subscriptions cannot simply be rolled back to a pre-hack backup; the cleanup preserves transaction data and takes place on an isolated copy when extended downtime is not practical.
Can you fix findings from a penetration test instead?
Yes, that is a separate engagement and it is quoted from the report rather than from this price list. If you are working through a pentest findings list, start with the WordPress pentest remediation guide and send me whatever is left.
What if you find no malware at all?
It happens, but the fee is not wasted: a site may contain no infected files and still remain exposed because of unsupported PHP, an inactive plugin with a known vulnerability, or unpatched paid components. The price remains the same because the patching, updates, hardening, backups, and report are required whether or not active malware is found.
How much does malware removal cost?
Pricing is fixed per website: $329 for Cleanup, or $499 for Full Recovery, which adds the hardening, backups and monitoring. The 60-day guarantee comes with both. A $50 cleanup is usually a scanner run that removes files without closing the vulnerability; if a quote runs to four figures, ask what it includes beyond the work listed here.
Can I not just install a security plugin?
A security plugin can detect known signatures, but it cannot complete the investigation and recovery. It will not trace access logs back to the first malicious request, identify components that cannot receive patches, or isolate the site to stop the malware from rebuilding; if you want to try, the recovery guide explains the full process.
I have several sites on the same hosting account.
I check them together as part of the account-level investigation. Sites on one account may share a database or occupy neighbouring folders, so cleaning one while another remains infected will not solve the problem; pricing is per site, but the account-level check is included.
What if you cannot clean it?
This can happen when the infection predates every available backup or the host has wiped the account. I tell you before you pay, and if rebuilding is the honest answer, I quote it separately rather than charging for a cleanup that will not hold.
WordPress Malware Removal

Send me the URL. The assessment is free.

No form, no discovery call, no commitment. Tell me what you are seeing, and I will explain the problem and the cost of resolving it.

I usually reply within an hour, including evenings and weekends.