This post explores a hypothetical case where one has volatile data on a remote machine that needs to be removed as fast and as discretely as possible without having to open up a laptop and log in via SSH, an SFTP/FTP browser etc.
Rather, this post assumes it would be more convenient to just hit a single button on your phone or click a single icon that sends a network packet to the server, triggering a script that proceeds to delete your data and/or back it up to another trusted server.
This is just a quick sketch and so I’m eschewing questions of security. Indeed the whole thing could be done over SSL and improved here and there. There could be a deletion routine for the scripts themselves, EXT3/4 journal cleaning and a reboot routine also.
Regardless, by the time someone snooping on the network sees the payload of the packet go out, it will be too late - the data is already being deleted. In the case access to the Internet gateway is blocked there is still little risk; there’s no way of someone sniffing traffic knowing which data you want to delete on the server itself. Rather, the packet will just appear to contain an anomalous payload. If they send that same payload to your server, then they finish the job for you..
To begin. First we need to establish which data you want to delete.
Log into your server via SSH and install the program socat (assumes Debian GNU/Linux based OS):
apt-get update
apt-get install socat
Now create a script, defining what you want to delete. Define also data you want to copy to another server:
#!/bin/sh
# remote-kill.sh
# Use dummy directories while testing!
DELETEDIRS='/var/log/* /home/user/Mail/blackbox'
COPYDIRS='/home/user/leaks /home/user/volatile'
KILLSIG=$1
# KILLSIG is sent by the client
if [ "$KILLSIG" = "809ca09affjakkj1pa8" ];
then
rm -fr $DELETEDIRS & # background so we can start copying
tar cvzf leaks.tar.gz $COPYDIRS &&
# SCP would run inside an ssh-agent with keys for a user on a remote
# host that has restricted priveleges
scp leaks.tar.gz backup@my-backup-server.org:. &&
# Delete the leaks and ssh-keys for the backup server
rm -fr leaks.tar.gz $COPYDIRS
rm -f /home/user/.ssh/backup.rsa
fi
Save the out the script as remote-kill.sh, copy it to /root and make it executable:
chmod +x remote-kill.sh; cp remote-kill.sh /root
Now, as root on the server, set up the ssh-agent and run the socat listener:
ssh-agent bash
# Define SSH keys here for login on remote backup host
ssh-add /root/.ssh/backup.rsa
# Run socat on port 1337. Because you can and it's still funny.
# You could run it on a non-firewalled port like 443, also.
# Assuming you don't need it for anything else on this
# particular host (unlikely)
while true; do socat -u TCP4-LISTEN:1337 STDIO | ./remote-kill.sh `tee`,nofork; sleep 1; done
Install socat onto your client machine (just as you did above) and write a kill script that will send out the packet:
#!/bin/sh
# client-kill.sh
KILLSIG='809ca09affjakkj1pa8'
echo $KILLSIG | socat - TCP4:my-server.com:1337 && echo "Packet sent. Deletion underway.."
Write out this script as client-kill.sh, save it onto your desktop and make it executable so you can simply double-click it:
cd ~/Desktop
chmod +x client-kill.sh
Have fun and remember to use dummy directories when testing!