diff --git a/.github/release-notes.md.in b/.github/release-notes.md.in index eb9307f..93e4452 100644 --- a/.github/release-notes.md.in +++ b/.github/release-notes.md.in @@ -1,13 +1,11 @@ -Horus v@PROJECT_VERSION@ adds persistent case analysis without changing the direct workflow: dropping a file onto the executable or running `horus.exe sample.exe` still analyzes it immediately. +HORUS v@PROJECT_VERSION@ makes repeat case triage easier to review and PE comparisons easier to automate. Highlights: -- Persistent Case Mode for up to 5,000 samples, with incremental refresh, verify, rebuild, prune, portable state, and offline HTML/CSV/JSON reports. -- Exact duplicate groups for every file and explainable PE similarity clusters based on TLSH, imphash, Rich hash, and section layout. -- Content-based direct analysis for files with any extension, including drag-and-drop and paths with spaces. -- Explicit `UNKNOWN` and `analysis_status` output when evidence is unavailable, plus documented exit code 3 for incomplete results. -- Opt-in network enrichment with `--enrich`; only hashes and extracted indicators are sent, never file contents. -- Offline/cache-only Authenticode trust by default, with online revocation available through `--online-trust`. -- Hardened report embedding, strict JSON parsing, bounded HTTP responses, atomic state/export writes, and CSV formula protection. +- Each case refresh records what changed in the current run: added, modified, restored, missing, removed by `--prune`, and assessment-changed samples. Review the `changes` array and `summary.changes` in `case.json`, the new `changes.csv`, or the offline dashboard. +- The feed covers the latest refresh, not a historical audit log. Use `--verify` to detect edits that preserve both file size and modification time. +- `horus --diff a.exe b.exe --json` provides a machine-readable PE comparison. Incomplete or non-PE comparisons set `analysis_status` to `unknown` and exit 3 instead of implying a complete PE comparison. +- Malformed PE input handling and CLI mode validation are stricter. +- The established direct-file, case, and opt-in enrichment workflows remain available. Samples are never uploaded by HORUS. The three binaries target Windows 10/11 x64. They are not Authenticode-signed; verify downloads with `SHA256SUMS.txt` and GitHub artifact attestations. diff --git a/CMakeLists.txt b/CMakeLists.txt index ba7a316..a18136f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.15) if(POLICY CMP0091) cmake_policy(SET CMP0091 NEW) endif() -project(horus VERSION 4.0.0 LANGUAGES CXX) +project(horus VERSION 4.1.0 LANGUAGES CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) diff --git a/README.md b/README.md index 7433d17..d281f42 100644 --- a/README.md +++ b/README.md @@ -59,6 +59,12 @@ Hand it **anything** and it figures out what to do: Direct file analysis needs no mode flag: `horus.exe sample.exe` runs immediately. Network access is always opt-in through `--enrich`. +### New in v4.1 + +- **Case change feed** — each refresh records files added, modified, restored, newly missing, or removed by `--prune`, plus changed assessments. Inspect the current run in `case.json`, `changes.csv`, or the offline dashboard. +- **Machine-readable PE diff** — `horus --diff a.exe b.exe --json` returns structured comparison data. Incomplete or non-PE comparisons set `analysis_status` to `unknown` and exit 3. +- **Stricter input handling** — additional malformed-PE bounds checks and rejection of conflicting `--gui`/`--html` combinations with scan, diff, or each other. + ### New in v4.0 - **Persistent Case Mode** — analyze up to 5,000 files with incremental refresh, `--verify`, `--rebuild`, `--prune`, portable relative paths, and atomic state. @@ -88,6 +94,8 @@ Direct file analysis needs no mode flag: `horus.exe sample.exe` runs immediately ## Terminal Preview +Illustrative output only. The file, indicators, provider result, and verdict below are fictional; no scan or provider lookup produced this example. + ``` _ _ ___ ____ _ _ ____ | | | |/ _ \| _ \| | | / ___| @@ -103,7 +111,7 @@ FILE ───────────────────────── size 102,912 bytes MD5 a3f5d1e2c7b849d60e14a2b8f93c5d17 SHA-1 4b2e8a91c3d056f7e820b4a19c6d3f7e2b085c40 - SHA-256 e3b0c44298fc1c149afbf4c8996fb924...852b855 + SHA-256 470735e5b9545078198d440e67abbf86...dad3f57d PE HEADER ─────────────────────────────────────────────────────── type executable @@ -143,8 +151,8 @@ CAPABILITIES ────────────────────── ! Known packer section name 'UPX0' +16 EMBEDDED INDICATORS (from strings) ──────────────────────────── - url http://185.220.101.5:8080/gate.php - ip 185.220.101.5 + url http://192.0.2.42:8080/gate.php + ip 192.0.2.42 tokens cmd.exe schtasks powershell THREAT INTELLIGENCE ───────────────────────────────────────────── @@ -253,7 +261,7 @@ options: --no-recurse analyze only the top level of a case directory --online-trust allow online Authenticode revocation checks --scan