Comitari Windows hardening safe v1 (WAPT source)

SOURCE ONLY: must build and sign with the organization's WAPT tooling. Not yet Windows/WAPT-tested.

Scope

Five HKLM registry settings: disable AutoRun and AutoPlay (including non-volume devices), disable lock-screen camera and slideshows. No account / password / LAPS change. No WAPT, firewall, network, SMB, BitLocker, Microsoft Defender, antivirus, remote desktop, printing or power settings change.

Implementation

  • setup.py now contains the complete install, audit and conditional rollback logic.
  • Registry reads and writes use WAPT 2.6 setuphelpers (reg_key_exists, reg_value_exists, reg_openkey_noredir, reg_getvalue, registry_set, and reg_delvalue). No PowerShell process or external command is launched.
  • The approved setting table is centralized in SETTINGS. A future update_package.py can validate operator-selected settings and serialize them as package data; this refactor keeps the current five-setting policy fixed.
  • If a future package configuration changes a setting’s target, its update flow must migrate the saved uninstall target while preserving the original pre-install value. That migration is not part of this refactor.
  • The WAPT package source currently has no WAPT/control or update_package.py; it is code-only and is not yet a complete buildable WAPT package.

Safeguards

  • Initial values are saved once in %ProgramData%\Comitari\HardeningSafe\original-values.json before any modifications. The JSON layout remains compatible with the prior PowerShell package.
  • If the baseline is absent, malformed or incomplete, uninstall refuses to make registry changes.
  • Reinstallation idempotent; uninstall conditional: restores only values still equal to package target, leaving externally modified values unchanged.
  • No reboot forced. Audit implemented.
  • State persists after uninstall intentionally, so repeated uninstall does not overwrite third-party edits.
  • Audit is read-only. A non-compliant or unreadable setting returns WARNING; successful collection with all five values at target returns OK.

Deployment

  1. Inspect setup.py and the five SETTINGS entries in an isolated preproduction repository.
  2. Validate registry settings and resulting behavior on a Windows 11 25H2 representative workstation, especially AutoPlay workflow.
  3. Build/sign WAPT package with organization's key. Do not distribute unsigned sources as a ready-to-deploy binary.
  4. Deploy to 1 test PC, verify WAPT agent/check-in, LapsByWAPT password rotation and recovery, business apps, USB workflows.
  5. Expand to 3-5 devices for 48h and later to waves. Remove machine dependency before wapt-get remove; see WAPT docs on remove vs uninstall.
  6. Verify rollback in pilot via wapt-get uninstall comitari-hardening-safe (function call) and validate state.

IMPORTANT: wapt-get remove is NOT assured to execute a custom uninstall() function. Follow your WAPT version's verified removal workflow and audit this before promotion.

Deliberately deferred

Windows LAPS controls 10701-10703 (LapsByWAPT alternative); firewall enforcement; VBS/HVCI/Credential Guard; ASR; NTLM/SMB guest/signing; SMBv1 removal; BitLocker; print drivers; user rights; audit logging and command-line collection; remote admin; LLMNR and NetBIOS. These require separate pilot checks.

S
Description
No description provided
Readme
50 KiB
0 Stars 3 Watchers 0 Forks
Languages
Python 100%