Skip to content
Back to Articles

The Username Is a Lead: 100+ WordPress Admin Usernames Attackers Actually Create

Share:

Sooner or later every site owner, hosting support engineer and incident responder has the same moment: you open Users → All Users — or query wp_users directly — and there is an administrator you cannot place. adminbackup. sys_maint. editor_1fb66a. Someone called kevin_vauls who has never worked for the company. The first question is always the same: is this bad?

This article is the reference I wish existed every time that question lands on my desk. It is built from two sources: aggregate data from hundreds of real malware-removal investigations I have worked on (every name below was found as an attacker-created account in at least one confirmed compromise, with all client-identifying details removed), and public incident research that independently documents many of the same names. Over 100 usernames, grouped by the pattern they follow, each marked with how much evidence sits behind it.

One thing before the lists, because it matters more than the lists: a username is a lead, not a verdict. None of these names is malicious by itself, and a legitimate colleague can own an account with an unlucky name. The goal is to tell you which accounts deserve the fifteen minutes of verification described at the end — registration date, email, capabilities, creator code — before anyone deletes anything.

🎯 Two different lists: names attackers try vs. names attackers create

Most "worst WordPress usernames" posts mix up two unrelated things, so let's separate them first.

  • Names brute-force bots try to log in with. Login floods overwhelmingly target names that might already exist: admin, Admin, administrator, test, root, single letters, and the site's own domain name without the TLD. Security vendors have published this list for years, and a 2013 botnet campaign targeted the username admin across tens of thousands of sites. If your admin account uses one of these names, you are simply absorbing more password-guessing traffic than you need to.
  • Names attackers create once they are in. This is the subject of this article. An attacker with code execution, a plugin exploit or stolen credentials does not guess accounts — they insert one. Those names follow completely different patterns, because they are chosen to survive a casual glance at the user list: they imitate maintenance tooling, misspell "admin", borrow a human name, or come out of a random generator.

Finding a name from the first list in your user table is a hygiene issue. Finding one from the second list — an account nobody claims — is an incident until proven otherwise.

🚪 Where rogue admins come from

Every account in this article appeared in one of a handful of ways, all well documented in public research and all things I see weekly in cleanups:

  • Plugin vulnerabilities that create users directly. The WP‑Automatic SQL injection (CVE‑2024‑27956) was used to insert admins with usernames starting with xtw; the LiteSpeed Cache flaw CVE‑2023‑40000 planted admins named wpsupp-user and wp-configuser; the OttoKit/SureTriggers authorization bypass (CVE‑2025‑3102) allowed unauthenticated admin creation within hours of disclosure.
  • Backdoor code that recreates the account on every page load — a snippet appended to a theme's functions.php, a must-use plugin, or a fake plugin such as the "WP Compatibility Patch" (wp-compat) that created adminbackup, or "DebugMaster Pro", which created an admin named help. I analysed one of these recreation loops in detail in Phantom Admin: the backdoor that hides users and rebuilds itself from the database.
  • Direct database inserts via SQL injection, a planted database client, or stolen DB credentials — no WordPress API involved, so nothing is logged and user_registered is whatever the attacker chose to write.
  • Stored-XSS payloads that run in a real admin's browser and silently add an administrator, as in the October 2026 campaign against two popular plugins where the new account was also hidden from the Users screen.
  • Site-builder and SFTP-level access — attacker-created file transfer or panel users that are then used to plant the WordPress-level account.

🔬 How to read the lists

Each name carries an evidence grade:

Grade Meaning
A — corroborated Attacker-created in my own casework and independently documented in public incident research
B — repeated Attacker-created in two or more unrelated incidents in my casework
C — observed Attacker-created in one confirmed incident in my casework
P — public Documented in public incident research; not (yet) seen in my own cases

Names derived from the victim site itself (the site's brand or domain as a username) are a real and common pattern — publicly documented for one large campaign that generated admins from the hostname — but the literal examples from my cases would identify clients, so that pattern is described rather than listed.

💾 Family 1: the "backup" pretext

The single most successful disguise in my data. "Backup" sounds like something an agency or a plugin would legitimately leave behind, so these survive user-list reviews for months. The star of the family, adminbackup, was created by the fake wp-compat plugin together with the email adminbackup@wordpress.org — I took one of these infections apart in the wp-compat analysis, and public research documents the same account name, fake plugin and email verbatim.

Username Grade Notes from the field
adminbackup A 8 unrelated incidents; email adminbackup@wordpress.org; recreated by fake plugin on every load
adminbackup<hex6> B Same family with a random suffix: adminbackup5525ef, adminbackup9fdc1c, adminbackupd43b5f, adminbackup79c2f2, adminbackupc094ad, adminbackupf03d1e, adminbackup9b7b8d, adminbackupf47df6 all observed
seobackup B 7 unrelated incidents, usually alongside SEO-spam injections
admin_backup · admin2backup · adminbockup B Variants, including the misspelling adminbockup seen in two incidents
backupadmin · backupsystem · wp-backup · wpbackupbb B/C backupsystem and wp-backup each in two unrelated incidents
backup_manager · backup_auth · bk_service<digits> · backup_<hex> · backup-<unixtime> C Generated variants; the Unix-timestamp suffix (e.g. backup-1740742128) is a giveaway — no human names an account that way

⚙️ Family 2: the "system service" pretext

These pretend to be something the platform itself needs: a maintenance daemon, a cache manager, an API integration. sys_maint is the flagship — in my incidents it was recreated by code appended to every theme's functions.php, and public case studies document the identical name and mechanism, plus the variant sys_maint_service.

Username Grade Notes from the field
sys_maint A 7 unrelated incidents; often paired with email sys@localhost.local; recreates on page load
sys_maintenance · sys_users · sys_<hex8> · system<hex8> B/C Generated siblings: sys_5187da24, sys_cd4e8cdb, system8e175df8 and more
system_manager · sysmgr · wp-system · wp_management C Plausible-sounding "platform" accounts that no stack actually creates
cache_manager_wp · wp_cache_mgr · cache_sync C The "caching" disguise extends to usernames, not just fake plugins
sync_agent<n> · mail_daemon<n> · log_agent<n> · form_agent<n> · toolkit-service C Unix-daemon cosplay; WordPress has no such accounts, ever
uapi · woocommerceapi · wc-analytics · developer_api1 · webuser · analytics B/C Fake "integration" users; webuser and analytics each in two unrelated incidents
sec_audit · sec_monitor<n> · wpsecurity C The boldest disguise: the intruder pretending to be the security team
wpsvc_<digits> · wpcron<hex> · wp_update-<unixtime> · seo_<unixtime> B/C wp_update-1711373523 appeared in two incidents — the "name" is literally the moment the exploit ran

🎭 Family 3: admin lookalikes and typos

Designed to be skimmed past in a user list. The leetspeak variant admln (lowercase L for i) and its sibling admlnlx appeared in five and six unrelated incidents respectively, and admlnlx is independently documented by a European cleanup provider alongside adminbackup and one_images_user.

Username Grade Notes from the field
admlnlx · admln A / B 6 and 5 unrelated incidents; an l standing in for the i survives a surprising number of reviews
wadminw · abmin · adminJCeN · admin-wp B Each in 2–3 unrelated incidents; adminJCeN keeps its random suffix across victims
adminn · admini · adm1n · admin-su · adminML · administratoir · admidbsnn C One confirmed incident each; the half-typed-looking admidbsnn class also shows up as admkxtwnr-style consonant mash
wp-adminn · wp-admnin · wp-admnn · wp_administrator C The wp- prefix plus a typo — imitating a platform account that does not exist
zadmin · lyadmin · huadmin · wphadm C Short prefix + admin; sorts next to the real account in an alphabetical list
admin_<hex> B Observed as admin_600af85c, admin_cfa211459c, admin_11a63458fa; one variant was generated by a large multi-site malware framework

🎲 Family 4: generated role names — role_<hex> and timestamps

When a kit creates accounts in bulk it concatenates a role word with a random suffix. The role word buys plausibility, the suffix buys uniqueness. If you ever see two of these on one site, you are almost certainly looking at a kit, not a person:

editor_1fb66a    editor_e7ab26    editor_f69b84
support_51720f   support_633eb9
dev_3b781b       dev_5892ab
content_<hex6>   manager_<hex>    usr_<hex8>
asset_mgr<n>     data_worker<n>

The same generator logic produces the timestamp names from Family 2 (wp_update-1711373523, seo_1772504570) and the adminbackup<hex6> swarm from Family 1. Treat the pattern as the indicator: a role word, an underscore, and 4–10 hex characters or digits that mean nothing to anyone in the company.

🧑‍💼 Family 5: fake human personas

The opposite strategy: instead of imitating machinery, imitate a colleague. These are the hardest to spot by name alone and the clearest proof that verification — not the username — must carry the verdict. Every one of these was an attacker-created administrator in a confirmed incident:

kevin_vauls     john_doe       john_walker    kelly.moon
lusie.carry     chris.merloy   nilley.looby   MarkJSmith
bennett         bob            Kenny          steven44
trumpweiss      kralkenan      eretik         stender
dantel_admin    devsupm        KeenNomad201188

lusie.carry, bennett, trumpweiss, kralkenan, dantel_admin and devsupm each appeared in two or more unrelated incidents — the same "person" joining completely different companies days apart. That cross-site reuse is the tell: attackers recycle persona names across victims, so a name that means nothing to your HR department but appears in this list deserves the full check. The publicly documented backdoor account etomidetka belongs here too (grade A — I have seen it twice, and both a popular support forum thread and an independent analysis describe it as a hidden admin backdoor).

🔀 Family 6: random strings

No disguise at all — these come from generators and rely on the user list never being read. Pronounceable eight-letter randoms are a recognisable sub-pattern (two consonant-vowel alternations glued together):

ivenyyqszj66   evqoztog   idyevalr   ufutnivf   yupxeaxw
edzexegh       kodsukli   subadmin   zet        cg1
xdx            hxh        c85fa957   a7f3e9b2c4d1e5f6

ivenyyqszj66 turned up in three unrelated incidents and evqoztog / idyevalr in two each — again the cross-victim reuse. The pure-hex names (c85fa957) overlap with Family 4's suffix logic minus the role word. In one memorable case five of these names (admln, bot, ufutnivf, dantel_admin, yupxeaxw) were created on two unrelated sites days apart — same toolkit, same operator, different victims.

📢 Family 7: names documented in public campaigns

These come from published incident research and are worth checking on any site, whether or not I have personally met them:

Username Campaign / vector
wpsupp-user · wp-configuser LiteSpeed Cache exploitation, CVE‑2023‑40000
xtw<hex>… WP‑Automatic SQL injection, CVE‑2024‑27956 ("usernames beginning with xtw"); I met xtw18387bd89 and xtw18387d371 in the field — grade A
wpsupport · wpsupport_<suffix> Fake "support" accounts; documented with emails wpsupport@wordpress.com and @wp-mail.net
help "DebugMaster Pro" fake plugin + a root-level wp-user.php that deletes and recreates the account
superadmin Backdoor posing as a caching plugin; hard-coded password, deletes the account after use to hide traces
etomidetka Hidden-admin backdoor; widely reported by site owners who first saw it in a login alert
anonymousfox_<suffix> AnonymousFox account-takeover tooling; also creates smtpfox-style mail accounts in the hosting panel
one_images_user Hidden-admin malware documented by a European cleanup provider alongside admlnlx and adminbackup
greeceman · <site-derived> The Balada Injector campaign first used a fixed name, then switched to generating the username from the victim's own hostname (e.g. "exammann" for example.com) — a pattern I also see in the field

⚖️ Family 8: generic words — context decides

admin, administrator, admins, test, bot, install, support, webmaster, customer, security, developer, devops. Every one of these has appeared as an attacker-created account in my casework (bot in five unrelated incidents, admins and install in two each) — and every one of them also exists legitimately on millions of sites. For this family the name carries almost no signal; the verification below carries all of it. The question is never "is there a user called admin?" but "who created this admin, when, and does anybody claim it?"

📧 Beyond the username: the tells that actually convict

Across all eight families, the strongest indicators were never the names — they were the fields next to the names:

  • Impossible email addresses. adminbackup@wordpress.org, wpsupport@wordpress.com, sys@localhost.local, admin@wordpress.local, admin@local.invalid, test@test.test, admin@gmail.com, admin2@google.com. Nobody at wordpress.org registers accounts on your site, and .local / .invalid domains cannot receive mail at all — which is the point: no password-reset email will ever reach a real inbox.
  • Forged registration dates. Direct-DB inserts write whatever they like into user_registered. I have seen 1970-10-10 10:10:10 (older than the internet), dates earlier than the site itself, and several admins sharing one identical timestamp to the second — a batch insert.
  • Hidden from the dashboard. The account exists in wp_users but not in Users → All Users: a pre_user_query filter, a _pre_user_id marker option, and tampered role counts are the standard kit. This is exactly the mechanism I dissected in Phantom Admin.
  • Resurrection after deletion. functions.php appenders, mu-plugins, fake plugins — and in the most persistent case I have handled, a MySQL trigger that recreated the rogue admin whenever a new comment was inserted. The trigger lives in the database, so no file scanner can see it.
  • The same name on unrelated sites. When lusie.carry or ivenyyqszj66 joins two different companies in the same week, it is a toolkit, not a coincidence.

🔍 The 15-minute verification, in SQL and WP-CLI

Run these read-only checks before deleting anything. Replace the wp_ prefix with your own.

1. List every administrator straight from the database

This bypasses any pre_user_query hiding, because it never asks WordPress:

SELECT u.ID, u.user_login, u.user_email, u.user_registered
FROM wp_users u
JOIN wp_usermeta m ON m.user_id = u.ID AND m.meta_key = 'wp_capabilities'
WHERE m.meta_value LIKE '%administrator%'
ORDER BY u.user_registered;

Then compare the count with what the dashboard shows. A mismatch is the finding:

# What WordPress is willing to admit to:
wp user list --role=administrator --fields=ID,user_login,user_email,user_registered

# What is actually in the table:
wp db query "SELECT COUNT(*) FROM wp_users u JOIN wp_usermeta m \
ON m.user_id=u.ID AND m.meta_key='wp_capabilities' \
WHERE m.meta_value LIKE '%administrator%'"

2. Vet each unexplained account

-- Registration date vs. the site's real history: anything older than the
-- site, equal to another admin's to the second, or from 1970 is forged
SELECT ID, user_login, user_registered, user_email FROM wp_users ORDER BY user_registered;

-- Active sessions: a "dormant" account with live session tokens is in use
SELECT user_id, meta_value FROM wp_usermeta WHERE meta_key = 'session_tokens';

-- The hidden-user marker several backdoors leave behind
SELECT * FROM wp_options WHERE option_name LIKE '%pre_user%';

3. Find the code that will recreate it

# User-creation calls outside core — mu-plugins, themes and plugins
grep -rnE "wp_create_user|wp_insert_user|add_role|set_role\('.{0,30}administrator" \
  wp-content/mu-plugins/ wp-content/themes/ wp-content/plugins/ --include='*.php' | head -50

# The standard hiding hook
grep -rn "pre_user_query" wp-content/ --include='*.php' | head -20

4. Check the database itself for triggers

SHOW TRIGGERS;

A WordPress database should normally have none. Any trigger that writes into wp_users or wp_usermeta is your resurrection mechanism.

🧹 What not to do

  • Don't delete on name alone. I have seen cleanups delete a real employee's account because the name "looked generated". The name selects candidates; the evidence convicts.
  • Don't delete the user first. If creator code exists, the account returns and you have told the attacker you noticed. Remove the creator (file or trigger), then the account.
  • Don't stop at one. Kits create spares. After removing adminbackup, re-run the SQL audit — in several of my incidents a second, quieter account (editor_<hex> grade) was waiting.
  • Don't trust the dashboard count. If the table says five admins and the screen says four, the missing one is the incident.

✅ Takeaways

  • Attackers name accounts to survive a glance. Maintenance words, admin typos, role+hex suffixes, fake colleagues, or pure noise — eight families cover practically everything I have met in the field.
  • The username shortlists; the metadata convicts. Email domain, registration timestamp, session tokens and creator code are where the verdict comes from.
  • Reuse across victims is the strongest name-level signal. Names like adminbackup, sys_maint, admlnlx and seobackup recur across unrelated sites and, for several, across independent public reports.
  • Audit the table, not the screen. Hidden-user hooks only fool the dashboard. SQL does not lie.
  • Remove the creator before the creature, or the account will be back before your coffee is cold.

❓ Frequently asked questions

I found a WordPress admin user I didn't create. Is my site hacked?

Treat it as a serious lead, not yet a verdict. First rule out legitimate origins: other staff, your agency or developer, hosting-panel installers and some migration plugins create accounts. Then check the account's registration date, email address, last login and whether any code recreates it. An account nobody claims, with a generic or fake email and a registration date that does not match any onboarding, almost always turns out to be attacker-created.

Is a username from this list proof of compromise?

No. A username is never proof by itself — a real person can legitimately be called bennett, and admins named admin exist on millions of sites. The names here are investigation leads ranked by how often they appeared as attacker-created accounts in real incidents. Always verify with the registration timestamp, the email address, usermeta capabilities and the code audit before deleting anything.

Why does the rogue admin account come back after I delete it?

Because code somewhere on the site recreates it — typically a snippet appended to a theme's functions.php, a must-use plugin, a fake plugin, or in some cases a MySQL trigger inside the database itself. Deleting the user row only removes the symptom. Find and remove the creator code first, then delete the account.

Which usernames do attackers try to log in with, and which do they create?

Brute-force bots mostly try existing-sounding names: admin, administrator, test, root, single letters and the site's own domain name. Attackers who already have code execution create new accounts instead, and those names follow different patterns: maintenance lookalikes such as adminbackup or sys_maint, typo-lookalikes such as admln, generated names like editor_1fb66a, fake personas, or random strings. The two lists serve different purposes and should not be confused.

📚 Public sources referenced

Independent documentation for the grade-A and grade-P names above: the LiteSpeed Cache campaign and its usernames (The Hacker News), the WP‑Automatic SQLi and the xtw accounts (The Hacker News), the OttoKit admin-creation flaw (The Hacker News), the superadmin fake caching plugin (Dark Reading), the adminbackup / wp-compat and help / DebugMaster write-ups (Sucuri, July 2025; Sucuri, September 2025), the Balada Injector's hostname-derived admins (Sucuri, October 2023), the AnonymousFox indicators (Sucuri, June 2022), the admlnlx / one_images_user report (website-bereinigung.de), the etomidetka analysis (InCyberera), the October 2026 hidden-admin XSS campaign (Patchstack) and the brute-force username lists (Wordfence; Dark Reading). Everything else is first-hand, anonymised casework.