目录
1. SSH公私钥与SSH公私钥后门介绍
1.1 SSH公私钥介绍
1.1.1 公钥和私钥的基本概念
1.1.2 SSH公私钥认证的工作原理(很重要)
1.2 SSH公私钥后门介绍
2. 如何在已拿下控制权限的主机创建后门
2.1 使用 Xshell 生成公钥与私钥
2.2 将公钥上传到被需要被植入后门的服务器centos7
2.2.1 将公钥文件上传或下载到目标服务器
2.3 Xshell 免密登录测试
3. 如何进行应急响应
3.1 查看服务器开放的端口号与服务
3.2 查看可疑进程
3.3 查看SSH成功登录的日志(查看可疑ip和用户)
3.5 清除后门
1. SSH公私钥与SSH公私钥后门介绍
1.1 SSH公私钥介绍
SSH(Secure Shell)公私钥对是一种用于认证的加密技术,它允许用户通过持有私钥来远程登录服务器,而无需输入密码。这种认证方式比传统的密码认证更安全,因为它依赖于加密技术来验证用户的身份。
1.1.1 公钥和私钥的基本概念
-
公钥(Public Key):这是一个可以公开的密钥,通常用于加密数据或验证签名。在SSH认证中,公钥用于加密会话密钥,确保只有持有对应私钥的用户才能解密并建立连接。
-
私钥(Private Key):这是一个必须保密的密钥,用户用它来解密接收到的数据或对数据进行签名。在SSH认证中,私钥用于解密由公钥加密的会话密钥,从而建立安全的SSH连接。
1.1.2 SSH公私钥认证的工作原理(很重要)
-
密钥生成:用户使用SSH密钥生成工具(
ssh-keygen
)创建一对密钥,即公钥和私钥。 -
公钥部署:用户将公钥复制到服务器的
~/.ssh/authorized_keys
文件中,这个文件存储了允许登录到该服务器的所有公钥。 -
认证过程:
- 当用户尝试使用SSH客户端连接服务器时,服务器会从
authorized_keys
文件中读取公钥。 - 服务器使用这个公钥加密一个会话密钥,并将其发送给客户端。
- SSH客户端使用对应的私钥解密会话密钥,然后使用这个会话密钥与服务器建立加密的SSH连接。
- 当用户尝试使用SSH客户端连接服务器时,服务器会从
-
连接建立:如果客户端能够成功解密会话密钥并建立连接,服务器就知道客户端持有正确的私钥,从而验证了用户的身份。
1.2 SSH公私钥后门介绍
SSH公私钥后门是一种利用SSH协议的公钥认证机制来实现未授权访问的技术。在SSH协议中,除了传统的密码认证方式外,还可以使用公钥和私钥对进行认证。用户将公钥放置在服务器的~/.ssh/authorized_keys文件中,之后使用对应的私钥即可登录服务器,无需输入密码。
SSH公私钥后门的关键在于攻击者通过某种手段获取到服务器的写入权限,将自己的公钥添加到authorized_keys文件中,或者篡改已有的公钥。这样,攻击者就可以使用对应的私钥在不被察觉的情况下登录服务器。(就是在有权限的情况下,自己增加了一个额外的登录认证的方式)
2. 如何在已拿下控制权限的主机创建后门
2.1 使用 Xshell 生成公钥与私钥
在攻击机上使用 Xshell 生成私钥,按照如图所示选择“新建用户密钥生成向导”
之后输入 密钥名称与密码(可任意设置),此处密码设为:xiaoyu123 ,之后点击下一步
之后点击“保存为文件”
成功保存文件之后,再点击完成
出现弹窗提示,即正确生成,此处密钥为私钥
2.2 将公钥上传到被需要被植入后门的服务器centos7
2.2.1 将公钥文件上传或下载到目标服务器
将公钥 idrsa2048.pub ,让靶机可以下载改公钥,也就是将公钥通过wget的方式传到靶机上(就是想办法将公钥上传到服务器)
这里如果有上传的权限或是可以通过ssh远程连接的话,可以直接将公钥上传到需要留后门的主机,或者通过在本机搭建服务或是在服务器上搭建服务,让靶机能够通过wget下载到靶机就可以了
2.2.2 将公钥写入.ssh/authorized_keys文件
将公钥 idrsa2048.pub 内容写进 .ssh/authorized_keys 文件中,查找 authorized_keys 文件的位置,发现该服务器中无该文件,注意这里需要再~目录的上一层查找
find -name authorized_keys
那么我们就开启免密登录功能,命令如下:
# 输入命令后一直回车就可以了
ssh-keygen -t rsa
在ssh目录下创建该文件,命令如下:
touch /root/.ssh/authorized_keys
接下来将xhell的公钥追加到 authorizedkeys 文件,并且给 authorizedkeys 文件赋予执行权限
cd /root
cat id_rsa_2048.pub >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
2.3 Xshell 免密登录测试
点击新建会话,输入主机IP地址
输入完之后,不要点击确定,接下来点击 “用户身份验证”,并选择 Public Key ,之后输按照如图所示输入用户名密码(本例是root/xiaoyu123),下面的秘钥的密码也是xiaoyu123,输完用户名密码之后点击“确定”
选择会话之后点击连接,不需要输入用户名密码就可以成功登录
输入ifconfig查看连接的服务器ip地址
3. 如何进行应急响应
3.1 查看服务器开放的端口号与服务
查看服务器开放的端口号,发现有个ssh连接,并且与负责人确定改IP正常情况下不能登录服务器
# 查看服务器开放的端口号
netstat -anpt
3.2 查看可疑进程
根据PID号查看进程,并未发现异常,是正常的ssh登录
ll /proc/1948
3.3 查看SSH成功登录的日志(查看可疑ip和用户)
这里其实还是看不出来什么,很多师傅是不是想到要进行查看文件是否被修改,这里其实可以通过查看登录成功的日志信息发现,不懂命令的师傅可以看我之前的文章,基本每一篇都有在提
more /var/log/secure | grep 'Appected'
发现一个通过秘钥登录的用户,这里可以和运维人员进行确认,那么接下来查看authorized_keys 文件是否被篡改
3.4 查看被修改的.ssh/authorized_keys文件信息
cat /root/.ssh/authorized_keys
发现被添加了未知用户的公钥,查看文件的一些属性
查看被篡改时间,确定是最近被篡改的
# 这里用下面的命令都可以查看最近一次文件的修改时间
stat /root/.ssh/authorized_keys
ll /root/.ssh/authorized_keys
3.5 清除后门
如何清除后门,直接将公钥文件的信息删除即可
# 下面的三条命令都可以清除文件中的信息
sudo truncate -s 0 /root/.ssh/authorized_keys
sudo sh -c 'echo "" > /root/.ssh/authorized_keys'
sudo echo -n "" > /root/.ssh/authorized_keys