Windows
DetectedStatic executable with an embedded administrator manifest. No VC++ redistributable.
Right-click → Run as administrator, or launch from an elevated prompt.
Every intrusion leaves one — in the $MFT, in registry hives, in
event logs the operating system is still holding open. Aralez reads NTFS and
EXT4 directly from the raw volume, so those artifacts are acquired intact,
stream into an encrypted archive, and survive an interrupted run.
01 — Raw volume access
Every triage tool that opens SYSTEM through CreateFile loses to
the lock Windows already holds. Aralez opens the volume itself and parses the
on-disk structures, which is why the hard artifacts come back intact.
$MFT, $UsnJrnl, SAM, SYSTEM and open
.evtx files are read while Windows holds exclusive locks on them.
On Linux the same applies to EXT4, with an automatic POSIX fallback when a
filesystem is missing journal features or reports as corrupt.$DATA attribute header. Bytes between VDL and allocated size
are written to a separate .FileSlack entry while the main file is
zero-padded — so the recovered file stays byte-accurate and the slack survives
for analysis.<file>_<stream>, all-zero chunks are skipped, and
$INDEX_ALLOCATION attributes are extracted as .idx entries.Program Files, not a second PROGRA~1.02 — Zero-folder streaming
The classic pattern writes every artifact to a staging folder, zips it, then deletes the folder — so peak disk use is roughly twice what you collected. Aralez pipes each file through the compressor as it reads it.
Artifacts land on the endpoint's disk before they are compressed, and stay there until the archive completes.
--stream
Readers write through an OutputTarget that is either a file, a ZIP entry
or a TAR entry — the collection code is identical either way. Bytes move in 4 KB
chunks, so memory stays flat regardless of artifact size.
Entries are written sequentially through a single deflate stream. -e applies
WinZip AES-256 to the archive. ZIP64 is on, so there is no 4 GB ceiling.
A .tar.zst is a run of independently decodable frames. Kill the process
mid-write and everything already flushed is still recoverable — a truncated ZIP loses
its central directory.
Archive encryption applies to the ZIP path only. Combining -e with
--compression tar produces an unencrypted .tar.zst.
Use ZIP when the archive must be encrypted at rest.
03 — Interrupt safety
The first interrupt sets a flag that is checked between tasks and inside the NTFS and EXT4 directory walks, so the abort lands within a file rather than a task. The run then appends its log, closes the archive properly and exits with a valid, fully readable result containing everything collected up to that moment.
A second Ctrl+C force-quits.
$ sudo ./aralez --stream collecting /var/log/journal/… 84.2 MB collecting /etc/shadow 1.1 KB ^C Finalizing archive… (press Ctrl+C again to force quit) + collection log appended + central directory written ✓ Aralez_web01_2026-08-14_09-12-04.zip · 412 MB
04 — Coverage
The shipped profiles define 262 artifact paths. Beyond files, Aralez captures live system state through built-in collectors that need no external binaries.
Master file table and boot sector, read raw
USN change journal and $ObjId
SAM, SYSTEM, SOFTWARE, SECURITY, DEFAULT
NTUSER.DAT and UsrClass.dat per profile
Windows event logs, collected while open
*.pf execution evidence
*.hve program execution records
Task definitions and registration
Recent, Custom and AutomaticDestinations
PSReadline console history
OBJECTS.DATA and *.etl trace logs
Background transfer queue database
Edge, Chrome and INetCache
Deleted file records
ReportArchive and ReportQueue
pfirewall.log
Root and per-user history and rc files
authorized_keys, known_hosts, private keys
auth.log, syslog, wtmp, btmp, journal
cron, systemd units, rc*.d, autostart
Rules and audit configuration
passwd, group, shadow, sudoers
sshd, nginx, apache2, httpd
cgroup, docker and containerd artifacts
.aws, .kube, .docker configuration
/tmp, /var/tmp, /dev/shm
Per-process MD5 and SHA-256, modules, threads
RWX thread start addresses, Shannon entropy > 7.5
ps output diffed against /proc entries
TCP tables decoded without shelling out
Loaded modules with address and size
dpkg and rpm databases, repo sources
autorunsc, handle, pslist, listdlls, pipelist
Encrypted in transit past AV gateways
05 — Under the hood
An execute task can pipe its stdout into a collect task. The shipped Windows profile
extracts ImagePath from Event ID 7045 — new service installed — and then
collects every one of those binaries automatically.
Child processes run inside a Windows Job Object with kill-on-close and a memory cap; on POSIX each gets its own process group. A timeout terminates the whole tree, not just the process that was launched.
Free RAM and free disk are checked before the run and re-checked before every task. Tool output is capped byte-exactly. If headroom drops below the limit, collection stops and the archive still finalizes.
The YAML config lives inside the executable — a PE resource on Windows, byte markers
appended to the ELF or Mach-O elsewhere. -c writes a new binary with a new
config baked in. No sidecar files reach the endpoint.
Windows MSVC builds link the CRT statically and carry a
requireAdministrator manifest, so there is no VC++ redistributable to chase
and elevation is automatic.
Execute tasks fan out across cores with nested parallel iteration over both entry groups and individual executors.
06 — Platforms
| Platform | Access method | Privilege | Status |
|---|---|---|---|
| Windows | Raw NTFS volume parsing · \\.\C: | Administrator | Published binary |
| Linux | Raw EXT4 parsing, POSIX fallback · /dev/sdX | root | Published binary |
| macOS | POSIX walker · SIP blocks raw device access | root + Full Disk Access | New in v0.11.0 |
APFS and HFS+ are detected but not parsed. macOS collection runs through the POSIX
walker, which is the practical ceiling anyway since System Integrity Protection blocks
raw /dev/diskXsY access — so the locked-file advantage described above
applies to Windows and Linux, not macOS.
The shipped macOS profile targets Monterey through Sequoia and is scoped to attack artifacts: unified logs, FSEvents, KnowledgeC, TCC, quarantine, LaunchAgents and persistence. Live state covers processes and process detail; the memory, network and package collectors are Linux-only.
07 — Delivery
Point -o at a destination and the archive ships straight from the host.
After a successful remote transfer the local copy is removed.
# Ship to an SFTP collector sudo ./aralez --stream -o sftp://forensic@collector.corp/incoming # Ship to S3 sudo ./aralez --stream -o s3://forensic-bucket/evidence/ # Ship to a MinIO instance sudo ./aralez -o s3://bucket/prefix \ --s3-endpoint https://minio.internal:9000 # Silent run to an SMB share, for SCCM or GPO aralez.exe --stream --silent -o smb://fileserver/forensics/incoming
08 — Deployment
Because the config is compiled into the binary, mass deployment is a file copy and an
execute. Ready-made scripts ship in deploy/.
09 — Get Aralez
Latest release v0.11.0, published 14 August 2026. Run as Administrator on Windows, or as root on Linux and macOS.
Static executable with an embedded administrator manifest. No VC++ redistributable.
Right-click → Run as administrator, or launch from an elevated prompt.
Single ELF binary. Raw EXT4 parsing with an automatic POSIX fallback.
Run with sudo. Aralez exits immediately without root.
Single Mach-O binary. Collection uses the POSIX walker — SIP blocks raw device access.
Run with sudo, and grant Full Disk Access to your terminal —
TCC-protected artifacts are skipped silently without it.
Read the quick start, or go straight to the CLI and configuration reference.