Files
E8-CAT/README.md
2025-09-02 16:42:12 +02:00

111 lines
3.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# E8-CAT Essential Eight Compliance Assessment Tool
`E8-CAT` is a lightweight PowerShell-based compliance scanner, similar in spirit to CIS-CAT, designed to check Windows workstations and servers against the [ACSC Essential Eight](https://www.cyber.gov.au/acsc/view-all-content/essential-eight) hardening strategies.
This build includes rules for **Maturity Levels 13** and can report on all levels in a single run.
---
## Features
- **Profiles:** Run checks for a specific level (`ML1`, `ML2`, `ML3`) or all at once (`All`).
- **All-level mode:** With `-Profile All`, the scanner evaluates ML13 in one pass and reports per-level results and scores.
- **Per-rule applicability:** Rules know their minimum level. If they dont apply to a level, theyre marked **N/A**.
- **Evidence-based:** Each rule outputs evidence showing registry values, feature state, or script results.
- **Skip logic:** If a product isnt installed (e.g., Chrome, Edge, Firefox, IE on Win11), the rule reports **SKIPPED**.
- **Cross-scope checks:** Registry policies are checked under both **HKLM** and **HKCU**.
- **Output formats:** JSON, CSV, and HTML reports saved under `.\out\`.
- **PowerShell 5.1 compatible:** Works on standard Windows builds (no modern operators like `??`).
---
## Usage
```powershell
Set-ExecutionPolicy Bypass -Scope Process -Force
# Navigate into the E8-CAT folder
Set-Location .\E8-CAT
# Run all levels in one pass
.\E8-CAT.ps1 -Profile All
# Run a specific maturity level
.\E8-CAT.ps1 -Profile ML1
.\E8-CAT.ps1 -Profile ML2
.\E8-CAT.ps1 -Profile ML3
```
---
## Outputs
Results are written to `.\out` with timestamped filenames:
- **CSV** Easy import into Excel or SIEM tools
- **JSON** Machine-readable for pipelines and dashboards
- **HTML** Human-friendly report with tables and score summaries
Example output files:
```
.\out\E8CAT-ML1-20250902-153936.csv
.\out\E8CAT-ML1-20250902-153936.json
.\out\E8CAT-ML1-20250902-153936.html
```
---
## Rule Coverage
Rules are organised by strategy:
- **RM Restrict Macros:**
- Office macro settings (Word/Excel/PowerPoint/Outlook, Office 15.0 & 16.0)
- Block macros from the Internet
- Macro runtime AV scanning
- Trusted Publisher enforcement (ML3)
- **AH Application Hardening:**
- Internet Explorer 11 feature disabled (skips on Win11)
- Java browser plugin absent
- Microsoft Edge SmartScreen + download restrictions
- Chrome SafeBrowsing, download restrictions, extension blocklist
- Firefox enterprise policy presence
- Windows SmartScreen (multiple policy keys)
- **AC Application Control:**
- AppLocker policy present and enforced (not AuditOnly)
- Windows Defender Application Control (WDAC) policy present
- Software Restriction Policies present
- **RA Restrict Admin Privileges:**
- Built-in Administrator account disabled
- UAC (EnableLUA) enabled
- Local Administrator Password Solution (LAPS) policy present (Windows or legacy)
---
## Rule Semantics
Rules are defined in `.\rules\*.json`. Each rule specifies:
- `id`, `title`, `strategy`, `type`, `script` (or registry/command parameters)
- `minLevel` (ML1, ML2, ML3)
**Return values in rules:**
- `$true`**PASS**
- `$false`**FAIL**
- `$null`**SKIPPED**
---
## Profiles
Profiles are stored under `.\profiles\ml1.json`, `ml2.json`, `ml3.json`. They contain the rule IDs included at each level.
When running `-Profile All`, these profiles are ignored and all rules are checked, with results shown for each level.
---
## Example Run
```powershell
PS C:\E8-CAT> .\E8-CAT.ps1 -Profile All
E8-CAT ML1 score: 78.9% (PASS=15 / FAIL=4 / Total=19)
E8-CAT ML2 score: 65.0% (PASS=13 / FAIL=7 / Total=20)
E8-CAT ML3 score: 42.9% (PASS=9 / FAIL=12 / Total=21)
Saved: .\out\E8CAT-All-20250902-161413.json
Saved: .\out\E8CAT-All-20250902-161413.csv
Saved: .\out\E8CAT-All-20250902-161413.html
```