agentic/code/frameworks/forensics-complete/skills/linux-forensics/SKILL.md
Generalized Linux incident response and forensic analysis covering Debian/Ubuntu, RHEL/CentOS/Rocky, and SUSE families
npx skillsauth add jmagly/aiwg linux-forensicsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Performs structured forensic analysis on Linux systems, adapting collection and verification procedures to the detected distribution family. Covers Debian/Ubuntu (apt/debsums), RHEL/CentOS/Rocky (rpm), and SUSE (zypper/rpm). Produces a findings document aligned with NIST SP 800-86 collection ordering.
Alternate expressions and non-obvious activations (primary phrases are matched automatically from the skill description):
Linux distributions differ in package managers, log file paths, service managers, and integrity verification tools. A forensic workflow that hardcodes Debian paths will miss evidence on RHEL systems and vice versa. This skill detects the distribution family at runtime and selects appropriate tooling, producing consistent output regardless of target distro.
When triggered, this skill:
Detect distribution family:
/etc/os-release — check ID_LIKE and ID fieldsdebian (Debian, Ubuntu, Mint), rhel (RHEL, CentOS, Rocky, AlmaLinux, Fedora), suse (openSUSE, SLES)Verify package integrity:
debsums -c 2>/dev/null | grep -v OK — lists files failing checksumrpm -Va 2>/dev/null | grep -v '^......G' — lists changed attributesrpm -Va 2>/dev/null (same as RHEL; rpm is the package tool)/bin, /sbin, /usr/bin, /usr/sbin, /lib)Collect authentication and authorization evidence:
/var/log/auth.log, /var/log/auth.log.1/var/log/secure, /var/log/secure-*journalctl -u sshd --no-pager -n 5000Audit scheduled tasks:
/etc/crontab, /etc/cron.d/, /etc/cron.{hourly,daily,weekly,monthly}/for u in $(cut -d: -f1 /etc/passwd); do crontab -l -u $u 2>/dev/null; donesystemctl list-timers --allatq 2>/dev/nullReview persistence mechanisms:
/etc/init.d/ (SysV), /etc/rc.local/etc/pam.d/ — check for unexpected pam_exec.so or pam_python.so entries/etc/ld.so.preload, per-user .bashrc/.profile exportsExamine recently modified files:
find /etc /usr /bin /sbin /tmp /var/tmp -newer /proc/1 -not -path '/proc/*' -not -path '/sys/*' -ls 2>/dev/nullfind /home /root -name '.*' -newer /proc/1 -ls 2>/dev/null — hidden files in home dirsfind / -perm /6000 -not -user root 2>/dev/nullInspect network state and processes:
ss -tlnpss -tnp state establishedlsof -nP -i 2>/dev/null | grep ESTABLISHEDls -la /proc/*/exe 2>/dev/null | grep '(deleted)'Collect kernel and module state:
lsmodsysctl -a 2>/dev/null | grep -E 'kptr_restrict|dmesg_restrict|yama|randomize'Write findings document:
.aiwg/forensics/findings/<hostname>-linux.mdlinux forensics [email protected]
investigate linux server localhost
linux incident response [email protected]
.aiwg/forensics/findings/<hostname>-linux.md.aiwg/forensics/evidence/<hostname>-pkg-integrity.txt.aiwg/forensics/evidence/<hostname>-linux-raw.txtlinux_forensics:
find_depth: 5
log_lines: 5000
flag_suid_non_root: true
distro_families:
debian:
auth_log: /var/log/auth.log
pkg_verify: debsums -c
rhel:
auth_log: /var/log/secure
pkg_verify: "rpm -Va"
suse:
auth_log: /var/log/messages
pkg_verify: "rpm -Va"
data-ai
Report which research-corpus radar sidecars are overdue for refresh. Computes staleness (days since last refresh vs the cadence window) for every radar, sorted most-overdue-first. Runs via `aiwg corpus radar-status`.
data-ai
Aggregate research-corpus radar sidecars into a corpus or per-cluster freshness report — totals, overdue count, per-cluster / per-GRADE / per-trajectory breakdowns, an overdue table, and per-radar rationale snippets. Runs via `aiwg corpus radar-report`.
testing
Scaffold radar/freshness sidecars for research-corpus REFs. Pulls title/authors from the citation sidecar and GRADE from the analysis doc, defaults the refresh cadence from GRADE and the cluster from a corpus-local map, and stamps documentation/radar/REF-XXX-radar.md. Runs via `aiwg corpus radar-init`.
data-ai
Compute an entity's publication trajectory — per-year paper counts, topic drift, hot-streak detection (≥3 consecutive A-grade years), and career phase. Runs via `aiwg corpus profile-temporal`.