This lab applies the OS internals knowledge from this module to a practical examination of a Windows endpoint's security-relevant configuration. You will examine process tokens, registry persistence locations, ETW provider status, and LSASS protection configuration on a system, then map your findings to attack techniques and defensive controls.
Deliverable: A completed OS internals security assessment for a Windows endpoint, with findings mapped to attack techniques and recommended defensive controls.
Estimated completion: 20 minutes
Figure ES1.11 — Lab workflow: examine process security context, audit registry persistence locations, check LSASS protection status, and map findings to defensive controls.
Lab exercises
Exercise 1: Process token and parent chain analysis
Examine the security context of running processes on a Windows endpoint. Use the commands from ES1.1:
1
2
3
4
5
# Process parent-child chainsGet-CimInstanceWin32_Process|Select-ObjectProcessId,ParentProcessId,Name,CommandLine|Sort-ObjectParentProcessId|Format-Table-AutoSize# Check for processes with elevated (High integrity) tokenswhoami/groups/fotable
Assessment questions: Are there any processes with unexpected parent-child relationships? (e.g., Office spawning script interpreters, svchost spawning command interpreters). Are there processes running as SYSTEM that seem unusual? Document any anomalous findings.
Exercise 2: Registry persistence audit
Check the most common persistence locations using the commands from ES1.3:
1
2
3
4
5
6
7
8
9
# User and machine Run keysGet-ItemProperty"HKCU:\Software\Microsoft\Windows\CurrentVersion\Run"-ErrorActionSilentlyContinueGet-ItemProperty"HKLM:\Software\Microsoft\Windows\CurrentVersion\Run"-ErrorActionSilentlyContinue# Unexpected servicesGet-ItemProperty"HKLM:\SYSTEM\CurrentControlSet\Services\*"-ErrorActionSilentlyContinue|Where-Object{$_.ImagePath-and$_.ImagePath-notmatch"system32|syswow64|windows|program files"}|Select-ObjectPSChildName,ImagePath,Start
# IFEO debugger entriesGet-ChildItem"HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options"-ErrorActionSilentlyContinue|ForEach-Object{Get-ItemProperty$_.PSPath-Name"Debugger"-ErrorActionSilentlyContinue}|Where-Object{$_.Debugger}
Assessment questions: How many entries are in the Run keys? Are all entries legitimate applications? Do any services have ImagePath values pointing to unusual locations? Are there any IFEO Debugger entries?
Exercise 3: LSASS protection assessment
Check the current LSASS protection configuration using the commands from ES1.2:
1
2
3
4
5
6
7
8
# RunAsPPL(Get-ItemProperty"HKLM:\SYSTEM\CurrentControlSet\Control\Lsa"-Name"RunAsPPL"-ErrorActionSilentlyContinue).RunAsPPL# Credential Guard(Get-CimInstance-ClassNameWin32_DeviceGuard-Namespaceroot\Microsoft\Windows\DeviceGuard-ErrorActionSilentlyContinue).SecurityServicesRunning# LSASS ASR rule$asr=Get-MpPreference;$idx=[array]::IndexOf($asr.AttackSurfaceReductionRules_Ids,"9e6c4e1f-7d60-472f-ba1a-a39ef669e4b2");if($idx-ge0){$asr.AttackSurfaceReductionRules_Actions[$idx]}else{"Not configured"}
Assessment questions: Is RunAsPPL enabled? Is Credential Guard running? What is the LSASS ASR rule state (not configured, audit, block)? For each “not configured” result, identify the module in this course that addresses the gap.
Exercise 4: Map findings to defensive controls
For each finding from Exercises 1-3, complete the mapping:
Finding → OS Internal → ATT&CK Technique → Recommended Control → Course Module
Example: “RunAsPPL not enabled → LSASS process unprotected → T1003.001 LSASS Memory → Enable RunAsPPL + ASR LSASS rule → ES4 (ASR) + ES11 (hardening)”
Your lab assessment reveals: RunAsPPL not enabled, LSASS ASR rule not configured, Credential Guard not running, and 3 unexpected entries in the HKLM Run key. Which finding should you investigate first?
The 3 unexpected Run key entries. The LSASS protection gaps are configuration deficiencies — they represent POTENTIAL risk. Unexpected Run key entries represent POSSIBLE active compromise — something has already written to a persistence location. Investigate the Run key entries immediately: identify the executable path, verify the binary's signature, check when the registry value was created, and determine whether the entry is a legitimate application or potential malware persistence. The LSASS protection gaps should be addressed as part of the deployment plan, but active persistence indicators require immediate investigation.
The missing Credential Guard — this is the most impactful LSASS protection control and should be the top priority.
The missing LSASS ASR rule — this is the fastest control to deploy and should be enabled immediately.
All findings are equally important and should be addressed in the deployment sequence from ES0.7.
The full course continues with advanced topics, production detection rules, worked investigation scenarios, and deployable artifacts. Premium subscribers get access to all courses.