Files
acaua/docs/cli.md
T
Lucas RayanandClaude Sonnet 5 c64bbbf775 feat: implement Pillars 2-4 and fix a production false-positive in Pillar 1
Pillar 1 v1.1 (shipped earlier) flagged benign browsing bursts as
beaconing: on short captures, grid periods longer than the observed
span never complete a cycle, so significance saturates to 1 and the
score sticks at exactly 0.5. v1.2 caps the grid at a third of the
observed span, requires a minimum number of completed cycles, and
excludes protocols that are periodic by nature (NTP, DNS, mDNS,
ICMP). Validated against 300 seeds per scenario: false positives on
bursty traffic drop from the 290-300/300 that v1.1 produced to 0/300,
with every beacon-detection scenario scoring unchanged.

Add Pillar 2 (persistent/long-lived sessions, with Zeek's fragmented
TCP sessions rejoined after a 5-minute gap), Pillar 3 (DNS tunneling
via Shannon-entropy information volume per subdomain per hour; the
Jensen-Shannon divergence was measured and does not separate tunnels
from benign CDN subdomains, so it stays in the evidence at zero
weight instead of in the score), and Pillar 4 (deterministic
noisy-OR fusion across the three pillars).

The fusion formula was validated against 8 labeled real-traffic
vectors (IoT-23, CTU-Normal) with tolerance <= 1e-4. A known
limitation is kept, not hidden: a benign Philips HUE bulb's strict
periodic polling and a 21.9h session score it above three real C2
hosts. No weight or threshold was tuned to mask this; it is
documented in the architecture docs instead.

Also fixes real bugs found along the way: ingest_dir's partition
count summed file names instead of distinct dates, DuckDB errors
were counted as bad rows, /api/alerts always returned an empty list
regardless of the last analysis, and the dashboard still claimed
every pillar was unimplemented.

Restores four design corrections that were missing from
docs/architecture.md (KL to Jensen-Shannon, the persistent-session
detector, the JA4 licensing boundary, and deterministic reduction
order), and catalogs the public datasets used for validation
(IoT-23, CTU-Normal, Mendeley DTQBC) with their licenses and SHA-256
checksums under research/validation/.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VAyr8d7HuAdUGB6aA5xmDD
2026-11-01 00:28:54 -03:00

2.7 KiB
Raw Blame History

Terminal

English · Português

The acaua binary serves both as the CLI command runner and the background daemon. This page describes the commands available in the engine.

acaua <command> [options]

Commands:
  serve    Start the API and embedded web dashboard
  analyze  Analyze a Zeek log directory
  doctor   Check the local environment
  update   Check for available releases

acaua serve

Starts the HTTP API and the embedded web dashboard.

acaua serve --bind 127.0.0.1:8787 --data-dir .acaua
Option Default Meaning
--bind 127.0.0.1:8787 Listen address
--data-dir .acaua Store and runtime files

The default bind is loopback-only. Exposing the daemon on a network requires a reverse proxy with authentication. The API is documented in architecture.md.

acaua analyze

acaua analyze /var/log/zeek/current
acaua analyze /var/log/zeek/current --json

Validates the target directory, ingests conn.log and dns.log traffic into Parquet partitions, and runs threat detection algorithms across pillars 1–4. The human-readable output reports summary metrics, individual alerts, and the hosts: ranking section (top 10 by priority score):

diretório: /var/log/zeek/current
logs lidos: 2
registros: 10450
alertas: 2
  [0.850] Beaconing detected: 192.168.1.50:any -> 198.51.100.1:443 (period ~14400s, score 0.850)
  [0.600] Persistent session: 192.168.1.50 -> 198.51.100.1:443 (6.0h, score 0.600)
hosts:
  [0.784] 192.168.1.50       0.850/0.600/0.000
estado: ok

acaua doctor

acaua doctor
acaua doctor --json

Runs environment checks:

  • zeek: verifies zeek --version or detects containerized execution (ACAUA_RUNTIME=container).
  • curl: confirms HTTP download availability.
  • duckdb: confirms dynamic linkage against libduckdb.so in runtime.
  • research: verifies that the research workspace remains isolated.

acaua update

acaua update

Queries the Gitea Releases API, compares the latest tag against the running version, and prints upgrade instructions (docker compose pull && docker compose up -d when running inside a container).

Exit codes

Code Meaning
0 Success
1 Runtime error (invalid path, query error, I/O error)
2 Invalid command-line usage (clap)

Environment

Variable Meaning
ACAUA_RUNTIME Set to container inside Docker images to adapt service checks
DUCKDB_LIB_DIR Path to directory containing libduckdb.so when compiling natively
LD_LIBRARY_PATH Shared library load path for libduckdb.so outside standard paths