Remediation is a separate command
Fixing runs through Invoke-EyeOfHorusRemediation.ps1. The assessment scripts and engines never load it.
Version 1.1.3, with remediation 1.0.0, for Windows 11 and Windows Server 2022
See every control. Prove every result.
A portable STIG assessment tool for Windows 11 and Windows Server 2022. It reads the system, decides each rule, and shows you the expected value, the observed value, and the logic that connects them — for all 535 rules. When you are ready, a separate remediation command fixes the findings that can be fixed safely, records every change, and lists what is still open.
540 KB ZIP, no installer. Runs offline on Windows PowerShell 5.1.
Most scanners hand you a verdict. This is one rule as Eye of Horus reports it — the same structure appears in the HTML report, the CKL finding details, and the JSON. Open it.
Win32_DeviceGuard.SecurityServicesRunning contains 1 (Credential Guard active)
SecurityServicesRunning = {0}
VirtualizationBasedSecurityStatus = 2
Credential Guard running = False
The collected evidence did not satisfy the automated conditions for this rule.
Method: Supplemental PowerShell Collector status: Completed Evidence items: 1
No human answer was applied.
Evidence SHA-256 9f2c1e… Catalog SHA-256 b74a99… Engine SHA-256 7e8377… Proof SHA-256 b71a08…
{ "TraceType": "SupplementalEvaluation",
"Check": "Verify Credential Guard is running…",
"Observation": "Credential Guard running=False",
"Outcome": "Fail" }
[{ "SecurityServicesConfigured": [1],
"SecurityServicesRunning": [0] }]
Rule catalogs are generated from official DISA Cyber Exchange STIG packages and embedded in the engines. Nothing is fetched at runtime.
| Target | DISA manual baseline | Rules | SCAP / OVAL | Supplemental PowerShell |
|---|---|---|---|---|
| Windows 11 | V2R8 | 256 | 219 | 37 |
| Windows Server 2022 | V2R9 | 279 | 217 | 62 |
| Installed products | Targeted product controls | 13 | — | 13 |
The Server 2022 engine resolves standalone, member-server, domain-controller, Desktop Experience, and Server Core applicability before it evaluates anything. It also inventories installed features and names the additional product STIGs that apply — Active Directory, DNS, IIS, SQL Server, AD FS — rather than implying an OS baseline covers them.
A separate product engine inventories installed software, records which product STIGs apply, and runs 13 targeted controls for software such as Microsoft Edge, Firefox, Adobe Acrobat Reader, Java 8, and IIS 10.
The assessment is a detective control. It never writes a registry value, policy setting, or ACL that a STIG rule evaluates. Changes happen only in the separate remediation command, and only when you ask for them.
Fixing runs through Invoke-EyeOfHorusRemediation.ps1. The assessment scripts and engines never load it.
Reports under STIG-Results, and short-lived collection files under %TEMP% that it removes.
It can mount an offline NTUSER.DAT read-only to collect per-user evidence. Every mount is tracked, and the unload is retried and verified. -SkipUserHiveLoading turns it off.
Rule content is embedded. The assessment runs with no outbound connection, no agent, and no service left behind.
A failed collection is recorded as an error, never as evidence of absence. A rule that could not be measured never becomes a Pass.
Compare-EyeOfHorus.ps1 diffs two JSON reports and reports status, evidence, and decision changes between runs.
Invoke-EyeOfHorusRemediation.ps1 starts from a fresh assessment. It plans by
default and changes nothing until you run it with -Apply, a change ticket,
and the name of the person who authorized the change.
| Target | Automatic | Guarded | Manual |
|---|---|---|---|
| Windows 11 V2R8 | 129 | 76 | 51 |
| Windows Server 2022 V2R9 | 116 | 84 | 79 |
-Apply. DISA's own OVAL definition pins the value, and the change is local and reversible: registry policy values, the required flag for each advanced audit subcategory, password policy, the Guest account, and anonymous SID/name translation.-IncludeGuarded. Automatable, but people or other systems may depend on the current behavior: SMB signing, NTLMv2-only, Kerberos AES, FIPS mode, UAC, WinRM authentication, account lockout, user rights, and removing SMBv1, Telnet, TFTP, or PowerShell 2.0. Each rule states its operational impact.
Every rule's tier, fix, value basis, and reason are listed in
Remediation/REMEDIATION-CLASSIFICATION.csv in the package.
Pass, Not Applicable, Review, and Error results are never touched.
If Group Policy or MDM delivers a setting, the owner is named instead of writing a local value that would be overwritten.
The prior state is recorded before each change and read back after it. A rule that needs several changes is applied all-or-nothing.
Security policy, audit policy, and every affected registry key are exported first. -RollbackJournal restores a run, newest change first.
The unmodified assessment runs again afterward. Its verdict, not the write, decides what counts as fixed.
DC settings belong in the Default Domain Controllers Policy. Changing one locally takes -AllowDomainController.
Plan only. Nothing is written.
.\Invoke-EyeOfHorusRemediation.ps1
Apply the Automatic fixes.
.\Invoke-EyeOfHorusRemediation.ps1 -Apply -ChangeTicket CHG0012345 -AuthorizedBy 'J. Smith, ISSM'
Also apply Guarded fixes you have reviewed.
.\Invoke-EyeOfHorusRemediation.ps1 -Apply -ChangeTicket CHG0012345 -AuthorizedBy 'J. Smith, ISSM' -IncludeGuarded WN11-SO-000100,WN11-SO-000120
Undo a run from its journal.
.\Invoke-EyeOfHorusRemediation.ps1 -RollbackJournal <journal.json> -ChangeTicket CHG0012346 -AuthorizedBy 'J. Smith, ISSM'
Each run writes the findings that are still non-compliant — with the reason each one
was not fixed and the DISA fix text — plus the plan, the change journal, an HTML
summary, and an Excel workbook under STIG-Results\Remediation.
One assessment run produces all of these, plus a SHA-256 manifest.
Four steps to your first assessment. No installer, no dependencies, no configuration file.
Do not launch it from inside Explorer's ZIP view. The launcher checks for both engine folders and stops if they are missing.
Double-click it. It requests elevation on its own, so right-click is optional. From a prompt you can call the orchestrator directly instead:
.\Invoke-EyeOfHorus.ps1
The console states the outcome in plain language before it closes.
Everything lands in STIG-Results. Start with the Excel workbook, or open the HTML report and expand any rule to see how the answer was reached. To fix findings next, start with the remediation plan above.
Everything it needs is already on a Windows 11 or Server 2022 system.
Windows 11, or Windows Server 2022 as standalone, member server, or domain controller. Server Core is supported.
Windows PowerShell 5.1, which ships in the box. Nothing to install.
Local administrator, because STIG evidence includes policy, audit, and registry state that is not readable otherwise.
None for a local assessment. Remote targets use PowerShell remoting if you choose to scan a fleet. Remediation changes only the local host.
A change ticket number and the approver's name on the command line. Both are written into the change journal.
The free trial is the full product: every assessment engine, all 535 rules, the 13 installed-product controls, and remediation. Try it against a test system and compare a sample of results to the corresponding DISA manual checks.
Download Eye-of-Horus-STIG-Validator-1_1_3.zipSHA-256 of the archive:
2c64205fee744631f34b9a6151ff459b82a5bd8ebd1bd5ccebfffadedc8ad028
In PowerShell, from the folder you saved it to. It prints True when the file matches:
(Get-FileHash .\Eye-of-Horus-STIG-Validator-1_1_3.zip -Algorithm SHA256).Hash -eq '2c64205fee744631f34b9a6151ff459b82a5bd8ebd1bd5ccebfffadedc8ad028'
After extracting, RELEASE-MANIFEST.json carries a SHA-256 for every
assessment file and Remediation/REMEDIATION-MANIFEST.json one for every
remediation file, so you can confirm nothing was modified even if the archive was
repacked in transit.
Eye of Horus is not an official DoD product and is not affiliated with or endorsed by DISA. Embedded rule content is generated from public DISA Cyber Exchange STIG packages and remains subject to its original notices.
A generated result is not an authorization decision. Validators remain responsible for reviewing collected evidence, organizational policy, applicability, and approved exceptions.
Run it in a test OU first. Compare a sample of Pass, Fail, Review, Error, and Not Applicable results against the corresponding DISA manual checks, and validate CKL import and repeat-run drift behavior, before relying on it for an assessment of record.
Remediation changes security settings. Review the plan, apply it on a test system,
and confirm a rollback restores that system before you use -Apply on a
system of record. Guarded fixes can break authentication, file sharing, or remote
management that depends on the current behavior; read each rule's operational impact
before you name it.