Eye of Horus
Surface Vector Technologies
Download trial

Version 1.1.3, with remediation 1.0.0, for Windows 11 and Windows Server 2022

Eye of HorusSTIG Validator

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.

Every result carries its own evidence

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.

WN11-CC-000075 CAT I Fail Credential Guard must be running on Windows 11 systems.
How this answer was reached
1  Expected
Win32_DeviceGuard.SecurityServicesRunning contains 1
(Credential Guard active)
2  Observed
SecurityServicesRunning = {0}
VirtualizationBasedSecurityStatus = 2
Credential Guard running = False
3  Automated decision
The collected evidence did not satisfy the automated
conditions for this rule.
4  Collection
Method: Supplemental PowerShell
Collector status: Completed
Evidence items: 1
5  Human decision
No human answer was applied.
6  Integrity (hashes abbreviated)
Evidence SHA-256  9f2c1e…  Catalog SHA-256  b74a99…
Engine SHA-256    7e8377…  Proof SHA-256    b71a08…
7  Machine decision trace
{ "TraceType": "SupplementalEvaluation",
  "Check": "Verify Credential Guard is running…",
  "Observation": "Credential Guard running=False",
  "Outcome": "Fail" }
8  Raw evidence
[{ "SecurityServicesConfigured": [1],
   "SecurityServicesRunning": [0] }]
The automated status is immutable. A documented answer file can change the final status, and both are kept side by side with the approver and justification.

What this release assesses

Rule catalogs are generated from official DISA Cyber Exchange STIG packages and embedded in the engines. Nothing is fetched at runtime.

Rule counts by target and evaluation method
TargetDISA manual baselineRulesSCAP / OVALSupplemental PowerShell
Windows 11V2R825621937
Windows Server 2022V2R927921762
Installed productsTargeted product controls13—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.

Assessment never changes what it measures

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.

Remediation is a separate command

Fixing runs through Invoke-EyeOfHorusRemediation.ps1. The assessment scripts and engines never load it.

What it does write

Reports under STIG-Results, and short-lived collection files under %TEMP% that it removes.

Offline user hives

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.

No network egress

Rule content is embedded. The assessment runs with no outbound connection, no agent, and no service left behind.

Fails closed

A failed collection is recorded as an error, never as evidence of absence. A rule that could not be measured never becomes a Pass.

Repeatable

Compare-EyeOfHorus.ps1 diffs two JSON reports and reports status, evidence, and decision changes between runs.

Fix what can be fixed safely

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.

How the 535 rules are classified for remediation
TargetAutomaticGuardedManual
Windows 11 V2R81297651
Windows Server 2022 V2R91168479
Automatic
Applied with -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.
Guarded
Applied only when you name the rule with -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.
Manual
Never changed. Hardware and firmware, certificates, file and registry permissions, account names, per-user settings, domain policy, irreversible removals, and site decisions. Each rule states why.

Every rule's tier, fix, value basis, and reason are listed in Remediation/REMEDIATION-CLASSIFICATION.csv in the package.

How a change is made

Only failed rules

Pass, Not Applicable, Review, and Error results are never touched.

Policy owners first

If Group Policy or MDM delivers a setting, the owner is named instead of writing a local value that would be overwritten.

Journaled and read back

The prior state is recorded before each change and read back after it. A rule that needs several changes is applied all-or-nothing.

Backed up and reversible

Security policy, audit policy, and every affected registry key are exported first. -RollbackJournal restores a run, newest change first.

The engine has the final word

The unmodified assessment runs again afterward. Its verdict, not the write, decides what counts as fixed.

Domain controllers are plan-only

DC settings belong in the Default Domain Controllers Policy. Changing one locally takes -AllowDomainController.

Commands

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.

0
Plan written, or nothing left to fix
1
Fixes applied, and findings remain
2
A fix failed, a regression appeared, the reassessment reported errors, or a rollback step failed
3
Stopped before completing

Six assessment outputs from one run

One assessment run produces all of these, plus a SHA-256 manifest.

  • XLSXExcel workbook, the main deliverable: run information, all results, product applicability, installed software, and errors on separate tabs.
  • CKLImports into STIG Viewer. Finding details carry expected, observed, decision logic, collector health, and integrity hashes.
  • JSONComplete per-rule proof object with raw evidence, OVAL decision traces, and answer attribution.
  • HTMLSelf-contained report with the expandable proof shown above on every rule.
  • CSVProof ledger for filtering and bulk review across a fleet.
  • XCCDFResults in standard XCCDF for downstream tooling.

Quick start

Four steps to your first assessment. No installer, no dependencies, no configuration file.

  1. Extract the whole ZIP

    Do not launch it from inside Explorer's ZIP view. The launcher checks for both engine folders and stops if they are missing.

  2. Run Run-Eye-Of-Horus.cmd

    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
  3. Read the exit code

    The console states the outcome in plain language before it closes.

    0
    Complete, no open findings
    1
    Complete, open STIG findings exist
    2
    Incomplete — assessment errors occurred, do not treat the report as a full validation
    3
    Engine-fatal failure
  4. Open the results

    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.

Requirements

Everything it needs is already on a Windows 11 or Server 2022 system.

Operating system

Windows 11, or Windows Server 2022 as standalone, member server, or domain controller. Server Core is supported.

PowerShell

Windows PowerShell 5.1, which ships in the box. Nothing to install.

Privileges

Local administrator, because STIG evidence includes policy, audit, and registry state that is not readable otherwise.

Network

None for a local assessment. Remote targets use PowerShell remoting if you choose to scan a fleet. Remediation changes only the local host.

To apply fixes

A change ticket number and the approver's name on the command line. Both are written into the change journal.

Download Eye of Horus 1.1.3

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.zip

Verify it before you run it

SHA-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.

Before production use

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.