aw-rus Hayabusa Server Ops Bundle
This directory is the server-side operational bundle for Hayabusa on 192.0.2.13.
Goal
Allow operators to run the full bounded DFIR path without depending on the laptop repository.
Server paths
- wrapper:
/usr/local/bin/aw-hayabusa - case linker:
/usr/local/bin/aw-hayabusa-link-case - Windows-driven E2E helper:
/usr/local/bin/aw-hayabusa-from-windows - ops bundle root:
/opt/activitywatch/aw-rus-ops - local inventory for server-side controller mode:
/opt/activitywatch/aw-rus-ops/ansible/inventory.ini - local controller venv:
/opt/activitywatch/aw-rus-ops/venv - local drop zone for fetched EVTX zips:
/opt/activitywatch/aw-rus-ops/drop
Minimal operator workflow on the server
- Check runner health:
aw-hayabusa doctor
aw-hayabusa inventory
- If a zip is already on the server:
aw-hayabusa accept --package /path/to/HOST-YYYYMMDD-HHMMSS.zip --host HOST
aw-hayabusa process-inbox --mode incident
- Link the latest successful run to a case:
aw-hayabusa-link-case --case-id 30 --mode incident
Full no-laptop workflow from the server
Prerequisites:
/opt/activitywatch/aw-rus-ops/venvcontainsansibleandpywinrm/opt/activitywatch/aw-rus-ops/ansible/inventory.inicontains the live Windows connection details- WinRM from
192.0.2.13to the Windows host is reachable
Run:
aw-hayabusa-from-windows --days-back 1 --mode incident --case-id 30
This performs:
- Windows EVTX export via WinRM
- fetch of the newest zip directly onto
192.0.2.13 aw-hayabusa acceptaw-hayabusa process-inbox- bounded case linkage via case API
If WinRM from the server to Windows is blocked by network policy, use the drop-zone workflow below instead.
Drop-zone automation on 192.0.2.13
The server can auto-process packages dropped into:
/opt/activitywatch/aw-rus-ops/drop
Installed units:
/etc/systemd/system/aw-hayabusa-drop.service/etc/systemd/system/aw-hayabusa-drop.path
Behavior:
- any
*.zipplaced indrop/is automatically accepted and processed - optional
*.caseidsidecar with the same basename triggers automatic bounded case linkage - processed
*.zipis moved out ofdrop/intoreport_dir/input-drop/to avoid repeated re-trigger loops - sidecars are archived into
report_dir/input-sidecars/ - bad drop packages are rejected before
accept, moved to/opt/hayabusa/quarantine/drop/<timestamp>_<package>/, and recorded with areason.jsonfile instead of blocking later packages - bad or partially extracted incoming packages are moved to
/opt/hayabusa/quarantine/incoming/<timestamp>_<package>/;process-inboxcontinues with the remaining queue and does not trip systemd start-limit only because of one poison archive
Windows direct upload into the drop zone
Preferred production path when server-side WinRM is unavailable:
- On Windows, use:
powershell.exe -ExecutionPolicy Bypass -File C:\ProgramData\AWatch-rus\export-upload-hayabusa-to-aw-server.ps1 -DaysBack 1 -CaseId 30
- The script will:
- run
C:\ProgramData\AWatch-rus\export-evtx-for-hayabusa.ps1 - upload matching
.caseidfirst when-CaseIdis specified - upload the newest zip to
/opt/activitywatch/aw-rus-ops/drop - let
aw-hayabusa-drop.pathprocess the package automatically on192.0.2.13
This path was validated live against case 30 after the awops SSH authorization was installed on 192.0.2.13.
Server-side prerequisite for user awops:
printf '%s\n' 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILoFWQmgoUJj1P7mp1/fB5aBkI3fVgjPme9jmK8Gh9jr igor@snb-live' | sudo tee /var/lib/awops/.ssh/authorized_keys >/dev/null
sudo chown awops:awops /var/lib/awops/.ssh/authorized_keys
sudo chmod 600 /var/lib/awops/.ssh/authorized_keys
sudo chown awops:awops /opt/activitywatch/aw-rus-ops/drop
sudo chmod 0750 /opt/activitywatch/aw-rus-ops/drop
Production scheduled task on SHARKON2025:
- task name:
ActivityWatch Hayabusa Upload - action:
C:\ProgramData\AWatch-rus\export-upload-hayabusa-to-aw-server.ps1 -HoursBack 6 -Mode incident - principal:
Администратор,LogonType=Interactive,RunLevel=Highest - normal
LastTaskResult:0
Do not switch this task back to SYSTEM on the current RDP host: Task Scheduler starts powershell.exe under SYSTEM, but the process exits with 0xC0000142 before the upload script starts.
Server-side processing accepts Windows zip packages with backslash path
separators and UTF-8 BOM in sidecar JSON. aw-hayabusa-autoprocess processes
the full incoming queue after accepting a drop package, so stale incoming files
from an earlier failed run are drained before the latest intake is recorded.
Poison-package handling is fail-closed:
- Rust
aw-hayabusa-autoprocess-rustvalidates the zip and sidecars before callingaw-hayabusa accept. - A corrupt/empty/unsafe drop package is quarantined with its
.meta.json,.caseid, optional checksum sidecar andreason.json. aw-hayabusa process-inboxisolates a failed incoming package instead of aborting the whole batch.- Operators replay only a fixed/re-exported package by moving it back to the drop zone or incoming queue. Do not edit quarantined evidence in place.
Security Finding Inbox integration
aw-hayabusa-autoprocess-rust can publish a normalized suspicious-workstation
finding after a successful intake is written to /opt/hayabusa/state/latest-intake.json.
Default is disabled to keep forensic processing independent from ClickHouse:
AW_SECURITY_FINDING_INBOX_ENABLED=false
Enable after the ClickHouse schema and CLI are installed:
AW_SECURITY_FINDING_INBOX_ENABLED=true
AW_SECURITY_FINDING_INBOX_BIN=/usr/local/bin/security-finding-inbox
AW_SECURITY_FINDING_INBOX_MIN_SEVERITY=medium
AW_SECURITY_FINDING_INBOX_REQUIRED=false
With AW_SECURITY_FINDING_INBOX_REQUIRED=false, a temporary ClickHouse/inbox
failure is logged as warning and does not poison the Hayabusa backlog. Use
true only when the operator wants inbox publication failure to become an
operational failure for the drop service.