ReferenceCONSTRUCTED

Windows event log cheat sheet: by the question you are asking

Organised by what you are trying to establish rather than by number: who logged on and how, what ran, what persisted, what was tampered with. Every entry says which log, whether it is on by default, and what it does not tell you.

version 1.0checked 2026-09-21windows7 min read

T1078T1021.001T1053.005T1543.003T1685.005T1558.003T1059.001

How to use this

The event ID lookup answers "what is 4688". This sheet answers the question you had before that one: "which events tell me whether somebody logged on to this host from somewhere else". Find the question, read across.

Two warnings that apply to every row. An empty result is frequently a configuration finding: several of the most useful events are off until somebody enables the audit subcategory. And the Security log rolls by size, 20 MB by default on many builds, which on a busy domain controller can be hours. Check the oldest record in the log before you conclude anything from an absence.

Who logged on, from where, and how

EventLogDefaultTells youDoes not tell you
4624SecurityOnA successful logon: account, logon type, source address, logon ID, authentication packageWhat they did. Follow the logon ID into 4688 and 4634
4625SecurityOn for servers. Verify on clients with auditpolA failed logon, with a status and sub-status code for whyWhether a later success was the same actor
4648SecurityOnA logon with explicit credentials (runas, a mapped drive with other credentials), recorded on the source hostThat the target accepted it. Pair with 4624 on the target
4672SecurityOnThe new logon holds administrator-equivalent privilegesWhich privilege was then used
4776SecurityOn (DCs and the host for local accounts)An NTLM credential validation, with the workstation name as the client supplied itA reliable source. The workstation name is client-controlled
4778, 4779SecurityOff (Audit Other Logon/Logoff Events)RDP session reconnect and disconnect, with the client name and addressThe initial connection. That is a 4624 type 10
1149TerminalServices-RemoteConnectionManager/OperationalOnAn RDP connection reached authentication, with source addressThat the logon succeeded
21, 22, 24, 25TerminalServices-LocalSessionManager/OperationalOnRDP session logon, shell start, disconnect, reconnect. Often survives when Security has rolledAnything about non-RDP logons

Logon types worth memorising

TypeMeaningWhy it matters
2Interactive, at the consoleAlso what some remote tools and runas produce
3Network (SMB, most remote administration)The signature of lateral movement. Credentials are not cached on the target
4BatchScheduled tasks
5ServiceA service starting under an account
7Unlock
8NetworkCleartextA password crossed the wire in clear, IIS basic authentication for example
9NewCredentialsrunas /netonly. Pass-the-hash tooling commonly produces this
10RemoteInteractiveRDP. Credentials are present in memory on the target
11CachedInteractiveLogged on with cached domain credentials, no domain controller reached

Kerberos, on the domain controller

EventTells youLook for
4768A TGT was requestedResult code 0x6 (unknown principal) in volume is username enumeration. Pre-authentication type 0 on a success means pre-auth is disabled for the account, which enables AS-REP roasting
4769A service ticket was requestedTicket encryption type 0x17 (RC4) for a service account in an estate that otherwise uses AES is the classic Kerberoasting signal
4771Kerberos pre-authentication failedFailure code 0x18 is a wrong password. Many accounts, one source address, a short window: password spraying that never produces a 4625 on a member server

Both 4768 and 4769 depend on the Kerberos audit subcategories being enabled on domain controllers.

What ran

EventLogDefaultTells youDoes not tell you
4688SecurityOff (Audit Process Creation)Process name, creator process, account, token elevationThe command line, unless the separate policy "Include command line in process creation events" is also on. No hashes, ever
Sysmon 1Microsoft-Windows-Sysmon/OperationalNeeds SysmonCommand line, hashes, parent command line, OriginalFileName, a stable ProcessGuidAnything the config excluded. Read the config before trusting an absence
4104Microsoft-Windows-PowerShell/OperationalPartly. Script block logging must be enabled for full coverage; some suspicious blocks are logged regardlessThe decoded script text as it executed, after any -EncodedCommand or string obfuscation was undonePowerShell 2.0 sessions, which predate the feature. Look for engine version 2 in event 400 of the classic Windows PowerShell log
Sysmon 7SysmonUsually disabled for volumeImage (DLL) loads
Sysmon 10SysmonConfig-dependentOne process opening another, with the access mask. The LSASS access recordWhether memory was actually read

What persisted

EventLogDefaultTells you
7045SystemOnA service was installed: name, image path, start type, account. No audit policy needed, which makes it the most reliable record of PsExec-style movement
4697SecurityOff (Audit Security System Extension)The same, with the subject account and logon ID, so it can be tied to a 4624
4698SecurityOff (Audit Other Object Access Events)A scheduled task was created, with the full task XML including the action
4699, 4700, 4701, 4702SecurityOff, as aboveTask deleted, enabled, disabled, updated
106, 140, 141, 200, 201TaskScheduler/OperationalThe log itself is disabled by default on many buildsTask registered, updated, deleted, action started, action completed
Sysmon 12, 13, 14SysmonConfig-dependentRegistry key and value changes. Run keys, service keys, IFEO
Sysmon 19, 20, 21SysmonConfig-dependentWMI filter, consumer and binding created. Almost the only log of WMI persistence
5861WMI-Activity/OperationalOnA permanent WMI event consumer binding was registered. The fallback when there is no Sysmon

Accounts and groups

EventTells you
4720A user account was created, and by whom
4722, 4725, 4726Account enabled, disabled, deleted
4724, 4723Password reset by another account, password change by the account itself
4728, 4732, 4756Member added to a global, local or universal security group. 4732 on a workstation for the local Administrators group is a small event with large consequences
4738A user account was changed. Check for "Do not require Kerberos preauthentication" and password-never-expires being set
4740Account locked out, with the caller computer name

Tampering and gaps

EventLogTells you
1102SecurityThe Security log was cleared, and by which account. It is the first record of the new log, so it survives
104SystemAny other log was cleared
4719SecuritySystem audit policy was changed. Auditing turned off is quieter than a cleared log
6005, 6006, 6008SystemEvent log service started, stopped, unexpected shutdown. They bracket reboots, and a reboot is where memory evidence ended
4616SecurityThe system time was changed. Every timestamp after it needs checking against a second source

Three habits

  1. Pivot on the logon ID, the hexadecimal TargetLogonId in 4624. It ties a logon to every 4688 that session produced and to the 4634 or 4647 that ended it.
  2. Read both ends. Lateral movement writes 4648 on the source and 4624 type 3 on the target. One without the other is a finding about logging, not about the intrusion.
  3. Record the oldest event in each log you relied on. It is the difference between "there was no logon" and "there is no record of a logon after 09:40, which is as far back as the log goes".

sources

  1. Microsoft Learn: Appendix L, Events to Monitor · primary
  2. Microsoft Learn: 4624, An account was successfully logged on (logon types and fields)
  3. Microsoft Learn: 4625, An account failed to log on
  4. Microsoft Learn: 4648, A logon was attempted using explicit credentials
  5. Microsoft Learn: 4672, Special privileges assigned to new logon
  6. Microsoft Learn: 4688, A new process has been created
  7. Microsoft Learn: 4697, A service was installed in the system
  8. Microsoft Learn: 4698, A scheduled task was created
  9. Microsoft Learn: 4720, A user account was created
  10. Microsoft Learn: 4732, A member was added to a security-enabled local group
  11. Microsoft Learn: 4768, A Kerberos authentication ticket (TGT) was requested
  12. Microsoft Learn: 4769, A Kerberos service ticket was requested
  13. Microsoft Learn: 4776, The computer attempted to validate the credentials for an account
  14. Microsoft Learn: 1102, The audit log was cleared
  15. Microsoft Learn: about_Logging_Windows (PowerShell script block logging, event 4104)
  16. Microsoft Learn: Sysmon event reference

Tags: windows · event-logs · evtx · sysmon · logon · kerberos · powershell · cheat-sheet · microsoft · T1078 · T1053.005 · T1543.003