Skip to main content
4673SecurityPrivilege UseSecurity tier 1

Event ID 4673: A privileged service was called

Event ID 4673 records that a protected Windows service, such as the LSA or the Service Control Manager, was called by a client using a privilege. It has a Success and a Failure form and logs only if Sensitive or Non Sensitive Privilege Use auditing is on. The fields to read are PrivilegeList, ObjectServer and ProcessName together.

What Triggers Event 4673 and Who Writes It

Event 4673 is a Security log record that something called a privileged service. It belongs to two subcategories, Audit Sensitive Privilege Use and Audit Non Sensitive Privilege Use, and each has a Success and a Failure form. Microsoft's examples are a caller using SeSystemtimePrivilege, SeCreateGlobalPrivilege or SeTcbPrivilege. Which subcategory carries a given event depends on the privilege: SeTcbPrivilege is on the sensitive list, SeChangeNotifyPrivilege on the non-sensitive one.

The useful question is who writes the record. The Win32 function PrivilegedServiceAuditAlarm, in Microsoft's words, "generates an audit message in the security event log", and a protected server uses it to log attempts by a client to use a set of privileges. Its parameters are a subsystem name, a service name, the privileges the client tried to use, and a flag for whether the attempt worked. Those line up with the ObjectServer, Service and PrivilegeList fields and with the Success and Failure forms. The function does not check the client's token. The server typically runs PrivilegeCheck first and reports what it found. Read a 4673 as a subsystem (the LSA, the Service Control Manager, the SAM) saying that a client leaned on a privilege while calling it. Microsoft does not publish a list of every caller, so the only complete catalogue is the baseline you build from your own logs.

Microsoft's sample shows the shape of a normal one. lsass.exe, running as the machine account, calls LsaRegisterLogonProcess() and uses SeTcbPrivilege. The ObjectServer there is "NT Local Security Authority / Authentication Service".

Three events describe a privilege at three different moments, and they are easy to mix up. Event 4672 lists the sensitive privileges a new logon session holds. Event 4703 records token privileges being enabled or disabled, and Microsoft notes it is logged from Windows 10 onward under Audit Authorization Policy Change. Microsoft's Win32 documentation explains why both exist. A token carries the privileges at logon, an operation checks that the token holds the privilege and that it is enabled, and most privileges are disabled by default. Event 4673 is the use. MITRE's token manipulation page lists several malware families that switch on SeDebugPrivilege through AdjustTokenPrivileges. That step shows up as a 4703 where you audit it. A 4673 comes later, and only if the service being called reports the use.

The fields are few. SubjectUserSid, SubjectUserName, SubjectDomainName and SubjectLogonId identify the caller. ObjectServer names the subsystem, and Microsoft lists Security, Security Account Manager, NT Local Security Authority / Authentication Service, SC Manager, Win32 SystemShutdown module and LSA. Service is optional and names the function. PrivilegeList holds the privileges requested. ProcessId is hexadecimal and matches the new process ID in a 4688, and ProcessName is the executable. There is no object name and no access mask. Those belong to 4674.

The subcategory you enable decides which privileges you ever see. Audit Sensitive Privilege Use covers 13 privileges, with Backup and Restore producing events only when the "Audit: Audit the use of Backup and Restore privilege" policy is on. Microsoft rates its volume High and recommends Success and Failure on every computer type, especially when a user account used the privilege. Audit Non Sensitive Privilege Use covers 21 privileges, rates the volume Very High, advises against Success auditing and leaves Failure optional, with SeShutdownPrivilege and SeRemoteShutdownPrivilege as the examples worth it.

Some noise is documented. A Microsoft support article describes event 4673 logged twice every minute on Windows 8.1 and Windows Server 2012 R2 when Sensitive Privilege Use is set to Failure, fixed by hotfix 3078584. A Microsoft Q&A thread from 2024 shows a Failure 4673 from msedge.exe under a local user account, with SeProfileSingleProcessPrivilege and Service set to a hyphen, and an Elastic forum poster reports floods of the same privilege tied to Chromium. The poster says Microsoft knows about it. We found no Microsoft page that confirms it, so treat that as a field report.

Event 4673 Fields

FieldWhat it tells youSimulated value
SubjectUserSidSID of the account that called the service. SYSTEM is S-1-5-18.S-1-5-18
SubjectUserNameName of the calling account. A machine account ends in a dollar sign.WS-SIM-001$
SubjectDomainNameDomain or computer name of the calling account.CORP
SubjectLogonIdLogon session ID. SYSTEM sessions use 0x3e7 in Microsoft's samples.0x3e7
ObjectServerWindows subsystem that was called, such as Security, SC Manager or LSA.NT Local Security Authority / Authentication Service
ServiceOptional name of the privileged function that was called.LsaRegisterLogonProcess()
PrivilegeListPrivileges the caller tried to use. Sensitive or non-sensitive decides the subcategory.SeTcbPrivilege
ProcessIdHexadecimal ID of the calling process; matches the new process ID in a 4688.0x1c90
ProcessNameFull path of the calling executable.C:\Users\Public\Libraries\updsvc.exe

Inspect Event 4673 Values

Click a field to inspect the full simulated value, the way you would expand it in a SIEM event view.

Example Event 4673 Log

A representative Security entry for Event 4673, generated deterministically by our telemetry engine so every field holds a realistic, internally consistent value.

Simulated example generated by SOCSimulator Research
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="Microsoft-Windows-Security-Auditing" />
    <EventID>4673</EventID>
    <Version>0</Version>
    <Level>0</Level>
    <Task>0</Task>
    <Opcode>0</Opcode>
    <Keywords>0x8020000000000000</Keywords>
    <TimeCreated SystemTime="2025-01-10T16:29:41.000Z" />
    <EventRecordID>627439</EventRecordID>
    <Channel>Security</Channel>
    <Computer>WS-SIM-001.corp.socsimulator.example</Computer>
    <Security />
  </System>
  <EventData>
    <Data Name="SubjectUserSid">S-1-5-18</Data>
    <Data Name="SubjectUserName">WS-SIM-001$</Data>
    <Data Name="SubjectDomainName">CORP</Data>
    <Data Name="SubjectLogonId">0x3e7</Data>
    <Data Name="ObjectServer">NT Local Security Authority / Authentication Service</Data>
    <Data Name="Service">LsaRegisterLogonProcess()</Data>
    <Data Name="PrivilegeList">SeTcbPrivilege</Data>
    <Data Name="ProcessId">0x1c90</Data>
    <Data Name="ProcessName">C:\Users\Public\Libraries\updsvc.exe</Data>
  </EventData>
</Event>

Detecting Event 4673

LsaRegisterLogonProcess() called by a binary that is not under C:\Windows or C:\Program Files

Legitimate callers are a short list you can enumerate; lsass.exe is Microsoft's own sample. Searches run against sourcetype XmlWinEventLog:Security. SecurityEvent has no Service column, so the KQL matches the function name inside EventData.

index=wineventlog sourcetype=XmlWinEventLog:Security EventCode=4673 Service="LsaRegisterLogonProcess*"
| where NOT (like(ProcessName, "C:\\Windows\\%") OR like(ProcessName, "C:\\Program Files%"))
| table _time, host, SubjectUserName, ProcessName, ProcessId, PrivilegeList

Sensitive privilege used under a person's account

Microsoft advises watching subjects that are not LOCAL SYSTEM, NETWORK SERVICE or LOCAL SERVICE and are not an administrator expected to hold the privilege. Machine accounts end in a dollar sign. Trim the privilege list to what your estate never uses.

index=wineventlog sourcetype=XmlWinEventLog:Security EventCode=4673
| where NOT match(SubjectUserName, "(?i)^(system|local service|network service)$") AND NOT match(SubjectUserName, "\$$")
| where match(PrivilegeList, "SeTcbPrivilege|SeDebugPrivilege|SeLoadDriverPrivilege|SeImpersonatePrivilege|SeAssignPrimaryTokenPrivilege|SeCreateTokenPrivilege|SeTakeOwnershipPrivilege|SeSecurityPrivilege")
| table _time, host, SubjectUserName, ObjectServer, ProcessName, PrivilegeList

Refused sensitive-privilege calls piling up under one user account

Microsoft recommends Failure as well as Success in Sensitive Privilege Use, especially when a user account used the privilege. A failed 4673 is only a Keywords bit. The SPL searches for the Audit Failure text, which exists on Splunk only if the Splunk Add-on for Microsoft Windows translates 0x8010000000000000; on plain Splunk, search the hex. KQL compares Keywords to that hex and Lucene reads event.outcome.

index=wineventlog sourcetype=XmlWinEventLog:Security EventCode=4673 Keywords="Audit Failure"
| where NOT match(SubjectUserName, "\$$")
| bin _time span=1h
| stats count as failures by _time, host, SubjectUserName, ProcessName, PrivilegeList
| where failures >= 5

First-seen process and privilege pair in the last day

The baseline is the previous 30 days on the same host. Expect a noisy first week while you add backup, antivirus and EDR agents to the known list. Lucene is the base filter; the first-seen comparison runs in your SIEM.

index=wineventlog sourcetype=XmlWinEventLog:Security EventCode=4673 earliest=-30d
| stats earliest(_time) as first_seen by host, ProcessName, PrivilegeList
| where first_seen >= relative_time(now(), "-1d")
| convert ctime(first_seen)

Which process and privilege pairs produce the volume

Run it over a week before you alert on anything. Microsoft puts Sensitive Privilege Use at High volume and Non Sensitive at Very High, and the Failure floods in the Microsoft Q&A and Elastic threads are SeProfileSingleProcessPrivilege from browsers, so the top rows are the process and privilege pairs to tune out first. Lucene is the base filter; the count runs in your SIEM.

index=wineventlog sourcetype=XmlWinEventLog:Security EventCode=4673
| stats count by Keywords, PrivilegeList, ProcessName
| sort - count
| head 25

True Positive vs False Positive

Start by removing who is supposed to be there. Microsoft's guidance is to watch for subjects that are not LOCAL SYSTEM, NETWORK SERVICE or LOCAL SERVICE and are not an administrative account expected to hold the listed privileges. If you keep a list of rights that should never be used, SeDebugPrivilege being Microsoft's example, alert on every use. If a subject has an allowed list, alert on anything outside it.

Four shapes are worth a rule. The first is LsaRegisterLogonProcess() from a binary that is not a logon process. Microsoft says the function establishes a connection to the LSA and verifies the caller is a logon application, and that it does so by checking for SeTcbPrivilege. Microsoft describes that privilege as letting a process impersonate any user without authentication. The legitimate callers on your estate should be a short list you can enumerate, and a binary under C:\Users\Public is not on it. The second is a sensitive privilege used under a person's account instead of a machine or service account. The third is a burst of Failure events for sensitive privileges from one user, which can mean someone is trying rights they were never given. The fourth is a process and privilege pair that has never appeared on that host before, which is how you catch the quiet cases that match no signature.

Expect false positives from management agents, backup software, antivirus and EDR sensors, which run as SYSTEM and exercise privileges as part of the job. Browsers and collaboration apps show up in most of the Failure noise threads. Fix that at the collector by dropping known process and privilege pairs, and leave the sensitive subcategory switched on.

When one fires, work outward. ProcessId and the time lead to the 4688 for that process, which gives the parent. Check whether a 4703 for the same process came first, and look at what the account's 4672 granted at logon. Be careful with SubjectLogonId. In Microsoft's samples the machine account running as SYSTEM appears as 0x3e7 and LOCAL SERVICE as 0x3e5, so a join on logon ID to the 4624 says little for system sessions. Hash the file named in ProcessName and look at its signature.

Know what the event cannot say. It carries no command line and no target. A privilege used is not a privilege abused, and Microsoft does not map attack tools to service names. If a tool worries you, run it in a lab with the subcategory on and read the events it produces before you write a rule around it.

One Field Decides: The Simulated Sample

The simulated event on this page copies the shape of Microsoft's own sample on purpose. The subject is the machine account running as SYSTEM, the logon ID is 0x3e7, the ObjectServer is the LSA authentication service, the Service is LsaRegisterLogonProcess() and the privilege is SeTcbPrivilege. Every field a filter on principal would look at is identical to the benign case.

One field is different. ProcessName points at a binary in C:\Users\Public\Libraries instead of lsass.exe. That is the whole signal, and it is why a rule keyed on the privilege alone drowns while a rule keyed on the privilege together with the process works. Run the first detection query on this page against it.

Sensitive Privileges at a Glance

PrivilegeWhat holding it allows (Microsoft's description)First question on a 4673
SeTcbPrivilegeAct as part of the operating system and impersonate any user without authenticationIs the process a logon application you know?
SeDebugPrivilegeAttach a debugger to any process or the kernel, with complete access to critical system componentsWho debugs on this host, and is this the account?
SeLoadDriverPrivilegeLoad and unload device drivers or other code into kernel modeWas a driver install scheduled?
SeImpersonatePrivilegeImpersonate other accounts after authenticationIs it a service that always does this?
SeAssignPrimaryTokenPrivilegeReplace the default token of a started subprocessWhich parent launched the child?
SeCreateTokenPrivilegeCreate a token that grants access to any local resourceIs the caller SYSTEM, where the privilege already lives?
SeSecurityPrivilegeSet object auditing options and view or clear the security logIs someone touching audit settings or the log?
SeTakeOwnershipPrivilegeTake ownership of any securable objectWhich object, and does a 4674 name it?

Practice Investigating Event 4673

No published room targets Event 4673 directly yet. The detection skills transfer, though: practice alert triage on realistic consoles across 37 free rooms in SOCSimulator Operations.

Browse free operations

Frequently Asked Questions

What is event ID 4673?
It records a call to a privileged service. The event names the account, the subsystem that was called (ObjectServer), the optional service function, the privileges requested and the calling process. It exists in Success and Failure forms and needs Audit Sensitive Privilege Use or Audit Non Sensitive Privilege Use enabled.
Why do I see so many event 4673 audit failures from Edge, Chrome or Teams?
Browsers and Chromium-based apps are reported to request SeProfileSingleProcessPrivilege and be refused, which writes a Failure 4673 under a normal user. That privilege is on the non-sensitive list, where Microsoft rates volume Very High. Drop the known process and privilege pair at the collector instead of turning off the sensitive subcategory.
What is the difference between event 4672 and event 4673?
4672 says a new logon session was given sensitive privileges, so it describes what a token holds. 4673 says a protected service was called with a privilege, so it describes a use. Between them, 4703 records a privilege being enabled in a token. Hold, enable and use are three separate facts.
What is the difference between event 4673 and event 4674?
4673 is a privileged service call and carries a service name but no object. 4674 is a privileged operation on an object that is already open and carries ObjectType, ObjectName, HandleId and a decimal AccessMask. Both sit in the same two subcategories and both have Success and Failure forms.
Is a 4673 a sign of compromise?
Not by itself. SYSTEM and the service accounts produce most of them. The ones to chase are a sensitive privilege used under a user account, LsaRegisterLogonProcess() from a binary that is not a logon process, and process and privilege pairs that never appeared on that host before.

Sources

“4673 fields and sample (lsass.exe, LsaRegisterLogonProcess(), SeTcbPrivilege), ObjectServer values, privilege tables for the two subcategories, monitoring recommendations”

“The 13 sensitive privileges, Backup and Restore only with the Group Policy setting, volume High, Success and Failure recommended on all computer types”

“The 21 non-sensitive privileges, volume Very High, Success not recommended, Failure optional”

“PrivilegedServiceAuditAlarm lets a protected server log a client's attempt to use privileges; it does not check the token”

“Privileges are held in the token at logon, checked and required to be enabled; most are disabled by default”

“4703 records token privileges enabled or disabled; Audit Authorization Policy Change; Windows 10 and later”

“LsaRegisterLogonProcess verifies the caller is a logon application by checking SeTcbPrivilege”

“Documented noise: 4673 logged twice every minute on Windows 8.1 and Server 2012 R2, fixed by hotfix 3078584”

“A Failure 4673 from msedge.exe under a normal user with SeProfileSingleProcessPrivilege and Keywords 0x8010000000000000”

“Field report of excessive 4673 failures against SeProfileSingleProcessPrivilege tied to Chromium; the poster's claim that Microsoft knows is unconfirmed”

“Access Token Manipulation (T1134), ATT&CK v20: malware families enabling SeDebugPrivilege with AdjustTokenPrivileges”

“Sentinel Windows Audit Checker workbook derives outcome from SecurityEvent Keywords 0x8020000000000000 (Success) and 0x8010000000000000 (Failure)”

“Winlogbeat sets event.outcome from the audit keyword and was fixed (#20564) to use the raw keyword value, because the translated text broke on non-English systems”

“SecurityEvent columns used in the KQL (PrivilegeList, ObjectServer, ProcessName, Keywords, EventData)”

“Splunk Add-on for Microsoft Windows (Splunk_TA_windows, package v9.0.1): default/props.conf, stanza [source::XmlWinEventLog:Security], EVAL-Keywords maps 0x8020000000000000 to Audit Success and 0x8010000000000000 to Audit Failure; read in the package, the listing page does not show it”

“Official add-on documentation: the add-on's default configuration files, props.conf among them, live in Splunk_TA_windows/default; the page does not itself list the Keywords EVAL”

Glossary

What is Privilege Escalation? SOC Glossary

Privilege escalation is an attacker gaining rights they were never given, after they already have a foothold. Vertical e…

Read more
Glossary

What is Least Privilege? SOC Glossary

The principle of least privilege states that users, processes, and systems should hold only the minimum access rights re…

Read more
Glossary

What is EDR? SOC Glossary

EDR (endpoint detection and response) is security software that puts an agent on each laptop, server and workstation, re…

Read more
Career Path

Security Engineer Career Guide: Salary & Skills

Security Engineers build and maintain the infrastructure that SOC analysts depend on. You deploy SIEMs, configure firewa…

Read more
Career Path

Incident Responder Career Guide: Salary & Skills

Incident Responders lead the technical response when confirmed breaches happen. You coordinate containment, run forensic…

Read more
Comparison

SOCSimulator vs. LetsDefend: Platform Comparison

SOCSimulator wins on operational realism. You get multi-tool shift simulation with SLA pressure, noise injection, and al…

Read more
Event ID

Windows Event ID Library: SOC Reference

Windows Security and Sysmon event IDs with simulated log samples, field tables, and tested detection queries.

Read more
Feature

Shift Mode: Real-Time SOC Simulation

Practice alert triage under realistic time pressure with SLA timers and noise injection.

Read more
Feature

Operations: Guided Training Operations

Structured CTF-style investigation operations covering real-world attack scenarios.

Read more
Blog

SOCSimulator Blog: Security Training Insights

Articles on SOC analyst skills, detection engineering, and career development.

Read more
Feature

SOCSimulator Pricing: Free Plan Available

Compare free and Pro tiers.

Read more