๐ฐ๏ธ Talus
eBPF endpoint security agent for Linux โ detect ransomware behaviour, respond at the kernel edge.
Talus traces execve, openat, connect, accept, sendto and recvfrom
syscalls at the kernel level using eBPF tracepoints, streams events into
userspace through per-CPU perf buffers, and surfaces them in a live terminal
FrankenTUI โ while continuously scoring per-process file-open rates against
a sliding window to flag ransomware-style mass file access, and automatically
SIGKILL-ing offending processes.
Project status: production-quality Rust + eBPF engineering showcase.
๐ฏ What it doesโ
| Capability | Description |
|---|---|
| Kernel-level tracing | execve and openat tracepoints attached on every online CPU |
| Verifier-safe kernel code | Userspace pointers read exclusively via bpf_probe_read_user โ never dereferenced |
| Zero-copy event pipeline | Fixed-size ProcessEvent records streamed through per-CPU PerfEventArray buffers |
| Live FrankenTUI | 7-panel cyberpunk interface: events, processes, network, files, extensions, alerts, heatmap |
| Sliding-window heuristic | 1-second rolling window per PID; alerts when a process exceeds the configured open rate |
| Multiple output modes | Human TUI, newline-delimited JSON, plain text log, and a built-in self-diagnostic |
| Lost-event accounting | Perf-buffer overruns are counted and reported, never silently dropped |
| Single static binary | Full LTO, panic = "abort", symbol-stripped release profile |
โ๏ธ Architectureโ
Kernel-side eBPF programs capture every execve/openat into a compact
ProcessEvent record pushed into a PerfEventArray. A dedicated userspace
reader thread opens one perf buffer per CPU, decodes events, and forwards
them over an MPSC channel to the monitor core, which feeds a 1-second sliding
window per PID and emits alerts when the threshold is crossed.
execve/openat โโบ eBPF tracepoints โโบ EVENTS (PerfEventArray)
โ per-CPU perf buffers
reader thread โโโโโโโ
โ MPSC channel
monitor core (sliding window + alerting)
โ
TUI / JSON / plain / diagnose
See the full architecture for the complete design.
๐ Quick startโ
# Distro-aware installer (apt, dnf, pacman, zypper, apk, xbps)
./install.sh # user-local install to ~/.local
./install.sh --system # system-wide install to /usr/local
# Or build manually
./build.sh
sudo target/release/process-monitor
๐ฅ๏ธ Usageโ
sudo process-monitor # TUI (default when stdout is a terminal)
sudo process-monitor --alert-threshold 100 # raise alert threshold (opens/s)
sudo process-monitor --json | jq . # machine-readable NDJSON
sudo process-monitor --plain # plain text log
sudo process-monitor --diagnose # 5-second end-to-end self-diagnostic
TUI keys: q / Esc / Ctrl+C quit ยท p pause/resume ยท c clear log ยท
โ/โ/j/k scroll ยท PgUp/PgDn faster ยท Home/End jump.
๐ก๏ธ The ransomware heuristicโ
For every PID, keep a 1-second sliding window of
openatcalls. If the window contains โฅ N opens (default 50), emit an alert.
- Sliding window, not a rate counter โ bursts are caught as reliably as steady streams
- Per-process isolation โ no cross-process false positives
--alert-threshold 0disables the heuristic entirely
๐ฆ Project layoutโ
talus-process-monitor/
โโโ process-monitor/ # Userspace: monitor core + TUI + web + FFI
โ โโโ src/
โ โโโ main.rs # CLI, mode selection, signal handling
โ โโโ monitor.rs # eBPF loading, perf reader, sliding-window tracker
โ โโโ tui.rs # 7-panel frankentui (ftui) cyberpunk interface
โโโ process-monitor-ebpf/ # Kernel side (#![no_std], aya-ebpf)
โ โโโ src/main.rs # tracepoint hooks โ PerfEventArray
โโโ build.sh # Build script (nightly for eBPF, stable for TUI)
โโโ install.sh # Distro-aware installer / uninstaller
โโโ ARCHITECTURE.md # Full design document
๐ง Requirementsโ
- Linux kernel 5.8+ (eBPF + tracepoint support)
- root (
CAP_BPF/CAP_SYS_ADMIN) to load and attach eBPF programs - Rust nightly +
rust-srcfor the eBPF crate; stable for userspace bpf-linker,clang, C compiler; BTF (/sys/kernel/btf/vmlinux) recommended