Misspelt and Look-Alike Names
Malware can take a name one letter away from a Windows process, or write it with characters from another alphabet that look the same. Windows never misspells its own processes, so a name like scvhost.exe is never a version of the genuine program. A near miss on a busy name such as svchost.exe, which runs in many genuine copies, is easy to overlook in a long list. Compare each name with the core names letter by letter, then check its path and parent, which a borrowed name cannot fix.
Normal and Suspicious
A clean machine sits beside a suspicious one, and the pointer marks where to look.
Normal
A clean Windows 11 install
| Name | Parent | Path |
|---|---|---|
services.exe | wininit.exe | C:\ |
svchost.exe | services.exe | C:\ |
Suspicious
ws-042,
| Name | Parent | Path |
|---|---|---|
updsvc64.exe | services.exe | C:\ |
scvhost.exe | updsvc64.exe | C:\ |
| Namescvhost.exe, two letters swapped: the genuine service host is svchost.exe. Misspelt and Look-Alike Names | ||
Why It Matters
A near miss on a busy name such as svchost.exe passes a glance down a long list of processes. Malware borrows the names people expect to see.
How to Confirm It
Work through these in order. Each step names the page that shows how.
- Compare every name with the core names for one swapped, missing or extra letter, as Elastic's svchost.exe rule does with a fuzzy match.Process Listings and Scans
- Look for letters from other scripts, a right-to-left override character and a double extension, because a name can look right and still not be.Process Listings and Scans
- Check the path, the parent and the signer against the genuine program's. Each one that differs is a sign of its own.Process Listings and Scans
- Find what started it and when the file arrived, reading the parent chain, then Amcache and ShimCache for the file's first appearance.Process Trees and Call Chains
What Defenders See
Each record names its log and what must be switched on to get it.
| Record and Where It Lands | What to Read | How to Turn It On |
|---|---|---|
4688 A new process has been created (opens in a new tab)SecurityIt is written on the computer the process ran on. | New Process Name holds the full path. Compare its file name with the core names, letter by letter, in a query rather than by eye.Process Trees and Call Chains shows how to read it. | Turn on Audit Process Creation. For the command line, also turn on Include command line in process creation events. |
1 Process creation (opens in a new tab)Microsoft-Windows-Sysmon/OperationalIt is written on any Windows computer running Sysmon. | Image and Original | Run Sysmon with ProcessCreate events in its configuration. |
| Device | FileName and FolderPath for every start, so near misses can be hunted across the estate. | The Defender for Endpoint sensor on the device |
11 FileCreate (opens in a new tab)Microsoft-Windows-Sysmon/OperationalIt is written on any Windows computer running Sysmon. | FileCreate records when the look-alike file was written, and by which process. | Run Sysmon with FileCreate events in its configuration. |
What It Looks Like
This record is decoded field by field, with what each value means.
| Field, as the Record Writes It | What It Tells You |
|---|---|
New Process NameC:\ | scvhost |
Creator Process NameC:\ | Started by updsvc64 |
- False Positives
Kernel listings keep 14 characters of a name, so windows.pslist shows SecurityHealthSystray.exe as SecurityHealth. A cut name is not a misspelling, so read the full one from the path.
Other vendors' programs can sit close to a Windows name, so check the signer and the folder before calling one a look-alike.
- Blind Spots
A near-miss check finds a swapped, missing or extra letter, not a new word, so a name built to sound like a service, such as updsvc64.exe, needs the path and signature checks.
Look-alike letters from other scripts render the same in most fonts, so read names as data in a query, never by eye.
Hunt It
The same hunt is written for four tools, so pick the one you use. Defender XDR and Sentinel queries are in KQL, which you paste into Advanced hunting in the Defender portal or into Sentinel's Logs page. Splunk queries are in SPL, for its Search page, and Velociraptor queries are in VQL, which you run as a hunt.
Needs Defender for Endpoint. A hit is a name to explain, not proof, as some genuine programs fit a core name's letters. Elastic's fuzzy svchost.exe rule finds one-letter changes this letter test misses, so run both.
// Names built only from a core name's letters but not that name, names with non-ASCII characters, and double extensionsDeviceProcessEvents| where Timestamp > ago( 30d)| extend Name = tolower( FileName)| where ( Name matches regex @"^( [svchot]{6, 8}|[las]{4, 6}|[csr]{4, 6}|[sm]{3, 5}|[servic]{7, 9}|[wint]{6, 8}|[winlog]{7, 9}|[explor]{7, 9}|[spolv]{6, 8}|[conhst]{6, 8}|[dlhost]{6, 8}|[taskhow]{8, 10})\ .exe$" and Name !in ( "svchost.exe", "lsass.exe", "csrss.exe", "smss.exe", "services.exe", "wininit.exe", "winlogon.exe", "explorer.exe", "spoolsv.exe", "conhost.exe", "dllhost.exe", "taskhostw.exe")) or FileName matches regex @"[^ -~]" or Name matches regex @"\ .( pdf|docx?|xlsx?|txt|jpe?g|png)\ .exe$"| summarize Starts = count( ), FirstSeen = min( Timestamp), LastSeen = max( Timestamp) by DeviceName, FileName, FolderPath, InitiatingProcessFileName| order by FirstSeen descIn a Memory Image
Volatility 3 reads a memory image, and each of its plugins below shows part of this sign.
windows.pslist(documentation, opens in a new tab)Memory Image A Volatility 3 plugin. It is one check run on a saved copy of a Windows machine's memory. pslist means process list. The kernel's image name, cut to 14 characters, which is enough to spot a swap but not to read a long name in full.windows.pstree(documentation, opens in a new tab)Memory Image A Volatility 3 plugin. It is one check run on a saved copy of a Windows machine's memory. pstree means process tree. The kernel's audit path for each process, which holds the full file name.windows.cmdline(documentation, opens in a new tab)Memory Image A Volatility 3 plugin. It is one check run on a saved copy of a Windows machine's memory. cmdline means command line. The command line as the PEB holds it, which usually starts with the program's full path and name.
Rules to Compare With
Security vendors publish detection rules anyone can read. These look for the same thing, so compare your own with them.
Show the 3 Public Rules
- Potential Masquerading as Svchost (opens in a new tab) Elastic: A fuzzy match that also catches svchost.exe with two letters swapped.
- Suspicious Process Masquerading As SvcHost.EXE (opens in a new tab) SigmaHQ: Flags a process named svchost.exe that is not the System32 or SysWOW64 binary.
- Potential Homoglyph Attack Using Lookalike Characters (opens in a new tab) SigmaHQ: Flags command lines holding Cyrillic letters that look like Latin ones.
How to Prevent It
Each control helps prevent it, and its line says what it does here.
- App Control for Business (opens in a new tab) A look-alike binary is on no trusted list, so a policy that runs only trusted code refuses it.
- ASR: Block executable files from running unless they meet a prevalence, age, or trusted list criterion (opens in a new tab) A new, rare file under a near-miss name fails the prevalence and age test.
- No antivirus exclusions for temporary folders (opens in a new tab) On ws-042 the scanning exclusion for C:\Windows\Temp let scvhost.exe sit there unscanned. Check it in the Registry: Microsoft Defender Exclusions
Sources
- Elastic: Potential Masquerading as Svchost (prebuilt rule) (opens in a new tab)
- Vergilius Project: Windows 11 24H2 kernel structures (the 15-byte image name) (opens in a new tab)
- Volatility 3: windows.pslist (opens in a new tab)
MITRE ATT&CK is a free public catalogue of the techniques attackers use. Each technique has an ID, such as T1055 for Process Injection, so defenders can name the same behaviour the same way. This red flag can point to these techniques.
- T1036.005 (opens in a new tab) Masquerading: Match Legitimate Resource Name or Location
- T1036.002 (opens in a new tab) Masquerading: Right-to-Left Override
- T1036.007 (opens in a new tab) Masquerading: Double File Extension